Ubuntu

帶有 postfix/dovecot 的郵件伺服器的推薦 UFW 設置

  • October 29, 2020

我正在設置一個簡單的伺服器來提供網站服務,同時也作為郵件伺服器。郵件服務很小,僅用於管理我的個人站點的郵件,我只是使用本地電腦上的 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 <mhalaak31@gmail.com>: Recipient address rejected: Access denied; from=<test@test.com> to=<mhalaak31@gmail.com> 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 <mhalaak31@gmail.com>: Recipient address rejected: Access denied; from=<test@test.com> to=<mhalaak31@gmail.com> 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 <mhalaak31@gmail.com>: Relay access denied; from=<test@test.com> to=<mhalaak31@gmail.com> 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 <mhalaak31@gmail.com>: Relay access denied; from=<test@test.com> to=<mhalaak31@gmail.com> 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 是傳入的郵件,所以如果這只是探測電子郵件地址或什麼的,那麼我知道。

如果有人在這方面有一些經驗,可以引導我朝著正確的方向發展,以提供相當安全的郵件服務。如果日誌中有什麼我需要擔心的,也請告訴我。

任何幫助表示讚賞。

您在日誌中看到的是垃圾郵件發送者試圖使用您的郵件伺服器發送他們的郵件。如果他們成功了顯然會很糟糕,但是對於線上郵件伺服器來說,針對他們的隨機攻擊是很常見的。您的郵件伺服器上存在傳入攻擊這一事實一點也不奇怪,因此您關心的不是它們是否被製造,而是確保它們不會成功。

我們可以在您的日誌中看到垃圾郵件機器人嘗試了兩種不同的攻擊,因此我將依次進行。

試圖將您的郵件伺服器用作中繼的攻擊

Postfix 可以充當電子郵件中繼,從 Internet 上的伺服器接收電子郵件,然後將它們發送到適當的目的地。您需要在某種程度上啟用此功能,因為您希望接收發送到您的郵件伺服器的電子郵件。這意味著您不能使用像ufw這樣的防火牆來保護您的郵件伺服器免受此類攻擊;您可以合法地接收來自 Internet 上任何其他郵件伺服器的連接,並且ufw很難知道哪些 IP 地址是郵件伺服器。

這種連接到達埠 25(合法和惡意連接),並將由postfix/smtpd.

通常,防止此類攻擊的最佳方法是將郵件伺服器配置為拒絕將任何郵件中繼到外部地址;您希望它發送發送給您的電子郵件,而不是轉發發送給其他任何人的電子郵件。我們可以在您的日誌中看到許多“中繼訪問被拒絕”消息,因此郵件伺服器可能已經正確保護了此類攻擊。

但是,確保您的郵件伺服器不是開放中繼並且不能充當開放中繼,這一點*非常重要。*如果您想放心在這方面已正確配置,則應使用開放式中繼檢查器;以我的經驗,這個開放的中繼檢查器是最全面的嘗試發現可能導致您的郵件伺服器中繼它不應該中繼的消息的漏洞(每次嘗試後您想要的輸出是“中繼未接受”)。如果這樣的工具無法弄清楚如何讓您的郵件伺服器中繼消息,那麼垃圾郵件發送者很可能也無法做到。

如果顯示中繼嘗試失敗的日誌行打擾了您,那麼儘管您將無法配置ufw拒絕嘗試,但您可以配置fail2ban在前幾次失敗後暫時阻止進一步的嘗試。在最新版本的 Ubuntu 上,postfix預設情況下,jail 的配置具有相當寬鬆的設置。mode = aggressive您可以通過添加到fail2ban配置中的 jail 文件的相關部分來使它們更具限制性,從而阻止對 Postfix 的更廣泛的攻擊。例如:

[postfix]
enabled = true
mode = aggressive

不過,這不太可能產生太大影響,因為電子郵件中繼不能“強制”中繼消息。要麼他們被配置為允許它,要麼他們不是。所以絕大多數垃圾郵件機器人會在一兩次中繼嘗試失敗後自然放棄嘗試,因此它們永遠不會達到足夠的失敗嘗試來觸發fail2ban。

嘗試通過您的郵件伺服器送出電子郵件的攻擊

