Linux登录访问限制

发布于:2024-04-16 ⋅ 阅读:(203) ⋅ 点赞:(0)

Linux系统下,用户密码的有效期可以通过编辑/etc/login.defs文件控制;密码复杂度规则设定需要通过/etc/pam.d/system-auth文件控制;登录失败次数限制通常由/etc/pam.d/login文件限制,可使用pam_tally2模块进行设置。

        

Linux系统下的用户密码的有效期

可以修改密码可以通过login.defs文件控制。设置密码过期期限(默认情况下,用户的密码永不过期。)编辑 /etc/login.defs 文件,可以设置当前密码的有效期限,具体变量如下所示:

# 查看默认配置
[root@iZm5e7avacv1htxtp7qbdyZ etc]# cat login.defs | grep PASS*
# PASS_MAX_DAYS Maximum number of days a password may be used.
# PASS_MIN_DAYS Minimum number of days allowed between password changes.
# PASS_MIN_LEN Minimum acceptable password length.
# PASS_WARN_AGE Number of days warning given before a password expires.
PASS_MAX_DAYS 99999
PASS_MIN_DAYS 0
PASS_MIN_LEN 5
PASS_WARN_AGE 7

# 修改参数
[root@iZm5e7avacv1htxtp7qbdyZ etc]# sed -i -r 's/(PASS_MAX_DAYS)\s+[0-9]+/\1 90/' login.defs
[root@iZm5e7avacv1htxtp7qbdyZ etc]# sed -i -r 's/(PASS_MIN_LEN)\s+[0-9]+/\1 8/' login.defs

# 检查修改后的结果
[root@iZm5e7avacv1htxtp7qbdyZ etc]# cat login.defs | grep PASS*

参数说明:

  • PASS_MAX_DAYS:密码可以使用的最多天数

  • PASS_MIN_DAYS:密码更改之间允许的最小天数

  • PASS_MIN_LEN:可接受的最小密码长度

  • PASS_WARN_AGE:密码过期前发出警告的天数

linux 用户密码复杂度

用户密码复杂度规则设定,需要通过/etc/pam.d/system-auth文件去控制(针对的是普通用户修改密码会生效,root用户无效),centos6中默认是通过pam_cracklib.so模块控制,(在CentOS 7上实现密码复杂度策略设置,主要是使用PAM pwquality模块完成):

相关参数说明:

  • retry=3 定义登录/修改密码失败时,可以重试的次数;

  • type=xxx 当添加/修改密码时,系统给出的缺省提示符是什么,用来修改缺省的密码提示文本。默认是不修改的,如上例。

  • minlen=8 定义用户密码的最小长度为8位

  • ucredit=-1 定义用户密码中最少有2个大写字母 (数字为负数,表示至少有多少个大写字母;数字为正数,表示至多有多少个大写字母;下面同理)

  • lcredit=-1 定义用户密码中最少有4个小写字母

  • dcredit=-1 定义用户密码中最少有1个数字

  • ocredit=-1 定义用户密码中最少有1个特殊字符(除数字、字母之外)

  • remember=3 修改用户密码时最近5次用过的旧密码就不能重用了

  • difok=n 此选项用来规定新密码中必需有n个字符与旧密码不同。

  • minclass=n 此选项用来规定新密码中的字符类别的最小数目,字符一般有四种类别:数字、大写字母、小写字母,以及特殊字符。

linux 设置登录失败5次,锁定时间为5分钟

限制登录通常由/etc/pam.d/login文件限制的,可直接在#%PAM-1.0下,直接添加一行

# 不限制root用户
auth required pam_tally2.so deny=3 unlock_time=5
# 限制root用户
auth required pam_tally2.so deny=3 unlock_time=5 even_deny_root root_unlock_time=10
  1. 本文使用的是 pam_tally2 模块,如果不支持 pam_tally2 模块可以使用 pam_tally 模块,不同的模块设置不同,请参考模块使用方法进行设置

  2. 也可以直接在/etc/pam.d/system-auth中设

    auth required pam_tally2.so onerr=fail unlock_time=1800 no_magic_root
    account required pam_tally2.so deny=5 unlock_time=1800 no_magic_root even_deny_root_account per_user reset

    参数说明:

  • auth: 表示这是认证阶段的规则。

  • required: 表示此模块是必需的,如果它失败,则认证失败。

  • pam_tally.so: 是PAM模块,用于跟踪用户登录失败的次数。

  • onerr=fail: 如果pam_tally.so模块遇到错误,则认证失败。

  • Unlock_time=1800: 指定用户账户在被锁定后多长时间(以秒为单位)自动解锁。这里是1800秒,即30分钟-

  • no_magic_root: 禁止root用户使用特殊权限来绕过登录失败次数的限制。

  • account: 表示这是账户管理阶段的规则。

  • deny=5: 指定在连续登录失败5次后,用户账户将被锁定。

  • even_deny_root_account: 即使对root用户也执行账户锁定策略。

  • per_user: 锁定策略是基于每个用户的,而不是全局的。

  • reset: 当用户成功登录后,重置登录失败计数器。

  • 建议不要限制root用户,因为pam_tally没有解锁功能,哪怕配置了unlock_time也是不生效的

  1. 使用pam_tally2 -r -u username 手动解锁用户

  2. 使用pam_tally2 –u username查看用户错误登录次数

  • 更多相关参数请参考官网


网站公告

今日签到

点亮在社区的每一天
去签到