我该如何设置 fail2ban 来处理所有这些烦人的 pop3 登录尝试?我使用的是 Ubuntu 9.04,下面是从 Logwatch 发送的邮件中看到的 pop3 日志摘录:
LOGIN FAILED, user=Administrador, ip=[::ffff:208.115.212.106]: 8 Time(s)
LOGIN FAILED, user=Alfredo, ip=[::ffff:208.115.212.106]: 8 Time(s)
LOGIN FAILED, user=Antonio, ip=[::ffff:208.115.212.106]: 6 Time(s)
LOGIN FAILED, user=Carmelo, ip=[::ffff:208.115.212.106]: 8 Time(s)
LOGIN FAILED, user=access, ip=[::ffff:208.115.212.106]: 7 Time(s)
LOGIN FAILED, user=account, ip=[::ffff:208.115.212.106]: 7 Time(s)
LOGIN FAILED, user=admin, ip=[::ffff:208.115.212.106]: 5 Time(s)
LOGIN FAILED, user=angel, ip=[::ffff:208.115.212.106]: 9 Time(s)
编辑:我认为解决方案是通过启用与 courier 相关的 jail 来简单地更改 /etc/fail2ban/jail.conf 中的设置。有人可以证实这一点吗?
答案1
我不喜欢“fail2ban”,因为它“存在于”用户空间中,并且有很多“移动部件”。如果您在机器上使用 iptables,那么限制来自同一 IP 地址的新连接的速率是相当简单的。
iptables -A INPUT -p tcp --dport 110 -m state --state NEW -m recent --name pop --rsource --update --seconds 60 --hitcount 5 -j DROP
iptables -A INPUT -p tcp --dport 110 -m state --state NEW -m recent --name pop --rsource --set -j ACCEPT
假设您在 INPUT 链中拥有更高级别的规则来允许通过这些规则建立的连接,则将对进入您的 POP3 端口的新 TCP 连接的速率进行限制(60 秒内超过 5 个)。
答案2
fail2ban 非常灵活,它可以对任何日志文件中的任何表达式做出反应:/etc/fail2ban/jail.conf
您指定查看的位置(logpath
)、查找的内容(filter
)以及要做什么(action
)。
根据您的情况,您可以尝试现有过滤器/etc/fail2ban/filter.d/courierlogin.conf
(检查正则表达式,也许您需要修改它)和现有操作/etc/fail2ban/action.d/
(参见中的示例/etc/fail2ban/jail.conf
)。例如,如果您使用 shorewall:
[pop3]
enabled = true
filter = courierlogin
action = shorewall
logpath = /var/log/mail.log
我总是将已知的良好 IP 添加到ignoreip
,这样这些地址就不会被禁止:
[DEFAULT]
ignoreip = 127.0.0.1 192.168.0.0/24 SOME.EXTERNAL.IPS