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

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.