1、账户锁定策略介绍

  在Linux系统中,为了提高系统安全性,防止暴力破解攻击,我们可以通过配置PAM(Pluggable Authentication Modules)模块来限制登录失败次数并锁定用户账户,本文将详细介绍如何实现这一功能,包括必要的步骤和配置文件的修改。

2、系统环境

  系统环境:RedHat 8.0

  主要配置文件:/etc/pam.d/login、/etc/pam.d/gdm-autologin、/etc/pam.d/sshd、system-auth和password-auth

3、账户登录方式

3.1、登录方式

  Linux中账户登录验证方式:

  1.本地tty登录,这里是使用login命令,从而调用/etc/pam.d/login配置文件,最终调用底层的组件进行密码验证等;

  2.ssh远程登录,调用/etc/pam.d/sshd配置文件;

  3.本地图形化界面,比如我用gdm,那么我在图形化登录界面时,就会调用/etc/pam.d/gdm-password配置文件。

3.2、文件内容

  在RedHat 8.0之后的系统环境中,不在使用pam_tally2组件进行登录锁定策略设置,而是使用faillock组件对其登录锁定策略进行设置,如果仅仅放置在system-auth文件中,实际上就只对本地tty登录方式进行了限制,如果需要对本地图形化界面设置,则需要password-auth配置文件进行参数配置。

3.2.1、/etc/pam.d/login

  可以看到/etc/pam.d/login配置文件中使用substack参数引用了其他的配置文件,具体引用模块则是:system-auth

 1 [root@RedHat8 ~]# cat /etc/pam.d/login
2 #%PAM-1.0
3 auth substack system-auth
4 auth include postlogin
5 account required pam_nologin.so
6 account include system-auth
7 password include system-auth
8 # pam_selinux.so close should be the first session rule
9 session required pam_selinux.so close
10 session required pam_loginuid.so
11 session optional pam_console.so
12 # pam_selinux.so open should only be followed by sessions to be executed in the user context
13 session required pam_selinux.so open
14 session required pam_namespace.so
15 session optional pam_keyinit.so force revoke
16 session include system-auth
17 session include postlogin
18 -session optional pam_ck_connector.so

3.2.2、/etc/pam.d/sshd

  可以看到/etc/pam.d/sshd配置文件中使用substack参数引用了其他的配置文件,具体引用模块则是:password-auth

 1 [root@RedHat8 ~]# cat /etc/pam.d/sshd
2 #%PAM-1.0
3 auth substack password-auth
4 auth include postlogin
5 account required pam_sepermit.so
6 account required pam_nologin.so
7 account include password-auth
8 password include password-auth
9 # pam_selinux.so close should be the first session rule
10 session required pam_selinux.so close
11 session required pam_loginuid.so
12 # pam_selinux.so open should only be followed by sessions to be executed in the user context
13 session required pam_selinux.so open env_params
14 session required pam_namespace.so
15 session optional pam_keyinit.so force revoke
16 session optional pam_motd.so
17 session include password-auth
18 session include postlogin

3.2.3、/etc/pam.d/gdm-password

  可以看到cat /etc/pam.d/gdm-password配置文件中使用substack参数引用了其他的配置文件,具体引用模块则是:password-auth

 1 [root@RedHat8 ~]# cat /etc/pam.d/gdm-password
2 auth [success=done ignore=ignore default=bad] pam_selinux_permit.so
3 auth substack password-auth
4 auth optional pam_gnome_keyring.so
5 auth include postlogin
6
7 account required pam_nologin.so
8 account include password-auth
9
10 password substack password-auth
11 -password optional pam_gnome_keyring.so use_authtok
12
13 session required pam_selinux.so close
14 session required pam_loginuid.so
15 session optional pam_console.so
16 session required pam_selinux.so open
17 session optional pam_keyinit.so force revoke
18 session required pam_namespace.so
19 session include password-auth
20 session optional pam_gnome_keyring.so auto_start
21 session include postlogin

4、通过system-auth模块设置账户锁定策略

