• 🚨 Ещё можно успеть на курс «OSINT: технология боевой разведки» от Академии Кодебай

    🔍 Изучите методы разведки с использованием открытых источников (OSINT) для проведения успешных атак.
    🛠️ Освойте ключевые инструменты, такие как Maltego, TheHarvester и другие.
    🧪 Пройдите практические лабораторные работы, имитирующие реальную разведку.
    🧠 Развивайте навыки, которые помогут вам стать экспертом в области информационной безопасности.

    Запись открыта до 23 мая Подробнее о курсе ...

Статья Частный DNS сервер на основе "AdGuard Home" - с поддержкой DOT, DOH и DNScrypt серверов



Это DNS сервер, блокирующий рекламу и трекинг на сетевом уровне. Его функция в том, чтобы дать вам полный контроль над сетью и всеми вашими устройствами, и при этом он не требует установки никаких клиентских приложений. В то же время, AdGuard Home предоставляет веб-интерфейс, с помощью которого можно легко управлять процессом фильтрации.


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

Получить белый IP адрес
Иметь устройство, например роутер-маршрутизатор с функцией DDNS, DynDNS на случай получения белого IP адреса из динамического диапазона
Иметь минимальный опыт настройки домашних маршрутизаторов
Возможность зафиксировать локальный IP адрес устройства на котором будет развернут DNS сервер AdGuard Home, например по MAC-адресу
Роутер или маршрутизатор должны уметь работать с сервисом NO-IP или другими доступными конкретно для вас сервисами​


Краткий план предстоящих работ:

Регистрация Hostname на сервисе
Установка пакетов и запуск веб сервера -
Создание доменного имени на основе зарегистрированного Hostname
Получение сертификата безопастности с помощью сервиса
Установка AdGuard Home на наше устройство
Создание пользователя и базовые настройки для начала работы сервиса
Подключение доменного имени и сертификата безопастности к сервису AdGuard Home
Настройка Upstream DNS серверов - DOT, DOH и DNScrypt
Начать раздачу локального адреса DNS сервера через DHCP сервер нашего роутера-маршрутизатора
Проверка результата выполненных действий
Важная информация про сервисы и

Переходим на главную страницу сервиса

no-ip.jpg

Нажимаем кнопку Sign Up на верхней части страницы
- Указываем Email
- Задаем Пароль
- Отмечаем пункт Create my hostname later
- На конце страницы отмечаем пункт I agree to the Terms of Service and Privacy Policy. I also agree that I will only create one free account.
- Нажимаем Free Sign Up

Проходим авторизацию нажав кнопку Log In на правой верхней части страницы

После авторизации переходим на страницу для создания нашего hostname

Нажимаем кнопку зеленого цвета - Create Hostname

10.jpg


- В поле Hostname печатаем уникальное выражение, в моем примере используется - codeby
- В поле Domain выбираем одну из понравившихся доменных зон для вашего Hostname из списка доступных с пометкой Free Domains
- Пункт Record Type оставляем на своем месте - DNS Host (A)

11.jpg

Внизу страницы нажимаем Create Hostname

Получаем наш результат

12.jpg
Bash:
apt install net-tools nano wget iptables iptables-persistent certbot python-certbot-nginx nginx bind9-host


5.jpg

Во время установки пакет iptables-persistent задаст два вопроса
Отвечаем на них Yes
Или же No если понимаете для чего это нужно

6.jpg 7.jpg

По завершению установки всех пакетов
Проверим список запущенных сервисов

Bash:
netstat -npl

8.jpg

Nginx стартовал и готов к работе

Можем открыть наш Внешний-белый IP или локальный адрес в браузере, чтобы убедится в этом

15.jpg
Открываем файл конфигурации Nginx и удаляем решетку в начале строчки перед server_tokens off;

Bash:
nano /etc/nginx/nginx.conf

9.jpg

Сохраняем результат комбинацией клавиш
Ctrl + O

И закрываем редактор nano комбинацией клавиш
Ctrl + X

Открываем следующий файл

Bash:
nano /etc/nginx/sites-available/default

Приводим отмеченные строчки к такому виду

14.jpg

В строке server_name _; вместо нижнего _ подчеркивания прописываем наш hostname из NO-IP

