系统安全加固4——输入密码错误5次锁定账户900秒

  本章节设置在登录界面或者通过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秒
其中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秒
   开始时,执行faillock命令,因为是正确登录到系统,所以此处没有内容。我从另一个终端通过ssh连接到主机,故意输错密码,输错一次,在之前终端执行一次faillock查看系统中认证失败记录数据,上面这张图记录的是输错3次密码的情况。
   因为在第二节中设置的规则是输错5次之后,登录账户将锁定,下面我们继续实验,这图是输错5此的情况。此时账户登录已经锁定,输入正确密码也不能登录到系统。
系统安全加固4——输入密码错误5次锁定账户900秒

3.1.2 锁定时间15分钟之后,输入正确密码,系统中认证失败记录情况

系统安全加固4——输入密码错误5次锁定账户900秒
  过了锁定时间之后,输入正确密码登录到系统,查看登录失败记录没有变化。此时退出系统,再次验证输入错误密码,然后查看faillock信息,如下:
系统安全加固4——输入密码错误5次锁定账户900秒
  记录文件中Vaild列除了“V”表示的有效之外,还出现了“I”表示的无效。此处只是看文章可能不会很清楚,自己动手验证一下,就会明白!

3.1.3 执行faillock清除系统中认证失败记录

[root@bogon 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
[root@bogon faillock]# faillock --reset
[root@bogon faillock]# faillock 
loongson:
When                Type  Source                                           Valid
[root@bogon faillock]# 

3.1.4 输入错误4次,输入正确密码,系统中认证失败记录情况

系统安全加固4——输入密码错误5次锁定账户900秒
  这一章我要验证的是,输入4次错误密码之后,输入1次正确密码登录到系统。系统的认证失败记录会不会被清0,重新开始计数。现在我退出登录,然后输入错误2次密码之后,输入正确密码,验证能否登录到系统
系统安全加固4——输入密码错误5次锁定账户900秒
  结论:登录错误4次之后,输入正确密码登录到系统并没有将登录失败次数清0!(需要注意的是:这个结论的前提是按照第二章配置文件配置的结果)

上一篇:Photoshop 入门教程「6」如何更改图像大小?


下一篇:生产服务器上优化终端超时—自动断开连接的解决方法