我將如何為有限的僅發送電子郵件設置設置 Debian 10 和 Postfix 安全性?
我(我和我的妻子)執行一個小型 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,它可以根據您的需要進行配置。網際網路上有很多教程,因此您可以按照自己喜歡和/或需要的方式對其進行自定義。
由於提供的資訊非常籠統,因此很難提供直接的答案。但是這些應該提供一些基本的指導。