0887 371 498 support@itservice-bg.net
30.06.2026 · Самуил Арсов · NIS2, Киберсигурност

Киберзащита за малкия бизнес (част 6): филтриращ DNS с AdGuard Home

Това е шеста част към ръководството ни за киберзащита на малкия и среден бизнес. В петте основни части изградихме защитен рутер, защитен сървър, частен облак, SIEM (Wazuh) и мониторинг (LibreNMS). Серията беше „завършена“ — но има още един слой защита, който е евтин, лесен и удивително ефективен:

Да спираме зловредните домейни още на ниво DNS — за цялата мрежа наведнъж.

Всяко устройство, преди да се свърже някъде, първо пита DNS „какъв е адресът на този домейн?“. Ако на този въпрос отговаря филтриращ DNS, можем да блокираме malware, phishing, проследяващи и рекламни домейни за всички устройства в офиса — без да пипаме нито едно от тях. Като бонус — кешираме отговорите и сърфирането става по-бързо. За това ще ползваме AdGuard Home. Както винаги, адресите в примерите са генерализирани.

Защо филтриращ DNS (и защо вграденият не стига)

Linux сървърите идват с локален DNS — systemd-resolved. Той обаче е само „телефонен секретар“ за самия хост: слуша на loopback адрес (127.0.0.53), кешира леко и препраща нагоре. Той не филтрира зловредни домейни и не обслужва другите устройства в мрежата.

Затова слагаме истински мрежов DNS със следните роли:

  • Филтриране — блокира домейни от списъци с malware/phishing/реклами/тракери.
  • Защита в реално време — проверка на домейни срещу база за злонамереност (safebrowsing).
  • Кеширане — по-бързи отговори, по-малко външни заявки.
  • Шифрован upstream — заявките ни нагоре вървят по DNS-over-HTTPS (никой по пътя не вижда какво питаме).
  • Видимост — кой какво пита, какво е блокирано, топ домейни.

Защо AdGuard Home

AdGuard Home е безплатен, отворен и — важно за нас — е един-единствен Go бинар без PHP. (В предишните части неведнъж се борихме с версии на PHP; тук този проблем просто не съществува.) Прави всичко изброено по-горе, има приятен уеб интерфейс със статистики и е лек — спокойно живее на същия сървър.

Инсталация

Инсталаторът е една команда:

curl -sSL https://raw.githubusercontent.com/AdguardTeam/AdGuardHome/master/scripts/install.sh | sudo sh -s -- -v

След това AdGuard стартира съветник за първоначална настройка на порт 3000.

Важна подробност — порт 53: на сървъра вграденият systemd-resolved вече държи порт 53, но само на 127.0.0.53. За да съжителстват без конфликт, казваме на AdGuard да слуша DNS конкретно на LAN адреса на сървъра (192.168.1.100:53), а не на „всички адреси“. Така resolved (на loopback) и AdGuard (на LAN адреса) не си пречат.

Завършваме настройката — тук задаваме DNS адреса, порта за интерфейса и администраторската парола (примерът е през API-то, може и през браузъра):

curl -X POST http://127.0.0.1:3000/control/install/configure \
  -H "Content-Type: application/json" \
  -d '{"web":{"ip":"0.0.0.0","port":3000},
       "dns":{"ip":"192.168.1.100","port":53},
       "username":"admin","password":"СИЛНА_ПАРОЛА"}'

Конфигурация: филтри, кеш, шифрован upstream

В AdGuardHome.yaml (или през интерфейса) включваме същината:

Настройка Какво прави
Blocklists Списъци с домейни за блокиране (AdGuard DNS filter и др.)
Safebrowsing Блокиране на познати malware/phishing домейни в реално време
Кеш Запомня отговорите → по-бързо сърфиране
Upstream (DoH) Заявките нагоре по DNS-over-HTTPS към Quad9 (който и сам блокира malware)

Бърз тест, че филтърът работи — нормален домейн резолвва, а рекламен/проследяващ се блокира (връща 0.0.0.0):

dig +short @192.168.1.100 github.com        # → реален адрес
dig +short @192.168.1.100 doubleclick.net   # → 0.0.0.0 (блокиран)

Насочваме сървъра и цялата мрежа

Първо самият сървър да ползва AdGuard — чрез drop-in за resolved:

# /etc/systemd/resolved.conf.d/adguard.conf
[Resolve]
DNS=192.168.1.100
Domains=~.

А сега магията за цялата мрежа — казваме на DHCP сървъра (на рутера) да раздава AdGuard като DNS на всички устройства:

/ip dhcp-server network set [find] dns-server=192.168.1.100

Толкова. Всяко устройство, което вземе (или поднови) адрес от рутера, автоматично започва да минава през филтъра — без инсталация на самите устройства.

Достъп до интерфейса (отново урокът за HSTS)

Като при предишните услуги, не отваряме интерфейса към целия интернет — правим port-forward, ограничен само до администраторската ни мрежа. И понеже домейнът ни има HSTS, интерфейсът трябва да е по HTTPS с валиден сертификат. AdGuard поддържа TLS вградено — посочваме му същия Let’s Encrypt сертификат:

# AdGuardHome.yaml (секция tls)
tls:
  enabled: true
  server_name: oblak.firma.bg
  port_https: 3443
  certificate_path: /etc/letsencrypt/live/oblak.firma.bg/fullchain.pem
  private_key_path: /etc/letsencrypt/live/oblak.firma.bg/privkey.pem
/ip firewall nat add chain=dstnat action=dst-nat protocol=tcp dst-port=3000 \
    in-interface=ether1 src-address=198.51.100.0/24 \
    to-addresses=192.168.1.100 to-ports=3443 \
    comment="adguard UI (само mgmt)"

Не забравяйте и deploy hook на certbot, който рестартира AdGuard при подновяване на сертификата, за да го зареди.

Какво виждаме накрая

Таблото на AdGuard показва в реално време колко заявки минават, колко са блокирани (обикновено 10–25% от целия DNS трафик в един офис!), кои са топ заявяваните и топ блокираните домейни. Това е и приятна изненада колко „шум“ генерират устройствата във фонов режим.

Заключение

С няколко команди добавихме защитен слой, който пази всяко устройство в офиса — компютри, телефони, дори IoT джаджи, които не можем да пипаме поотделно. Зловреден сайт, изпратен по имейл? Блокиран още преди да се отвори. Проследяващи и реклами? Спрени за цялата мрежа. И всичко това — на сървър, който вече имаме.

С това киберзащитата на нашия малък бизнес е наистина многослойна: защитен рутер, защитен сървър, частен облак, откриване на атаки (Wazuh), мониторинг (LibreNMS) и вече филтриращ DNS (AdGuard). Шест части, изцяло на собствено оборудване и с отворен софтуер — без месечни абонаменти и без външен да държи ключа към данните ви.

Тази серия е част от усилията ни сериозната киберзащита да стане достъпна за българския малък и среден бизнес.