Info:inet:smtp
Материал из campus.mephi.ru
(→Port-knocking) |
Gudvinr (Обсуждение | вклад) м (Защищена страница «Info:inet:smtp» ([edit=autoconfirmed] (бессрочно) [move=autoconfirmed] (бессрочно))) |
||
(1 промежуточная версия не показана) | |||
Строка 1: | Строка 1: | ||
=Пара слов о SMTP= | =Пара слов о SMTP= | ||
- | + | ==Введение== | |
+ | В связи с высокой активностью спамеров из общежития, были введены ограничения по использованию порта 25/tcp. | ||
- | + | ==Общий принцип действий== | |
+ | А именно, введена автоматика, работающая по следующему алгоритму. Есть некоторая очередь разрешённых пакетов, длина которой составляет 50 единиц. Из этой очереди пакеты утекают со скоростью 3 пакета в час. Если очередь переполняется, то пользователь банится на 30 суток. Это утрированная модель, т.к. на самом деле сами пакеты убегают к своему серверу мгновенно, без ожидания в упомянутой очереди, однако факт существования пакета запоминается. | ||
+ | |||
+ | ==Port-knocking== | ||
+ | Так же введён механизм port-knocking-а, позволяющий при надобности отослать письмо даже "из бана". Идея в том, что вы вручную стучитесь по tcp на порт 7 по удалённому адресу в VPN-соединений, и тогда роутер разрешает вам на 20 секунд пользоваться портом 25/tcp. | ||
+ | |||
+ | ==Реализация== | ||
+ | Данные механизмы былт реализованы на уровне фаерволла iptables, используя следующие правила: | ||
+ | *mangle | ||
+ | -A INPUT ! -i eth0 -p tcp --syn --dport 7 -m recent --name nosmtppk ! --rcheck --seconds 3600 -j OPENSMTP | ||
+ | -A FORWARD -p tcp --syn --dport 25 -m hashlimit --hashlimit-name smtphits --hashlimit-above 3/hour --hashlimit-burst 50 --hashlimit-mode srcip -j BANSMTP | ||
+ | -A OPENSMTP -m recent --name nosmtppk --rsource --set | ||
+ | -A OPENSMTP -m recent --name opensmtp --rsource --set -j LOG --log-level 7 --log-prefix "PK SMTP: " | ||
+ | -A BANSMTP -m recent --name bansmtp --rsource ! --rcheck -j LOG --log-level 7 --log-prefix "Ban SMTP: " | ||
+ | -A BANSMTP -m recent --name bansmtp --rsource --set | ||
+ | *filter | ||
+ | -A SMTPSYN -m recent --name opensmtp --rcheck --seconds 20 -j ACCEPT | ||
+ | -A SMTPSYN -m recent --name bansmtp --rcheck --seconds 18144000 -j REJECT --reject-with icmp-port-unreachable | ||
+ | -A FORWARD -o eth1 -p tcp --syn --dport 25 -j SMTPSYN |
Текущая версия на 13:43, 18 марта 2012
Содержание |
Пара слов о SMTP
Введение
В связи с высокой активностью спамеров из общежития, были введены ограничения по использованию порта 25/tcp.
Общий принцип действий
А именно, введена автоматика, работающая по следующему алгоритму. Есть некоторая очередь разрешённых пакетов, длина которой составляет 50 единиц. Из этой очереди пакеты утекают со скоростью 3 пакета в час. Если очередь переполняется, то пользователь банится на 30 суток. Это утрированная модель, т.к. на самом деле сами пакеты убегают к своему серверу мгновенно, без ожидания в упомянутой очереди, однако факт существования пакета запоминается.
Port-knocking
Так же введён механизм port-knocking-а, позволяющий при надобности отослать письмо даже "из бана". Идея в том, что вы вручную стучитесь по tcp на порт 7 по удалённому адресу в VPN-соединений, и тогда роутер разрешает вам на 20 секунд пользоваться портом 25/tcp.
Реализация
Данные механизмы былт реализованы на уровне фаерволла iptables, используя следующие правила:
*mangle -A INPUT ! -i eth0 -p tcp --syn --dport 7 -m recent --name nosmtppk ! --rcheck --seconds 3600 -j OPENSMTP -A FORWARD -p tcp --syn --dport 25 -m hashlimit --hashlimit-name smtphits --hashlimit-above 3/hour --hashlimit-burst 50 --hashlimit-mode srcip -j BANSMTP -A OPENSMTP -m recent --name nosmtppk --rsource --set -A OPENSMTP -m recent --name opensmtp --rsource --set -j LOG --log-level 7 --log-prefix "PK SMTP: " -A BANSMTP -m recent --name bansmtp --rsource ! --rcheck -j LOG --log-level 7 --log-prefix "Ban SMTP: " -A BANSMTP -m recent --name bansmtp --rsource --set *filter -A SMTPSYN -m recent --name opensmtp --rcheck --seconds 20 -j ACCEPT -A SMTPSYN -m recent --name bansmtp --rcheck --seconds 18144000 -j REJECT --reject-with icmp-port-unreachable -A FORWARD -o eth1 -p tcp --syn --dport 25 -j SMTPSYN