Сохраняем результат комбинацией клавиш
Ctrl + O

И закрываем редактор nano комбинацией клавиш
Ctrl + X

И перезапускаем веб сервер

Bash:
systemctl restart nginx
Bash:
iptables -A INPUT -p tcp -m tcp --dport 80 -j ACCEPT
iptables -A INPUT -p tcp -m tcp --dport 443 -j ACCEPT

и сохраняем настройки iptables

Bash:
dpkg-reconfigure iptables-persistent

Выполняем команду

Bash:
certbot --nginx

17.jpg

- Указываем Email
- Соглашаемся с лицензией
- Отклоняем просьбу поделиться нашим Email для получения рассылок
- Выбираем номер нашего домена из списка
- Выбираем номер 2 для перенаправления с http:// на https://

Сертификат получен


Можем проверить наличие сертификата открыв наш hostname в браузере

18.jpg

И отключить наш веб сервер

Bash:
systemctl disable nginx

systemctl stop nginx
Скачиваем свежие версии здесь

Перемещаемся в директорию где будем располагать сервис AdGuard Home
И выполняем

Bash:
wget https://static.adguard.com/adguardhome/release/AdGuardHome_linux_amd64.tar.gz
tar xvf AdGuardHome_linux_amd64.tar.gz
cd AdGuardHome
sudo ./AdGuardHome -s install

24.jpg

Bash:
./AdGuardHome -s uninstall
./AdGuardHome -s start
./AdGuardHome -s stop
./AdGuardHome -s restart
./AdGuardHome -s status

Наблюдаем надпись [info] Go to

Делаем вывод, что необходимо открыть порт под номером 3000
Веб сервер ? - Наверняка TCP

Открываем порт 3000
Bash:
iptables -A INPUT -p TCP --dport 3000 -j ACCEPT


И открываем в браузере

http://192.168.0.180:3000

Мы попали в Веб интерфейс AdGuard Home
Нажимаем Get Started

26.jpg

Если наблюдаем похожую картину, нажимаем кнопку Fix
Нам дают понять, что в системе какой-то из существующих сервисов уже использует порт под номером 53
Ничего криминального

27.jpg

Указываем данные для дальнейшей авторизации
- Username
- Password
- Password

28.jpg


Пользователь создан

После нажатия на последнюю кнопку Open Dashboard

30.jpg

Нас перенесет на основной IP адрес, который мы зафиксировали для AdGuard Home


В дальнейшем он будет работать на порту под номером 80, и не будет нуждаться в открытом порте под номером 3000

Закроем порт под номером 3000

Bash:
iptables -D INPUT -p TCP --dport 3000 -j ACCEPT

и сохраним настройки iptables, чтобы они не удалились после перезагрузки

Bash:
dpkg-reconfigure iptables-persistent
Перед нами открыт веб интерфейс на странице авторизации
Проходим авторизацию

32.jpg

На верхней части страницы наблюдаем навигационный бар
Открываем Settings - Encryption settings
33.jpg


Заполняем поля для ввода и отмечаем нужные чекбоксы
Отмечаем чекбокс Enable Encryption (HTTPS, DNS-over-HTTPS, and DNS-over-TLS)
Server name
- прописываем наш hostname из NO-IP
Отмечаем чекбокс
Redirect to HTTPS automatically

Блок Certificates

Выбираем Set a certificates file path
/etc/letsencrypt/live/codeby.servebeer.com/fullchain.pem

Выбираем Set a private key file
/etc/letsencrypt/live/codeby.servebeer.com/privkey.pem

34.jpg

Обращаем внимание на Status в обеих случаях и нажимаем Save Config
После предыдущего этапа нам стал доступен веб интерфейс через https

открываем его
https://codeby.servebeer.com

Проходим авторизацию и в дальнейшем будем работать через него

Открываем Settings - DNS settings
Отмечаем чекбокс Use parallel queries to speed up resolving by simultaneously querying all upstream servers

Заполняем поле Upstream DNS servers

