Фільтрування запитів на рівні DNS
Починаючи з версії 9.8.1 DNS-сервера bind з'явилася нова можливість – DNS RPZ. Це цікавий інструмент, який може бути дуже корисним для багатьох сисадмінів. Дивно, але в українськомовному сегменті інтернету ця тема зовсім не висвітлена. Поспішаю заповнити цю прогалину.
Що це за звір та з чим його їдять?
Формат зони
Як і для будь-якої іншої DNS-зони, потрібен SOA-запис і, як мінімум, один NS-запис. SOA — дійсний запис, що використовується для делегування зони, що має серійний номер і таймери, і вказує час життя записів (TTL). NS-запис ніколи не використовується та служить для сумісності. Зазвичай єдиний NS-запис має фіктивне значення localhost. Решта зони – це висловлювання для DNS-політик. Політики можуть застосовуватися до доменів або до шаблонів.
Як працює
Спрощено роботу RPZ можна представити наступною схемою:

Провайдерів може бути кілька, у тому числі ми можемо створити свій власний сервер RPZ:

Покажемо роботу RPZ з прикладу робочих конфігів. Тут мається на увазі, що у вас вже є налаштований DNS-сервер, я лише покажу опції, які потрібно включити, щоб усізапрацювало. Дія розгортається в Ubuntu 12.10.
Спочатку у файлі /etc/bind/named.conf.options опцією «response-policy» включаємо RPZ:
Усередині «response-policy» зон може бути кілька, причому кожна може мати свою політику (подробиці див. у специфікації).
У файлі /etc/bind/named.conf.local розміщуємо опис зони:
І, нарешті, сама зона (файл /etc/bind/db.rpz.zone):
Застосовуємо нові налаштування:
і дивимося, що в нас вийшло: