Jump to content

Recommended Posts

Posted

Необходимо с помощью iptables ограничить запросы к DNS-серверу только нашими локальными доменами.

example.com и к реверсу.

 

Как это правильнее сделать? Пробовал всякие извраты, аля "-A INPUT -p udp -m udp --dport 53 -m string --string "example.com" --algo kmp --icase -j ACCEPT"

Но видимо что то делаю не так. Подскажите, как правильнее?

 

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

 

Posted

~ # netstat -n -p -l | grep 53
tcp        0      0 127.0.0.0:53            0.0.0.0:*               LISTEN      258/dnsmasq
tcp        0      0 192.168.1.1:53          0.0.0.0:*               LISTEN      258/dnsmasq
udp        0      0 127.0.0.0:53            0.0.0.0:*                           258/dnsmasq
udp        0      0 192.168.1.1:53          0.0.0.0:*                           258/dnsmasq

 

Намёк ясен? =)

Posted
Намек в том, что DNS работает еще и по TCP? Так там же вроде только zone transfer по TCP?

Ну незнаю как бинд, но dnsmasq и pdnsd вполне себе по tcp работают с резолверами и винда до tcp стучиться с завидной переодичностью.

 

Или намек про dnsmasq?

Ну и на него тоже, там есть возможность порезать всё лишнее.

 

Posted
Необходимо с помощью iptables ограничить запросы к DNS-серверу только нашими локальными доменами.

example.com и к реверсу.

 

Как это правильнее сделать? Пробовал всякие извраты, аля "-A INPUT -p udp -m udp --dport 53 -m string --string "example.com" --algo kmp --icase -j ACCEPT"

Но видимо что то делаю не так. Подскажите, как правильнее?

 

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

Наверное, правильнее всего сделать два view. Один для белых, другой для серых. Для серых нарулить конфигом ДНС как надо. Белым просто разрешить всё.

 

Posted

Так и сделано. Задача именно отфильтровать "левые" запросы. До того, как они будут отработаны сервером. Неужели никто не решал такую задачу?

 

В любом случае, не могу понять, почему не работает такая конструкция: "-A INPUT -p udp -m udp --dport 53 -m string --string "example.com" --algo kmp --icase -j ACCEPT"...

Posted

Учитывая, что это dnsmasq, проще запустить два экземпляра на разных портах

с разными настройками (общую часть подключать через include)

и файрволлом перенаправлять запросы от части клиентов на второй порт.

