====== Блокировка ftp-bruteforce атак пакетным фильтром pf ====== По мотивам http://www.opennet.ru/tips/info/2140.shtml __/etc/pf/pf.conf__ if="fxp0" # файловая таблица для хранения забаненых адресов table persist file "/etc/pf/intruder-ftp.lst" block in log block return-rst in log proto tcp # запрещение доступа адресов нарушителей к ftp-серверу block in quick on $if proto TCP from to any port ftp pass out pass in quick inet proto icmp all icmp-type echoreq code 0 # Определяем адреса, с которых было более 5 коннектов за 40 секунд и заносим их в таблицу блокировки pass in quick on $iface proto tcp to ($if) port ftp keep state (max-src-conn-rate 5/40, overload flush global) # разрешаем коннект к ftp в active и passive pass in quick on $iface proto tcp to ($if) port { ftp, >49152 } Создаем пустую таблицу: echo > /etc/pf/intruder-ftp.lst Сбрасываем таблицу интрудерских адресов в файл каждый час: crontab -e __/var/cron/tabs/root__ #minute (0-59), #| hour (0-23), #| | day of the month (1-31), #| | | month of the year (1-12), #| | | | day of the week (0-6 with 0=Sunday). #| | | | | commands # # _intrud_ftp table update */60 * * * * /sbin/pfctl -t intruder-ftp -Ts > /etc/pf/intruder-ftp.lst Перечитываем конфигурацию pf: pfctl -f /etc/pf/pf.conf Загрузка таблиц, определенных в файле конфигурации: pfctl -Tl -f /etc/pf/pf.conf Добавление адреса в таблицу: pfctl -t intruder-ftp -Ta 1.1.1.1 Удаление адреса из таблицы: pfctl -t intruder-ftp -Td 1.1.1.1 Полная очистка таблицы: pfctl -t intruder-ftp -Tf Выгрузка таблицы в файл: pfctl -t intruder-ftp -Ts > /etc/pf/intruder-ftp.lst Просмотр таблицы: pfctl -t intruder-ftp -Ts Просмотр статистики: pfctl -t intruder-ftp -Ts -v Сброс статистики: pfctl -t intruder-ftp -Tz