我刚刚遇到了我们的 ISP 的问题;我们的互联网连接被阻止,因为从我们的 IP 发送的邮件太多。问题是我们都使用 gmail,据我们所知,没有邮件通过 ISP SMTP 服务器发送(ISP 阻止所有流量到端口 25,如果它不在他们的服务器上)。
我提前封锁了 25 端口,所以发往该邮件服务器的外发邮件无法离开我们的网络。但这不会拒绝发送到其他服务器端口的邮件。
我想做的是找出是什么在我们的网络上发送这些邮件。是否有一个程序可以识别邮件包并使用 Ubuntu 拒绝它们?顺便说一下,我们的 Ubuntu 路由器不运行 smtp 服务器。
你可能想阻止你所有的 smtp 包,这可能是一个真正的麻烦,幸运的是有l7-filter。它可以阻止很多不同的协议,你只需要把它安装在你的网关/防火墙上。
tcpdump是一个有用的工具,可以将数据包从网络转储到文件或屏幕上,它通常在发行版打包存储库中可用,并且有很好的文档记录和针对此类情况的测试。
您可以在 ubuntu 路由器上安装 tcpdump (
apt-get install tcpdump
),并配置它以监视 smtp 流量;您可以查看主机从另一个 SSH 会话发送 smtp 流量的文件;
如果将wireshark安装到本地计算机并下载转储文件,或者在 ssh 命令行中使用 tshark,则可以获得更复杂的输出。
警告:如果您有大量 smtp 流量,tcpdump 会很快填满您的磁盘,因此请查看输出文件
ls -lh /tmp/smtp_dump
并在您有几 MB 数据要查看时使用 ctrl-c 停止命令。tcpdump (
-i eth0
) 的接口选项:如果您的路由器使用与 eth0 不同的接口,那么您可能必须使用-i
选项来选择它,例如tcpdump -i bond0 -s0 -w/tmp/smtp_dump port 25
邮件也可以在端口 465 和 587 上发送。(465 已被撤销但可能仍在使用中。)。结合滥用代理服务器,邮件甚至可以在端口 80 或 443 或 3128(用于 squid)或许多其他端口上发送。
您的网络是否有单一的 Internet 出口点?那时你有防火墙吗?
如果没有,你会想要那个。如果您有多个出口点,则每个出口点都应该有防火墙。(可能是同一个物理盒子。)
将您的防火墙设置为默认情况下丢弃所有内容并仅允许您想要的流量通过。
如果您不知道您的正常流量是多少,您可以在防火墙规则的末尾添加一个日志行,以便记录所有尚未匹配的内容。
即使您设法使用防火墙阻止流量,您仍会想要追踪并阻止发送邮件的任何东西。如果您不知道发送邮件的进程是什么,则邮件很可能是受感染的系统或开放代理或某些垃圾邮件发送者滥用的 Web 表单。我不想在我的网络中使用其中一个。
最好的解决方案可能是将您的邮件客户端配置为在发送外发邮件时使用提交端口 (587) 或 SSMTP 端口 (465),然后阻止所有到端口 25 的外发流量。大多数邮件提供商应该允许访问这些端口以进行提交外发邮件。