除了充當已經“在電子郵件系統中”的電子郵件的電子郵件中繼之外,Postfix 還可以允許通過電子郵件送出並非來自郵件伺服器的電子郵件;想要發送電子郵件的合法使用者將讓他們的電子郵件客戶端連接到 Postfix,告訴它他們想要發送的消息,然後 Postfix 會將其發送到收件人的郵件伺服器。顯然,如果您希望能夠發送電子郵件,則必須配置您的系統以允許這樣做。

這種連接通常到達埠 587(同樣,對於合法和惡意連接;這可能是您的ufw配置中列為“Postfix Submission”的內容),並將由postfix/submission/smtpd.

如果垃圾郵件機器人能夠通過您的郵件伺服器送出電子郵件,那麼它實際上能夠發送看起來像是來自您的垃圾郵件(帶有所有適當的標頭)。那顯然會是個問題。因此,重要的是送出埠不會中繼來自任何它無法辨識的人的消息。

你的日誌中的行讓… submission … NOQUEUE: reject: … Recipient address rejected: Access denied我有點擔心,因為我沒有看到任何隨機攻擊在我自己的配置中走得那麼遠(我自己的日誌中只有一行這樣的行,這是我試圖發送的一封電子郵件合法,但在配置錯誤意味著我的密碼無法驗證的情況下)。但是,在這方面您可能仍然有一個相當安全的配置:送出電子郵件的嘗試被拒絕,可能是因為垃圾郵件機器人沒有使用您系統的有效使用者名/密碼對進行身份驗證。

我對您的系統和我的系統之間的配置差異的猜測是我的系統-o smtpd_tls_auth_only=yes在; 這要求發送電子郵件的電子郵件軟體僅通過 TLS 發送使用者名和密碼(並且在發送之前會隱藏需要使用者名和密碼的事實)。以我的經驗,這在減少垃圾郵件機器人嘗試暴力破解我的電子郵件密碼方面相當有效;他們中的大多數人不想嘗試為每次密碼嘗試設置 TLS 連接(並且一些嘗試使用過時的 TLS 庫的垃圾郵件機器人不知道如何使用)。當然,僅當您將自己的電子郵件客戶端配置為使用 TLS 時,才應設置該設置!submission``master.cf

反正你說這是個人郵件伺服器;你會是唯一一個通過伺服器發送電子郵件的人嗎?它總是來自同一個 IP 嗎?如果是這樣,那麼您的防火牆規則比他們需要的更寬鬆。ufw目前設置為允許從“任何地方”訪問“送出”埠。如果您是唯一應該送出要發送到其他地方的電子郵件的人,那麼沒有理由允許其他人嘗試這樣做,您可以更嚴格地設置防火牆規則,只允許來自您的 IP 的連接。

因為這是一種暴力破解密碼可能會有所幫助的攻擊(因為目前只有您的使用者名/密碼才能保護送出埠),fail2ban也可以提供幫助。將postfix監獄設置為使用更激進的配置似乎對我的郵件伺服器產生了很大的影響,大大減少了隨機密碼暴力破解嘗試的次數。

額外的安全性:防止對您的電子郵件收件箱的攻擊

您發布的日誌沒有顯示任何攻擊 Dovecot 的企圖。根據我的經驗,這些攻擊很少見。垃圾郵件程序通常對發送郵件比閱讀您的郵件更感興趣。儘管如此,您確實會偶爾看到對 Dovecot 的隨機攻擊。(造成這種情況的一個原因可能是大多數人使用相同的密碼來發送電子郵件和閱讀他們的電子郵件,因此如果垃圾郵件機器人可以將密碼強行輸入您的電子郵件收件箱,那麼它就可以嘗試使用相同的密碼來送出電子郵件。 )

如果您的郵件伺服器僅供一個人使用,那麼就像只有一個人應該發送電子郵件一樣,也應該只有一個人閱讀電子郵件。因此,從安全的角度來看,鎖定 Dovecot 的埠(通常是 IMAP)是有意義的,就像鎖定 Postfix 送出埠一樣,限制對 IMAP 的訪問僅限於您將讀取電子郵件的 IP .

引用自:https://serverfault.com/questions/1033688