linux用户密码安全策略

Linux PAM


linux PAM配置文件 /etc/pam.d/system-auth

  1. 认证管理auth,用来对用户的身份进行识别.如:提示用户输入密码,或判断用户是否为root等
  2. 账号管理account,对帐号的各项属性进行检查.如:是否允许登录,是否达到最大用户数,或是root用户是否允许在这个终端登录等
  3. 密码管理password,这个模块用来定义用户登录前的,及用户退出后所要进行的操作.如:登录连接信息,用户数据的打开与关闭,挂载文件系统等
  4. 会话管理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

设置密码复杂度

  1. 修改/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=
  2. 字段解释
    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/目录下

  1. /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.
  2. 默认情况下,用户密码是永远不过期的,可以针对特别用户设置对应的密码有效期,如下

    chage -m 5 -M 90 -I 30 -W 14 root

设置登录安全


登录安全相关的控制策略,主要是通过 pam_tally2.so 模块实现的,比如尝试登录失败多少次就锁定用户多少分钟。同样,该模块对应的配置文件路径也是在vi /etc/pam.d/login目录下

  1. 文件内容
    #%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
  2. 参数说明

    even_deny_root    #同时也限制root用户;
    deny              #设置普通用户和root用户连续错误登陆的最大次数,超过最大次数,则锁定该用户;
    unlock_time       #设定普通用户锁定后,多少时间后解锁,单位是秒;
    root_unlock_time  #设定root用户锁定后,多少时间后解锁,单位是秒;
  3. 设置终端登录失败次数,如下
    执行 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博客

linux修改密码策略 - 腾讯云开发者社区-腾讯云 (tencent.com)

linux修改密码策略_sh13661847134的博客-CSDN博客_linux修改密码策略

posted @ 2023-02-25 21:44  MacoPlus  阅读(1808)  评论(0编辑  收藏  举报