在Linux系統(tǒng)中,用戶多次登錄失敗會(huì)被鎖定,一段時(shí)間內(nèi)將不能再登錄系統(tǒng),這是一般會(huì)用到Pam_Tally2進(jìn)行賬戶解鎖。
了解PAM
Linux-PAM (Pluggable Authentication Modules for Linux)可插拔認(rèn)證模塊。Linux-PAM是一套適用于Linux的身份驗(yàn)證共享庫(kù)系統(tǒng),它為系統(tǒng)中的應(yīng)用程序或服務(wù)提供動(dòng)態(tài)身份驗(yàn)證模塊支持。在Linux中,PAM是可動(dòng)態(tài)配置的,本地系統(tǒng)管理員可以自由選擇應(yīng)用程序如何對(duì)用戶進(jìn)行身份驗(yàn)證。PAM應(yīng)用在許多程序與服務(wù)上,比如登錄程序(login、su)的PAM身份驗(yàn)證(口令認(rèn)證、限制登錄),passwd強(qiáng)制密碼,用戶進(jìn)程實(shí)時(shí)管理,向用戶分配系統(tǒng)資源等。
PAM的主要特征是認(rèn)證的性質(zhì)是可動(dòng)態(tài)配置的。PAM的核心部分是庫(kù)(libpam)和PAM模塊的集合,它們是位于文件夾/lib/security/中的動(dòng)態(tài)鏈接庫(kù)(.so)文件,以及位于/etc/pam.d/目錄中(或者是/etc/pam.conf配置文件)的各個(gè)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這四個(gè)文件,所有的應(yīng)用程序和服務(wù)的主要PAM配置都可以通過它們來調(diào)用。
使用如下命令判斷程序是否使用了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模塊用于某些數(shù)對(duì)系統(tǒng)進(jìn)行失敗的ssh登錄嘗試后鎖定用戶帳戶。 此模塊保留已嘗試訪問的計(jì)數(shù)和過多的失敗嘗試。
pam_tally2模塊有兩個(gè)部分,一個(gè)是pam_tally2.so,另一個(gè)是pam_tally2。 它是基于PAM模塊上,并且可以被用于檢查和調(diào)節(jié)計(jì)數(shù)器文件。 它可以顯示用戶登錄嘗試次數(shù),單獨(dú)設(shè)置計(jì)數(shù),解鎖所有用戶計(jì)數(shù)。
PAM身份驗(yàn)證配置文件
/etc/pam.d/目錄包含應(yīng)用程序的PAM配置文件。例如,login程序?qū)⑵涑绦?服務(wù)名稱定義為login,與之對(duì)應(yīng)的PAM配置文件為/etc/pam.d/login。
PAM配置文件語法格式
每個(gè)PAM配置文件都包含一組指令,用于定義模塊以及控制標(biāo)志和參數(shù)。每條指令都有一個(gè)簡(jiǎn)單的語法,用于標(biāo)識(shí)模塊的目的(接口)和模塊的配置設(shè)置,語法格式如下:
module_interface control_flag module_name module_arguments
如在/etc/pam.d/password-auth-ac配置文件中(CentOS),其中一行PAM模塊接口定義如下
PAM身份驗(yàn)證安全配置實(shí)例
一、強(qiáng)制使用強(qiáng)密碼(用戶密碼安全配置)
PAM配置文件:/etc/pam.d/system-auth-ac
模塊名稱:pam_cracklib(僅適用于password模塊接口)
模塊參數(shù):
minlen=12 密碼字符長(zhǎng)度不少于12位(默認(rèn)為9)
lcredit=-1 至少包含1個(gè)小寫字母
ucredit=-1 至少包含1個(gè)大寫字母
dcredit=-1 至少包含1個(gè)數(shù)字
ocredit=-1 至少包含1個(gè)特殊字符
retry=3 配置密碼時(shí),提示3次用戶密碼錯(cuò)誤輸入
difok=6 配置密碼時(shí),新密碼中至少6個(gè)字符與舊密碼不同(默認(rèn)為5)
其他常用參數(shù):
reject_username 新密碼中不能包含與用戶名稱相同的字段
maxrepeat=N 拒絕包含超過N個(gè)連續(xù)字符的密碼,默認(rèn)值為0表示此檢查已禁用
maxsequence=N 拒絕包含大于N的單調(diào)字符序列的密碼,例如’1234’或’fedcb’,默認(rèn)情況下即使沒有這個(gè)參數(shù)配置,一般大多數(shù)這樣的密碼都不會(huì)通過,除非序列只是密碼的一小部分
maxcla***epeat=N 拒絕包含相同類別的N個(gè)以上連續(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配置文件,因此對(duì)于以上PAM身份驗(yàn)證密碼模塊配置,只修改/配置該文件即可。或者在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 (遠(yuǎn)程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
各參數(shù)解釋:
even_deny_root 也限制root用戶;
deny 設(shè)置普通用戶和root用戶連續(xù)錯(cuò)誤登陸的最大次數(shù),超過最大次數(shù),則鎖定該用戶
unlock_time 設(shè)定普通用戶鎖定后,多少時(shí)間后解鎖,單位是秒;
root_unlock_time 設(shè)定root用戶鎖定后,多少時(shí)間后解鎖,單位是秒;
手動(dòng)解除鎖定:
查看某一用戶錯(cuò)誤登陸次數(shù):
pam_tally –user
例如,查看work用戶的錯(cuò)誤登陸次數(shù):
pam_tally –user work
清空某一用戶錯(cuò)誤登陸次數(shù):
pam_tally –user –reset
例如,清空 work 用戶的錯(cuò)誤登陸次數(shù),
pam_tally –user work –-reset
如果使用pam_tally沒生效的話,也可以使用pam_tally2命令:
pam_tally2 –u tom –reset將用戶的計(jì)數(shù)器重置清零(SLES 11.2和12版本下用此命令才重置成功)
查看錯(cuò)誤登錄次數(shù):pam_tally2 –u tom
faillog -r 命令清空所有用戶錯(cuò)誤登錄次數(shù)
在服務(wù)器端以root用戶登錄
執(zhí)行命令:
# faillog –a ////查看用戶登錄錯(cuò)誤次數(shù)
faillog -u user –r ////清空指定用戶user的錯(cuò)誤登錄次數(shù)
如果超過三次的話,用戶不能登錄并且此后登錄用戶錯(cuò)誤登錄次數(shù)還是會(huì)增加。
在登錄錯(cuò)誤次數(shù)不滿三次時(shí),登錄成功后,則這個(gè)用戶登錄錯(cuò)誤值將清零,退出后重新telnet登錄將采用新的計(jì)數(shù)。
其他例子:
Pam_tally2鎖定SSH登錄
默認(rèn)情況下,pam_tally2模塊已經(jīng)安裝在大多數(shù)Linux發(fā)行版,它是由PAM包本身的控制。 本文演示如何鎖定和深遠(yuǎn)的登錄嘗試的失敗一定次數(shù)后解鎖SSH帳戶。
如何鎖定和解鎖用戶帳戶
使用“/etc/pam.d/password-auth”配置文件來配置的登錄嘗試的訪問。 打開此文件并以下AUTH配置行舉行的“ 身份驗(yàn)證 ”部分的開頭添加到它。
auth required pam_tally2.so file=/var/log/tallylog deny=3 even_deny_root unlock_time=1200
接下來,添加以下行“ 賬戶 ”部分。
account required pam_tally2.so
參數(shù)
文件= /無功/日志/ tallylog -默認(rèn)的日志文件是用來保持登錄計(jì)數(shù)。
否認(rèn)= 3 -拒絕后,3次嘗試訪問和鎖定用戶。
even_deny_root -政策也適用于root用戶。
unlock_time = 1200 -帳戶將被鎖定,直到20分鐘 。 (如果要永久鎖定,直到手動(dòng)解鎖,請(qǐng)刪除此參數(shù)。)
一旦你使用上面的配置完成,現(xiàn)在盡量嘗試使用任何“ 用戶名 ”3失敗的登錄嘗試到服務(wù)器。 當(dāng)你取得了超過3次,你會(huì)收到以下消息。
[root@test01 ~]# ssh test01@172.16.25.126
test01@172.16.25.126’s password:
Permission denied, please try again.
test01@172.16.25.126’s password:
Permission denied, please try again.
test01@172.16.25.126’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
現(xiàn)在,使用以下命令驗(yàn)證或檢查用戶嘗試的計(jì)數(shù)器。
[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
驗(yàn)證登錄嘗試已重置或解鎖
[root@test01 pam.d]# pam_tally2 –user=test01
Login Failures Latest failure From
test01 0
PAM模塊是所有Linux發(fā)行版中都有的, 在命令行中執(zhí)行“ pam_tally2”可更多地了解它。