Код:
https://1.1.1.1/dns-query
https://1.0.0.1/dns-query
tls://1.1.1.1
tls://1.0.0.1
https://dns.adguard.com/dns-query
tls://dns.adguard.com
sdns://AQIAAAAAAAAAFDE3Ni4xMDMuMTMwLjEzMDo1NDQzINErR_JS3PLCu_iZEIbq95zkSV2LFsigxDIuUso_OQhzIjIuZG5zY3J5cHQuZGVmYXVsdC5uczEuYWRndWFyZC5jb20

37.jpg


Блок под названием
Bootstrap DNS servers нужен на случай, если в верхнем списке будут присутствовать сервера такого вида

Код:
https://dns.adguard.com/dns-query

tls://dns.adguard.com

38.jpg

Жмём Apply
Чтобы начать пользоваться DNS сервером нам необходимо открыть для него порты

Bash:
iptables -A INPUT -p TCP --dport 53 -j ACCEPT
iptables -A INPUT -p UDP --dport 53 -j ACCEPT
dpkg-reconfigure iptables-persistent

Чтобы посторонние люди не имели доступа к вашему DNS серверу необходимо закрыть обращения к серверу не из внутренней сети
Указав источники, кому разрешено использовать DNS сервер

Здесь указывайте свою подсеть, которую раздаёт ваш DHCP сервер
Bash:
iptables -A INPUT -s 192.168.0.0/24 -p TCP --dport 53 -j ACCEPT
iptables -A INPUT -s 192.168.0.0/24 -p UDP --dport 53 -j ACCEPT
dpkg-reconfigure iptables-persistent

Настройте DHCP сервер для раздачи адреса DNS сервера, перезагрузите маршрутизатор.

Адрес указывать тот, через который вы создавали пользователя, без номера порта.

В таком виде

192.168.0.180
Несколько тестов для проверки результата


test1.jpg



test2.jpg

Можете проверить работоспособность некоторых ограниченных сайтов, возможно они станут доступны.
Пробуйте обновлять веб-сайт с помощью комбинаций клавиш

Ctrl + F5
Ctrl + R
Сервис NO-IP предоставляет бесплатные услуги, но требует подтверждать актуальность созданного Hostname один раз в месяц.
Чтобы избежать проблем с уже настроенным DNS сервером, при регистрации указывайте доступный Email адрес, который до срока окончания действия hostname будет вас предупреждать о необходимости в ручную продлить срок действия. Подтверждение не занимает много времени. Достаточно будет сохранить данные авторизации на своем смартфоне, и сразу после получения сообщения от NO-IP заходить на сайт и нажимать кнопку Подтвердить рядом с ранее созданным hostname.

И про сервис Certbot
Так же как и NO-IP нуждается в продлении сертификата безопастности раз в 3 месяца.
Для этого будет необходимо проделать следующие шаги


Bash:
cd AdGuardHome
./AdGuardHome -s stop
systemctl start nginx
certbot renew --dry-run
systemctl stop nginx
cd AdGuardHome
./AdGuardHome -s start
 
Последнее редактирование:
Для переноса в статьи разбейте пожалуйста статью на отдельные блоки и спрячьте их под спойлеры.

Переместил. Полезная информация.
 
  • Нравится
Реакции: Сергей Попов
Для openWRT на роутере
Меняем тему на luci-theme-material
Скачиваем rufengsuixing/luci-app-adguardhome
Копируем luci-app-adguardhome_1.8-11_all.ipk в /tmp
Создаём папку /etc/crontabs/root
Копируем AdGuardHome.yaml в /etc/
Ставим:
opkg install /tmp/luci-app-adguardhome_1.8-11_all.ipk

В вебморде в службах появится сабж. Можно корректировать тама.

В браузере зайти по адресу (или какой там у вас)
Веб вешаем например на 192.168.1.1:88, DNS-сервер вешаем на 127.0.0.1:5353
Изобретаем логин и пароль.

В вебморде Сеть-DHCP и DNS - Перенаправление запросов DNS прописать 127.0.0.1#5353
Отмечаем - Игнорировать файл resolv


Избегаем doh firefox
LAN → DHCP-сервер → Пользовательский файл конфигурации "dnsmasq.conf":
server=/use-application-dns.net/

Я сабжу не доверяю, так позабавился и будет
 

Вложения

  • Нравится
Реакции: Khammatov
Мы в соцсетях:

Обучение наступательной кибербезопасности в игровой форме. Начать игру!

Курс AD