如何使用 VPN (Debian/Ubuntu) 保护电子邮件服务器免受黑客攻击

在本教程中,我将与您分享我的提示和技巧 保护电子邮件服务器免受黑客攻击 使用自托管 VPN 服务器。 许多垃圾邮件发送者正试图侵入其他人的电子邮件服务器。 如果成功,他们将使用被黑的电子邮件服务器发送大量垃圾邮件或窃取有价值的数据。 为什么我们使用自托管 VPN 服务器? 因为它允许您启用白名单,所以只有连接到 VPN 服务器的可信用户才能访问您的邮件服务器。

先决条件

假设你有一个 电子邮件服务器 启动并运行。 如果没有,请按照以下教程之一设置您自己的邮件服务器。

  • 如何使用 iRedMail 在 Ubuntu 20.04 上轻松设置完整的邮件服务器
  • 如何使用 iRedMail 在 Debian 10 Buster 上轻松设置邮件服务器

还假设您已经设置了一个 VPN服务器. 如果没有,请按照以下教程之一进行操作。 邮件服务器和 VPN 服务器可以运行在不同的主机上,也可以运行在同一台主机上。

  • 在 Ubuntu 上设置您自己的 WireGuard VPN 服务器
  • 在 Debian 上设置您自己的 WireGuard VPN 服务器

暗示建议在不同的主机上运行 VPN 服务器和邮件服务器以降低操作复杂性. 如果邮件服务器和 VPN 服务器在同一台主机上运行,​​则需要额外的步骤,即在 VPN 服务器上设置响应策略区域以覆盖邮件服务器主机名的 DNS A 记录。

  • 在 Debian/Ubuntu 上的 BIND 解析器中设置响应策略区 (RPZ)

假设 DNS A 记录 mail.yourdomain.com 决心 12.34.56.78,那么你需要在响应策略区创建一条记录,将其解析为VPN服务器的私有IP地址 10.10.10.1.

在下面的文本中,我使用 12.34.56.78 作为 VPN 服务器的公共 IP 地址。 如果VPN服务器和邮件服务器运行在同一台主机上,则需要更换 12.34.56.78 使用 VPN 服务器的私有 IP 地址 10.10.10.1.

步骤 1:将 VPN 服务器 IP 地址添加到防火墙白名单

一旦您启动并运行了邮件服务器和 VPN 服务器,您应该将 VPN 服务器的 IP 地址添加到邮件服务器防火墙的白名单中。 如果你使用 UFW防火墙 (Debian/Ubuntu),在邮件服务器上运行以下命令。 将 12.34.56.78 替换为 VPN 服务器的 IP 地址。

sudo ufw insert 1 allow in from 12.34.56.78

您还可以将其他服务器的 IP 地址列入白名单。 例如,有些人可能有另一个需要通过电子邮件服务器发送电子邮件的 Web 服务器。 然后也将其添加到白名单中。

sudo ufw insert 1 allow in from IP-address-of-the-other-web-server

第二步:关闭提交端口、IMAP端口和POP3端口

  • 提交端口: 587 和 465
  • IMAP 端口: 143 和 993
  • POP3 端口: 110 和 995

Mozilla Thunderbird 和 Microsoft Outlook 等邮件客户端使用端口 587 和 465 来提交外发电子邮件。 黑客可以对端口 587 和 465 进行暴力攻击。

以下是在我的邮件日志中找到的示例(/var/log/mail.log 在 Debian/Ubuntu 上, /var/log/maillog 在 CentOS/RHEL 上)。 坏人试图登录,但每次都未能通过 SASL 身份验证。

postfix/smtps/smtpd[18071]: Anonymous TLS connection established from unknown[92.118.38.56]: TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits) postfix/smtps/smtpd[18071]: warning: unknown[92.118.38.56]: SASL LOGIN authentication failed: UGFzc3dvcmQ6 postfix/smtps/smtpd[18071]: lost connection after AUTH from unknown[92.118.38.56] postfix/smtps/smtpd[18071]: disconnect from unknown[92.118.38.56] ehlo=1 auth=0/1 rset=1 commands=2/3 postfix/smtps/smtpd[18071]: connect from unknown[92.118.38.56] postfix/smtps/smtpd[18071]: Anonymous TLS connection established from unknown[92.118.38.56]: TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits) postfix/smtps/smtpd[18071]: warning: unknown[92.118.38.56]: SASL LOGIN authentication failed: UGFzc3dvcmQ6 postfix/smtps/smtpd[18071]: lost connection after AUTH from unknown[92.118.38.56] postfix/smtps/smtpd[18071]: disconnect from unknown[92.118.38.56] ehlo=1 auth=0/1 rset=1 commands=2/3 postfix/smtps/smtpd[18071]: connect from unknown[92.118.38.56] postfix/smtps/smtpd[18071]: Anonymous TLS connection established from unknown[92.118.38.56]: TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits) postfix/smtps/smtpd[18071]: warning: unknown[92.118.38.56]: SASL LOGIN authentication failed: UGFzc3dvcmQ6 postfix/smtps/smtpd[18071]: lost connection after AUTH from unknown[92.118.38.56] postfix/smtps/smtpd[18071]: disconnect from unknown[92.118.38.56] ehlo=1 auth=0/1 rset=1 commands=2/3

我不想在我的邮件日志中看到这种活动,所以我只是 close 防火墙中的端口 587、465、143、993、110 和 995。 因为我的 VPN 服务器的 IP 地址被列入白名单,所以只有连接到我的 VPN 服务器的用户才能访问这些端口。

到 close UFW防火墙中的这些端口,首先列出你的防火墙规则。

sudo ufw status numbered

样本输出