Перейти к содержимому

Защита от перехвата DNS-трафика с помощью dnscrypt-proxy


Рекомендуемые сообщения

Если ваш провайдер перехватывает\логирует\подменяет DNS-запросы или вы просто хотите обезопасить DNS-трафик, то вам может изложенное ниже решение, основанное на использовании dnscrypt-proxy.

Установите необходимые пакеты:

opkg install fake-hwclock dnscrypt-proxy iptables ndmq
 

При запросе о предпочитаемом сервере dnscrypt просто нажмите Enter.

Поместите в файл /opt/etc/ndm/netfilter.d/010-intercept-dns.sh следующее содержимое:

#!/bin/sh

[ "$table" != "nat" ] && exit 0

lan_ip=$(ndmq -p 'show interface Bridge0' -P address)

iptables -t nat -I PREROUTING -p udp -m udp --dport 53 -j DNAT --to-destination $lan_ip:65053
iptables -t nat -I PREROUTING -p tcp -m tcp --dport 53 -j DNAT --to-destination $lan_ip:65053
 

и сделайте скрипт исполняемым:

chmod +x /opt/etc/ndm/netfilter.d/010-intercept-dns.sh
 

Далее, отредактируйте стартовый скрипт /opt/etc/init.d/S09dnscrypt-proxy, заменив в нём строчку

ARGS="--local-address=127.0.0.1:65053 --daemonize -R cisco"
 

на

ARGS="--local-address=$(ndmq -p 'show interface Bridge0' -P address):65053 --daemonize -R cisco"
 

И перегрузите роутер из веб-интерфейса. Всё!

 

Диагностика проблем:

 

0. Убедитесь, что на ПК не прописаны вручную в св-вах сетевого соединения сторонние DNS-серверы. Если вы в сетевых настройках ПК ничего не меняли, то можете это не проверять.

1. Очистите DNS-кеш операционной системы (для Windows - ipconfig /flushdns)

2. Очистите DNS-кеш браузера, достаточно его закрыть и открыть по новой.

3. Перейдите по этой ссылке.

Как это работает:

Скрытый текст

С помощью правила iptables любые DNS-запросы от роутера (и его клиентов) «заворачиваются» на dnscrypt-proxy. Последний шифрует DNS трафик, для провайдера трафик выглядит как HTTPS. С настройками по умолчанию для разрешения DNS-имён будет использоваться сервер OpenDNS, на сегодняшний день это сервис принадлежит компании Cisco. Можно выбрать сервер поближе к себе, на этапе установки пакета выбрав сервер из предлагаемого списка.

Зачем нужен пакет fake-hwclock:

Скрытый текст

 

На борту роутера нет часов реального времени. Этот пакет записывает системную дату роутера в процессе выключения и устанавливает её при следующем старте. Если этого не делать, то возможен следующий deadlock:

1. dnscrypt-proxy не может начать работать, т.к. срок действия полученного им сертификата будет в будущем.

2. NTP-клиент не может установить правильную системную дату, т.к. не сможет разрешить DNS-имя ntp.pool.org (или другое).

 

Что теряем при использовании этого решения:

Скрытый текст

 

1. Теряем возможности встроенного в прошивку DNS-сервера/прокси. В частности, возможность кеширования DNS-запросов на роутере и возможность обращения к ресурсом локалки по DNS-именам. Если нынче DNS-запросы и без того замечтательно кешируются операционкой ПК и браузером, то разрешение DNS-имён в локалке может стать проблемой. Скажем, придётся обращаться к NAS'у в локалке не по имени \\MyNas\, а по IP: \\192.168.1.4\.

2. В связи с тем, что мы отказываемся от провайдерских DNS-серверов, мы теряем возможность разрешения DNS-имён для локальных ресурсов провайдера. Если для установления L2TP/PPTP-соединения сервер задан DNS-именем, например, l2tp.beeline.ru, то лучше вписать в веб-интерфейс кинетика адрес сервера в виде ip.

3. Теряем в скорости работы DNS-резолвинга. Чем ближе к роутеру находится DNS-сервер, тем быстрее разрешаются DNS-имена. Отказ о провайдерского DNS и накладные расходы на шифрования трафика увеличивают время резолвинга. IMHO, этим можно принебречь. Скажем «Ростелеком» не брезгует отдавать клиентам по DHCP вместе со своими, DNS-серверы Гугла.

 

 

Изменено пользователем Александр Рыжов
Ссылка на комментарий
Поделиться на других сайтах

  • 3 weeks later...

Большое спасибо за решение.

Столкнулся с проблемой - если в настройках выбрать, например, московский сервер OpenNIC - в логе видим:

