sirmax Posted December 22, 2014 · Report post Доброго дня! Совершенно странная хотелка Есть неизвестный список IP которые маршрутизируются. Из нельзя взять списком, более того - они могут динамически меняться и не попадают в сеть /XX т.е. их никак нельзя описать в виде списка. Хочется для каждого транзитного IP осуществить фильтрацию - "не более Х одновременных сессий, не более Y новых сессий в единицу времени на порт Z" Нужно это для фильтрации SMTP от спамеров, что бы не мешало "нормальной" работе. Собственно вопрос - как сделать "для каждого неизвестного IP" Для всех - понятно 1 iptables -N SMTP 2 iptables -I OUTPUT -m tcp -p tcp --dport 25 -j SMTP 3 iptables -I SMTP -p tcp --syn --dport 25 -m connlimit --connlimit-above 3 -j REJECT 4 iptables -A SMTP -m recent -p tcp -m state --state NEW --update --name smtp --seconds 60 --hitcount 10 -j REJECT --reject-with tcp-reset 5 iptables -A SMTP -m recent --set --name smtp -j ACCEPT Второй вопрос: Но, кроме всего прочего, возможно я недопонимаю работу модуля recent Я ожидаю что правило 4 сработает после 10 открытых новый сессий, однако оно срабатывает раньше (после 2 попыток telnet ... 25) Думаю я что-то недочитал в манах - ткните плз что Вставить ник Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...
Abram Posted December 22, 2014 · Report post Вроде -m recent --mask 255.255.255.255 - это то, что вам надо. Вставить ник Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...
sirmax Posted December 22, 2014 · Report post Вроде -m recent --mask 255.255.255.255 - это то, что вам надо. Это я проверю, но все же не затруднит Вас прокомментировать: iptables -A SMTP -m recent -p tcp -m state --state NEW --update --name smtp --seconds 60 --hitcount 10 -j REJECT --reject-with tcp-reset С моей точки зрения должно срабатывать если я создаю больше 10 новых коннектов за 60 секунд. Сейчас после рестарта iptables (с выгрузкой модулей) я наблюдаю блокирование третьей попытки. Мне это не понятно. Вставить ник Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...
sirmax Posted December 22, 2014 · Report post iptables -N SMTP iptables -N SMTP_NEW iptables -I OUTPUT --out-interface eth0 -m tcp -p tcp --dport 25 -j SMTP iptables -I SMTP -m state --state ESTABLISHED,RELATED -j ACCEPT iptables -A SMTP -p tcp -m state --state NEW iptables -A SMTP -p tcp -m state --state NEW -j SMTP_NEW iptables -A SMTP_NEW -p tcp -m state --state NEW iptables -A SMTP_NEW -p tcp -m state --state NEW -m recent --update --name smtp --seconds 60 --hitcount 4 --rttl -j REJECT --reject-with tcp-reset iptables -A SMTP_NEW -p tcp -m recent --set --name smtp -j ACCEPT в такой конфигурации recent работает как ожидалось. (правила без действий - дебаг) или я дурак или одно из двух =) Вставить ник Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...