Posted
dnsmasq помнится по tcp не кеширует ничего :(
Во-первых, дайте пруфлинк. Какая кэшу разница, пришёл запрос через tcp или через udp?

 

Во-вторых, по статистике 99,(9)% запросов от клиентов приходит по udp.

Posted

Видимо напутал или было версий 5 назад, сейчас TCP может мешает только логи ротейтить.

У меня после перехода на сислог перестал записывать кому что выдал/освободил :(

Posted
Видимо напутал или было версий 5 назад, сейчас TCP может мешает только логи ротейтить.

У меня после перехода на сислог перестал записывать кому что выдал/освободил :(

Если Вы про DNS, то он ничего не освобождает.

Если про DHCP, то он работает по UDP.

В любом случае, все неочевидные моменты лучше уточнять здесь:

http://lists.thekelleys.org.uk/mailman/lis...dnsmasq-discuss

Posted
Необходимо с помощью iptables ограничить запросы к DNS-серверу только нашими локальными доменами.

example.com и к реверсу.

 

Как это правильнее сделать? Пробовал всякие извраты, аля "-A INPUT -p udp -m udp --dport 53 -m string --string "example.com" --algo kmp --icase -j ACCEPT"

Но видимо что то делаю не так. Подскажите, как правильнее?

 

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

Нахрена козе боян называется тема, не надо решать проблемы днса через иптаблес, все настраивается в самом днс сервере, пусть о ни режет все не нужное и шлет режекты.

Какие с этим то проблемы? Давайте ещё напишем днс сервер на правилах иптаблеса.

Posted
Необходимо с помощью iptables ограничить запросы к DNS-серверу только нашими локальными доменами.

example.com и к реверсу.

 

Как это правильнее сделать? Пробовал всякие извраты, аля "-A INPUT -p udp -m udp --dport 53 -m string --string "example.com" --algo kmp --icase -j ACCEPT"

Но видимо что то делаю не так. Подскажите, как правильнее?

 

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

Нахрена козе боян называется тема, не надо решать проблемы днса через иптаблес, все настраивается в самом днс сервере, пусть о ни режет все не нужное и шлет режекты.

Какие с этим то проблемы? Давайте ещё напишем днс сервер на правилах иптаблеса.

Все и так настроено и работает лет 5. Просто задолбали уже тысячи бесполезных запросов к DNS, типа, где тут у нас updates.kaspersky.com и т.п.

Еще сталкивался с вирусами у клиентов, которые умудряются генерировать запросы к DNS на скорости предоставленного им канала (жесткий флуд).

В результате чего, bind начинает дико тупить, что не есть хорошо...

Posted
Необходимо с помощью iptables ограничить запросы к DNS-серверу только нашими локальными доменами.

example.com и к реверсу.

 

Как это правильнее сделать? Пробовал всякие извраты, аля "-A INPUT -p udp -m udp --dport 53 -m string --string "example.com" --algo kmp --icase -j ACCEPT"

Но видимо что то делаю не так. Подскажите, как правильнее?

 

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

Нахрена козе боян называется тема, не надо решать проблемы днса через иптаблес, все настраивается в самом днс сервере, пусть о ни режет все не нужное и шлет режекты.

Какие с этим то проблемы? Давайте ещё напишем днс сервер на правилах иптаблеса.

Ну да в теории звучит красиво, многие сервисы поддерживают access lists, но как-то спокойнее закрыть нужные порты/прочее через iptables или вообще на сетевом оборудовании, куда подключен сервер, потому что вероятность ошибки в iptables или в IOS маршрутизатора много меньше, чем в конкретном приложении. Кроме того, не всё можно сделать средствами приложения, например не отвечать конкретному клиенту рекурсию на MX-записи средствами bind9 нельзя, ни с помощью acl, ни с помощью view, а как уже написали выше, бывает вирусня, которая генерит запросы на скорости интерфейса и dns-сервер может заглючить. С помощью iptables почти всегда можно отфильтровать MX-запросы от конкретно IP-адреса.

Да, я тоже считаю, что фаервол это костыль, но на практике без него тяжко.

 

По теме:

Вот как правильно блокировать example.com:

 

iptables -A OUTPUT -p udp --dport 53 -m string --hex-string "|076578616d706c6503636f6d00|" --algo kmp -j DROP

 

(OUTPUT потому что на своей десктопной машине проверял).

Ну Вам надо перевернуть DROP на ACCEPT и т.д., это наверное, не нужно расписывать

 

Почему не работает -string "example.com" отдельная история, если интересно, то можно конечно объяснить, но думаю, что врядли будет интересно.

 

Posted
Необходимо с помощью iptables ограничить запросы к DNS-серверу только нашими локальными доменами.

example.com и к реверсу.

 

Как это правильнее сделать? Пробовал всякие извраты, аля "-A INPUT -p udp -m udp --dport 53 -m string --string "example.com" --algo kmp --icase -j ACCEPT"

Но видимо что то делаю не так. Подскажите, как правильнее?

 

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

Нахрена козе боян называется тема, не надо решать проблемы днса через иптаблес, все настраивается в самом днс сервере, пусть о ни режет все не нужное и шлет режекты.

Какие с этим то проблемы? Давайте ещё напишем днс сервер на правилах иптаблеса.

Ну да в теории звучит красиво, многие сервисы поддерживают access lists, но как-то спокойнее закрыть нужные порты/прочее через iptables или вообще на сетевом оборудовании, куда подключен сервер, потому что вероятность ошибки в iptables или в IOS маршрутизатора много меньше, чем в конкретном приложении. Кроме того, не всё можно сделать средствами приложения, например не отвечать конкретному клиенту рекурсию на MX-записи средствами bind9 нельзя, ни с помощью acl, ни с помощью view, а как уже написали выше, бывает вирусня, которая генерит запросы на скорости интерфейса и dns-сервер может заглючить. С помощью iptables почти всегда можно отфильтровать MX-запросы от конкретно IP-адреса.

Да, я тоже считаю, что фаервол это костыль, но на практике без него тяжко.

 

По теме:

Вот как правильно блокировать example.com:

 

iptables -A OUTPUT -p udp --dport 53 -m string --hex-string "|076578616d706c6503636f6d00|" --algo kmp -j DROP

 

(OUTPUT потому что на своей десктопной машине проверял).

Ну Вам надо перевернуть DROP на ACCEPT и т.д., это наверное, не нужно расписывать

 

Почему не работает -string "example.com" отдельная история, если интересно, то можно конечно объяснить, но думаю, что врядли будет интересно.

Хм... Странно. Таки интересно, объясните, пожалуйста.

 

Спасибо за толковый ответ!

Posted

"exapmle.com" в каноническом виде "example.com.", далее разбиваем на части с делимитером ".", получаем ("example","com",""), затем len("example")=7, значит пишем 07, затем "example" (в ASCII-коде), получается 076578616d706c65, тоже самое делаем с com, получается 03636f6d и с пустой строкой - длина 0, значит 00, самой строки нет. И всё это "склеиваем": 076578616d706c6503636f6d00

 

Кстати, с hex-string работает --icase.

  • 9 years later...
Posted (edited)
В 18.05.2010 в 00:20, s.lobanov сказал:

По теме:

Вот как правильно блокировать example.com:

 

iptables -A OUTPUT -p udp --dport 53 -m string --hex-string "|076578616d706c6503636f6d00|" --algo kmp -j DROP

 

(OUTPUT потому что на своей десктопной машине проверял).

Ну Вам надо перевернуть DROP на ACCEPT и т.д., это наверное, не нужно расписывать

 

Почему не работает -string "example.com" отдельная история, если интересно, то можно конечно объяснить, но думаю, что врядли будет интересно.

 

# iptables -V
iptables v1.8.3 (legacy)

# uname -a
Linux _ 5.0.19-un-def-alt1 #1 SMP PREEMPT __ x86_64 GNU/Linux

# cat /etc/altlinux-release
ALT Sisyphus Sisyphus (unstable) (sisyphus)
 

Работает вот так (заблокировать себе доступ к example.com)

iptables  -A OUTPUT -m string --hex-string "example.com" --algo bm --to 65535 -j DROP

 

т.е. для примера, из первого сообщения 

iptabless -A INPUT -p udp -m udp --dport 53 -m string --hex-string "example.com" --algo kmp --icase -j ACCEPT

 

P.s.: сорри за некропостинг - вдруг кому надо

Edited by gochankot

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...
На сайте используются файлы cookie и сервисы аналитики для корректной работы форума и улучшения качества обслуживания. Продолжая использовать сайт, вы соглашаетесь с использованием файлов cookie и с Политикой конфиденциальности.