我发现了一个看似恶意/垃圾邮件的主机,它使我的 Sendmail 服务器超载,导致它拒绝与其他主机的连接。来自某一特定 IP 地址的连接使我超载。该 IP 在 /etc/access 中被阻止,无法接受邮件,但它会通过邮件服务器导致 DOS,从而限制同时连接的数量。
如何阻止特定的 IP 地址,使其无法发送邮件?我无法使用 inetd,因为 sendmail 作为守护进程运行。我可以使用 ifpw 之类的东西吗?我以前从未使用过它。这是 FreeBSD 7.0
任何帮助将不胜感激!
答案1
由于您似乎没有防火墙功能,因此您可以尝试使用防火墙tcpwrappers
来阻止有问题的 IP 地址。在FreeBSD下,tcpwrappers
是在文件中配置的/etc/hosts.allow
。在该文件的顶部附近,添加如下行:
sendmail : ip.add.re.ss : deny
即使,正如您所说,sendmail
不是由 启动的inetd
,只要您使用的是 FreeBSD 下的默认版本sendmail
,它就会起作用,它与提供此功能的 链接libwrap
。 (如果 的输出ldd /usr/libexec/sendmail/sendmail
不包含对 的引用lwrap
,那么恐怕所有的赌注都失败了......)
请注意,这并不能替代真正的防火墙 - 但在这种情况下,它可能会拯救您,直到这个白痴转向他的下一个受害者。您应该考虑升级到 FreeBSD 的最新版本,并趁机同时配置防火墙。
答案2
你需要使用FreeBSD 内置的防火墙。您可以添加一条规则来丢弃来自特定主机的数据包,以便 sendmail 守护程序永远不会看到它们。