DNSCrypt

Компания OpenDNS анонсировала проект DNSCrypt, в рамках которого продвигается новый способ защиты от атак, связанных с модификацией и манипулированием транзитным трафиком DNS. Основная задача DNSCrypt - полное шифрование всего канала связи между клиентом и сервером DNS, примерно как SSL используется для шифрования HTTP-трафика. Шифрование DNS-трафика позволит защитить клиента от атак "человек посередине", при которых злоумышленник вклинивается в канал связи и притворяется DNS-сервером. Кроме того, шифрование предотвращает наблюдение за трафиком и блокирует активность злоумышленников, связанную с подбором идентификаторов пакетов или отправкой фиктивных DNS-ответов.

Установка для ar71xx

Для начала, собираем пакет dnscrypt-proxy или скачиваем готовый. Ссылки на актуальные сборки находятся на последних страницах соответствующей темы форума.

cd /tmp
wget http://one-c.ru/dnscrypt-proxy_0.9.3-1_ar71xx.ipk
opkg install /tmp/dnscrypt-proxy_0.9.3-1_ar71xx.ipk

Настройка

dnscrypt-proxy

Структура файла /etc/config/dnscrypt-proxy проста, чаще всего, ничего менять не требуется:

config dnscrypt-proxy option address '127.0.0.1' option port '2053'

Описание параметров:

Название Тип Обязательный? Описание
address строковый да IP-адрес, на который будет осуществляться прием DNS-запросов от клиентов
port строковый да Порт

Дополнительные опции, при необходимости, указываются в /etc/init.d/dnscrypt-proxy

Запускаем DNSCrypt и добавляем его в автозагрузку:

/etc/init.d/dnscrypt-proxy enable
/etc/init.d/dnscrypt-proxy start

dnsmasq

Настраиваем dnsmasq для использования dnscrypt-proxy на 127.0.0.1:2053

Пример /etc/config/dhcp (полужирным выделены строки, которые необходимо изменить для использования dnscrypt-proxy):

config dnsmasq option domainneeded 1 option boguspriv 1 option filterwin2k 0 option localise_queries 1 option rebind_protection 1 option rebind_localhost 1 option local '/lan/' option domain 'lan' option expandhosts 1 option nonegcache 0 option authoritative 1 option readethers 1 option leasefile '/tmp/dhcp.leases' # option resolvfile '/tmp/resolv.conf.auto' option noresolv 1 list server '127.0.0.1#2053' list server '/pool.ntp.org/208.67.222.222' config 'dhcp' 'lan' option 'interface' 'lan' option 'ignore' '1' config 'dhcp' 'wan' option 'interface' 'wan' option 'ignore' '1'
  • Отключили обработку файла /tmp/resolv.conf.auto, поскольку он указывает dnsmasq использовать DNS-серверы провайдера.
  • Добавили опцию noresolv, которая по тем же причинам отключает обработку файла /etc/resolv.conf.
  • 127.0.0.1#2053 - адрес DNSCrypt из /etc/config/dnscrypt-proxy.
  • /pool.ntp.org/208.67.222.222 добавляет исключение для адреса pool.ntp.org domain, который будет доступен через обычный незашифрованный DNS-канал. DNSCrypt требует, чтобы было установлено точное время, иначе сервис DNS не будет работать, и не будет возможности синхронизировать время. В данном примере, для доступа к pool.ntp.org используется сервер OpenDNS. Вы можете использовать любой другой сервер для синхронизации времени и любой другой публичный DNS-сервер (Google DNS, Yandex DNS) или DNS-сервер своего провайдера.
  • Все остальные строки (кроме добавленных выше), содержащие адреса DNS-серверов, следует закомментировать.

Перезапускаем dnsmasq:

Примечание: время на маршрутизаторе должно быть установлено ​​правильно.

/etc/init.d/dnsmasq restart

Дополнительные настройки dnscrypt-proxy

Пример /etc/init.d/dnscrypt-proxy

#!/bin/sh /etc/rc.common # Copyright (C) 2012 OpenWrt.org START=50 start_instance () { local section="$1" config_get address "$section" 'address' config_get port "$section" 'port' service_start /usr/sbin/dnscrypt-proxy -d \ -a ${address}:${port} \ -n 64 \ -u nobody } start() { config_load 'dnscrypt-proxy' config_foreach start_instance 'dnscrypt-proxy' } stop() { service_stop /usr/sbin/dnscrypt-proxy }

В данном случае, адрес DNS-сервера не указан явно, поэтому будет использоваться сервер OpenDNS. Если вы хотите использовать иной сервер (этот сервер должен поддерживать технологию DNSCrypt), необходимо задать значения следующим параметрам:

Полное название Краткая запись Описание
—-provider-name -N Имя предпочитаемого DNS-сервера.
—-provider-key -k Публичный ключ сервера.
—-resolver-address -r IP-адрес DNS-сервера.

Информацию о подобных серверах можно взять, например, со страницы проекта DNSCrypt на GitHub.

Таким образом, содержимое /etc/init.d/dnscrypt-proxy будет выглядеть, например, следующим образом:

#!/bin/sh /etc/rc.common # Copyright (C) 2012 OpenWrt.org START=50 start_instance () { local section="$1" config_get address "$section" 'address' config_get port "$section" 'port' service_start /usr/sbin/dnscrypt-proxy -d \ -a ${address}:${port} \ -n 64 \ -u nobody \ -N 2.dnscrypt-cert.ns10.uk.dns.opennic.glue \ -k B1AB:7025:1119:9AEE:E42E:1B12:F2EF:12D4:53D9:CD92:E07B:9AF4:4794:F6EB:E5A4:F725 \ -r 185.19.105.14:443 } start() { config_load 'dnscrypt-proxy' config_foreach start_instance 'dnscrypt-proxy' } stop() { service_stop /usr/sbin/dnscrypt-proxy }

Очищаем кэш DNS на клиентских машинах

Примечание: Команды должны быть выполнены в командной строке с правами администратора.

Windows ⇒ ipconfig /flushdns

Mac OSX 10.4 (Tiger) ⇒ lookupd -flushcache

Mac OSX 10.5/10.6 (Leopard/Snow Leopard) ⇒ dscacheutil -flushcache

Linux ⇒ sudo /etc/init.d/nscd restart или sudo /etc/init.d/networking restart

Проверка работоспособности

Самый простой способ - взглянуть на логи:

  1. Проверить, что dnsmasq использует только dnscrypt.
    • logread | grep -n "using nameserver"
    • 132:Jan  1 01:01:00 openwrt daemon.info dnsmasq[1883]: using nameserver 208.67.222.222#53 for domain pool.ntp.org
      133:Jan  1 01:01:00 openwrt daemon.info dnsmasq[1883]: using nameserver 127.0.0.1#2053
  2. Проверить, работает ли dnscrypt-proxy.
    • logread | grep "Proxying from"
    • Jul 1 12:00:00 openwrt daemon.info dnscrypt-proxy[1831]: Proxying from 127.0.0.1:2053 to 208.67.220.220:443

Ссылки

Источник https://forum.openwrt.org/viewtopic.php?id=36380

Проверяем, используется ли сервер OpenDNS http://www.opendns.com/welcome

Back to top

ru/inbox/dnscrypt.txt · Last modified: 2014/04/01 14:21 by dartraiden