What's new
Runion

This is a sample guest message. Register a free account today to become a member! Once signed in, you'll be able to participate on this site by adding your own topics and posts, as well as connect with other members through your own private inbox!

Установка dnscrypt-proxy в Debian_10

Чупа-Кабра

Light Weight
Депозит
$0
Для начала выясняем, является ли /etc/resolv.conf симлинком куда-то там:
# file /etc/resolv.conf
/etc/resolv.conf: symbolic link to /etc/resolvconf/run/resolv.conf

Если видим такую надпись — делаем так:
# unlink /etc/resolv.conf

$ sudo systemctl list-unit-files | grep resolv
resolvconf.service enabled
systemd-resolved.service disabled

$ sudo systemctl stop resolvconf.service
$ sudo systemctl disable resolvconf.service
$ sudo apt remove resolvconf
$ sudo apt purge resolvconf
Нажмите, чтобы раскрыть...
Пожалуйста, обратите внимание, что пользователь заблокирован
Хм. Признаюсь откровенно, мне не особо хочется писать эту статью. Я пишу её только потому,что в данный момент возникло желание поправить корону очередному голому королю.
Итак, каждый человек, который хоть сколько нибудь серьёзно относится к хакингу задумывался на собственной безопасностью в интернете. мыслям о безопасности тем или иным способом способствуют новостные ленты, которые словно наперебой сообщают об отравлениях, каких-то невероятных смертях, о преследовании неугодных, одним словом о том, что в страной правит беспредел. Поди разбери, что у этих беспредельщиков в голове, к каким выводам придут эти отягощённые беспредельной властью чуваки.
Мысль о шифровании своего трафика неизбежно рано или поздно поселится в зерном в сознании здравомыслящего человека, а затем неизбежно прорастёт.
На этом закончу свои попытки понравиться читателю и перейду к описанию одного из множества способов того, как усложнить жизнь чувакам, которые пытаются влезть в личную жизнь. Речь пойдёт о программе dnscrypt-proxy - кроссплатформенной программе, нашедшей своё применение практически во всех реализациях линукс, включая OpenWRT, Windows. Наверняка, пользователи макинтошей при желании также смогут ею воспользоваться - но это не точно )
Прежде чем приступить к установке dnscrypt-proxy в linux, пользователь должен отчётливо понимать, что это - далеко не единственный резолвер dns-запросов в системе. В частности, уже в минимальной сборке debian, которую можно скачать с официального сайта, присутствует родной резолвер запросов доменных имён. А иначе и быть не может: ведь иначе невозможно было-бы обновить систему из репозиториев, без него невозможно было-бы скачать сорцы из платформы git: разрешение доменных имён попросту не работвло-бы. Имя упомянутому резолверу - systemd-resolved. И нужно понимать, что при установке дополнительной программы-резолвера доменных имён systemd-resolved будет попросту "мешать", так как использование в системе двух программ с аналогичным назначение попросту не секьюрно: поди разберись, какому из них система отдаст предпочтение. Исходя из этих соображений, после установки и успешного тестирования dnscrypt-proxy необходимо будет отключить systemd-resolved.
Прежде чем перейти к описанию алгоритма установки dnscrypt-proxy, хочется сказать, что линукс очень богат на программы подобного типа. На право претендовать в список программ, которые посылают системные запросы к dns-серверам претендуют всем известный стандартный dnsmasq, NetworkManager, Unbound, cloudflared, stubby, dnss и этот можно продолжить.
Если пользователя пугает установка пакета из исходников, то спешу обрадовать: пакет dnscrypt-proxy имеется в репозиториях почти всех дебиано-пдобных систем. Думаю, не ошибусь, если буду утверждать, что скомпилированные пакеты имеются также в репозиториях arch. Поэтому становку пакета можно осуществить буквально одной командой:
$ sudo apt install dnscrypt-proxy. Разумеется, перед этой командой систему необходимо обновить.
Установка программы - дело нескольких движений и не требует особых навыков. Настрйка программы - занятие немного более хлопотное, но и с ним мы сейчас справимся.


Настройка программы сводится к редактированию конфигурационного файла /etc/dnscrypt-proxy/dnscrypt-proxy.toml Файл dnscrypt-proxy.toml - это текстовый файл, редактируется в любом текстовом редакторе, и от его содержания зависит работоспособность программы и шифрование dns-трафика.
$ sudo nano /etc/dnscrypt-proxy/dnscrypt-proxy.toml
Описывать каждую настройку, думаю нет смысла. Нет смысла по нескольким причинам:
Во первых, на цвет и вкус товарищей нет. Впрочем, я не делаю секрета из содержимого своего файла dnscrypt-proxy.toml и где нибудь по ходу пьессы непременно ознакомлю с ним своего читателя.
Во вторых, глупо с умным лицом перечислять все эти настройки. По меньшей мере, я терпеть не могу статьи, авторы которых вот так перечисляют смысл каких-то слов, словно это - комментарии к какому-то кодексу РФ, если токо эт статья не является руководством к той или иной программе.
Наверное, существует и в-третьих, и в-четвёртых...
Эта статья об установке, а не о моих оправданиях )
В этом месте уместно ознакомить читателя со своим файлом конфигурации dnscrypt-proxy
Код:
Скопировать в буфер обмена
└>cat /etc/dnscrypt-proxy/dnscrypt-proxy.toml

