如何使用 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那麼您必須在 Response Policy 區域中創建一條記錄以解析到您的 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 再次運行該命令以獲取新的防火牆規則列表。請注意,某些規則索引號已更改。

在防火牆 debian ubuntu 中關閉 ufw 端口 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 訪問控制 webmail

如果您有多個 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 內核

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