sendmail SMTP 身份驗證日誌是如何控制的?
我收到大量失敗的 SMTP 登錄嘗試。我真的很想防禦它,但是這些嘗試的記錄很差。
我正在使用 sendmail 8.15、cyrus-sasl 2.1.26。SASL 設置是最簡單的方法,預設使用 pam_unix 進行身份驗證。
我經常收到這樣的日誌消息:
saslauthd[8292]: pam_unix(smtp:auth): check pass; user unknown saslauthd[8292]: pam_unix(smtp:auth): authentication failure; logname= uid=0 euid=0 tty= ruser= rhost= saslauthd[8292]: DEBUG: auth_pam: pam_authenticate failed: Authentication failure saslauthd[8292]: do_auth : auth failure: [user=colby] [service=smtp] [realm=] [mech=pam] [reason=PAM auth error]
這意味著,雖然我知道正在發生虛假登錄嘗試,但我真的無能為力,比如讓 fail2ban 監禁他們。
我真的無法判斷問題是否是 Sendmail 正在告訴 pam_unix 事情,並且它正在轉儲它們,或者 sendmail 是否沒有告訴 pam 正在嘗試的位置。
我想要的是使用它來自的 IP 地址記錄身份驗證嘗試,所以如果有很多失敗,fail2ban 可以監禁 IP。
這裡的會話在郵件傳輸代理和以下之間分開
saslauthd
:testhost saslauthd[17177]: do_auth : auth failure: [user=AzureDiamond] [service=smtp] [realm=] [mech=pam] [reason=PAM auth error]
您想要的完整日誌可能預設不可用,或者需要在某些日誌聚合服務下重建。(使用 Postfix 時,日誌記錄也很糟糕
saslauthd
;一些日誌最終出現在郵件日誌中,而其他日誌則出現在其他地方。) Sendmail 確實支持自定義系統日誌規則;但是,如果客戶端僅發出EHLO nurse
,AUTH LOGIN
,QXp1cmVEaWFtb25k
,SHVudGVyMg==
然後失敗(使用 aquit
或簡單地斷開連接),則可能不會給任何通常的規則集鉤子執行機會。當設置
LogLevel
為 11(或更高)時,會出現包含中繼地址的登錄失敗:testhost sendmail[20684]: wA6KuRRJ020684: AUTH failure (LOGIN): authentication failure (-13) SASL(-13): authentication failure: checkpass failed, relay=localhost [127.0.0.1]
這來自
sendmail/srvrsmtp.c
並發生在LogLevel > 9
. 或者您可以修補該文件以避免增加LogLevel
,但這可能會引入不同的問題。其他限制 SMTP AUTH 的方法如下。
pam 限製到特定組
調整 PAM 配置並禁止
SMTP AUTH
,除非使用者屬於特定組;這將防止大多數密碼猜測攻擊,但如果您的使用者只有一小部分可預測的子集需要使用,這是可行的SMTP AUTH
:account required pam_access.so accessfile=/etc/security/smtp_access.conf
然後在
/etc/security/smtp_access.conf
+ : ok-sasl : ALL - : ALL : ALL
然後將使用者放入
ok-sasl
組中。隱藏 SMTP AUTH 服務
另一種選擇是在 SMTP 前面放置一個 VPN 或其他東西,以便 Internet 根本無法使用該服務;這應該可以減少如今面向公眾的服務所收到的日誌噪音。
pam_tally
我也嘗試過
pam_tally2
,但這非常適合鎖定帳戶,包括已登錄且沒有任何明顯錯誤的合法帳戶……也許它對您更有效?