# Empty listen_addresses to use systemd socket activation
listen_addresses = []
#server_names = ['scaleway-fr', 'google', 'yandex', 'cloudflare']
server_names = ['doh.nsa.gov']

[query_log]
file = '/var/log/dnscrypt-proxy/query.log'

[nx_log]
file = '/var/log/dnscrypt-proxy/nx.log'

[sources]
[sources.'public-resolvers']
url = 'https://download.dnscrypt.info/resolvers-list/v2/public-resolvers.md'
cache_file = '/var/cache/dnscrypt-proxy/public-resolvers.md'
minisign_key = 'RWQf6LRCGA9i53mlYecO4IzT51TGPpvWucNSCh1CBM0QTaLn73Y7GFO3'
refresh_delay = 72
prefix = ''
В поле server_names нужно указать список серверов, к которым будет обращаться dnscrypt-proxy для разрешения DNS.
Выше представленный файл является минимальным, гарантирующим ракботоспособность программы. Как я уже упомянул выше, дальнейшие настройки я предпочитаю делать по-нарастающей. Просто читаете справку по этому файлу и наращиваете файл конфигурации, исходя из своих запросов.
К примеру, мне очень нравится не токо шифровать трафик, но и пропускать его через локальный TOR-прокси.
В этом случае, в вышеупомянутый файл необходимо добавить две строчки:
Код:
Скопировать в буфер обмена
force_tcp = true
proxy = 'socks5://127.0.0.1:9050'
Думаю, не нужно упоминать о том, что этот самый тор должен быть установлен, настроен соответствующим образом и успешно запущен в Вашей системе.
Ни для кого не секрет, что файлом, в котором указан сервер, принимающий ДНС-запросы является /etc/resolv.conf.
Практически во всех источниках информации рекомендуется не рерактировать, а удалить и создать файл по-новому (мне не нравится это словосочетание, но смысл понятен).
Код:
Скопировать в буфер обмена
$ sudo nano /etc/resolv.conf
nameserver 127.0.2.1
options edns0 single-request-reopen
Запретить дальнейшее изменене этого файла:
$ sudo chattr +i /etc/resolv.conf
ВНИМАНИЕ: если в системе установлен resolvconf, то его также необходимо удалить:


Можно запускать dnscrypt-proxy:
$ sudo systemctl enable dnscrypt-proxy.service
На данном этапе можно пробовать запускать dnscrypt-proxy командой:
$ sudo systemctl start dnscrypt-proxy.service
А также можно установить его в автозагрузку.
$ sudo systemctl enable dnscrypt-proxy.service
Проверить работоспособность запущенной проограммы можно командой:
$ sudo systemctl status dnscrypt-proxy.service
Проверка работоспособности программы на этом не заканчивается.
Проверьте, чтобы порт 53 не был занят:
Код:
Скопировать в буфер обмена
$ ss -lp 'sport = :domain'
Netid State Recv-Q Send-Q Local Address:port Peer Address:port
udp UNCONN 0 0 127.0.2.1:domain 0.0.0.0:*
udp UNCONN 0 0 127.0.0.53%lo:domain 0.0.0.0:*
tcp LISTEN 0 128 127.0.2.1:domain 0.0.0.0:*
tcp LISTEN 0 128 127.0.0.53%lo:domain

Как видим, к 53 порту обращаются две программы:
dnscrypt-proxy - 127.0.2.1:domain
systemd-resolved - записи 127.0.0.53%lo:domain

Останавливаем systemd-resolved:
Код:
Скопировать в буфер обмена
$ sudo systemctl stop systemd-resolved
$ sudo systemctl disable systemd-resolved

Наверное, нужно как-то более подробно описать дальнейшие проверки, но я опишу их наиболее лаконично. На мой взгляд, от этой лаконичности они не станут хуже:
Ещё раз проконтролируйте е порт 53
$ ss -lp 'sport = :domain'
Netid State Recv-Q Send-Q Local Address:port Peer Address:port
udp UNCONN 0 0 127.0.2.1:domain 0.0.0.0:*
tcp LISTEN 0 128 127.0.2.1:domain 0.0.0.0:*


#################################################################################
PING:
$ ping ya.ru
PING ya.ru (87.250.250.242) 56(84) bytes of data.
64 bytes from ya.ru (87.250.250.242): icmp_seq=1 ttl=63 time=60.0 ms


#################################################################################
Проверяем что сервисы запустились.
$ ps aux | grep dns
$ sudo systemctl status dnscrypt-proxy.service

#################################################################################
Выполните проверку, чтобы убедиться, что dnscrypt-proxy работает:
$ /usr/sbin/dnscrypt-proxy -resolve example.com
Если предыдущий вариант не сработал, то вероятно нужно указать конфигурационный файл программы явным образом:
$ /usr/sbin/dnscrypt-proxy -config /etc/dnscrypt-proxy/dnscrypt-proxy.toml -resolve example.com

#################################################################################
$ dig dnscrypt.info | grep SERVER # Must show matching nameserver, e.g. 127.0.0.1#53, in resolv.conf


Кажись ничего не забыл.
Кроме настройки таблиц IPTABLES.
Но рассматривать настройки фаерволла отдельно от других программ - немного не корректно. Поэтому, эту задачу я возлагаю на тебя, мой уважаемый читатель.
На этом всё. И как пишет один совсем мало знакомый мне персонаж : всем добра, берегите себя.
 
Top