hiller Опубликовано 5 мая, 2010 · Жалоба Необходимо с помощью iptables ограничить запросы к DNS-серверу только нашими локальными доменами. example.com и к реверсу. Как это правильнее сделать? Пробовал всякие извраты, аля "-A INPUT -p udp -m udp --dport 53 -m string --string "example.com" --algo kmp --icase -j ACCEPT" Но видимо что то делаю не так. Подскажите, как правильнее? Смысл в том, что на DNS-сервер приходят разнообразные запросы, которые по сути бессмысленны, рекурсия с серых адресов запрещена, разрешена только с белых. Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
sfstudio Опубликовано 5 мая, 2010 · Жалоба ~ # 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 Намёк ясен? =) Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
hiller Опубликовано 5 мая, 2010 · Жалоба Намек в том, что DNS работает еще и по TCP? Так там же вроде только zone transfer по TCP? Или намек про dnsmasq? Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
sfstudio Опубликовано 5 мая, 2010 · Жалоба Намек в том, что DNS работает еще и по TCP? Так там же вроде только zone transfer по TCP? Ну незнаю как бинд, но dnsmasq и pdnsd вполне себе по tcp работают с резолверами и винда до tcp стучиться с завидной переодичностью. Или намек про dnsmasq? Ну и на него тоже, там есть возможность порезать всё лишнее. Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
wtyd Опубликовано 5 мая, 2010 · Жалоба Необходимо с помощью iptables ограничить запросы к DNS-серверу только нашими локальными доменами.example.com и к реверсу. Как это правильнее сделать? Пробовал всякие извраты, аля "-A INPUT -p udp -m udp --dport 53 -m string --string "example.com" --algo kmp --icase -j ACCEPT" Но видимо что то делаю не так. Подскажите, как правильнее? Смысл в том, что на DNS-сервер приходят разнообразные запросы, которые по сути бессмысленны, рекурсия с серых адресов запрещена, разрешена только с белых. Наверное, правильнее всего сделать два view. Один для белых, другой для серых. Для серых нарулить конфигом ДНС как надо. Белым просто разрешить всё. Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
hiller Опубликовано 5 мая, 2010 · Жалоба Так и сделано. Задача именно отфильтровать "левые" запросы. До того, как они будут отработаны сервером. Неужели никто не решал такую задачу? В любом случае, не могу понять, почему не работает такая конструкция: "-A INPUT -p udp -m udp --dport 53 -m string --string "example.com" --algo kmp --icase -j ACCEPT"... Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
Ilya Evseev Опубликовано 5 мая, 2010 · Жалоба Учитывая, что это dnsmasq, проще запустить два экземпляра на разных портах с разными настройками (общую часть подключать через include) и файрволлом перенаправлять запросы от части клиентов на второй порт. Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
Ivan_83 Опубликовано 12 мая, 2010 · Жалоба dnsmasq помнится по tcp не кеширует ничего :( Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
Ilya Evseev Опубликовано 12 мая, 2010 · Жалоба dnsmasq помнится по tcp не кеширует ничего :(Во-первых, дайте пруфлинк. Какая кэшу разница, пришёл запрос через tcp или через udp? Во-вторых, по статистике 99,(9)% запросов от клиентов приходит по udp. Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
Ivan_83 Опубликовано 17 мая, 2010 · Жалоба Видимо напутал или было версий 5 назад, сейчас TCP может мешает только логи ротейтить. У меня после перехода на сислог перестал записывать кому что выдал/освободил :( Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
Ilya Evseev Опубликовано 17 мая, 2010 · Жалоба Видимо напутал или было версий 5 назад, сейчас TCP может мешает только логи ротейтить.У меня после перехода на сислог перестал записывать кому что выдал/освободил :( Если Вы про DNS, то он ничего не освобождает.Если про DHCP, то он работает по UDP. В любом случае, все неочевидные моменты лучше уточнять здесь: http://lists.thekelleys.org.uk/mailman/lis...dnsmasq-discuss Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
sdroom Опубликовано 17 мая, 2010 · Жалоба Необходимо с помощью iptables ограничить запросы к DNS-серверу только нашими локальными доменами.example.com и к реверсу. Как это правильнее сделать? Пробовал всякие извраты, аля "-A INPUT -p udp -m udp --dport 53 -m string --string "example.com" --algo kmp --icase -j ACCEPT" Но видимо что то делаю не так. Подскажите, как правильнее? Смысл в том, что на DNS-сервер приходят разнообразные запросы, которые по сути бессмысленны, рекурсия с серых адресов запрещена, разрешена только с белых. Нахрена козе боян называется тема, не надо решать проблемы днса через иптаблес, все настраивается в самом днс сервере, пусть о ни режет все не нужное и шлет режекты.Какие с этим то проблемы? Давайте ещё напишем днс сервер на правилах иптаблеса. Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
hiller Опубликовано 17 мая, 2010 · Жалоба Необходимо с помощью 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 начинает дико тупить, что не есть хорошо... Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
s.lobanov Опубликовано 17 мая, 2010 · Жалоба Необходимо с помощью 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" отдельная история, если интересно, то можно конечно объяснить, но думаю, что врядли будет интересно. Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
hiller Опубликовано 17 мая, 2010 · Жалоба Необходимо с помощью 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" отдельная история, если интересно, то можно конечно объяснить, но думаю, что врядли будет интересно. Хм... Странно. Таки интересно, объясните, пожалуйста. Спасибо за толковый ответ! Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
s.lobanov Опубликовано 18 мая, 2010 · Жалоба "exapmle.com" в каноническом виде "example.com.", далее разбиваем на части с делимитером ".", получаем ("example","com",""), затем len("example")=7, значит пишем 07, затем "example" (в ASCII-коде), получается 076578616d706c65, тоже самое делаем с com, получается 03636f6d и с пустой строкой - длина 0, значит 00, самой строки нет. И всё это "склеиваем": 076578616d706c6503636f6d00 Кстати, с hex-string работает --icase. Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
gochankot Опубликовано 26 ноября, 2019 (изменено) · Жалоба В 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.: сорри за некропостинг - вдруг кому надо Изменено 27 ноября, 2019 пользователем gochankot Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...