我想根据速率或连接限制动态阻止使用相同 IP 地址的特定连接。使用 Solaris/IPF 或某些 sendmail 扩展可以实现这一点吗?我想限制 sendmail 登录尝试以防止暴力攻击。
在 Linux 中,iptables 防火墙层可以轻松处理此问题,但我无法找到使用 ipf 在防火墙层限制此问题的方法。Sendmail 具有内置速率限制和连接限制,但它似乎适用于所有用户,因此如果我们遇到 DOS 或 DDOS,它会阻止所有用户,而不仅仅是攻击者。
答案1
我通过在 syslog / rsyslog 中添加另一条规则来解决这个问题,以将 mail.* 消息传输到 /etc/mail/mailban/syslog_fifo 中的 fifo
然后我创建了一个守护进程来读取 syslog_fifo、解析 sendmail 消息并根据发现的内容采取行动。通过 150 万行 (!) mysql 表跟踪每个 ip 地址和活动的历史记录。违规 ip 地址会根据各种标准添加到 iptables 中的禁止链中,并针对不同的持续时间/端口进行不同的限制,然后生活就会变得很美好……
一个简单的 cron 任务每小时运行一次,释放旧的 IP 地址并相应地更新数据库中的状态。
现在我让软件自动编译和清理日志记录,找到负责滥用 IP 的地址,然后发送报告,通知 ISP 不合群的行为。它在大约 5% 的情况下有效,并且有助于清理网络。
这还需要一份不接受或忽略此类投诉的违法 ISP 的黑名单,并且这会随着时间的推移而发展。
我还使用了另一个类似的解决方案来应对 ssh、pop3、httpd 攻击。
我不知道有其他软件可以做到这一点,但尽管我最熟悉的是 RedHat/Fedora,但我可以帮助您开发解决方案。