我家里有一个小型邮件服务器,过滤规则非常严格。我使用 logwatch 发现 80% 到 90% 的连接被我的过滤规则拒绝。大多数拒绝都是由 rbl_client 导致的。
我迫切地想找到一个 fail2ban 配置文件示例,展示如何过滤向我的服务器发送垃圾信息的 IP。我希望禁令能持续很长时间(即 1 个月)。
我的邮件服务器也遭遇过 SYN 洪泛攻击,我手动设置了防火墙规则将其阻止。fail2ban 能检测到这些攻击吗?
答案1
我已经厌倦了所有 RBL 垃圾邮件发送者填满我的日志,因此我设置了我的 Postfix 来禁止他们。
这样做之后,负载就下降了,因为它们很多!
请注意,您必须采取某种方法来清理禁止列表。
我计划每周重启一次 fail2ban。
查看这些规则:http://www.fail2ban.org/wiki/index.php/Postfix
将它们添加到:/etc/fail2ban/filter.d/postfix.conf(在 Debian 系统中!)
读一下这个也很好(搜索fail2ban):http://workaround.org/ispmail/squeeze/sysadmin-niceties(其中有一些片段)。
简而言之:
在jail.conf中设置:
[postfix] enabled = true
如果您使用 dovecot(来自上面的链接),最好这样做:创建 /etc/fail2ban/filter.d/dovecot-pop3imap.conf 并添加:
[Definition] failregex = (?: pop3-login|imap-login): .*(?:Authentication failure|Aborted login \ (auth failed|Aborted login \(tried to use disabled|Disconnected \(auth failed).*rip=(?P<host>\S*),.* ignoreregex =
在 jail.conf 或 jail.local 中添加部分:
[dovecot-pop3imap] enabled = true port = pop3,pop3s,imap,imaps filter = dovecot-pop3imap logpath = /var/log/mail.log
重新启动 fail2ban 并检查 iptables -nvL 是否添加了 postfix 和 courier 链。注意:这是针对基于 Debian 的系统。检查 RH 或其他系统的文件路径。
答案2
只需直接使用 Postfix 通过黑名单过滤 IP 即可:
看http://www.postfix.org/postconf.5.html#smtpd_recipient_restrictions拒绝使用阻止列表。此外阅读放置它的最佳位置main.cf
。
以下是一些 RBL 条目的示例(#Check Blocklists:
部分),您可以添加这些条目来阻止列入黑名单的 IP。我将我的条目放在了下面,smtpd_recipient_restrictions
因为这是一个“昂贵”的检查(服务器负载和远程服务器 RBL 调用)。如果早点完成(例如在 下smtpd_helo_restrictions
),您往往会多次查询给定的 RBL/阻止列表站点而一无所获。
/etc/postfix/main.cf
:
smtpd_recipient_restrictions =
permit_mynetworks,
permit_sasl_authenticated,
reject_unauth_destination,
reject_unlisted_recipient,
reject_invalid_hostname,
reject_non_fqdn_sender,
reject_non_fqdn_recipient,
reject_unknown_sender_domain,
reject_unauth_pipelining,
check_client_access hash:/etc/postfix/blacklist,
#Check Blocklists:
reject_rbl_client zen.spamhaus.org,
reject_rbl_client bl.spamcop.net,
reject_rbl_client dul.dnsbl.sorbs.net,
#Postgrey:
#finalize and throw at postgrey if passes above:
#check_policy_service inet:[::1]:10023,'
permit
如果您确实想使用 Fail2Ban 进行黑名单处理:
使用 Fail2Ban 过滤器,例如 f2b-postfix-rbl (postfix-rbl.conf) 来过滤邮件日志中的阻止列表/黑名单 IP 条目。然后它会将新条目插入 iptables,并在给定的禁止时间内阻止该条目。如果对默认值不满意,您应该在特定的 jail 定义中说明禁止时间。
正如另一个答案所述,仅重新启动 F2B 或服务器通常不会解除禁令在禁令到期之前。您将需要使用
fail2ban-client
。最重要的是,Postfix + F2B + 封禁不会有太大帮助,因为脚本/机器人/邮件程序会在第一次失败后继续运行,并在另一天从不同的 IP 再次尝试。为什么彻底封禁 IP(使用 F2B)通常有点过分(增加了服务器负载)。
如果您坚持使用 fail2ban 处理黑名单,请确保在 /etc/failban/jail.local 下启用它:
[postfix-rbl]
enabled = true
port = smtp,465,submission
filter = postfix-rbl
logpath = /var/log/mail.log
要在较新版本中使用 rbl“模式”,请将过滤器行替换为:
filter = postfix[mode=rbl]
在早期版本中,我必须更改我的设置以检测“554 5.7.1”,以便通过“postifx-rbl”过滤器拾取后缀日志拒绝。较新版本的过滤器似乎可以扫描此改变在较新的 rbl“模式”版本下。
就 SYN 洪水而言 -看到这个。
答案3
因此配置已经介绍完毕,并且 postfix 的大多数设置都内置在 fail2ban 中,只需取消注释即可。您可能需要稍微调整一些路径。
以下是我的补充。修改配置以使用ipset
原因如下
ipset create f2b-whatever counters timeout 43200
现在,如果未检测到,它将自动超时。
您必须创建一个服务来在重新启动之前保存列表,并在系统启动时恢复列表,但我已经完成了。
如果您需要该功能,ipsets 还可以选择支持评论。
另外,拥有一个引用 ipset 的单个 iptables 规则在 CPU 方面速度更快。