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

多次登入失敗使用者被鎖定及使用Pam_Tally2解鎖

在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:
[email protected]~ # 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_Tally2解鎖

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次,你會收到以下訊息。

[[email protected] ~]# 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
現在,使用以下命令驗證或檢查使用者嘗試的計數器。

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

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

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