Назад | Перейти на главную страницу

Зарегистрируйтесь с помощью iptables, какой пользователь доставляет электронную почту на порт 25.

Поскольку мы попали в черный список CBL, я установил следующие правила брандмауэра с помощью iptables:

#!/bin/bash
iptables -A OUTPUT -d 127.0.0.1 -p tcp -m tcp --dport 25 -j ACCEPT
iptables -A OUTPUT -p tcp -m tcp --dport 25 -m owner --gid-owner mail -j ACCEPT
iptables -A OUTPUT -p tcp -m tcp --dport 25 -m owner --uid-owner root -j ACCEPT
iptables -A OUTPUT -p tcp -m tcp --dport 25 -m owner --uid-owner Debian-exim -j ACCEPT
iptables -A OUTPUT -p tcp -m limit --limit 15/minute -m tcp --dport 25 -j LOG --log-prefix "LOCAL_DROPPED_SPAM"
iptables -A OUTPUT -p tcp -m tcp --dport 25 -j REJECT --reject-with icmp-port-unreachable

Я не могу подключиться к порту 25 с localhost с другим пользователем, кроме root или членом почтовой группы -> Так что, похоже, это работает.

Еще остаются вопросы:

Вероятно, было бы лучше установить политику для таблицы OUTPUT на DROP, а затем явно открывать соответствующие порты и т.д., но это будет довольно специфично для вашей среды, поэтому это упражнение для OP.

Ты можешь использовать -m multiport для соответствия до 15 портов, например

iptables -A OUTPUT -p tcp -m multiport --dports 25,587 -m owner --gid-owner mail -j ACCEPT

разрешить отправку групповой почты на оба порта или

Вы можете регистрировать новые исходящие подключения следующим образом

iptables -A OUTPUT -p tcp -m multiport --dports 25,587 -m state --state NEW -j LOG --log-uid --log-prefix  "LOCAL_DROPPED_SPAM "

и вы получите такое сообщение

11 ноября 12:52:26 имя хоста ядро: LOCAL_DROPPED_SPAM IN = OUT = eth0 SRC = 192.168.254.181 DST = 192.168.254.187 LEN = 60 TOS = 0x10 PREC = 0x00 TTL = 64 ID = 53476 DF PROTO = TCP SPT = 49893 DPT = 25 WINDOW = 14600 RES = 0x00 SYN URGP = 0 UID = 1000 GID = 1000

iptables -A OUTPUT -p tcp -m multiport --dports 25,587 -j DROP

чтобы окончательно разорвать все исходящие соединения на обоих портах.

Помните, что действия iptables действуют в том порядке, в котором они находятся в таблице, и первое совпадение побеждает, поэтому

  • Поместите свои правила ALLOW на первое место
  • Следуйте этим правилам LOG
  • Затем DROP