Предотвращение утечки DNS запросов: Установка Unbound DNS Resolver ака DNSSEC

archive view archive save

Предотвращение утечки DNS запросов: Установка Unbound DNS Resolver ака DNSSEC Некоторые по ошибке называют Unbound DNS Resolver ДНС сервером. Разница между DNS Resolver и DNS Server в том, что Resolver является посредником между приложением, которое запрашивает ДНС записи и ДНС сервером, второй же (держатель/сервер зоны, он же и резолвер в одной проге) служит для полноценного обслуживания доменных имен/зон с поддержкой всех типов ДНС записей (A, TXT, SOA, PTR etc).

ДНС сервера провайдера или других поставщиков могут быть ненадёжны, а поэтому лучше использовать так называемые корневые ДНС сервера ака "Root Servers" от первоисточника IANA (Администрация адресного пространства Интернет - Internet Assigned Numbers Authority) с которого по идее должны обновляться и ДНС сервера нашего провайдера. Более того, все ДНС запросы регистрируются у нашего Интернет провайдера, а лучше будет если они будут регистрироваться где-то в другом месте/стране.

Unbound это кэширующий DNS ресолвер (не ДНС сервер!) который служит для обслуживания рекурсивных запросов. Во процессе своей работы свой кэш он целиком хранит в оперативной памяти, лимит которой ограничивается директивой "key-cache-size: 4m". Unbound поддерживает расширение DNSSEC и способен работать как "validator".

К плюсам Unbound ресолвера, в сравнении с ДНС серверами типа BIND, можно отнести скорость работы и малый размер. На официальном сайте есть сравнительная информация популярных DNS серверов по количеству обработанных запросов:

Server      Queries/sec (10 clients)
Unbound             8 276
MaraDNS             3 068
BIND                3 003
dnscache            2 928
PowerDNS Recursor   2 074

Установка и настройка unbound под Windows XP

Загрузить unbound-ххх.zip, распаковать, переименовать каталог unbound-ххх в Unbound и передвинуть в C:\Program Files\Unbound (именно в этот каталог программа смотрит по умолчанию), добавить в конец файла service.conf строку "do-ip6: no" для отключения протокола ip6 (пока не на всех ОС установлен/поддерживается).

Загрузить named.root, переименовать его в named.cache и переместить его в C:\Program Files\Unbound. Открыть консоль и перейти в cd /d "c:\Program Files\Unbound\", после чего установить Unbound как службу выполнив unbound-service-install.exe

Теперь, если мы хотим использовать DNSSEC, то из каталога cd /d "c:\Program Files\Unbound\" нам нужно выполнить файл unbound-anchor.exe, который проверит наличие/доступность root.key и обновит/создаст его примерно с таким содержимым:

; autotrust trust anchor file
;;id: . 1
;;last_queried: 1364027536 ;;Sat Mar 21 11:01:27 2013
;;last_success: 1364027536 ;;Sat Mar 21 11:01:27 2013
;;next_probe_time: 1364071854 ;;Sat Mar 22 22:50:54 2013
;;query_failed: 0
;;query_interval: 43200
;;retry_time: 8640
.  172800  IN  DNSKEY  257 3 8 AwEAAagAIKlVZrpC6Ia7gEzahOR+9WPOJKD098y489hfsk\
    sd'f-4gcCjFFVQUTf6v58fLjwBd0YI0\
    EzrAcQqBGCzh/RKJFD)S*FYER(HSDJFDKDOPFJIODSHFERFGIDSHFDIBV78egf8w/VHL496M/\
    QZxkjf5/Efucp2gaDX6RS6CXpoY68LsvPVjR0ZSwzz1apAzvN9dlzEheX7ICJBBtuA6G3LQpzW\
    5hOA2hzCTMjJPJ8LbqF6dsV6DoBQzgul0sGIcGOYl7OyQdXfZ57relSQageu+ipAdTTJ25AsRT\
    Aoub8ONGcLmqrAmRLKBP1dfwhYB4N7knNnulqQxA+Uk1ihz0= ;{id = 19036 (ksk), size\
    = 2048b} ;;state=2 [  VALID  ] ;;count=0 ;;lastchange=1364027536 ;;Sat Mar \
    21 11:01:27 2013

