1. 程式人生 > >多次登錄失敗用戶被鎖定及使用Pam_Tally2解鎖

多次登錄失敗用戶被鎖定及使用Pam_Tally2解鎖

服務器 字段 分享圖片 all flag 了解 日誌文件 小寫 crack

在linux系統中,用戶多次登錄失敗會被鎖定,一段時間內將不能再登錄系統,這是一般會用到Pam_Tally2進行賬戶解鎖。

了解PAM

Linux-PAM (Pluggable Authentication Modules for Linux)可插拔認證模塊。Linux-PAM是一套適用於Linux的身份驗證共享庫系統,它為系統中的應用程序或服務提供動態身份驗證模塊支持。在Linux中,PAM是可動態配置的,本地系統管理員可以自由選擇應用程序如何對用戶進行身份驗證。PAM應用在許多程序與服務上,比如登錄程序(login、su)的PAM身份驗證(口令認證、限制登錄),passwd強制密碼,用戶進程實時管理,向用戶分配系統資源等。

PAM的主要特征是認證的性質是可動態配置的。PAM的核心部分是庫(libpam)和PAM模塊的集合,它們是位於文件夾/lib/security/中的動態鏈接庫(.so)文件,以及位於/etc/pam.d/目錄中(或者是/etc/pam.conf配置文件)的各個PAM模塊配置文件。/etc/pam.d/目錄中定義了各種程序和服務的PAM配置文件,其中system-auth文件是PAM模塊的重要配置文件,它主要負責用戶登錄系統的身份認證工作,不僅如此,其他的應用程序或服務可以通過include接口來調用它(該文件是system-auth-ac的軟鏈接)。此外password-auth配置文件也是與身份驗證相關的重要配置文件,比如用戶的遠程登錄驗證(SSH登錄)就通過它調用。而在Ubuntu、SuSE Linux等發行版中,PAM主要配置文件是common-auth、common-account、common-password、common-session這四個文件,所有的應用程序和服務的主要PAM配置都可以通過它們來調用。

使用如下命令判斷程序是否使用了PAM:
root@test~ # ldd /usr/bin/passwd | grep libpam

libpam_misc.so.0 => /lib64/libpam_misc.so.0 (0x00007fb74f748000)

libpam.so.0 => /lib64/libpam.so.0 (0x00007fb74eb45000)

如看到有類似的輸出,說明該程序使用了PAM,沒有輸出,則沒有使用。

pam_tally2模塊用於某些數對系統進行失敗的ssh登錄嘗試後鎖定用戶帳戶。 此模塊保留已嘗試訪問的計數和過多的失敗嘗試。

pam_tally2模塊有兩個部分,一個是pam_tally2.so,另一個是pam_tally2。 它是基於PAM模塊上,並且可以被用於檢查和調節計數器文件。 它可以顯示用戶登錄嘗試次數,單獨設置計數,解鎖所有用戶計數。

PAM身份驗證配置文件

/etc/pam.d/目錄包含應用程序的PAM配置文件。例如,login程序將其程序/服務名稱定義為login,與之對應的PAM配置文件為/etc/pam.d/login。

PAM配置文件語法格式
每個PAM配置文件都包含一組指令,用於定義模塊以及控制標誌和參數。每條指令都有一個簡單的語法,用於標識模塊的目的(接口)和模塊的配置設置,語法格式如下:

module_interface control_flag module_name module_arguments
如在/etc/pam.d/password-auth-ac配置文件中(CentOS),其中一行PAM模塊接口定義如下
技術分享圖片

PAM身份驗證安全配置實例
一、強制使用強密碼(用戶密碼安全配置)

PAM配置文件:/etc/pam.d/system-auth-ac

模塊名稱:pam_cracklib(僅適用於password模塊接口)

模塊參數:

minlen=12 密碼字符長度不少於12位(默認為9)

lcredit=-1 至少包含1個小寫字母

ucredit=-1 至少包含1個大寫字母

dcredit=-1 至少包含1個數字

ocredit=-1 至少包含1個特殊字符

retry=3 配置密碼時,提示3次用戶密碼錯誤輸入

difok=6 配置密碼時,新密碼中至少6個字符與舊密碼不同(默認為5)

其他常用參數:

reject_username 新密碼中不能包含與用戶名稱相同的字段

maxrepeat=N 拒絕包含超過N個連續字符的密碼,默認值為0表示此檢查已禁用

maxsequence=N 拒絕包含大於N的單調字符序列的密碼,例如’1234’或’fedcb’,默認情況下即使沒有這個參數配置,一般大多數這樣的密碼都不會通過,除非序列只是密碼的一小部分

maxcla***epeat=N 拒絕包含相同類別的N個以上連續字符的密碼。默認值為0表示此檢查已禁用。

use_authtok 強制使用先前的密碼,不提示用戶輸入新密碼(不允許用戶修改密碼)

例 修改配置/etc/pam.d/system-auth-ac文件,在password模塊接口行修改或添加配置參數如下:

password requisite pam_cracklib.so try_first_pass retry=3 type= reject_username minlen=12 lcredit=-1 ucredit=-1 dcredit=-1 ocredit=-1 difok=6