4.1、修改system-auth配置文件

  执行命令: vi /etc/pam.d/system-auth ,将以下配置参数新增在auth字段上面: 

  auth required pam_faillock.so preauth silent audit deny=3 unlock_time=600     用户登录失败3次,锁定10分钟
  auth sufficient pam_unix.so nullok try_first_pass                  允许用户执行su权限,如果不添加该参数,则用户无法使用su进行切换
  auth [default=die] pam_faillock.so authfail audit deny=3 unlock_time=300       密码验证失败后更新失败尝试记录间隔时间300秒
  account required pam_faillock.so                                  检查账户是否因密码输错过多而被锁定,并阻止被锁定的账户登录

  如图所示:

 1 # Generated by authselect on Thu Feb 13 07:05:03 2025
2 # Do not modify this file manually.
3
4 auth required pam_faillock.so preauth silent audit deny=3 unlock_time=600
5 auth sufficient pam_unix.so nullok try_first_pass
6 auth [default=die] pam_faillock.so authfail audit deny=3 unlock_time=300
7 account required pam_faillock.so
8
9 auth required pam_env.so
10 auth required pam_faildelay.so delay=2000000
11 auth sufficient pam_fprintd.so
12 auth [default=1 ignore=ignore success=ok] pam_succeed_if.so uid >= 1000 quiet
13 auth [default=1 ignore=ignore success=ok] pam_localuser.so
14 auth sufficient pam_unix.so nullok try_first_pass
15 auth requisite pam_succeed_if.so uid >= 1000 quiet_success
16 auth sufficient pam_sss.so forward_pass
17 auth required pam_deny.so
18
19 account required pam_unix.so
20 account sufficient pam_localuser.so
21 account sufficient pam_succeed_if.so uid < 1000 quiet
22 account [default=bad success=ok user_unknown=ignore] pam_sss.so
23 account required pam_permit.so
24
25 password requisite pam_pwquality.so try_first_pass local_users_only
26 password sufficient pam_unix.so sha512 shadow nullok try_first_pass use_authtok
27 password sufficient pam_sss.so use_authtok
28 password required pam_deny.so
29
30 session optional pam_keyinit.so revoke
31 session required pam_limits.so
32 -session optional pam_systemd.so
33 session [success=1 default=ignore] pam_succeed_if.so service in crond quiet use_uid
34 session required pam_unix.so
35 session optional pam_sss.so

4.2、登录测试

  测试截图:

  

  使用命令: faillock --user test 查看test用户锁定情况,可以看到test用户登录失败3次后,已经被锁定。

  

  使用命令: faillock --user test --reset 解锁test用户。

  解锁后,用户登录正常

  

5、通过password-auth模块设置账户锁定策略

5.1、修改password-auth配置文件

  执行命令: vi /etc/pam.d/password-auth ,将以下配置参数新增在auth字段上面:

   auth required pam_faillock.so preauth silent audit deny=3 unlock_time=600     用户登录失败3次,锁定10分钟

   auth sufficient pam_unix.so nullok try_first_pass                  允许用户执行su权限,如果不添加该参数,则用户无法使用su进行切换

   auth [default=die] pam_faillock.so authfail audit deny=3 unlock_time=300       密码验证失败后更新失败尝试记录间隔时间300秒

   account required pam_faillock.so                           检查账户是否因密码输错过多而被锁定,并阻止被锁定的账户登录

  如图所示:

 1 [root@RedHat8 ~]# cat /etc/pam.d/password-auth
