在linux系統中,用戶屢次登陸失敗會被鎖定,一段時間內將不能再登陸系統,這是通常會用到Pam_Tally2進行帳戶解鎖。linux
瞭解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配置均可以經過它們來調用。session
使用以下命令判斷程序是否使用了PAM:
root@test~ # ldd /usr/bin/passwd | grep libpamssh
libpam_misc.so.0 => /lib64/libpam_misc.so.0 (0x00007fb74f748000)ide
libpam.so.0 => /lib64/libpam.so.0 (0x00007fb74eb45000)ui
如看到有相似的輸出,說明該程序使用了PAM,沒有輸出,則沒有使用。命令行
pam_tally2模塊用於某些數對系統進行失敗的ssh登陸嘗試後鎖定用戶賬戶。 此模塊保留已嘗試訪問的計數和過多的失敗嘗試。日誌
pam_tally2模塊有兩個部分,一個是pam_tally2.so,另外一個是pam_tally2。 它是基於PAM模塊上,而且能夠被用於檢查和調節計數器文件。 它能夠顯示用戶登陸嘗試次數,單獨設置計數,解鎖全部用戶計數。blog
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身份驗證安全配置實例
1、強制使用強密碼(用戶密碼安全配置)
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 ////查看用戶登陸錯誤次數
若是超過三次的話,用戶不能登陸而且此後登陸用戶錯誤登陸次數仍是會增長。
在登陸錯誤次數不滿三次時,登陸成功後,則這個用戶登陸錯誤值將清零,退出後從新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 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
如今,使用如下命令驗證或檢查用戶嘗試的計數器。
[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=test01Login Failures Latest failure Fromtest01 0PAM模塊是全部Linux發行版中都有的, 在命令行中執行「 人pam_tally2」可更多地瞭解它。