需要註意的是,我在這裏展示的是在RHEL/CentOS下的配置,passwd程序的PAM配置文件涉及主配置文件/etc/pam.d/passwd和/etc/pam.d/system-auth-ac(也可以是/etc/pam.d/password-auth-ac),其中/etc/pam.d/passwd配置文件默認只包含了/etc/pam.d/system-auth-ac配置文件,因此對於以上PAM身份驗證密碼模塊配置,只修改/配置該文件即可。或者在Ubuntu中,配置文件包括:/etc/pam.d/common-password、/etc/pam.d/common-account、/etc/pam.d/common-auth、/etc/pam.d/common-session。

修改如下文件:

/etc/pam.d/sshd?? ?(遠程ssh)

/etc/pam.d/login?? ?(終端)

在第一行下即#%PAM-1.0的下面添加:
auth?? ?required?? ?pam_tally2.so?? ?deny=3?? ?unlock_time=600 even_deny_root root_unlock_time=1200

各參數解釋:
even_deny_root??? 也限制root用戶;
??? ?
deny?????????? 設置普通用戶和root用戶連續錯誤登陸的最大次數,超過最大次數,則鎖定該用戶
??? ?
unlock_time??????? 設定普通用戶鎖定後,多少時間後解鎖,單位是秒;
??? ?
root_unlock_time????? 設定root用戶鎖定後,多少時間後解鎖,單位是秒;

手動解除鎖定:
查看某一用戶錯誤登陸次數:
pam_tally --user
例如,查看work用戶的錯誤登陸次數:
pam_tally --user work
清空某一用戶錯誤登陸次數:
pam_tally --user --reset
例如,清空 work 用戶的錯誤登陸次數,
pam_tally --user work –-reset

如果使用pam_tally沒生效的話,也可以使用pam_tally2命令:

pam_tally2 --u tom --reset將用戶的計數器重置清零(SLES 11.2和12版本下用此命令才重置成功)

查看錯誤登錄次數:pam_tally2 --u tom

faillog -r 命令清空所有用戶錯誤登錄次數
在服務器端以root用戶登錄
執行命令:
? ? ? ? # faillog –a ? ? ? ? ?////查看用戶登錄錯誤次數

faillog -u user –r ? ? ? ////清空指定用戶user的錯誤登錄次數

?
? ? ? 如果超過三次的話,用戶不能登錄並且此後登錄用戶錯誤登錄次數還是會增加。
? ? ? 在登錄錯誤次數不滿三次時,登錄成功後,則這個用戶登錄錯誤值將清零,退出後重新telnet登錄將采用新的計數。
?

其他例子:
Pam_tally2鎖定SSH登錄

默認情況下,pam_tally2模塊已經安裝在大多數Linux發行版,它是由PAM包本身的控制。 本文演示如何鎖定和深遠的登錄嘗試的失敗一定次數後解鎖SSH帳戶。

如何鎖定和解鎖用戶帳戶
使用“/etc/pam.d/password-auth”配置文件來配置的登錄嘗試的訪問。 打開此文件並以下AUTH配置行舉行的“ 身份驗證 ”部分的開頭添加到它。

auth required pam_tally2.so file=/var/log/tallylog deny=3 even_deny_root unlock_time=1200
接下來,添加以下行“ 賬戶 ”部分。

account required pam_tally2.so
參數
文件= /無功/日誌/ tallylog -默認的日誌文件是用來保持登錄計數。
否認= 3 -拒絕後,3次嘗試訪問和鎖定用戶。
even_deny_root -政策也適用於root用戶。
unlock_time = 1200 -帳戶將被鎖定,直到20分鐘 。 (如果要永久鎖定,直到手動解鎖,請刪除此參數。)
一旦你使用上面的配置完成,現在盡量嘗試使用任何“ 用戶名 ”3失敗的登錄嘗試到服務器。 當你取得了超過3次,你會收到以下消息。

[root@test01 ~]# ssh [email protected]
[email protected]‘s password:
Permission denied, please try again.
[email protected]‘s password:
Permission denied, please try again.
[email protected]‘s password:
Account locked due to 4 failed logins
Account locked due to 5 failed logins
Last login: Mon Apr 22 21:21:06 2017 from 172.16.16.52
現在,使用以下命令驗證或檢查用戶嘗試的計數器。

[root@test01 ~]# pam_tally2 --user=test01
Login Failures Latest failure From
test01 15 04/22/17 21:22:37 172.16.16.52
如何重置或解鎖用戶帳戶以再次啟用訪問。

[root@test01 pam.d]# pam_tally2 --user=test01 --reset
Login Failures Latest failure From
test01 15 04/22/13 17:10:42 172.16.16.52
驗證登錄嘗試已重置或解鎖

[root@test01 pam.d]# pam_tally2 --user=test01
Login Failures Latest failure From
test01 0
PAM模塊是所有Linux發行版中都有的, 在命令行中執行“ 人pam_tally2”可更多地了解它。

多次登錄失敗用戶被鎖定及使用Pam_Tally2解鎖