Jump to content
Калькуляторы

iptables { for each src ip} Список адресов неизвестен - но надо применить на него правило

Доброго дня!

 

Совершенно странная хотелка

Есть неизвестный список 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)

 

Думаю я что-то недочитал в манах - ткните плз что

Share this post


Link to post
Share on other sites

Вроде -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 (с выгрузкой модулей) я наблюдаю блокирование третьей попытки.

Мне это не понятно.

Share this post


Link to post
Share on other sites

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 работает как ожидалось. (правила без действий - дебаг)

или я дурак или одно из двух =)

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
Sign in to follow this