Info:inet:smtp

Материал из campus.mephi.ru

(Различия между версиями)
Перейти к: навигация, поиск
(Реализация)
Строка 13: Строка 13:
Данный механизм был реализован на уровне фаерволла iptables, используя следующие правила:
Данный механизм был реализован на уровне фаерволла iptables, используя следующие правила:
  *mangle
  *mangle
-
*-A INPUT ! -i eth0 -p tcp --syn --dport 7 -j OPENSMTP
+
-A INPUT ! -i eth0 -p tcp --syn --dport 7 -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 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 opensmtp --rsource --set -j LOG --log-level 7 --log-prefix "PK SMTP: "
+
-A OPENSMTP -m recent --name opensmtp --rsource --set -j LOG --log-level 7 --log-prefix "PK SMTP: "
-
*-A BANSMTP  -m recent --name  bansmtp --rsource --set -j LOG --log-level 7 --log-prefix "Ban SMTP: "
+
-A BANSMTP  -m recent --name  bansmtp --rsource --set -j LOG --log-level 7 --log-prefix "Ban SMTP: "
  *filter
  *filter
-
-A SMTPSYN -m recent --name opensmtp --rcheck --seconds 60      -j ACCEPT
+
-A SMTPSYN -m recent --name opensmtp --rcheck --seconds 60      -j ACCEPT
-
-A SMTPSYN -m recent --name  bansmtp --rcheck --seconds 18144000 -j REJECT --reject-with icmp-port-unreachable
+
-A SMTPSYN -m recent --name  bansmtp --rcheck --seconds 18144000 -j REJECT --reject-with icmp-port-unreachable

Версия 08:27, 20 сентября 2010

Пара слов о SMTP

В связи с высокой активностью спамеров из общежития, были введены ограничения по использованию порта 25/tcp.


Общий принцип действий

А именно, введена автоматика, работающая по следующему алгоритму. Есть некоторая очередь разрешённых пакетов, длина которой составляет 50 единиц. Из этой очереди пакеты утекают со скоростью 3 пакета в час. Если очередь переполняется, то пользователь банится на 30 суток. Это утрированная модель, т.к. на самом деле сами пакеты убегают к своему серверу мгновенно, без ожидания в упомянутой очереди, однако существование пакета запоминается.

Port-knocking

Так же введён механизм port-knocking-а, позволяющий при надобности отослать письмо даже "из бана". Идея в том, что вы вручную стучитесь по tcp на порт 7 по удалённому адресу в VPN-соединений, и тогда роутер разрешает вам на 60 секунд пользоваться портом 25/tcp.

Реализация

Данный механизм был реализован на уровне фаерволла iptables, используя следующие правила:

*mangle
-A INPUT ! -i eth0 -p tcp --syn --dport 7 -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 opensmtp --rsource --set -j LOG --log-level 7 --log-prefix "PK SMTP: "
-A BANSMTP  -m recent --name  bansmtp --rsource --set -j LOG --log-level 7 --log-prefix "Ban SMTP: "
*filter
-A SMTPSYN -m recent --name opensmtp --rcheck --seconds 60       -j ACCEPT
-A SMTPSYN -m recent --name  bansmtp --rcheck --seconds 18144000 -j REJECT --reject-with icmp-port-unreachable