为什么 Postfix 不拒绝特定客户端的连接尝试?

为什么 Postfix 不拒绝特定客户端的连接尝试?

我的 SMTP 服务器正在被探测。它看起来像是 SASL 上的暴力附加,他们正在其中检查密码字典。

在日志文件中看到了数千行这样的行

Sep 18 14:09:52 xxx postfix/smtpd[7412]: connect from ca255.calcit.fastwebserver.de[146.0.42.124]
Sep 18 14:09:55 xxx postfix/smtpd[7412]: warning: ca255.calcit.fastwebserver.de[146.0.42.124]: SASL LOGIN authentication failed: authentication failure
Sep 18 14:09:55 xxx postfix/smtpd[7412]: lost connection after AUTH from ca255.calcit.fastwebserver.de[146.0.42.124]
Sep 18 14:09:55 xxx postfix/smtpd[7412]: disconnect from ca255.calcit.fastwebserver.de[146.0.42.124]

我这样修改了 main.cf:

inet_interfaces = all
smtpd_sasl_auth_enable=yes
smtpd_helo_required = yes
smtpd_sender_restrictions = reject_unknown_address

smtpd_client_restrictions =  check_client_access hash:/etc/postfix/maps/access_client,
                             permit_mynetworks,
                             reject

smtpd_recipient_restrictions = check_client_access hash:/etc/postfix/maps/access_client,
                               permit_mynetworks,
                               reject_non_fqdn_sender,
                               reject_non_fqdn_recipient,
                               reject_unknown_sender_domain,
                               reject_unknown_recipient_domain,
                               permit_sasl_authenticated,
                               reject_unauth_pipelining,
                               reject_unauth_destination,
                               reject_rbl_client zen.spamhaus.org,
                               reject_rbl_client list.dsbl.org
                               permit

broken_sasl_auth_clients = yes

我的 /etc/postfix/maps/access_client 只有这一行:

146.0.42.124 REJECT

然而,重新启动 postfix 后,行为仍然没有变化,我仍然看到相同的错误,因此 SASL 仍在检查,即使我认为使用这些设置,客户端会在 SASL 进入游戏之前根据其 IP 地址被拒绝?

第二个问题是 - 我正在将传出邮件流量从一台机器中继到内部网络上的另一台机器 - 除了仅中继的机器上的“relayhost”设置之外,我可以在两台机器上保持其余的后缀设置相同吗?

答案1

如果您想禁用特定 IP 或 IP 范围的 SASL AUTH没有的副作用smtpd_delay_reject = no,看看smtpd_discard_ehlo_keyword_address_maps关键词。配置示例及说明:


配置

首先,我们在中设置关键字/etc/postfix/main.cf

smtpd_discard_ehlo_keyword_address_maps = cidr:/etc/postfix/esmtp_cidr

/etc/postfix/esmtp_cidr现在我们在(我们刚刚指定的文件)中定义黑名单:

# /etc/postfix/esmtp_cidr
91.200.12.0/24  auth
155.133.82.77   auth
146.0.42.124    auth

由于这是一个cidr:列表文件,因此不需要postmap运行。但我们需要告诉 Postfix 重新加载其配置:

service postfix reload

解释

这是什么意思?对于指定的地址(本例中是完整的 IP 或 IP 范围),我们告诉 Postfix 禁用特定的 ESMTP 功能:AUTH。这意味着,所覆盖的主机不再可以使用 SASL。我们检查一下日志:

Aug 11 22:37:39 xxx postfix/smtpd[32630]: connect from unknown[91.200.12.98]
Aug 11 22:37:39 xxx postfix/smtpd[32630]: discarding EHLO keywords: AUTH
Aug 11 22:37:39 xxx postfix/smtpd[32630]: lost connection after AUTH from unknown[91.200.12.98]
Aug 11 22:37:39 xxx postfix/smtpd[32630]: disconnect from unknown[91.200.12.98]

所以我们得到了我们想要的,而不必使用smtpd_delay_reject = no,因此不需要担心后者的副作用。

注意:您可以以同样的方式禁止客户端使用其他 ESMTP 功能,例如管道或 starttls。例如,可以找到可用关键字的列表在这篇维基百科文章中。除了与smtpd_sasl_exceptions_networks,这些关键字不仅不会被公布,而且根本不会被接受——正如日志所示。

答案2

在发送(或) 命令smtpd_client_restrictions之前,Postfix 不会评估。RCPT TOETRN

http://www.postfix.org/SMTPD_ACCESS_README.html#timing

当前的 Postfix 版本推迟了对客户端、helo 和发件人限制列表的评估,直到 RCPT TO 或 ETRN 命令为止。此行为由 smtpd_delay_reject 参数控制。限制列表仍按(客户端、helo、etrn)或(客户端、helo、发送者、中继、接收者、数据或数据结束)限制的正确顺序进行评估。当限制列表(例如:客户端)评估为 REJECT 或 DEFER 时,将跳过后面的限制列表(例如:helo、发件人等)。

因此,您可以通过在您的 中设置以下内容来解决这个问题main.cf

smtpd_delay_reject = no

 

至于你的第二个问题,postfix 有很多控件,如果没有网络、postfix 配置和客户端配置的完整详细信息,这几乎是不可能回答的。最好的方法就是尝试一下。

相关内容