天天看點

系統安全加強4——輸入密碼錯誤5次鎖定賬戶900秒1、環境作業系統2 、修改配置檔案/etc/pam.d/system-auth和/etc/pam.d/password-auth3 系統對外提供的接口——faillock

  本章節設定在登入界面或者通過ssh遠端連接配接到系統時,輸入錯誤密碼5次,鎖定15分鐘。此配置可以很好的用來防範系統密碼被暴力破解。

1、環境作業系統

Server 8.3 (衍生自 CentOS 8.3)

2 、修改配置檔案/etc/pam.d/system-auth和/etc/pam.d/password-auth

修改内容參考《CIS_CentOS_Linux_8_Benchmark_v1.0.1》5.4.2章節内容

系統安全加強4——輸入密碼錯誤5次鎖定賬戶900秒1、環境作業系統2 、修改配置檔案/etc/pam.d/system-auth和/etc/pam.d/password-auth3 系統對外提供的接口——faillock

其中deny後面的數字:表示輸錯對應的次數,達到對應次數之後,賬戶登入功能會被鎖定;unlock_time後面的數字表示鎖定的時間(機關:秒),達到鎖定時間之後,賬戶登入功能會解鎖。

  因為我要将修改固化到Server 8.3系統中,是以我需要修改軟體包來實作。/etc/pam.d/system-auth和/etc/pam.d/password-auth屬于軟體包authselect。下面是我的修改patch

diff --git a/profiles/sssd/password-auth b/profiles/sssd/password-auth
index 3e1886f..7155a1f 100644
--- a/profiles/sssd/password-auth                                                                                                                                                             
+++ b/profiles/sssd/password-auth
@@ -1,4 +1,5 @@
 auth        required                                     pam_env.so
+auth        required                                     pam_faillock.so preauth silent deny=5 even_deny_root unlock_time=900
 auth        required                                     pam_faildelay.so delay=2000000
 auth        required                                     pam_deny.so # Smartcard authentication is required     {include if "with-smartcard-required"}
 auth        required                                     pam_faillock.so preauth silent                         {include if "with-faillock"}
@@ -7,6 +8,7 @@ auth        required                                     pam_u2f.so cue nouserok
 auth        [default=1 ignore=ignore success=ok]         pam_usertype.so isregular
 auth        [default=1 ignore=ignore success=ok]         pam_localuser.so
 auth        sufficient                                   pam_unix.so {if not "without-nullok":nullok} try_first_pass
+auth        required                                     pam_faillock.so  authfail  deny=5 even_deny_root unlock_time=900
 auth        [default=1 ignore=ignore success=ok]         pam_usertype.so isregular
 auth        sufficient                                   pam_sss.so forward_pass
 auth        required                                     pam_faillock.so authfail                               {include if "with-faillock"}
@@ -20,7 +22,7 @@ account     sufficient                                   pam_usertype.so issyste
 account     [default=bad success=ok user_unknown=ignore] pam_sss.so
 account     required                                     pam_permit.so
diff --git a/profiles/sssd/system-auth b/profiles/sssd/system-auth
index 4b4b43e..95b8fff 100644
--- a/profiles/sssd/system-auth
+++ b/profiles/sssd/system-auth
@@ -1,5 +1,6 @@
 {imply "with-smartcard" if "with-smartcard-required"}
 auth        required                                     pam_env.so
+auth        required                                     pam_faillock.so preauth silent deny=5 even_deny_root unlock_time=900
 auth        required                                     pam_faildelay.so delay=2000000
 auth        required                                     pam_faillock.so preauth silent                         {include if "with-faillock"}
 auth        [success=1 default=ignore]                   pam_succeed_if.so service notin login:gdm:xdm:kdm:xscreensaver:gnome-screensaver:kscreensaver quiet use_uid {include if "with-smartcard-required"}
@@ -12,6 +13,7 @@ auth        [default=1 ignore=ignore success=ok]         pam_localuser.so
 auth        [default=2 ignore=ignore success=ok]         pam_localuser.so                                       {include if "with-smartcard"}
 auth        [success=done authinfo_unavail=ignore ignore=ignore default=die] pam_sss.so try_cert_auth           {include if "with-smartcard"}
 auth        sufficient                                   pam_unix.so {if not "without-nullok":nullok} try_first_pass
+auth        required                                     pam_faillock.so  authfail  deny=5 even_deny_root unlock_time=900
 auth        [default=1 ignore=ignore success=ok]         pam_usertype.so isregular
 auth        sufficient                                   pam_sss.so forward_pass
 auth        required                                     pam_faillock.so authfail                               {include if "with-faillock"}
@@ -25,7 +27,7 @@ account     sufficient                                   pam_usertype.so issyste
 account     [default=bad success=ok user_unknown=ignore] pam_sss.so
 account     required                                     pam_permit.so
           

