如何使用 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

第 2 步:關閉提交、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

關閉防火牆中的端口 587、465、143、993、110 和 995,因為您不希望在電子郵件日誌中出現此活動。 VPN 服務器的 IP 地址被列入白名單,因此只有連接到 VPN 服務器的用戶才能訪問這些端口。

要關閉 UFW 防火牆中的這些端口,首先列出防火牆規則。

sudo ufw status numbered

樣本輸出

如您所見,有 IPv4 和 IPv6 的規則。要關閉端口 587,您需要刪除規則 #16 什麼時候 #6(應先刪除索引號較高的規則。)

sudo ufw delete 16
sudo ufw delete 6

那麼你必須運行 sudo ufw status numbered 再次運行該命令以獲取新的防火牆規則列表。請注意,某些規則索引號已更改。

關閉 ufw 防火牆 debian ubuntu 端口 465

這次我們要關閉465端口,所以需要去掉規則 #15 什麼時候 #6.

sudo ufw delete 15
sudo ufw delete 6

然後關閉端口 143、993、110 和 995。當然,端口 25 必須保持打開狀態才能接收來自其他 SMTP 服務器的郵件。

第 3 步:保護您的管理面板和網絡郵件

您可以關閉 80 和 443 端口以保護您的管理面板和網絡郵件免受黑客攻擊。但是,這會禁用對所有虛擬主機的公共訪問。有些人擁有需要暴露在互聯網上的虛擬主機 Apache/Nginx。您可以使用內置的訪問控制,而不是關閉防火牆中端口 80 和 443 上的 Apache/Nginx。

nginx

編輯您的 webmail 虛擬主機文件,如下所示

sudo nano /etc/nginx/conf.d/mail.your-domain.com.conf

將以下行添加到您的 SSL 服務器塊:這僅允許 IP 地址 12.34.56.78 訪問網絡郵件並拒絕所有其他 IP 地址。

allow 12.34.56.78;
deny all;

webmail白名單訪問nginx

如果您有多個 VPN 服務器,您可以添加多個 IP 地址,如下所示:

allow 12.34.56.78;
allow 12.34.56.79;
deny all;

保存並關閉文件。接下來,測試您的 Nginx 配置。

sudo nginx -t

如果測試成功,請重新加載 Nginx 以使更改生效。

sudo systemctl reload nginx

不在白名單上的用戶將看到 403 Forbidden 錯誤。

安全郵件服務器 nginx

阿帕奇

編輯您的 webmail 虛擬主機文件,如下所示

sudo nano /etc/apache2/sites-enabled/mail.your-domain.com-le-ssl.conf

在之間添加以下行 <VirtualHost>...</VirtualHost> 標籤。這僅允許 IP 地址 12.34.56.78 訪問網絡郵件並拒絕所有其他 IP 地址。

    <LocationMatch "^/">
       Require ip 12.34.56.78
    </LocationMatch>

Apache 訪問控製網絡郵件

如果您有多個 VPN 服務器,您可以添加多個 IP 地址,如下所示:

    <LocationMatch "^/">
       Require ip 12.34.56.78 12.34.56.79
    </LocationMatch>

保存並關閉文件。接下來,測試您的 Apache 配置。

sudo apache2ctl -t

如果語法正確,請重新加載 Apache 以使更改生效。

sudo systemctl reload apache2

不在白名單上的用戶將看到 403 Forbidden 錯誤。

保護您的管理面板和網絡郵件免受 Apache 黑客的攻擊

Certbot TLS 證書續訂

啟用 Apache/Nginx 虛擬主機白名單還會阻止 Let’s Encrypt 服務器訪問 Web 服務器。這是續訂 Let’s Encrypt TLS 證書和 HTTP-01 質詢所必需的。要解決此問題,請在續訂證書之前關閉白名單,並在續訂後將其重新打開。

在裡面創建一個shell腳本 /root/ 目錄。

sudo nano /root/certbot-renewal.sh

如果您使用的是 Nginx,請將以下行添加到此文件中:

#! /bin/bash

# disable whitelisting
sed -i 's/deny all;/#deny all;/g' /etc/nginx/conf.d/mail.your-domain.com.conf
systemctl reload nginx

# renew TLS certificate
certbot renew --quiet

# enable whitelisting
sed -i 's/#deny all;/deny all;/g' /etc/nginx/conf.d/mail.your-domain.com.conf
systemctl reload nginx postfix dovecot

如果您使用 Apache,請將以下行添加到此文件中。

#! /bin/bash

# disable whitelisting
sed -i 's/Require ip/#Require ip/g' /etc/apache2/sites-enabled/mail.your-domain.com-le-ssl.conf
systemctl reload apache2

# renew TLS certificate
certbot renew --quiet

# enable whitelisting
sed -i 's/#Require ip/Require ip/g' /etc/apache2/sites-enabled/mail.your-domain.com-le-ssl.conf
systemctl reload apache2 postfix dovecot

保存並關閉文件。然後給這個文件添加執行權限。

sudo chmod +x /root/certbot-renewal.sh

然後編輯 root 用戶的 crontab 文件。

sudo crontab -e

將以下行添加到文件末尾以每天運行一次 shell 腳本。

@daily bash /root/certbot-renewal.sh

保存並關閉文件。

關閉 SSH 端口?

VPN 服務器的 IP 地址被列入白名單,因此您也可以在防火牆中關閉 SSH 端口。然而,這樣做是危險的。 如果您的 VPN 服務器停止工作,您將自己鎖定在外。 為了保護您的 SSH 服務免受黑客攻擊,我們建議設置公鑰身份驗證或兩因素身份驗證。

  • 在 Ubuntu 中設置無密碼 SSH 登錄的兩個簡單步驟
  • 在 Ubuntu 服務器上設置 SSH 雙重身份驗證 (2FA)

包起來

我們希望本教程可以幫助您保護您的電子郵件服務器免受黑客攻擊。另請參閱我們的其他安全教程。

  • 如何在 Debian、Ubuntu 和 Linux Mint 上使用 UFW 防火牆
  • 在 Ubuntu 中配置自動安全更新(無人值守升級)
  • Canonical Livepatch 服務:在 Ubuntu 中修補 Linux 內核而無需重新啟動

與往常一樣,如果您發現本文對您有幫助,請註冊我們的免費通訊以獲取新教程。