如何通过 fail2ban 配置禁止服务器向我的 postfix 服务器发送垃圾邮件?

如何通过 fail2ban 配置禁止服务器向我的 postfix 服务器发送垃圾邮件?

我家里有一个小型邮件服务器,过滤规则非常严格。我使用 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(其中有一些片段)。

简而言之:

  1. 在jail.conf中设置:

    [postfix]
    enabled  = true
    
  2. 如果您使用 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 =
    
  3. 在 jail.conf 或 jail.local 中添加部分:

    [dovecot-pop3imap]
    enabled = true
    port = pop3,pop3s,imap,imaps
    filter = dovecot-pop3imap
    logpath = /var/log/mail.log
    
  4. 重新启动 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 方面速度更快。

相关内容