Защита приватности с помощью DNSCrypt

DNSCrypt — программа, работающая как служба dnscrypt-proxy, которая улучшает защиту и конфиденциальность онлайн за счет шифрования DNS трафика между пользователем и OpenDNS, предотвращая попытки отслеживания, перехвата DNS и MITM-атаки (атаки «человек посередине»).

DNS является одним из фундаментальных кирпичиков Интернета. Служба DNS используются каждый раз при посещении веб-сайта, отправки электронной почты, общения с помощью сервисов мгновенного обмена сообщениями или выполнении другой сетевой активности.

В то время как OpenDNS на протяжении многих лет предоставляет одну из самых безопасных служб DNS, сам протокол DNS может быть не полностью защищенным и подверженным уязвимостям. Например, в 2008 году Дэн Камински обнаружил критическую уязвимость в протоколе DNS, за счет эксплуатации которой злоумышленники могли перенаправить трафик практически с любого веб-адреса на свои серверы.

Тем не менее, ряд проблем, которые были связаны с уязвимостью стали результатом некоторых откровенно слабых основ протокола DNS, в частности в так называемой “последней мили”.

“Последняя миля” — канал, соединяющий конечное пользовательское оборудование с узлом связи провайдера. DNSCrypt является одним из методов защиты “последней мили” DNS трафика и решения целого класса проблем безопасности протокола.
Все большее количество пользователей в мире подключаются к различным беспроводным сетям в течение дня, необходимость в подобном инструменте очевидна. В мире фиксируется большое количество взломов, MITM-атак и перехватов DNS трафика в последней миле, и все это представляет серьезный риск безопасности, который нужно исключить при помощи DNSCrypt.

Почему DNSCrypt так важен?

Аналогичным образом, как SSL превращает веб-трафик HTTP в зашифрованный HTTPS трафик, DNSCrypt превращает обычный DNS трафик в зашифрованный DNS трафик, который защищен от отслеживания и MITM-атак.

DNSCrypt не требует каких-либо изменений для доменных имен и способов их работы, а просто предоставляет способ для безопасного шифрования канала связи между пользователями и собственными DNS серверами в дата-центрах вендора. Проект DNSCrypt имеет открытый исходный код, выложенный на GitHub.

DNSCrypt имеет потенциал самого эффективного инструмента в Интернет-безопасности наравне с SSL, существенно улучшающего защиту и конфиденциальность пользователей Интернета.
DNSCrypt не использует криптографические библиотеки и полагается на эллиптическую криптографию, в частности криптопримитив Curve25519.

Важно: если Вы используете фаервол или другое ПО для управления сетевыми пакетами, попытайтесь включить DNSCrypt по TCP с портом 443. В этом случае большинство фаерволов будут считать, что имеют дело с HTTPS трафиком и проигнорируют контроль.

Установка dnscrypt-proxy в Ubuntu 18.04, 17.10

Откройте терминал и добавьте репозиторий DNSCrypt:

sudo add-apt-repository ppa:shevchuk/dnscrypt-proxy

Обновите репозитории:

sudo apt update

Затем установите программу:

sudo apt install dnscrypt-proxy

Затем нам надо вписать сервера DNSCrypt в конфигурационный файл. Для этого нужно открыть текстовым редактором файл, который расположен по пути /etc/dnscrypt-proxy/dnscrypt-proxy.toml, найти строку server_names, раскомментировать её убрав знак решётки # и вписать туда сервера вместо серверов google, cloudflare и т.п.

Пример конфигурационного файла:

server_names = ["d0wn-se-ns2", "d0wn-tz-ns1"]
listen_addresses = ["127.0.0.1:53", "[::1]:53"]
max_clients = 250
ipv4_servers = true
ipv6_servers = false
dnscrypt_servers = true
doh_servers = true
require_dnssec = true
require_nolog = true
require_nofilter = true
daemonize = false
force_tcp = false
timeout = 2500
log_level = 0
use_syslog = false
cert_refresh_delay = 240
fallback_resolver = "9.9.9.9:53"
ignore_system_dns = false
block_ipv6 = true
cache = true
cache_size = 256
cache_min_ttl = 600
cache_max_ttl = 86400
cache_neg_ttl = 60
[query_log]
format = "ltsv"
[nx_log]
format = "ltsv"
[blacklist]
[ip_blacklist]
[sources]
[sources.public-resolvers]
url = "[url]https://download.dnscrypt.info/resolvers-list/v2/public-resolvers.md[/url]"
minisign_key = "RWQf6LRCGA9i53mlYecO4IzT51TGPpvWucNSCh1CBM0QTaLn73Y7GFO3"
cache_file = "public-resolvers.md"
refresh_delay = 72
prefix = ""

Публичные сервера можно найти тут.
После этого нам надо запустить службу dnscrypt-proxy:

sudo systemctl daemon-reload
sudo systemctl stop dnscrypt-proxy.socket
sudo systemctl enable dnscrypt-proxy
sudo systemctl start dnscrypt-proxy

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

Теперь нам надо изменить файл /etc/resolv.conf и запретить его перезапись. Для этого открываем его текстовым редактором:

sudo nano /etc/resolv.conf

Убираем там всё что есть (а лучше закомментируем #) и вписываем:

nameserver 127.0.0.1:53

Затем запрещаем его перезапись:

sudo chattr +i /etc/resolv.conf

После всего этого перезагружаем систему.


Установка dnscrypt-proxy в Arch Linux/Manjaro

Пакет dnscrypt-proxy есть в официальных репозиториях. Открываем терминал и устанавливаем:

sudo pacman -S dnscrypt-proxy

Затем также как и в Ubuntu правим конфигурационный файл вписывая туда сервера. Далее запускаем службу:

systemctl enable dnscrypt-proxy.service
systemctl start dnscrypt-proxy.service

Далее также настраиваем соединение в NetworkManager, правим файл /etc/resolv.conf и запрещаем его перезапись. Перезагружаем систему. Проверить состояние службы можно командой:

systemctl status dnscrypt-proxy.service


Установка службы DNSCrypt-proxy в ОС Windows

1. Скачайте и установите dnscrypt-proxy для вашей архитектуры.
2. Сохраните копию исходного файла конфигурации example-dnscrypt-proxy.toml и настройте согласно вашим требованиям dnscrypt-proxy.toml.

3. Убедитесь, что другие приложения и сервисы не прослушивают 53 порт в вашей системе и запустите приложение dnscrypt-proxy в командной строке Windows в режиме администратора системы. Измените ваши настройки DNS для настроенного IP-адреса.

В нашем случае необходимо настроить DNS на 127.0.0.1 (указанное значение для параметра listen_addresses в конфигурационном файле) в параметрах протокола TCP/IP.

4. Установите системную службу. Дважды щелкните по файлу service-install.bat для установки службы. Служба будет автоматически запускаться при каждой перезагрузке.

Вы можете проверить информацию о DNS с помощью сервиса http://dnsleak.com. Данные сайты возвращают информацию о вашем IP-адресе и владельце используемого DNS сервера. Если в результатах отображается сервис вашего Интернет-провайдера, то происходит утечка DNS.

Click to rate this post!
[Total: 6 Average: 5]

Специалист в области кибер-безопасности. Работал в ведущих компаниях занимающихся защитой и аналитикой компьютерных угроз. Цель данного блога - простым языком рассказать о сложных моментах защиты IT инфраструктур и сетей.

Leave a reply:

Your email address will not be published.