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.