Второе рождение iptables Докучаев Дмитрий aka Forb Xakep, номер #069, стр. 069-072-4 # iptables –A INPUT –p tcp --syn --dport 23 -m connlimit --connlimit-above 3 -j REJECT Иногда приходится ограничивать подключения по определенному сегменту. Например, установить правило на три потока из сети с маской /24 можно так: # iptables -p tcp --syn --dport 80 -m connlimit --connlimit-above 3 --connlimit-mask 24 -j REJECT 6. libipt_OSF.so Очень интересный модуль. Когда ты его поставишь, появляется возможность ограничения доступа по операционной системе. Файрвол попытается сделать FingerPrint и довольно точно узнать систему. Соответственно, если у чувака стоит WinXP, ему закрывается доступ, а если чел продвинутый и юзает FreeBSD, то коннект разрешается :). Все фантазии в твоих руках, и в этом я тебе не помощник. Лично я юзаю OSF только в качестве логирования запросов на определенные порты. Итак, прежде чем писать правило, сливай все финжерпринты с адреса http://www.openbsd.org/cgi-bin/cvsweb/src/etc/pf.os. Затем перенаправляй файл pf.os в /proc/sys/net/ipv4/osf (вынос про FLUSH). Теперь составляй правило. Я приведу пример рулеса, после активации которого вся статистика отобразится в /var/log/syslog/messages. В целом правило выглядит следующим образом: # iptables –A INPUT –j ACCEPT –p tcp –m osf –-genre Linux –-log 1 –-smart Опция log отвечает за логирование. Если ее значение равно единице, в messages появится лишь одна запись за весь процесс обмена данными. Если опция не определена либо равна нулю, запишется статистика по каждому пакету. Параметр smart позволяет юзать более точное определение OS. 7. libipt_limit Этот модуль позволяет ограничивать число пакетов за единицу времени, подходящих под какое-либо правило. К примеру, ты замечаешь, что кто-то пытается заслать кучу пакетов на определенный порт и ждет, пока демон уйдет в даун. Обломать нарушителя сетевого порядка и предотвратить DoS-атаку можно с помощью одного простого правила: # iptables –A INPUT –p tcp –-dport 53 –m limit –-limit 10/sec –j REJECT Думаю, понятно. Выставляется ограничение на число пакетов в секунду. Также ты можешь использовать минутный, часовой и суточный интервал. 8. libipt_string Наконец-то файрвол научился искать подстроку в целом пакете. Нередко требуется фильтровать данные на предмет запрещенных строк. Это могут быть как нецензурные слова :), так и строки, характерные для бэкдоров. Допустим, ты суровый админ и запрещаешь заливку бинарников на твой FTP-сервер. Правило будет следующим: # iptables -A INPUT -p tcp --dport 21 -m string --string '|7F|ELF' -j DROP И это не предел! Это лишь часть модулей, про которые мне хотелось бы рассказать. На самом деле POM содержит порядка сотни различных обновлений. Естественно, упомянуть про все в рамках одной статьи невозможно. Цель данного материала – натолкнуть тебя на правильную мысль и разубедить в недостижимой мощности файрволов pf и ipfw. Как видишь, всего за несколько часов я сделал из iptables настоящую конфетку. Теперь ничто не мешает тебе повторить мои действия и пропатчить брандмауэр. И я уверен, что POM поможет решить множество наболевших проблем. |