Linux登录访问限制

萱蘇的运维日常 2024-03-26 15:02:21
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   99999PASS_MIN_DAYS   0PASS_MIN_LEN    5PASS_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

本文使用的是 pam_tally2 模块,如果不支持 pam_tally2 模块可以使用 pam_tally 模块,不同的模块设置不同,请参考模块使用方法进行设置

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

auth     required pam_tally2.so   onerr=fail  unlock_time=1800 no_magic_rootaccount 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也是不生效的

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

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

更多相关参数请参考https://www.linux.org/docs/man8/pam_tally2.html

参考文档

https://www.linux.org/docs/man8/pam_tally2.html

问题反馈

若对文中有任何的疑问,或者需要帮助可以通过以下方式进行反馈

直接进行评论或者单独私聊

发送邮件到:mr_xuansu@163.com

0 阅读:0