我正在设置一个简单的服务器来为网站提供服务,同时也充当邮件服务器。邮件服务很小,我仅用它来管理个人网站的邮件,我只使用本地机器上的 Thunderbird 进行连接。我按照教程使用 mysql 设置邮件并使用虚拟用户、别名和域教程链接。我还没有设置 spamassasin。
我很好奇,用于保护邮件的推荐 ufw 设置是什么。目前我只有以下配置:
To Action From
-- ------ ----
80/tcp ALLOW Anywhere
443/tcp ALLOW Anywhere
Dovecot Secure IMAP ALLOW Anywhere
Postfix Submission ALLOW Anywhere
22/tcp ALLOW --my home ip--
Postfix ALLOW Anywhere
80/tcp (v6) ALLOW Anywhere (v6)
443/tcp (v6) ALLOW Anywhere (v6)
Dovecot Secure IMAP (v6) ALLOW Anywhere (v6)
Postfix Submission (v6) ALLOW Anywhere (v6)
Postfix (v6) ALLOW Anywhere (v6)
我使用 fail2ban 来限制以下服务中 5 次登录尝试失败的所有应用:
Status
|- Number of jail: 4
`- Jail list: dovecot, postfix, postfix-sasl, sshd
我想知道是否还有其他一些推荐的设置可以用来进一步保护邮件端口的安全。
我确实知道我只能假设是机器人试图找到电子邮件地址。就像这样:
Sep 13 14:17:42 webserver postfix/submission/smtpd[25008]: connect from unknown[173.214.174.60]
Sep 13 14:17:42 webserver postfix/submission/smtpd[25008]: lost connection after CONNECT from unknown[173.214.174.60]
Sep 13 14:17:42 webserver postfix/submission/smtpd[25008]: disconnect from unknown[173.214.174.60] commands=0/0
Sep 13 14:17:44 webserver postfix/submission/smtpd[25008]: warning: hostname vps276013.trouble-free.net does not resolve to address 173.214.174.60: Name or service not known
Sep 13 14:17:44 webserver postfix/submission/smtpd[25008]: connect from unknown[173.214.174.60]
Sep 13 14:17:44 webserver postfix/submission/smtpd[25008]: Anonymous TLS connection established from unknown[173.214.174.60]:
TLSv1 with cipher ECDHE-RSA-AES256-SHA (256/256 bits)
Sep 13 14:17:44 webserver postfix/submission/smtpd[25008]: NOQUEUE: reject: RCPT from unknown[173.214.174.60]: 554 5.7.1 <[email protected]>: Recipient address rejected: Access denied; from=<[email protected]> to=<[email protected]> proto=ESMTP helo=<int-vm.domain>
Sep 13 14:17:44 webserver postfix/submission/smtpd[25008]: lost connection after RCPT from unknown[173.214.174.60]
Sep 13 14:17:44 webserver postfix/submission/smtpd[25008]: disconnect from unknown[173.214.174.60] ehlo=2 starttls=1 mail=1 rcpt=0/1 commands=4/5
Sep 13 14:17:57 webserver postfix/submission/smtpd[25008]: warning: hostname vps276013.trouble-free.net does not resolve to address 173.214.174.60: Name or service not known
Sep 13 14:17:57 webserver postfix/submission/smtpd[25008]: connect from unknown[173.214.174.60]
Sep 13 14:17:57 webserver postfix/submission/smtpd[25008]: Anonymous TLS connection established from unknown[173.214.174.60]:
TLSv1 with cipher ECDHE-RSA-AES256-SHA (256/256 bits)
Sep 13 14:17:57 webserver postfix/submission/smtpd[25008]: NOQUEUE: reject: RCPT from unknown[173.214.174.60]: 554 5.7.1 <[email protected]>: Recipient address rejected: Access denied; from=<[email protected]> to=<[email protected]> proto=ESMTP helo=<int-vm.domain>
Sep 13 14:17:57 webserver postfix/submission/smtpd[25008]: lost connection after RCPT from unknown[173.214.174.60]
Sep 13 14:17:57 webserver postfix/submission/smtpd[25008]: disconnect from unknown[173.214.174.60] ehlo=2 starttls=1 mail=1 rcpt=0/1 commands=4/5
Sep 13 14:18:24 webserver postfix/smtpd[25012]: warning: hostname vps276013.trouble-free.net does not resolve to address 173.214.174.60: Name or service not known
Sep 13 14:18:24 webserver postfix/smtpd[25012]: connect from unknown[173.214.174.60]
Sep 13 14:18:24 webserver postfix/smtpd[25012]: lost connection after CONNECT from unknown[173.214.174.60]
Sep 13 14:18:24 webserver postfix/smtpd[25012]: disconnect from unknown[173.214.174.60] commands=0/0
Sep 13 14:18:30 webserver postfix/smtpd[25012]: warning: hostname vps276013.trouble-free.net does not resolve to address 173.214.174.60: Name or service not known
Sep 13 14:18:30 webserver postfix/smtpd[25012]: connect from unknown[173.214.174.60]
Sep 13 14:18:32 webserver postfix/smtpd[25012]: NOQUEUE: reject: RCPT from unknown[173.214.174.60]: 554 5.7.1 <[email protected]>: Relay access denied; from=<[email protected]> to=<[email protected]> proto=SMTP helo=<int-vm.domain>
Sep 13 14:18:32 webserver postfix/smtpd[25012]: lost connection after RCPT from unknown[173.214.174.60]
Sep 13 14:18:32 webserver postfix/smtpd[25012]: disconnect from unknown[173.214.174.60] helo=1 mail=1 rcpt=0/1 commands=2/3
Sep 13 14:18:48 webserver postfix/smtpd[25012]: warning: hostname vps276013.trouble-free.net does not resolve to address 173.214.174.60: Name or service not known
Sep 13 14:18:48 webserver postfix/smtpd[25012]: connect from unknown[173.214.174.60]
Sep 13 14:18:48 webserver postfix/smtpd[25012]: NOQUEUE: reject: RCPT from unknown[173.214.174.60]: 554 5.7.1 <[email protected]>: Relay access denied; from=<[email protected]> to=<[email protected]> proto=SMTP helo=<int-vm.domain>
Sep 13 14:18:48 webserver postfix/smtpd[25012]: lost connection after RCPT from unknown[173.214.174.60]
Sep 13 14:18:48 webserver postfix/smtpd[25012]: disconnect from unknown[173.214.174.60] helo=1 mail=1 rcpt=0/1 commands=2/3
Sep 13 14:22:08 webserver postfix/anvil[25010]: statistics: max connection rate 3/60s for (submission:173.214.174.60) at Sep 13 14:17:57
Sep 13 14:22:08 webserver postfix/anvil[25010]: statistics: max connection count 1 for (submission:173.214.174.60) at Sep 13 14:17:42
Sep 13 16:19:45 webserver postfix/smtpd[2177]: warning: hostname zg-0823b-39.stretchoid.com does not resolve to address 192.241.228.172: Name or service not known
Sep 13 16:19:45 webserver postfix/smtpd[2177]: connect from unknown[192.241.228.172]
Sep 13 16:19:45 webserver postfix/smtpd[2177]: disconnect from unknown[192.241.228.172] ehlo=1 quit=1 commands=2
Sep 13 16:23:05 webserver postfix/anvil[2179]: statistics: max connection rate 1/60s for (smtp:192.241.228.172) at Sep 13 16:19:45
Sep 13 16:23:05 webserver postfix/anvil[2179]: statistics: max connection count 1 for (smtp:192.241.228.172) at Sep 13 16:19:45
Sep 13 16:23:05 webserver postfix/anvil[2179]: statistics: max cache size 1 at Sep 13 16:19:45
我真的不知道我在这里看到的是什么,也不知道这是正常的还是需要担心的。据我所知,postfix/smtpd 是传入邮件,所以我不知道这是否只是在探测电子邮件地址还是什么。
如果有人有这方面的经验,可以给我指点迷津,让我能够打造一个相当安全的邮件服务。另外,如果日志中有什么需要我担心的,也请告诉我。
任何帮助都将受到赞赏。
答案1
您在日志中看到的是垃圾邮件发送者试图使用您的邮件服务器发送邮件。如果他们成功了,那显然会非常糟糕,但在线邮件服务器经常会受到大量针对它们的随机攻击。您的邮件服务器受到攻击这一事实并不奇怪,所以您关心的不是这些攻击是否正在发生,而是要确保这些攻击不会得逞。
我们可以在您的日志中看到垃圾邮件机器人尝试了两次不同的攻击,因此我将依次处理这两次攻击。
尝试使用您的邮件服务器作为中继的攻击
Postfix 可以充当电子邮件中继,从互联网上的服务器接收电子邮件,然后将其发送到适当的目的地。您需要在一定程度上启用此功能,因为您希望接收发送到您的邮件服务器的电子邮件。这意味着您不能使用防火墙,例如联邦快递保护你的邮件服务器免受此类攻击;你可以合法地从互联网上的任何其他邮件服务器接收连接,而且很难联邦快递知道哪些 IP 地址是邮件服务器。
此类连接到达端口 25(合法连接和恶意连接均是如此),并将被接收postfix/smtpd
。
通常,防止此类攻击的最佳方法是将邮件服务器配置为拒绝将任何消息转发到外部地址;您希望它发送发送给您的电子邮件,但不转发发送给其他任何人的电子邮件。我们可以在您的日志中看到许多“中继访问被拒绝”消息,因此邮件服务器可能已经正确防御了此类攻击。
然而,这是很重要确保您的邮件服务器不是开放中继,并且不能充当开放中继。如果您希望确保在这方面配置正确,则应使用开放中继检查器;根据我的经验,这个开放的中继检查器是查找可能导致您的邮件服务器转发不该转发的消息的漏洞的最全面工具(每次尝试后,您想要的输出都是“转发不被接受”)。如果这样的工具无法找出如何让您的邮件服务器转发消息,那么垃圾邮件发送者很可能也无法做到。
如果日志显示中继尝试失败让你感到困扰,那么虽然你无法配置联邦快递要拒绝尝试,您可以配置失败2ban在前几次尝试失败后,暂时阻止进一步的尝试。在最新版本的 Ubuntu 上,jail 的配置默认具有相当宽松的设置。您可以通过在 jail 文件的相关部分中postfix
添加以下内容,使它们更加严格,阻止针对 Postfix 的更广泛的攻击mode = aggressive
失败2ban配置。例如:
[postfix]
enabled = true
mode = aggressive
不过,这不太可能产生太大影响,因为电子邮件中继不能被“强行”中继消息;它们要么配置为允许,要么不允许。因此,绝大多数垃圾邮件机器人在一两次中继尝试失败后自然会放弃尝试,因此它们永远不会达到足够的失败尝试次数来触发 fail2ban。
尝试通过你的邮件服务器提交电子邮件的攻击
除了充当已“在电子邮件系统中”的电子邮件的邮件中继之外,Postfix 还可以允许提交非来自邮件服务器的电子邮件;想要发送电子邮件的合法用户将让他们的电子邮件客户端连接到 Postfix,告诉它他们想要发送的消息,然后 Postfix 会将其发送到收件人的邮件服务器。显然,如果您希望能够发送电子邮件,您必须配置您的系统以允许这样做。
这种连接通常到达端口 587(同样,对于合法和恶意连接都是如此;这可能就是你的联邦快递配置),并将被接收postfix/submission/smtpd
。
如果垃圾邮件机器人能够通过您的邮件服务器提交电子邮件,那么它实际上就能够发送看起来像是您发来的垃圾邮件(带有所有适当的标题)。这显然是个问题。因此,提交端口不转发任何它无法识别的人发来的消息非常重要。
您的日志中的这些行让… submission … NOQUEUE: reject: … Recipient address rejected: Access denied
我有点担心,因为我没有看到任何随机攻击在我自己的配置中达到如此程度(我自己的日志中只有一行这样的行,它是我试图合法发送的电子邮件,但在配置错误的情况下,我的密码无法验证)。但是,在这方面,您可能仍然有一个相当安全的配置:提交电子邮件的尝试被拒绝,大概是因为垃圾邮件机器人没有使用您系统的有效用户名/密码对进行身份验证。
我猜测您的系统和我的系统在配置上的差异在于,我的系统-o smtpd_tls_auth_only=yes
在submission
部分有master.cf
;这要求发送电子邮件的电子邮件软件仅通过 TLS 发送用户名和密码(并且会隐藏需要用户名和密码的事实,直到它发送为止)。根据我的经验,这在减少垃圾邮件机器人暴力破解我的电子邮件密码的尝试方面相当有效;他们中的大多数不想尝试为每次密码尝试设置 TLS 连接(并且一些尝试的垃圾邮件机器人正在使用过时的 TLS 库并且不知道如何设置)。当然,只有在您将自己的电子邮件客户端配置为使用 TLS 时才应设置该设置!
无论如何,您说这是个人邮件服务器;您是否是唯一通过该服务器发送电子邮件的人,并且电子邮件是否始终来自同一 IP?如果是这样,那么您的防火墙规则就比需要的更宽松。联邦快递目前设置为允许从“任何地方”访问“提交”端口。如果您是唯一应该提交电子邮件以发送到其他地方的人,那么就没有理由允许其他人尝试这样做,并且您可以更严格地设置防火墙规则,只允许来自您的 IP 的连接。
因为这种攻击中暴力破解密码可能会有所帮助(因为目前只有你的用户名/密码可以保护提交端口),失败2ban也可以提供帮助。将postfix
jail 设置为使用更激进的配置似乎对我的邮件服务器产生了很大的影响,大大减少了随机密码暴力破解尝试的次数。
额外的安全性:防止对您的电子邮件收件箱的攻击
您发布的日志没有显示任何攻击 Dovecot 的尝试。根据我的经验,这些攻击很少见;垃圾邮件机器人通常对发送邮件比阅读邮件更感兴趣。尽管如此,您确实偶尔会看到对 Dovecot 的随机攻击。(其中一个原因可能是大多数人使用相同的密码来发送电子邮件和阅读他们的电子邮件,因此如果垃圾邮件机器人可以强行破解您的电子邮件收件箱的密码,它就可以尝试使用相同的密码来提交电子邮件。)
如果您的邮件服务器仅供一人使用,那么就像只有一个人可以发送电子邮件一样,也只有一个人可以阅读电子邮件。因此,从安全角度来看,锁定 Dovecot 的端口(通常是 IMAP)是合理的,就像您锁定 Postfix 提交端口一样,将 IMAP 的访问权限限制为您阅读电子邮件的 IP。