Теперь в service.conf нужно явно указать строку "auto-trust-anchor-file: "C:\Program Files\Unbound\root.key"" или "trust-anchor: ". IN DS 19036 8 2 49AAC11D7B6F6446702E54A1607371607A1A41855200FD2CE1CDDE32F24E8FB5"", запустить сервис "Unbound DNS validator", а иначе лыжи не поедут и DNSSEC не будет работать! Проверить можно выполнив команду dig com. SOA +dnssec, в результате мы должны видеть наличие флага AD в строке ";; flags: qr rd ra ad;":

>dig com. SOA +dnssec
 
; <<>> DiG 9.3.2 <<>> com. SOA +dnssec
;; global options:  printcmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 230
;; flags: qr rd ra ad; QUERY: 1, ANSWER: 2, AUTHORITY: 14, ADDITIONAL: 1
 
;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags: do; udp: 4096
;; QUESTION SECTION:
;com.                           IN      SOA
 
;; ANSWER SECTION:
com.                    900     IN      SOA     a.gtld-servers.net. nstld.verisi
gn-grs.com. 1364032049 1800 900 604800 86400
com.                    900     IN      RRSIG   SOA 8 1 900 20130330094729 20130
323083729 23975 com. EBxeTAIHI4Gooj8J+k5L8WRo6GKMFvj8B/nygRxduUc/pihyXYy9XWUa aj
xdiy1cr+NktjVZFWKQDFVZGstsmm1Vc/WbajggY9qyV2eJXg0Kd4BF 2S/rEW/kjdYU3qeaurDH8SKpj
GhyR00haELra6Ed57k/ke8DN6MyxZ4/ 3WQ=
 
;; AUTHORITY SECTION:
com.                    172800  IN      NS      e.gtld-servers.net.
com.                    172800  IN      NS      m.gtld-servers.net.
com.                    172800  IN      NS      i.gtld-servers.net.
com.                    172800  IN      NS      k.gtld-servers.net.
com.                    172800  IN      NS      l.gtld-servers.net.
com.                    172800  IN      NS      c.gtld-servers.net.
com.                    172800  IN      NS      h.gtld-servers.net.
com.                    172800  IN      NS      b.gtld-servers.net.
com.                    172800  IN      NS      f.gtld-servers.net.
com.                    172800  IN      NS      j.gtld-servers.net.
com.                    172800  IN      NS      g.gtld-servers.net.
com.                    172800  IN      NS      d.gtld-servers.net.
com.                    172800  IN      NS      a.gtld-servers.net.
com.                    172800  IN      RRSIG   NS 8 1 172800 20130327041900 201
30320030900 23975 com. pzdn+HfS1clWqjvnbGgg0Yesi/4MjV7sdiNsfS1tAmMIaxpCAAM37WeE
8UXc3umlh3McIYywFPIxBEqI9dBw2iUAhrdFUQ8kS2M3BA1p/s5By5He 3gx7u6xFu6rLfRXKpxwfvqW
77FCqMkdeo3bOtsxBES6RDvuJxJUmOZ2P 6JU=
 
;; Query time: 609 msec
;; SERVER: 127.0.0.1#53(127.0.0.1)
;; WHEN: Sat Mar 23 11:47:46 2013
;; MSG SIZE  rcvd: 637

dig есть и для Windows. Более наглядно проверить используем ли мы DNSSEC можно вот по этой ссыле, если нет, то мы увидим надпись "No, you are not using DNSSEC", а под нею мужичка в печали взявшегося за репу:)

Предотвращение утечки DNS запросов: Установка Unbound DNS Resolver ака DNSSEC

А если да, то видим мессагу "Yes, you are using DNSSEC", а под ней радостного чувачка:)

Предотвращение утечки DNS запросов: Установка Unbound DNS Resolver ака DNSSEC

