在linux系統(tǒng)中,用戶多次登錄失敗會被鎖定,一段時間內(nèi)將不能再登錄系統(tǒng),這是一般會用到Pam_Tally2進(jìn)行賬戶解鎖。 了解PAM Linux-PAM (Pluggable Authentication Modules for Linux)可插拔認(rèn)證模塊。Linux-PAM是一套適用于Linux的身份驗(yàn)證共享庫系統(tǒng),它為系統(tǒng)中的應(yīng)用程序或服務(wù)提供動態(tài)身份驗(yàn)證模塊支持。在Linux中,PAM是可動態(tài)配置的,本地系統(tǒng)管理員可以自由選擇應(yīng)用程序如何對用戶進(jìn)行身份驗(yàn)證。PAM應(yīng)用在許多程序與服務(wù)上,比如登錄程序(login、su)的PAM身份驗(yàn)證(口令認(rèn)證、限制登錄),passwd強(qiáng)制密碼,用戶進(jìn)程實(shí)時管理,向用戶分配系統(tǒng)資源等。 PAM的主要特征是認(rèn)證的性質(zhì)是可動態(tài)配置的。PAM的核心部分是庫(libpam)和PAM模塊的集合,它們是位于文件夾/lib/security/中的動態(tài)鏈接庫(.so)文件,以及位于/etc/pam.d/目錄中(或者是/etc/pam.conf配置文件)的各個PAM模塊配置文件。/etc/pam.d/目錄中定義了各種程序和服務(wù)的PAM配置文件,其中system-auth文件是PAM模塊的重要配置文件,它主要負(fù)責(zé)用戶登錄系統(tǒng)的身份認(rèn)證工作,不僅如此,其他的應(yīng)用程序或服務(wù)可以通過include接口來調(diào)用它(該文件是system-auth-ac的軟鏈接)。此外password-auth配置文件也是與身份驗(yàn)證相關(guān)的重要配置文件,比如用戶的遠(yuǎn)程登錄驗(yàn)證(SSH登錄)就通過它調(diào)用。而在Ubuntu、SuSE Linux等發(fā)行版中,PAM主要配置文件是common-auth、common-account、common-password、common-session這四個文件,所有的應(yīng)用程序和服務(wù)的主要PAM配置都可以通過它們來調(diào)用。 使用如下命令判斷程序是否使用了PAM: libpam_misc.so.0 => /lib64/libpam_misc.so.0 (0x00007fb74f748000) libpam.so.0 => /lib64/libpam.so.0 (0x00007fb74eb45000) 如看到有類似的輸出,說明該程序使用了PAM,沒有輸出,則沒有使用。 pam_tally2模塊用于某些數(shù)對系統(tǒng)進(jìn)行失敗的ssh登錄嘗試后鎖定用戶帳戶。 此模塊保留已嘗試訪問的計數(shù)和過多的失敗嘗試。 pam_tally2模塊有兩個部分,一個是pam_tally2.so,另一個是pam_tally2。 它是基于PAM模塊上,并且可以被用于檢查和調(diào)節(jié)計數(shù)器文件。 它可以顯示用戶登錄嘗試次數(shù),單獨(dú)設(shè)置計數(shù),解鎖所有用戶計數(shù)。 PAM身份驗(yàn)證配置文件 /etc/pam.d/目錄包含應(yīng)用程序的PAM配置文件。例如,login程序?qū)⑵涑绦?服務(wù)名稱定義為login,與之對應(yīng)的PAM配置文件為/etc/pam.d/login。 PAM配置文件語法格式 module_interface control_flag module_name module_arguments PAM身份驗(yàn)證安全配置實(shí)例 PAM配置文件:/etc/pam.d/system-auth-ac 模塊名稱:pam_cracklib(僅適用于password模塊接口) 模塊參數(shù): minlen=12 密碼字符長度不少于12位(默認(rèn)為9) lcredit=-1 至少包含1個小寫字母 ucredit=-1 至少包含1個大寫字母 dcredit=-1 至少包含1個數(shù)字 ocredit=-1 至少包含1個特殊字符 retry=3 配置密碼時,提示3次用戶密碼錯誤輸入 difok=6 配置密碼時,新密碼中至少6個字符與舊密碼不同(默認(rèn)為5) 其他常用參數(shù): reject_username 新密碼中不能包含與用戶名稱相同的字段 maxrepeat=N 拒絕包含超過N個連續(xù)字符的密碼,默認(rèn)值為0表示此檢查已禁用 maxsequence=N 拒絕包含大于N的單調(diào)字符序列的密碼,例如’1234’或’fedcb’,默認(rèn)情況下即使沒有這個參數(shù)配置,一般大多數(shù)這樣的密碼都不會通過,除非序列只是密碼的一小部分 maxcla***epeat=N 拒絕包含相同類別的N個以上連續(xù)字符的密碼。默認(rèn)值為0表示此檢查已禁用。 use_authtok 強(qiáng)制使用先前的密碼,不提示用戶輸入新密碼(不允許用戶修改密碼) 例 修改配置/etc/pam.d/system-auth-ac文件,在password模塊接口行修改或添加配置參數(shù)如下: 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配置文件默認(rèn)只包含了/etc/pam.d/system-auth-ac配置文件,因此對于以上PAM身份驗(yàn)證密碼模塊配置,只修改/配置該文件即可?;蛘咴赨buntu中,配置文件包括:/etc/pam.d/common-password、/etc/pam.d/common-account、/etc/pam.d/common-auth、/etc/pam.d/common-session。 修改如下文件: /etc/pam.d/sshd (遠(yuǎn)程ssh) /etc/pam.d/login (終端) 在第一行下即#%PAM-1.0的下面添加: 各參數(shù)解釋: deny 設(shè)置普通用戶和root用戶連續(xù)錯誤登陸的最大次數(shù),超過最大次數(shù),則鎖定該用戶 unlock_time 設(shè)定普通用戶鎖定后,多少時間后解鎖,單位是秒; root_unlock_time 設(shè)定root用戶鎖定后,多少時間后解鎖,單位是秒; 手動解除鎖定: 如果使用pam_tally沒生效的話,也可以使用pam_tally2命令: pam_tally2 --u tom --reset將用戶的計數(shù)器重置清零(SLES 11.2和12版本下用此命令才重置成功) 查看錯誤登錄次數(shù):pam_tally2 --u tom faillog -r 命令清空所有用戶錯誤登錄次數(shù) faillog -u user –r 清空指定用戶user的錯誤登錄次數(shù)
其他例子: 默認(rèn)情況下,pam_tally2模塊已經(jīng)安裝在大多數(shù)Linux發(fā)行版,它是由PAM包本身的控制。 本文演示如何鎖定和深遠(yuǎn)的登錄嘗試的失敗一定次數(shù)后解鎖SSH帳戶。 如何鎖定和解鎖用戶帳戶 auth required pam_tally2.so file=/var/log/tallylog deny=3 even_deny_root unlock_time=1200 account required pam_tally2.so [root@test01 ~]# ssh test01@172.16.25.126 [root@test01 ~]# pam_tally2 --user=test01 [root@test01 pam.d]# pam_tally2 --user=test01 --reset [root@test01 pam.d]# pam_tally2 --user=test01 |
|