Debian

我將如何為有限的僅發送電子郵件設置設置 Debian 10 和 Postfix 安全性?

  • March 1, 2021

我(我和我的妻子)執行一個小型 Debian 10/Buster 網路伺服器,其中包含幾個網站供朋友使用,並且需要設置外發電子郵件。我已經到了可以從命令行(echo "Message Body" | mail -s "Message Subject" TARGET_EMAIL_HERE)發送電子郵件的地步。

我們需要一個滿足以下要求的設置:

  • 每週只會發送幾封電子郵件:

    • 來自網站上 Perl 聯繫表單的一些電子郵件(需要更嚴格的反垃圾郵件保護,將使用 Google 驗證碼)
    • 一些來自劇院預訂系統的帶有文件附件的電子郵件,只有已知和受信任的使用者才能登錄
  • 在外發電子郵件中需要一個“回复”欄位,以便人們可以在他們的電子郵件客戶端中點擊“回复”(在設置腳本以使用郵件伺服器時看起來很容易)

  • 我們不想讓任何傳入的電子郵件到伺服器

我們有什麼:

  • 使用者網站設置在他們的使用者目錄(即 755)中,但我們管理這些網站,他們無法登錄到伺服器
  • 我和我的妻子是 sudo-ers(兩個系統管理員)並且是唯一通過 SSH/SFTP 登錄的人
  • 根登錄被禁用
  • 我們更改了 SSH 埠

我知道這是最基本的資訊,但我想要一些關於為這種用途設置和保護 Postfix 的指導。

首先,如果您在伺服器上沒有收到任何電子郵件,您應該將 Postfix 配置為僅綁定到 localhost。然後你可以使用像 UFW 這樣的防火牆(因為你在 Debian 上)來阻止傳入的 tcp 埠 25(這不是強制性的,因為 Postfix 只綁定到 localhost 但它只會阻止傳入的 SMTP 流量,因為你不想要它)。

網站或您擁有的任何腳本(如果它們位於同一伺服器上),可以將它們配置為通過 localhost 連接以發送電子郵件。當您發送電子郵件時,您必須添加一個回复標題,其中包含您希望使用者回复的電子郵件地址。

在/etc/ssh/sshd_config中配置 UseDNS no以防止在每個使用者連接上進行反向 DNS 映射。我還將通過 SSH 禁用密碼身份驗證,並嚴格允許使用 ssh 公鑰進行身份驗證。嚴格使用協議 2。例如,如果您不使用 ipv6,請在 SSH 伺服器中禁用它:

AddressFamily inet

也適用於 SSH:

# Authentication:
LoginGraceTime 15s
PermitRootLogin no
StrictModes yes
MaxAuthTries 3
MaxSessions 5

KerberosAuthentication no
GSSAPIAuthentication no
  • 如果使用者在 15 秒內未通過身份驗證,則連接關閉
  • 只允許三個密碼嘗試
  • 最多允許 5 個使用者同時連接
  • 禁用 Kerberos 身份驗證
  • 禁用 GSSAPI 身份驗證

作為一個好的經驗法則,您應該嚴格只允許必要的傳入埠並丟棄其他所有埠。外出也一樣。如果您的伺服器沒有轉發,那麼您可以預設 DROP 轉發。

此外,您可以安裝 fail2ban,它可以根據您的需要進行配置。網際網路上有很多教程,因此您可以按照自己喜歡和/或需要的方式對其進行自定義。

由於提供的資訊非常籠統,因此很難提供直接的答案。但是這些應該提供一些基本的指導。

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