Кто твой первый советник, тёмный лорд? >>> DNS Leak TestЗлоумышленник может не просто вычислить тебя по айпишнику и набить морду, но и подменить IP-адрес сайта при твоём запросе к DNS серверу. Поэтому лучше, на всякий случай, спрячем наши запросы.
Для шифрования DNS-трафика будем использовать dnscrypt-proxy. Когда я обращаюсь к более далёким товарищам с вопросом, да ещё и шифрую этот диалог, то чётко понимаю, что скорость снижается. Поэтому очень хочется кэшировать. А dnscrypt-proxy этого, естественно, не делает. Для кэширования DNS-запросов есть выбор: Dnsmasq и Unbound (и ещё плюс всякого, конечно). Первый - комбайн. Берём второй. Unbound ещё и быстр! А кэш у него хранится целиком в памяти. Вот и получается прослойка:
Сейчас нарисую топорно так схемку:
FireFox -> System ->
/etc/resolv.conf = 127.0.0.1(:53) ->
Unbound -> cache ->
dnscrypt-proxy = 127.0.0.1:40 -> CRYPT ->
4ARMED = 51.254.115.48:443
Applications / System
/etc/resolv.confdomain DEAD.NET nameserver 127.0.0.1 # подразумевается порт 53
Этого может быть не достаточно в Armbian Legacy Ubuntu Trusty, так, как при автоматической настройке поменяется. Тогда редактируем файл:
/etc/resolvconf/resolv.conf.d/original
Сразу поставим пакеты с утилитами для проверки работы устанавливаемого нами софта:
apt-get install tcpdump dnsutils ldnsutils elinks
Установка и конфигурация UNBOUND
Установка и конфигурация DNSCRYPT-PROXY
Проверки
Двумя терминалами. В одном забиваем мониторинг порта 40:
tcpdump -A -ni lo port 40На этот порт придёт запрос от Unbound. Он будет читабельным. А во втором терминале делаем запрос, например:
elinks habrahabr.ruДалее сбрасываем кэш перезапуском:
unbound-control reloadИ делаем мониторинг порта 443 на внешнем интерфейсе
tcpdump -A -ni eth0 port 443На этот порт dnscrypt-proxy будет отправлять зашифрованный запрос резолверу. Конечно, если именно этот порт используется выбранным нами резолвером, а это можно подсмотреть в файле dnscrypt-resolvers.csv. И тут уже мы увидим зашифрованный трафик. Готово!
Финальная проверка - DNS Leak Test
И здесь мы увидим адрес резолвера, забитый на старте dnscrypt-proxyКосяк/особенность.
Дело в том, что Unbound форвардов с одинаковыми адресами, но с разным портом не различает. Он будет использовать одного из них. В этом можно убедиться, выполнив команду:unbound-control forward 127.0.0.1Поэтому правим конфиги таким образом, чтобы форварды отличались не портами, а адресами:
/etc/unbound/unbound.conf
forward-zone: name: "." forward-addr: 127.0.0.2@5353 forward-addr: 127.0.0.3@5353И автозапуск dnscrypt-proxy
/etc/rc.local
/usr/local/sbin/dnscrypt-proxy -R 4armed --local-address=127.0.0.2:5353 --daemonize --pidfile=/run/dnscrypt-proxy2.pid /usr/local/sbin/dnscrypt-proxy -R soltysiak --local-address=127.0.0.3:5353 --daemonize --pidfile=/run/dnscrypt-proxy3.pid exit 0Убеждаемся в портах после ребута
netstat -anp | grep dnscrypt-proxy netstat -anp | grep unboundИ проверка DNS Leak Test уже покажет два DNS сервера, а запрос на форвардов два локальных адреса:
unbound-control forward 127.0.0.2 127.0.0.3
1 комментарий:
Привет .
А pdnsd даже сохраняет кеш DNS на диске.
Отправить комментарий