Полный конфиг, работающей па моём ПК конфигурации Unbound DNS Resolver ака DNSSEC, представлен ниже:

 

unbound.exe вешает CPU (процессор)

По умолчанию unbound работает ака "module-config: "validator iterator"" и при запросе доменного имени пытается выстроить из имеющихся в списке "Root Servers" так называемую цепочку доверия "chain of trust" для запрошенного домена, в ходе построения которой unbound.exe может отнимать много времени центрального процессора, а если в service.conf мы установили "val-log-level: 2" повышенный уровень для сообщений, то в сисьлоге мы увидим: [unbound:0] info: validation failure <s20.rimg.info. A IN>: No DNSKEY record for key info. while building chain of trust

Тобишь если заметили, что unbound.exe вешает CPU, то значит в данный момент происходит "while building chain of trust" - смотрим на время в которое unbound.exe подвесил CPU, потом заглядываем в сисьлог. После облома "while building chain of trust" запрос будет закэширован и проц. больше вешаться не должен.

Это может происходить из-за того, что фаервол блокирует исходящие запросы по протоколу TCP на 53 порт (проверьте логи фаервола!) и если нет возможности разрешить TCP на 53 порт, то в service.conf нужно добавить "do-tcp: no" - т.е. отключить TCP для unbound.

Проблему с большой загрузкой ещё можно урегулировать директивами "outgoing-range: .." (количество портов выделяемых на поток) и "target-fetch-policy: ..." (глубина запросов).

unbound.exe не отвечает на запросы

Может быть так, что unbound.exe перестал отвечать на запросы, а в ответ на whois в консоль можем получить "Затребованное имя допустимо и оно найдено в базе данных, но для имени отсутствуют связанные с ним данные, которые были разрешены для него.".

unbound.exe работает нормально, слушает 53 порт, но на запросы не отвечает. Перезапуск  сервиса не помогает, перезагрузка ОС тоже не помогает и мы продолжаем получать "Затребованное имя допустимо и оно найдено в базе данных, но для имени отсутствуют связанные с ним данные, которые были разрешены для него.".

Причиной сего бага может быть глюк брандмауэра или какого-то Интернет-секюрити (если установлен). В моём случае смена режимов брандмауэра с "Пользовательский" на "Неактивен" и обратно решило проблему.

Блокируем скрытые "сервисы" в \etc\hosts

Теперь не помешает заглушить так называемые вредные скрытые сервисы *.onion и *.i2p (i2p - Invisible Internet Project) добавив в c:\WINDOWS\system32\drivers\etc\hosts такие строки:

127.0.0.2       idnxcnkne4qt76tg.onion
127.0.0.2       j6im4v42ur6dpic3.onion
127.0.0.2       p3igkncehackjtib.onion
127.0.0.2       vwp5zrdfwmw4avcq.onion
127.0.0.2       p4fsi4ockecnea7l.onion
127.0.0.2       37lnq2veifl4kar7.onion
127.0.0.2       3g2upl4pq6kufc4m.onion
127.0.0.3       i2p2.i2p
127.0.0.3       i2p-projekt.i2p
127.0.0.3       plugins.i2p
127.0.0.3       echelon.i2p
127.0.0.3       postman.i2p
127.0.0.3       freshcoffee.i2p
127.0.0.3       mail.i2p
127.0.0.3       zzz.i2p
127.0.0.3       killyourtv.i2p
127.0.0.3       eepsites.i2p
127.0.0.3       i2pbote.i2p
127.0.0.3       false.i2p
127.0.0.3       forum.i2p
127.0.0.3       pastethis.i2p
127.0.0.3       ugha.i2p
127.0.0.3       planet.i2p
127.0.0.3       stats.i2p
127.0.0.3       inr.i2p

Итоги

Unbound DNS Resolver хорошее решение для обеспечения целостности ДНС запросов и на мой взгляд является лучшим из существующих фрии DNS Resolver. На Unbound я наткнулся, когда искал пути перенаправления ДНС запросов через прокси, а соксификаторы и прочие геморройные утилы меня как-то не особо привлекали.