Mar 05 12:28:51dnscrypt-proxy[347]
Unable to retrieve server certificates

Естественно, ничего не работает.

Ссылка на комментарий
Поделиться на других сайтах

При настройке выводится список известных на момент правки исходников список рабочих серверов dnscrypt. Что отнюдь не гарантирует их работоспособности в будущем.

Ссылка на комментарий
Поделиться на других сайтах

При настройке выводится список известных на момент правки исходников список рабочих серверов dnscrypt. Что отнюдь не гарантирует их работоспособности в будущем.

Выходит, каждый раз, когда нужно обновить данный список, нужно пересобирать приложение? Возможности указать список серверов в отдельном конфиге не предусмотрено?

Ссылка на комментарий
Поделиться на других сайтах

Выходит, каждый раз, когда нужно обновить данный список, нужно пересобирать приложение? Возможности указать список серверов в отдельном конфиге не предусмотрено?
Нет, пересобирать не нужно.

Есть возможность. Указанный в стартовым скрипте сервер — один из списка /opt/share/dnscrypt-proxy/dnscrypt-resolvers.csv. Дописывайте в список свой сервер или указывайте все параметры нового сервера прямо в стартовом скрипте. В дкументации dnscrypt-proxy всё расписано.

Ссылка на комментарий
Поделиться на других сайтах

  • 1 month later...

файл с указанным именем надо создать по указанному пути, вставить приложенный код и сделать файл исполняемым

Ссылка на комментарий
Поделиться на других сайтах

А зачем вешать dnscrypt на другой порт и перехватывать через iptables, если можно сделать opkg dns-override и повесить на 53 порт?

Ссылка на комментарий
Поделиться на других сайтах

А зачем вешать dnscrypt на другой порт и перехватывать через iptables, если можно сделать opkg dns-override и повесить на 53 порт?
dns-override существовал не всегда. Эта инструкция была сделана несколько раньше.
Ссылка на комментарий
Поделиться на других сайтах

  • 2 months later...
А зачем вешать dnscrypt на другой порт и перехватывать через iptables, если можно сделать opkg dns-override и повесить на 53 порт?

А для того, чтобы повесить dnscrypt на 53 порт нужно в стартовом скрипте /opt/etc/init.d/S09dnscrypt-proxy заменить строчку

ARGS="--local-address=127.0.0.1:65053 --daemonize -R cisco"

на

ARGS="--local-address=$(ndmq -p 'show interface Bridge0' -P address):[color=#FF0000]53[/color] --daemonize -R cisco" 

?

Если так, то с портом 53 dnscrypt не стартует.

/opt/etc/init.d/S09dnscrypt-proxy start

выдает ошибку.

Ссылка на комментарий
Поделиться на других сайтах

  • 1 month later...

Доброго времени суток! Вы конечно здесь все такие грамотные, и скорее всего разъясните мне, что я делаю не так! Прошивок кучу перепробовал... Команды в телнете ваши пишу, а в результате вот такая лажа:fuynya.jpg

Ссылка на комментарий
Поделиться на других сайтах

12 минуты назад, advokat сказал:

Доброго времени суток! Вы конечно здесь все такие грамотные, и скорее всего разъясните мне, что я делаю не так! Прошивок кучу перепробовал... Команды в телнете ваши пишу, а в результате вот такая лажа:fuynya.jpg

Для начала вам нужна флешка и http://forum.keenetic.net/topic/221--entware-keenetic/

Ссылка на комментарий
Поделиться на других сайтах

  • 2 months later...

Можно ли вместе с защитой от перехвата DNS-трафика применить блокировку рекламы на роутере из темы http://forum.keenetic.net/topic/139-блокировка-рекламы-на-роутере/? Содержимое скрипта  /opt/etc/ndm/netfilter.d/010-intercept-dns.sh одинаковое. Но что-то у меня реклама не блокируется. Адреса серверов в фале  /opt/etc/dnsmasq.conf указал от OpenDNS. 

Ссылка на комментарий
Поделиться на других сайтах

В 19.11.2016 в 12:28, Khaninea сказал:

Можно ли вместе с защитой от перехвата DNS-трафика применить блокировку рекламы на роутере из темы http://forum.keenetic.net/topic/139-блокировка-рекламы-на-роутере/? Содержимое скрипта  /opt/etc/ndm/netfilter.d/010-intercept-dns.sh одинаковое. Но что-то у меня реклама не блокируется. Адреса серверов в фале  /opt/etc/dnsmasq.conf указал от OpenDNS. 

Да. Тогда Ваш dnsmasq.conf должен выглядеть вот так

