如何監(jiān)測Linux上失敗的登錄嘗試
譯文【51CTO.com快譯】在Linux服務(wù)器上重復(fù)的失敗登錄嘗試可能表明有人企圖闖入帳戶,或者僅僅意味著有人忘了密碼或輸錯密碼。本文介紹了如何檢查失敗的登錄嘗試并檢查系統(tǒng)的設(shè)置,查看何時鎖住帳戶以處理問題。
您要了解的第一件事是如何檢查登錄是否失敗。以下命令在Ubuntu和相關(guān)系統(tǒng)上使用的/var/log/auth.log文件中查找登錄失敗的跡象。有人嘗試使用錯誤或拼錯的密碼登錄時,失敗的登錄將顯示以下行:
- $ sudo grep "Failed password" /var/log/auth.log | head -3
- Nov 17 15:08:39 localhost sshd[621893]: Failed password for nemo from 192.168.0.7 port 8132 ssh2
- Nov 17 15:09:13 localhost sshd[621893]: Failed password for nemo from 192.168.0.7 port 8132 ssh2
您可以使用這樣的命令按帳戶匯總失敗登錄的情況:
- $ sudo grep "Failed password" /var/log/auth.log | grep -v COMMAND | awk '{print $9}' | sort | uniq -c
- 22 nemo
- 1 shs
- 2 times:
該命令按用戶名(grep輸出的第9列)匯總失敗的登錄。它避免了查看含有“COMMAND”一詞的行,跳過含有“Failed passwords”短語的查詢(比如運行上面運行的命令的人)。 “times:”字符串表明重復(fù)嘗試的次數(shù)比報告的次數(shù)還多。這些來自含有“消息重復(fù)5次:”的行,快速連續(xù)多次輸錯密碼后,這些行可能被添加到日志文件中。
您可能要檢查的另一個方面是失敗的登錄嘗試來自何處。為此,如本例所示,將您關(guān)注的字段從第九個更改為第十一個:
- $ sudo grep "Failed password" /var/log/auth.log | grep -v COMMAND | awk '{print $11}' | sort | uniq -c
- 23 192.168.0.7
比如說,如果您發(fā)現(xiàn)多個用戶的失敗登錄來自單單一個系統(tǒng),這可能特別可疑。
在RHEL、Centos和相關(guān)系統(tǒng)中,您可以在/var/log/secure文件中找到與失敗登錄有關(guān)的消息。您可以使用與上述基本相同的查詢來計數(shù)。只需更改文件名,如下所示:
- $ sudo grep "Failed password" /var/log/secure | awk '{print $9}' | sort | uniq -c
- 6 nemo
核查/etc/pam.d/password-auth和/etc/pam.d/system-auth文件中的設(shè)置。添加這樣的行將強制執(zhí)行您的設(shè)置。
檢查faillog
您可能關(guān)注過faillog命令,但是該命令查看的/var/log/faillog文件如今似乎在許多系統(tǒng)上并沒有使用。如果您使用faillog -a命令,會得到類似如下所示的在時間列中列出12/31/69的輸出,很明顯該文件并未使用。
- $ faillog -a
- Login Failures Maximum Latest On
- root 0 0 12/31/69 19:00:00 -0500
- daemon 0 0 12/31/69 19:00:00 -0500
- bin 0 0 12/31/69 19:00:00 -0500
- sys 0 0 12/31/69 19:00:00 -0500
顯示的日期和時間可以追溯到Unix的開始(01/01/70)――可能針對本地時區(qū)進(jìn)行了更正。如果您運行下面顯示的命令,可以證實文件不是空的,但不包含實際數(shù)據(jù):
- $ ls -l /var/log/faillog
- -rw-r--r-- 1 root root 32576 Nov 12 12:12 /var/log/faillog
- $ od -bc /var/log/faillog
- 0000000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000
- \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0
- *
- 0077500
如果faillog文件確實在使用中,您應(yīng)該會看到最近的活動,并不提及1969錯誤提示。
如何回應(yīng)?
失敗登錄的原因有很多??赡苁悄囊粋€用戶在大寫鎖定鍵開啟的情況下試圖登錄,卻沒有注意到。也許用戶最近更改了密碼,卻忘了更改密碼這回事,嘗試使用舊密碼。也許用戶在嘗試在其他系統(tǒng)上使用的密碼。如果您在運行查詢時經(jīng)常出現(xiàn)某個特定的帳戶,應(yīng)調(diào)查一下。然而,偶爾失敗的登錄嘗試很常見。
檢查設(shè)置
要查看系統(tǒng)如何經(jīng)過設(shè)置來處理失敗的登錄,請檢查/etc/pam.d/common-auth文件。它用于帶有Linux可插拔身份驗證模塊(PAM)的系統(tǒng)。該文件中的兩個設(shè)置控制著暫時鎖定帳戶之前允許多少次失敗的登錄嘗試以及鎖住該帳戶多長時間。
六次失敗的登錄嘗試后,這樣一行將使PAM鎖住帳戶。鎖住時間將持續(xù)五分鐘(300秒)。
- auth required pam_tally2.so deny=6 unlock_time=300
原文標(biāo)題:Monitoring failed login attempts on Linux,作者:Sandra Henry-Stocker
【51CTO譯稿,合作站點轉(zhuǎn)載請注明原文譯者和出處為51CTO.com】