Чупа-Кабра
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 Addressort Peer Addressort
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 Addressort Peer Addressort
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.
Но рассматривать настройки фаерволла отдельно от других программ - немного не корректно. Поэтому, эту задачу я возлагаю на тебя, мой уважаемый читатель.
На этом всё. И как пишет один совсем мало знакомый мне персонаж : всем добра, берегите себя.