p.s. порт #40 приведен в примере "информационно" , если вы используете, например, dnscrypt-proxy, то тогда порт должен быть 65053 

no-resolv

server=127.0.0.1#40

listen-address=127.0.0.1

 

Изменено пользователем Dorik1972
Добавил разъяснение по порту !!!
Ссылка на комментарий
Поделиться на других сайтах

5 часов назад, Dorik1972 сказал:

Да. Тогда Ваш dnsmasq.conf должен выглядеть вот так

no-resolv

server=127.0.0.1#40

listen-address=127.0.0.1

Увы, что-то не получается. Реклама продолжает "сыпаться"

Ссылка на комментарий
Поделиться на других сайтах

3 часа назад, Khaninea сказал:

Увы, что-то не получается. Реклама продолжает "сыпаться"

Тут вопрос "философский" .... в логе на устройстве dnsmasq стартует ? hosts "затягивает"? .... pidof dnsmasq выдает номерок процесса? + попробуйте эту "таблетку" - 

  И что такое сыпаться ? Кто сказал что сей метод "наглухо" убьет всю рекламу :???: .... Идеология такова что если "попадаются" некие "рекламодатели" перечисленные в файле hosts ... то да ... Иначе .... постигайте силу "ненавязчивого" маркетинга ... Вообще сие есть аналог, например AdAway, под андроид - http://4pda.ru/forum/index.php?showtopic=275091 (кстати из нее можно почерпнуть адреса получения всегда актуальных и пополняемых hosts) ну и иже с ними

p.s. А по поводу совместного и правильного использования и настройки DnsCrypt читать в первоисточнике -> https://wiki.archlinux.org/index.php/DNSCrypt

p.s.s.  А так чтоб максимально "прибить" рекламку - пользуемся в браузере плагинами типа AdGuard и Ghostery :)

Изменено пользователем Dorik1972
Ссылка на комментарий
Поделиться на других сайтах

  • 2 months later...

После установки последней тестовой прошивки 2.09 (Версия 2.09.A.3.0-0) dnscrypt-proxy больше не проходит проверку здесь:   https://www.opendns.com/welcome/

По логу прошивки всё в порядке, сервис работает. До этой прошивки проверку dnscrypt проходил без проблем. Может кто что подскажет.

Ссылка на комментарий
Поделиться на других сайтах

2 минуты назад, SigmaPlus сказал:

После установки последней тестовой прошивки 2.09 (Версия 2.09.A.3.0-0) dnscrypt-proxy больше не проходит проверку здесь:   https://www.opendns.com/welcome/

По логу прошивки всё в порядке, сервис работает. До этой прошивки проверку dnscrypt проходил без проблем. Может кто что подскажет.

Такая же ерунда, а вы по новой пробовали устанавливать Entware и все остальное?

Ссылка на комментарий
Поделиться на других сайтах

Господа, смотрите последние буг репорты.

Скрипты из netfilter.d не работают.

Если у вас сделано через перенаправление 53го порта а не через dns-override, то вы сейчас сидите через встроенный в прошивку dns proxy.

 

Изменено пользователем r13
Ссылка на комментарий
Поделиться на других сайтах

  • 2 weeks later...

Господа, прошу проголосовать за DNScrypt и DNSsec из коробки, если есть такая потребность, как у меня.

Ссылка на комментарий
Поделиться на других сайтах

On 23.04.2016 at 4:11 PM, Александр Рыжов said:
KorDen said:
А зачем вешать dnscrypt на другой порт и перехватывать через iptables, если можно сделать opkg dns-override и повесить на 53 порт?

dns-override существовал не всегда. Эта инструкция была сделана несколько раньше.

Подскажите, а где конфиг основной от dnscrypt-proxy ?

Хочу запилить проброс на локальные DNS для локальных доменов.

Ссылка на комментарий
Поделиться на других сайтах

Все параметры передаются при запуске в /opt/etc/init.d/S09dnscrypt-proxy.

Изменено пользователем Александр Рыжов
Ссылка на комментарий
Поделиться на других сайтах

20 minutes ago, Александр Рыжов said:

Все параметры передаются при запуске в /opt/etc/init.d/S09dnscrypt-proxy.

Простите за назойливость, а как добавить в этот файл исключения для локальных DNS или это нельзя сделать? (погуглил, ничего нет, а самом файле всего несколько параметров без описаний).

