Monday, 4 February 2013

Как на уровне iptables отсечь DNS запросы определенного типа к определенному домену?

Итак, нам нужен спец-скрипт, берем его по адресу: http://www.bortzmeyer.org/files/generate-netfilter-u32-dns-rule.py  (зеркало).

Генерируем правило для модуля u32 iptables и сохраняем его в переменной:
rule=$(python generate-netfilter-u32-dns-rule.py --qname suxx.us --qtype ANY)
Добавляем это правило для фльтрации:
iptables -A INPUT -p udp --dport 53 --match u32 --u32 "$rule" -j ACCEPT 
Делаем откуда-либо извне запрос:
host -t any suxx.usaa dns-server.ru
После этого, фиксируем попадание правила в фаерволл:
iptables -nvL|grep u32
    4   212 ACCEPT     udp  --  *      *       0.0.0.0/0            0.0.0.0/0           udp dpt:53 u32 0x0>>0x16&0x3c@0x14=0x4737578&&0x0>>0x16&0x3c@0x18=0x78027573&&0x0>>0x16&0x3c@0x1c&0xffffff00=0xff00 
 Как можно убедиться, модуль u32 дает почти неограниченную гибкость для фильтрации различных протоколов.
 

No comments:

Post a Comment

Note: only a member of this blog may post a comment.