2 # Generated by authselect on Thu Feb 13 07:05:03 2025
3 # Do not modify this file manually.
4
5 auth required pam_faillock.so preauth silent audit deny=3 unlock_time=600
6 auth sufficient pam_unix.so nullok try_first_pass
7 auth [default=die] pam_faillock.so authfail audit deny=3 unlock_time=300
8 account required pam_faillock.so
9
10 auth required pam_env.so
11 auth required pam_faildelay.so delay=2000000
12 auth [default=1 ignore=ignore success=ok] pam_succeed_if.so uid >= 1000 quiet
13 auth [default=1 ignore=ignore success=ok] pam_localuser.so
14 auth sufficient pam_unix.so nullok try_first_pass
15 auth requisite pam_succeed_if.so uid >= 1000 quiet_success
16 auth sufficient pam_sss.so forward_pass
17 auth required pam_deny.so
18
19 account required pam_unix.so
20 account sufficient pam_localuser.so
21 account sufficient pam_succeed_if.so uid < 1000 quiet
22 account [default=bad success=ok user_unknown=ignore] pam_sss.so
23 account required pam_permit.so
24
25 password requisite pam_pwquality.so try_first_pass local_users_only
26 password sufficient pam_unix.so sha512 shadow nullok try_first_pass use_authtok
27 password sufficient pam_sss.so use_authtok
28 password required pam_deny.so
29
30 session optional pam_keyinit.so revoke
31 session required pam_limits.so
32 -session optional pam_systemd.so
33 session [success=1 default=ignore] pam_succeed_if.so service in crond quiet use_uid
34 session required pam_unix.so
35 session optional pam_sss.so

5.2、登录测试

5.2.1、图形化界面登录测试

  图形化界面3次登录失败后截图:

  后台查看test用户锁定情况,使用命令: faillock --user test ,可以看到test用户登录失败3次后,已经被锁定,这时图形化登录界面即使输入正确密码也无法登录。

  使用命令: faillock --user test --reset ,解锁test用户

  解锁用户后,再次查询test账户锁定情况,这时锁定记录已经被清空了,代表用户可以正常登录图形化界面了。

  再次进行图形化界面登录测试,这时图形化界面可以正常登录进去。

5.2.2、SSH远程登录测试

  ssh远程登录失败3次后截图:

  后台查看test用户锁定情况,使用命令: faillock ,可以看到主机192.168.5.92上的test用户登录失败3次后,已经被锁定,这时即使输入正确密码也无法登录。

  使用命令: faillock --user test --reset ,解锁远程主机192.168.5.92上的test用户,再次查看远程主机用户锁定情况,这时锁定记录已经被清空了,代表远程主机可以正常登录。(测试发现,使用命令: faillock --user 192.168.5.92 --reset ,没有报错,但是针对远程主机的IP进行解锁,无效)

  再次在远程主机上使用ssh进行远程登录,账户可以正常登录。

  

Linux用户登录失败锁定策略的更多相关文章

  1. SQL server数据库的密码策略与登录失败锁定策略

    SQL server数据库本身没有密码复杂度策略设置,它是使用Windows操作系统的校验函数来校验账户密码的,所以查看SQL server数据库密码复杂度需要结合操作系统本地安全策略的密码策略来看. ...

  2. oracle 用户尝试登录失败锁定策略及修改

    -- 修改密码的有效期策略, 永不过期SQL> ALTER PROFILE DEFAULT LIMIT PASSWORD_LIFE_TIME UNLIMITED;Profile altered ...

  3. linux尝试登录失败后锁定用户账户的两种方法

    linux尝试登录失败后锁定用户账户的两种方法 更新时间:2017年06月23日 08:44:31   作者:Carey    我要评论   这篇文章主要给大家分享了linux尝试登录失败后锁定用户账 ...

  4. Centos 用户登录失败N次后锁定用户禁止登陆

    针对linux上的用户,如果用户连续3次登录失败,就锁定该用户,几分钟后该用户再自动解锁 Linux有一个pam_tally2.so的PAM模块,来限定用户的登录失败次数,如果次数达到设置的阈值,则锁 ...

  5. Centos7下用户登录失败N次后锁定用户禁止登陆的方法

    前言 针对linux上的用户,如果用户连续3次登录失败,就锁定该用户,几分钟后该用户再自动解锁.Linux有一个pam_tally2.so的PAM模块,来限定用户的登录失败次数,如果次数达到设置的阈值 ...

  6. linux多次登录失败锁定账户

    2021-07-22 1.配置对系统进行失败的ssh登录尝试后锁定用户帐户 # 配置登录访问的限制 vi /etc/pam.d/system-auth 或者 vi etc/pam.d/password ...

  7. Linux用户登录记录日志和相关查看命令汇总

    # 1 utmp.wtmp.btmp文件 Linux用户登录信息放在三个文件中: 1 /var/run/utmp:记录当前正在登录系统的用户信息,默认由who和w记录当前登录用户的信息,uptime记 ...

  8. Linux用户登录日志查询

    # 1 utmp.wtmp.btmp文件 Linux用户登录信息放在三个文件中: 1 /var/run/utmp:记录当前正在登录系统的用户信息,默认由who和w记录当前登录用户的信息,uptime记 ...

  9. Linux用户登录记录日志和相关查看命令汇总(转)

    # 1 utmp.wtmp.btmp文件 Linux用户登录信息放在三个文件中: 1 /var/run/utmp:记录当前正在登录系统的用户信息,默认由who和w记录当前登录用户的信息,uptime记 ...

  10. linux用户登录

    一.linux用户登录过程访问的文件 /etc/passwd---用户登录时,linux会先到这里查看用户Id.组Id.登录后的shell.用户工作目录 /etc/shadow(影)---linux在 ...