Или хотя бы намекните, как это можно реализовать )) Я уже отчаялся, и уже готов идти покупать для этого отдельный роутер (для dnscrypt) (((

Изменено пользователем cocojambo
Ссылка на комментарий
Поделиться на других сайтах

Никак: dnscrypt-proxy служит для совсем других целей. Он не кеширует запросы, не ведёт списки исключений и не обслуживает зоны. Поэтому его целесообразно использовать как апстрим для dnsmasq, bind или другого DNS-сервера, обслуживающего локалку.

Ссылка на комментарий
Поделиться на других сайтах

  • 2 weeks later...
В 19.11.2016 в 13:28, Khaninea сказал:

Можно ли вместе с защитой от перехвата DNS-трафика применить блокировку рекламы на роутере из темы http://forum.keenetic.net/topic/139-блокировка-рекламы-на-роутере/? Содержимое скрипта  /opt/etc/ndm/netfilter.d/010-intercept-dns.sh одинаковое. Но что-то у меня реклама не блокируется. Адреса серверов в фале  /opt/etc/dnsmasq.conf указал от OpenDNS. 

У меня аналогичный вопрос.У кого нибудь получилось решить эту проблему? Изменил настройки  dnsmasq.conf  на 

no-resolv

server=127.0.0.1#65053

listen-address=127.0.0.1

К моему сожалению не помогло:(( Роутер Giga 3 установлено entware-3x.До сего момента блокировка рекламы отлично работала, прекрасно выручала при просмотре роликов youtube на телевизоре. Жду вашего совета уважаемые форумчане!

Изменено пользователем vlad
Ссылка на комментарий
Поделиться на других сайтах

В 03.03.2017 в 16:22, vlad сказал:

У меня аналогичный вопрос.У кого нибудь получилось решить эту проблему? Изменил настройки  dnsmasq.conf  на 

no-resolv

server=127.0.0.1#65053

listen-address=127.0.0.1

К моему сожалению не помогло:(( Роутер Giga 3 установлено entware-3x.До сего момента блокировка рекламы отлично работала, прекрасно выручала при просмотре роликов youtube на телевизоре. Жду вашего совета уважаемые форумчане!

Никого больше не интересует этот вопрос ?

Изменено пользователем vlad
Ссылка на комментарий
Поделиться на других сайтах

В 07.03.2017 в 22:49, vlad сказал:

Никого больше не интересует этот вопрос ?

Dnsmasq.conf

server=127.0.0.1#65053
no-resolv
addn-hosts=/opt/tmp/hosts0

Запуск dnscrypt-proxy c вашим DNS сервером или как ниже

... "--local-address=127.0.0.1:65053 --daemonize -R yandex"

Или чуть более подробно что нужно сделать от 08.03.17

 

Ссылка на комментарий
Поделиться на других сайтах

Поправка в Dnsmasq.conf добавить две строчки

Скрытый текст

interface=br0
bind-interfaces

результат до

tcp        0      0 0.0.0.0:53              0.0.0.0:*               LISTEN      dnsmasq

tcp        0      0 127.0.0.1:65053         0.0.0.0:*               LISTEN      dnscrypt-proxy
tcp        0      0 :::53                   :::*                    LISTEN      dnsmasq
udp        0      0 127.0.0.1:65053         0.0.0.0:*                           dnscrypt-proxy
udp        0      0 0.0.0.0:53              0.0.0.0:*                           dnsmasq
udp        0      0 0.0.0.0:32836           0.0.0.0:*                           dnscrypt-proxy
udp        0      0 :::53                   :::*                                dnsmasq

после

tcp        0      0 127.0.0.1:53            0.0.0.0:*               LISTEN      dnsmasq
tcp        0      0 192.168.1.1:53      0.0.0.0:*               LISTEN      dnsmasq
tcp        0      0 127.0.0.1:65053         0.0.0.0:*               LISTEN      dnscrypt-proxy
tcp        0      0 ::1:53                  :::*                    LISTEN      dnsmasq
udp        0      0 127.0.0.1:65053         0.0.0.0:*                           dnscrypt-proxy
udp        0      0 127.0.0.1:53            0.0.0.0:*                           dnsmasq
udp        0      0 192.168.1.1:53      0.0.0.0:*                           dnsmasq
udp        0      0 0.0.0.0:32836           0.0.0.0:*                           dnscrypt-proxy
udp        0      0 ::1:53                  :::*                                dnsmasq
 

Разница контроль 53 порта.

 

 

Ссылка на комментарий
Поделиться на других сайтах

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Гость
Ответить в тему...

×   Вставлено в виде отформатированного текста.   Вставить в виде обычного текста

  Разрешено не более 75 смайлов.

×   Ваша ссылка была автоматически встроена.   Отобразить как ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставить изображения напрямую. Загрузите или вставьте изображения по ссылке.

  • Сейчас на странице   0 пользователей

    • Нет пользователей, просматривающих эту страницу
×
×
  • Создать...