至于為什麼是修改的sssd/目錄下的内容,通過authselect指令可以看出一二。

需要注意的是1)修改了源碼包、編譯之後,直接安裝是看不到修改内容!我重新打iso之後可以看到修改内容。2)此處隻是限制了賬戶登入,從其他使用者通過su指令切換時并不受影響

3 系統對外提供的接口——faillock

  既然要判斷使用者輸入錯誤的次數,那麼系統中肯定有一個地方用來記錄目前輸入錯誤的次數,這個資料預設記錄在/var/run/faillock。

3.1 faillock

  Linux系統提供了一個檢視和修改認證失敗記錄檔案的工具——faillock。

NAME
       faillock - Tool for displaying and modifying the authentication failure record files

SYNOPSIS
       faillock [--dir /path/to/tally-directory] [--user username] [--reset]
           

3.1.1 不間斷輸錯密碼5次,系統中認證失敗記錄情況

系統安全加強4——輸入密碼錯誤5次鎖定賬戶900秒1、環境作業系統2 、修改配置檔案/etc/pam.d/system-auth和/etc/pam.d/password-auth3 系統對外提供的接口——faillock

   開始時,執行faillock指令,因為是正确登入到系統,是以此處沒有内容。我從另一個終端通過ssh連接配接到主機,故意輸錯密碼,輸錯一次,在之前終端執行一次faillock檢視系統中認證失敗記錄資料,上面這張圖記錄的是輸錯3次密碼的情況。

   因為在第二節中設定的規則是輸錯5次之後,登入賬戶将鎖定,下面我們繼續實驗,這圖是輸錯5此的情況。此時賬戶登入已經鎖定,輸入正确密碼也不能登入到系統。

系統安全加強4——輸入密碼錯誤5次鎖定賬戶900秒1、環境作業系統2 、修改配置檔案/etc/pam.d/system-auth和/etc/pam.d/password-auth3 系統對外提供的接口——faillock

3.1.2 鎖定時間15分鐘之後,輸入正确密碼,系統中認證失敗記錄情況

系統安全加強4——輸入密碼錯誤5次鎖定賬戶900秒1、環境作業系統2 、修改配置檔案/etc/pam.d/system-auth和/etc/pam.d/password-auth3 系統對外提供的接口——faillock

  過了鎖定時間之後,輸入正确密碼登入到系統,檢視登入失敗記錄沒有變化。此時退出系統,再次驗證輸入錯誤密碼,然後檢視faillock資訊,如下:

系統安全加強4——輸入密碼錯誤5次鎖定賬戶900秒1、環境作業系統2 、修改配置檔案/etc/pam.d/system-auth和/etc/pam.d/password-auth3 系統對外提供的接口——faillock

  記錄檔案中Vaild列除了“V”表示的有效之外,還出現了“I”表示的無效。此處隻是看文章可能不會很清楚,自己動手驗證一下,就會明白!

3.1.3 執行faillock清除系統中認證失敗記錄

[[email protected] faillock]# faillock 
loongson:
When                Type  Source                                           Valid
2021-08-24 09:54:27 RHOST x.x.x.x                                          V
2021-08-24 09:26:27 RHOST x.x.x.x                                          I
2021-08-24 09:26:35 RHOST x.x.x.x                                           I
2021-08-24 09:33:44 RHOST x.x.x.x                                         I
2021-08-24 09:33:52 RHOST x.x.x.x                                          I
2021-08-24 09:54:48 RHOST x.x.x.x                                          V
2021-08-24 09:55:10 RHOST x.x.x.x                                           V
[[email protected] faillock]# faillock --reset
[[email protected] faillock]# faillock 
loongson:
When                Type  Source                                           Valid
[[email protected] faillock]# 
           

3.1.4 輸入錯誤4次,輸入正确密碼,系統中認證失敗記錄情況

系統安全加強4——輸入密碼錯誤5次鎖定賬戶900秒1、環境作業系統2 、修改配置檔案/etc/pam.d/system-auth和/etc/pam.d/password-auth3 系統對外提供的接口——faillock

  這一章我要驗證的是,輸入4次錯誤密碼之後,輸入1次正确密碼登入到系統。系統的認證失敗記錄會不會被清0,重新開始計數。現在我登出,然後輸入錯誤2次密碼之後,輸入正确密碼,驗證能否登入到系統

系統安全加強4——輸入密碼錯誤5次鎖定賬戶900秒1、環境作業系統2 、修改配置檔案/etc/pam.d/system-auth和/etc/pam.d/password-auth3 系統對外提供的接口——faillock

  結論:登入錯誤4次之後,輸入正确密碼登入到系統并沒有将登入失敗次數清0!(需要注意的是:這個結論的前提是按照第二章配置檔案配置的結果)

繼續閱讀