因此,我想阻止所有不需要的出站流量,特别是来自不必要的允许端口(TCP 和 UDP)的流量,并且如果有任何脚本或应用程序尝试联系出站端口,也会收到电子邮件警报。
例如,如果有人安装了 IRC 聊天脚本,则当守护进程尝试运行并连接配置的出站端口等时,应该阻止该脚本。
我想要一个脚本来获取所有出站流量的尝试并通过电子邮件发送,以便我可以看到完成的尝试。
允许的端口是通常的 80,993,25,3006 和其他正常托管相关的端口。
我该如何进行这样的设置?首先,我可以考虑使用 csf/apf 和/或 tcp_wrapper 和一些 iptables,然后使用 bash 脚本来完成收集/通过电子邮件发送尝试。有人可以在这方面指导我吗?
谢谢。
答案1
设置 iptables 以允许流量到您想要的端口,并记录和拒绝所有其他端口。
iptables --policy OUTPUT DROP
iptables --append INPUT --match state --state ESTABLISHED,RELATED --jump ACCEPT
iptables --append OUTPUT --match state --state ESTABLISHED,RELATED --jump ACCEPT
iptables --append OUTPUT --protocol udp --match multiport --dports domain,bootps --jump ACCEPT
iptables --append OUTPUT --protocol tcp --match multiport --dports domain,http,https,ssh,pop3s,imaps,submission --jump ACCEPT
iptables --append OUTPUT --jump LOG --log-prefix 'OUT-REJECT '
iptables --append OUTPUT --jump REJECT
然后在 cronjob 中编写一个脚本来解析拒绝数据包的日志并编写报告。这将列出被拒绝的目标端口以及尝试次数。
#!/bin/sh
grep OUT-REJECT /var/log/syslog | egrep -o 'DPT=[0-9]+' | sort | uniq -c