linux用户密码安全策略
Linux PAM
linux PAM配置文件 /etc/pam.d/system-auth
- 认证管理auth,用来对用户的身份进行识别.如:提示用户输入密码,或判断用户是否为root等
- 账号管理account,对帐号的各项属性进行检查.如:是否允许登录,是否达到最大用户数,或是root用户是否允许在这个终端登录等
- 密码管理password,这个模块用来定义用户登录前的,及用户退出后所要进行的操作.如:登录连接信息,用户数据的打开与关闭,挂载文件系统等
- 会话管理session,使用用户信息来更新.如:修改用户密码
#%PAM-1.0 # This file is auto-generated. # User changes will be destroyed the next time authconfig is run. auth required pam_env.so auth required pam_faildelay.so delay=2000000 auth [default=1 ignore=ignore success=ok] pam_succeed_if.so uid >= 1000 quiet auth [default=1 ignore=ignore success=ok] pam_localuser.so auth sufficient pam_unix.so nullok try_first_pass auth requisite pam_succeed_if.so uid >= 1000 quiet_success auth sufficient pam_sss.so forward_pass auth required pam_deny.so account required pam_unix.so account sufficient pam_localuser.so account sufficient pam_succeed_if.so uid < 1000 quiet account [default=bad success=ok user_unknown=ignore] pam_sss.so account required pam_permit.so password requisite pam_pwquality.so minlen=8 lcredit=-1 ucredit=-1 dcredit=-1 ocredit=-1 try_first_pass local_users_only retry=3 authtok_type= password sufficient pam_unix.so sha512 shadow nullok try_first_pass use_authtok password sufficient pam_sss.so use_authtok password required pam_deny.so session optional pam_keyinit.so revoke session required pam_limits.so -session optional pam_systemd.so session optional pam_oddjob_mkhomedir.so umask=0077 session [success=1 default=ignore] pam_succeed_if.so service in crond quiet use_uid session required pam_unix.so session optional pam_sss.so
设置密码复杂度
- 修改/etc/pam.d/system-auth
password requisite pam_pwquality.so minlen=8 lcredit=-1 ucredit=-1 dcredit=-1 ocredit=-1 try_first_pass local_users_only retry=3 authtok_type=
- 字段解释
minlen 密码长度;lcredit 小写字母;ucredit 大写字母,dcredit 数字;enforce_for_root 密码的复杂度也作用于root用户
设置密码有效期
设置用户密码有效期配置文件/etc/login.defs,只控制了账号密码的有效期和最小长度。修改完/etc/login.defs文件后,会立即生效,但是它只对修改后创建的用户生效。pam_cracklib.so:该模块实现了账户密码的复杂度控制。早期用的是pam_cracklib.so模块,后来改成用pam_pwquality.so了,该模块完全兼容旧的pam_cracklib.so模块该模块对应配置文件路径在/etc/pam.d/目录下
- /etc/login.def参数说明
PASS_MAX_DAYS 90 #密码过期时间,设置90表示90天后过期,默认为99999,表示永不过期(Maximum number of days a password may be used) PASS_MIN_DAYS 2 #两次修改密码的最小间隔时间(Minimum number of days allowed between password changes.) PASS_MIN_LEN 8 #密码最小长度,对于root无效(Minimum acceptable password length.) PASS_WARN_AGE 7 #Number of days warning given before a password expires.
-
默认情况下,用户密码是永远不过期的,可以针对特别用户设置对应的密码有效期,如下
chage -m 5 -M 90 -I 30 -W 14 root
设置登录安全
登录安全相关的控制策略,主要是通过 pam_tally2.so 模块实现的,比如尝试登录失败多少次就锁定用户多少分钟。同样,该模块对应的配置文件路径也是在vi /etc/pam.d/login目录下
- 文件内容
#%PAM-1.0 auth [user_unknown=ignore success=ok ignore=ignore default=bad] pam_securetty.so auth substack system-auth auth include postlogin account required pam_nologin.so account include system-auth password include system-auth # pam_selinux.so close should be the first session rule session required pam_selinux.so close session required pam_loginuid.so session optional pam_console.so # pam_selinux.so open should only be followed by sessions to be executed in the user context session required pam_selinux.so open session required pam_namespace.so session optional pam_keyinit.so force revoke session include system-auth session include postlogin -session optional pam_ck_connector.so
-
参数说明
even_deny_root #同时也限制root用户; deny #设置普通用户和root用户连续错误登陆的最大次数,超过最大次数,则锁定该用户; unlock_time #设定普通用户锁定后,多少时间后解锁,单位是秒; root_unlock_time #设定root用户锁定后,多少时间后解锁,单位是秒;
- 设置终端登录失败次数,如下
执行 vi /etc/pam.d/login 在#%PAM-1.0 下新起一行,加入 auth required pam_tally2.so deny=3 unlock_time=5 even_deny_root root_unlock_time=10 如果不限制root用户,则可以写成 auth required pam_tally2.so deny=3 unlock_time=5
参考文献
(32条消息) linux篇-用户密码与登录安全策略设置_linux密码策略设置_榴莲豆包的博客-CSDN博客