來自網際網路的 Postfix bar 身份驗證
我有一個 Postfix 電子郵件伺服器,它應該允許內部使用者通過它發送和接收郵件。
僅當使用者成功通過 VPN 連接為他/她在我的 LAN 上提供不可路由的 IP 地址時,才應進行發送。不應允許從 Internet 發送。
目前,我面臨這樣一種情況,即攻擊者試圖從 Internet 進行身份驗證,以試圖獲得對郵件帳戶的訪問權限,這可能會允許他們從被劫持的帳戶發送惡意郵件。現在發生的情況是,當他們猜測確實存在的使用者帳戶時,他們會嘗試暴力破解。我在 Postfix 中的身份驗證外包給 dovecot,後者又與 IPA 聯繫。現在發生的情況是,在每次如此多失敗的蠻力攻擊通過該名稱拒絕服務導致真實使用者之後,IPA 會暫時鎖定該使用者。
理想情況下**,我希望 Postfix 甚至不響應嘗試從 Internet 驗證使用者的 SMTP 命令序列,**而是立即給出否定的答案。它應該只允許從網際網路向我們投遞郵件。有沒有辦法配置這個?
如果不需要濫用的身份驗證功能,您可以將 Postfix 配置為不將該功能暴露給更廣泛的網際網路。這通常通過編輯 main.cf 和 master.cf 文件來完成。
首先,閱讀您的日誌。我認為您的合法郵件送出可以通過**三種方法與網際網路郵件接收區分開來,因此您可以將您的服務限制在此範圍內。驗證:
- 他們總是進行身份驗證,
- 他們總是使用專用於郵件送出的特定埠,
- 他們總是通過 VPN 連接,而不是通過網際網路地址。
如果這是真的,您可以輕鬆地確保身份驗證僅適用於該有限的連接子集:
第 1 步:在
master.cf
中,您可以找到需要經過身份驗證的郵件送出的服務,並且僅針對那些打開身份驗證的服務。通常,您只有一個或兩個這樣的服務,很容易從第一列中辨識出來:
smtps
,可能還有submission
。可以選擇將其綁定到您的客戶端在 VPN 中看到您的伺服器的非公開路由地址(我
fd00:1337::1:5
在我的範例中使用),如果它們不應該從 Internet 訪問。# line below is the where you prepend the network address fd00:1337::1:5:smtps inet n - n - - smtpd -o example_other=option -o more_options=example -o smtpd_sasl_auth_enable=yes # line above is the option you add. note the leading space # line below is the where you prepend the network address fd00:1337::1:5:submission inet n - n - - smtpd -o example_other=option -o more_options=example -o smtpd_sasl_auth_enable=yes # line above is the option you add. note the leading space
由於這意味著如果在您的 VPN 設置設置內部 IP 之前啟動 postfix 無法正確綁定埠,這可能意味著您需要添加服務依賴項(可能是單線,取決於您的系統/發行版)。在您確認您的新配置在重新啟動後可以正常工作之前,您還沒有完成。
第 2 步:在
main.cf
中,您為所有 smtpd 實例關閉身份驗證# it defalts to off smtpd_sasl_auth_enable = no
現在,除了上面明確啟用的特定服務外,postfix 不會宣布支持身份驗證。無論如何嘗試的客戶端將被後綴拒絕服務,從而使您的身份驗證後端不受干擾。