Postfix 禁止互联网身份验证

Postfix 禁止互联网身份验证

我有一个 Postfix 电子邮件服务器,它允许内部用户通过它发送和接收邮件。

仅当用户成功建立 VPN 连接并在我的 LAN 上获得不可路由的 IP 地址时,才应发送。不应允许通过互联网发送。

目前我面临的情况是,攻击者试图从互联网上进行身份验证,试图访问邮件帐户,这可能使他们能够从被劫持的帐户发送恶意邮件。现在发生的情况是,当他们猜测用户帐户确实存在时,他们会尝试暴力破解它。我在 Postfix 中的身份验证外包给了 dovecot,后者又联系了 IPA。现在发生的情况是,在暴力攻击失败多次后,IPA 会暂时锁定该用户,从而导致真正的用户以该名称拒绝服务。

理想情况下我希望 Postfix 甚至不响应尝试从互联网验证用户的 SMTP 命令序列但立即回答是否定的。它应该只允许从互联网向我们发送邮件。有没有办法配置它?

答案1

如果不需要滥用身份验证功能,您可以配置 Postfix 以不将该功能暴露给更广泛的互联网。这通常通过编辑 main.cf 和 master.cf 文件来完成。

首先,阅读你的日志。我思考您合法的邮件提交与通过互联网收到的邮件不同方法,因此您可以将服务限制为仅此而已。验证:

  1. 他们总是进行身份验证,
  2. 他们总是使用专用于邮件提交的特定端口,
  3. 并且他们总是通过 VPN 连接,而不是通过互联网地址连接。

如果确实如此,您可以轻松确保身份验证仅适用于有限的部分连接:

步骤 1:在 中master.cf,您可以找到需要验证邮件提交的服务,然后仅适用于开启身份验证的用户

通常,您只有一两种这样的服务,从第一列很容易识别:smtps,可能还有submission

fd00:1337::1:5如果您的客户端无法从互联网访问您的服务器,则可以选择将其绑定到您的 VPN 客户端所看到的非公开路由地址(我在示例中使用了该地址)。

# line below is the where you prepend the network address
fd00:1337::1:5:smtps      inet  n       -       n       -       -       smtpd
 -o example_other=option
 -o more_options=example
 -o smtpd_sasl_auth_enable=yes
# line above is the option you add. note the leading space
# line below is the where you prepend the network address
fd00:1337::1:5:submission inet  n       -       n       -       -       smtpd
 -o example_other=option
 -o more_options=example
 -o smtpd_sasl_auth_enable=yes
# line above is the option you add. note the leading space

因为这意味着如果在您的 VPN 设置设置内部 IP 之前启动 postfix,则它无法正确绑定端口,这可能意味着您需要添加服务依赖项(可能是一行,取决于您的系统/发行版)。直到您验证新配置在重启后是否有效,您才算完成。

第 2 步:在 中main.cf,您对所有 smtpd 实例进行身份验证
# it defalts to off
smtpd_sasl_auth_enable = no

现在,除了上面明确启用的特定服务外,postfix 将不会宣布支持身份验证。无论如何尝试的客户端都将被 postfix 拒绝服务,从而使您的身份验证后端不受干扰。

相关内容