因为我们被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与另一个用户比根或邮件组成员 – >所以它似乎工作。
仍然有一些问题:
/usr/sbin/sendmail的使用是否也受到这个规则集的限制或阻止? 将OUTPUT表的策略设置为DROP,然后明确地打开相关的端口等等可能会更好,但是这对于您的环境来说是非常具体的,所以这是对OP的练习。
您可以使用-m multiport来匹配多达15个端口,例如
iptables -A OUTPUT -p tcp -m multiport --dports 25,587 -m owner --gid-owner mail -j ACCEPT
允许组邮件在两个端口上发送
您可以像这样logging新的出站连接
iptables -A OUTPUT -p tcp -m multiport --dports 25,587 -m state --state NEW -j LOG --log-uid --log-prefix "LOCAL_DROPPED_SPAM "
你会得到这样的信息
11月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动作规则按照它们在表中的顺序排列,并首先匹配胜利