Перейти к содержимому
Калькуляторы

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)

 

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Вроде -m recent --mask 255.255.255.255 - это то, что вам надо.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

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

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

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

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Join the conversation

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

Гость
Ответить в тему...

×   Вставлено в виде отформатированного текста.   Вставить в виде обычного текста

  Разрешено не более 75 смайлов.

×   Ваша ссылка была автоматически встроена.   Отобразить как ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставить изображения напрямую. Загрузите или вставьте изображения по ссылке.