随机推荐

  1. 备份场景全覆盖!腾讯云备份一体机 B2000给您全方位保护

    TStor 是腾讯云面向混合云场景打造的存储一体机产品系列.继年初发布对象存储一体机之后,该产品系列再添新成员:TStor B2000,是面向混合云备份场景的一体机产品. 根据权威咨询机构 IDC 和 ...

  2. 【数据库】【MySQL】创建数据库、数据表、修改数据表字段的一些基本操作

    这是一份作业,仅此而已. 代码仅供参考. # 创建数据库yggl_mllt9920 CREATE DATABASE yggl_mllt9920; # 选择数据库 USE yggl_mllt9920; ...

  3. Not all slots covered! Only 5461 slots are available. Set checkSlotsCoverage = false to avoid this check

    Not all slots covered! Only 5461 slots are available. Set checkSlotsCoverage = false to avoid this c ...

  4. 视频监控推流助手/极低延迟/支持N路批量多线程推流/264和265推流/监控转网页

    一.前言说明 搞视频监控开发除了基本的拉流以外,还有个需求是推流,需要将拉到的流重新推流到流媒体服务器,让流媒体服务做转发和负载均衡,这样其他地方只需要问流媒体服务器要视频流即可.为什么拉了又重新推呢 ...

  5. Qt音视频开发26-监控画面各种图形绘制设计

    一.前言 视频监控系统做到后面,逐渐需要搭配人工智能算法,将算法计算后的信息以OSD标签以及方框各种图形的信息显示到视频中,这种当然和OSD一样也是有两种方式,一种是源头就贴好了,一种是将结果发给软件 ...

  6. Qt编写的项目作品6-可视化大屏电子看板系统

    一.功能特点 采用分层设计,整体总共分三级界面,一级界面是整体布局,二级界面是单个功能模块,三级界面是单个控件. 子控件包括饼图.圆环图.曲线图.柱状图.柱状分组图.横向柱状图.横向柱状分组图.合格率 ...

  7. Qt编写的项目作品34-雷达模拟仿真工具(雨田哥作品)

    一.功能特点 支持音频频谱显示. 支持任意随机添加模拟点. 支持自定义添加模拟点. 支持方位.航向角.距离.速度.目标体真实图自定制. 支持危险区域范围显示. 支持激光发射模拟. 支持雷达图放大缩小显 ...

  8. 阿里云IP遭受DDOS攻击 快速切换IP实践

    阿里云IP遭受DDOS攻击 快速切换IP实践 #1 介绍 运行平台: 阿里云 访问链路: 域名 -> 负载均衡EIP -> 容器 网站无法访问,查询服务运行正常,查询公网流量异常高后断流了 ...

  9. 深入剖析数据删除操作:DELETE 语句的使用与管理实践

    title: 深入剖析数据删除操作:DELETE 语句的使用与管理实践 date: 2025/1/8 updated: 2025/1/8 author: cmdragon excerpt: 数据删除( ...

  10. SpringBoot(四) - 整合Mybatis,逆向工程,JPA,Mybatis-plus

    1.SpringBoot整合MyBatis 1.1 application.yml # 数据源配置 spring: datasource: driver-class-name: com.mysql.c ...