В браузерах Mozilla Firefox можно использовать родное решение для использования ДНС через socks прокси, в настройках about:config нужно установить network.proxy.socks_remote_dns = true. В браузере Google Chrome якобы есть предположение (маловероятное), что для этого же эффекта нужно отключить DNS prefetching (упреждающее чтение DNS) в расширенных настройках Google Chrome или добавить флаг "-dns-prefetch-disable" при запуске из командной строки.

Сслки по теме DNSSEC

Олег Головский


Комментарии   

АдМинь БагоИскатель
0 #4 АдМинь БагоИскатель 06.06.2017 15:12
Цитирую Net:
"Более того, все ДНС запросы регистрируются у нашего Интернет провайдера, а лучше будет если они будут регистрироваться где-то в другом месте/стране."

Однако решение в вашей статье не решает данный вопрос! Т.к. запросы очевидно как передавались в открытом виде так и будут продолжать это делать. И очевидно что провайдер и далее продолжит записывать ваши днс запросы как и делал это ранее! Так что статья отчасти вводит в заблуждение читателя! Стоит использовать средство DNS Crypt для данных целей!

Вы правы, но лишь частично. "DNS Crypt" предотвращает утечку ДНС-запроса целиком и полностю, и от провайдера в том же числе. А DNSSEC лишь гарантирует подлиность домена и обслуживающих его ДНС-серверов, таким образом предотвращая подмену ДНС-сервера и сответственно конечной точки назначения (сайта/сервера) , - потому, никаких заблуждений! DNSSEC гарантия того, что первоначальный ДНС-запрос попал на подлинный ДНС-сервер, который в свою очередь вернул DNSSEC-подписан ный ответ с инфо о ИП-адресе конечной точки назначения, а не утёк ХЗ в какую сторону на фейковый/поддел ьный ИП!
Цитировать
Net
0 #3 Net 06.06.2017 13:24
"Более того, все ДНС запросы регистрируются у нашего Интернет провайдера, а лучше будет если они будут регистрироватьс я где-то в другом месте/стране."

Однако решение в вашей статье не решает данный вопрос! Т.к. запросы очевидно как передавались в открытом виде так и будут продолжать это делать. И очевидно что провайдер и далее продолжит записывать ваши днс запросы как и делал это ранее! Так что статья отчасти вводит в заблуждение читателя! Стоит использовать средство DNS Crypt для данных целей!
Цитировать
Арсений Яковлевич
0 #2 Арсений Яковлевич 17.02.2014 13:58
Цитирую Guest:
Чтобы unbound не вешал проц нужно просто отрубить DNSSEC:
module-config: "iterator"

:-) ок - спасибо анонимусу!

Но, статья то ведь про DNSSEC ресолвер, а не просто DNS ресолвер. Если будет только "iterator", то это уже не DNSSEC имхо:
Цитата:
http://www.unbound.net/documentation/unbound.conf.html

module-config:

Module configuration, a list of module names separated by spaces, surround the string with quotes (""). The modules can be validator, iterator. Setting this to "iterator" will result in a non-validating server. Setting this to "validator iterator" will turn on DNSSEC validation. The ordering of the modules is important. You must also set trust-anchors for validation to be useful.
Цитировать
Guest
0 #1 Guest 17.02.2014 13:01
Чтобы unbound не вешал проц нужно просто отрубить DNSSEC:
module-config: "iterator"
Цитировать

Добавить комментарий

АХТУНГ! Все комменты гостей модерасятся модерастом.
  1. Мессаги исключительно рекламного содержания, либо содержащие только одни оценочные суждения типа "круто" ("отлично", "спасибо", "автор дебил" и т.п.) не публикуются;
  2. Злостным спамерам, пранкерам и прочей сетевой нечисти рекомендуем напрасно не тратить своего времени и удовлетворять свои больные фантазии на специализированных Интернет ресурсах!;
  3. Разумная обоснованная критика, замечания, дополнения приветствуются. Поля помеченные символом * обязательны к заполнению.


Защитный код
Обновить

Комментарии в блоге
Новое на форуме