ssh限制登录次数和超时自动退出

系统空闲等待时间(超时自动退出)

  • 修改 /etc/profile 文件 (/etc/profile 全局配置文件)
    1
    2
    export TMOUT=600   #600秒无操作自动退出登录
    readonly TMOUT # 将值设置为readonly 防止用户更改,在shell中无法修改TMOUT
  • source /etc/profile 生效即可
  • 取消此配置
    • 删掉参数 并且 unset TMOUT
    • source /etc/profile 即可

ssh限制登录次数

  • 使用 pam_tally2 模块实现登录限制

    • 验证 pam_tally2 模块是否存在
      1
      whereis pam_tally2
  • 修改 /etc/pam.d/sshd 文件添加如下两行

    1
    2
    3
    auth       requisite    pam_tally2.so  onerr=fail  deny=3 unlock_time=60 even_deny_root root_unlock_time=60

    account required pam_tally2.so(加到postlogin之后,如下图)
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    #%PAM-1.0
    auth required pam_sepermit.so
    auth substack password-auth
    auth requisite pam_tally2.so onerr=fail deny=3 unlock_time=60 even_deny_root root_unlock_time=60
    auth include postlogin
    account required pam_tally2.so
    # Used with polkit to reauthorize users in remote sessions
    -auth optional pam_reauthorize.so prepare
    account required pam_nologin.so
    account include password-auth
    password include password-auth
    # pam_selinux.so close should be the first session rule
    session required pam_selinux.so close
    session required pam_loginuid.so
    # pam_selinux.so open should only be followed by sessions to be executed in the user context
    session required pam_selinux.so open env_params
    session required pam_namespace.so
    session optional pam_keyinit.so force revoke
    session include password-auth
    session include postlogin
    # Used with polkit to reauthorize users in remote sessions
    -session optional pam_reauthorize.so prepare

    • even_deny_root 限制root用户
    • root_unlook_time root用户锁定时间 , 不锁定root 删除即可 配合even_deny_root参数
    • unlock_time=60 普通用户锁定时间
    • onerr=fail 连续错误
    • deny=3 连续错误3次
    • 用户锁定期间, 无论输入正确和错误的密码 都视为密码错误,并以最后一次登录为锁定起始时间,如果用户解锁后输入密码的第一次仍为错误密码, 则再次锁定
  • 检查/etc/ssh/sshd_config 文件是否开启 pam 验证

    1
    UsePAM yes
  • 重启ssh服务

    1
    2
    systemctl restart sshd

  • 使用pam_tally2命令检查登录情况

    1
    2
    3
    pam_tally2 --user=root   # 查看root用户登录失败情况

    pam_tally2 --user=用户1 --reset #重置用户1 的登录失败次数为0

本博客所有文章除特别声明外,均采用 CC BY-SA 4.0 协议 ,转载请注明出处!