首页 > 系统相关 >centos 设置登录失败策略

centos 设置登录失败策略

时间:2024-04-28 09:01:07浏览次数:33  
标签:centos 登录 required auth unix session so 设置 pam

策略要求 一

在一个小时内用户累积失败5次后账户被锁定600秒(10分钟)。账户在锁定期间正确密码也无法登录。

password-auth

#%PAM-1.0
# This file is auto-generated.
# User changes will be destroyed the next time authconfig is run.
auth        required      pam_env.so
# 在认证之前检查失败尝试。如果一个账户在未认证的情况下已经累计了三次失败尝试,那么该账户将被锁定两分钟(120秒)
auth        requisite     pam_faillock.so preauth silent audit deny=5 unlock_time=120 fail_interval=3600  # 新增
auth        required      pam_faildelay.so delay=2000000
auth        sufficient    pam_unix.so nullok try_first_pass
# 确保在密码验证失败后更新失败尝试的记录。
auth        [default=die] pam_faillock.so authfail audit deny=5 unlock_time=120 fail_interval=3600        # 新增
auth        requisite     pam_succeed_if.so uid >= 1000 quiet_success
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     required      pam_permit.so
# 系统会检查账户是否因密码输错过多而被锁定,并阻止被锁定账户的登录。
account     required      pam_faillock.so      # 新增


password    requisite     pam_pwquality.so try_first_pass local_users_only retry=3 authtok_type=
password    sufficient    pam_unix.so sha512 shadow nullok try_first_pass use_authtok


password    required      pam_deny.so

session     optional      pam_keyinit.so revoke
session     required      pam_limits.so
-session     optional      pam_systemd.so
session     [success=1 default=ignore] pam_succeed_if.so service in crond quiet use_uid
session     required      pam_unix.so

system-auth

#%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        requisite     pam_faillock.so preauth silent audit deny=3 unlock_time=120 fail_interval=3600  #新增
auth        required      pam_faildelay.so delay=2000000
auth        sufficient    pam_unix.so nullok try_first_pass
auth        [default=die] pam_faillock.so authfail audit deny=3 unlock_time=120 fail_interval=3600      #新增
auth        requisite     pam_succeed_if.so uid >= 1000 quiet_success 
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     required      pam_permit.so
account     required      pam_faillock.so         # 新增


password    requisite     pam_pwquality.so try_first_pass local_users_only retry=3 authtok_type=
password    sufficient    pam_unix.so sha512 shadow nullok try_first_pass use_authtok
password    required      pam_deny.so

session     optional      pam_keyinit.so revoke
session     required      pam_limits.so
-session     optional      pam_systemd.so
session     [success=1 default=ignore] pam_succeed_if.so service in crond quiet use_uid
session     required      pam_unix.so

策略要求 二

用户累积失败5次后账户被锁定600秒(10分钟)。账户在锁定期间正确密码可以正常登录。

pass

#%PAM-1.0
# This file is auto-generated.
# User changes will be destroyed the next time authconfig is run.


auth        required      pam_env.so
# 指明在 pam_unix.so 模块成功后应该跳过一个后续模块,直接执行下下一个模块。
auth        [success=1 default=ignore]      pam_unix.so nullok                          # 新增
auth        [default=die]    pam_faillock.so authfail audit deny=3 unlock_time=120      # 新增
auth        required      pam_faildelay.so delay=2000000
auth        sufficient    pam_unix.so nullok try_first_pass
auth        requisite     pam_succeed_if.so uid >= 1000 quiet_success
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     required      pam_permit.so
account     required      pam_faillock.so 


password    requisite     pam_pwquality.so try_first_pass local_users_only retry=3 authtok_type=
password    sufficient    pam_unix.so sha512 shadow nullok try_first_pass use_authtok
password    required      pam_deny.so

session     optional      pam_keyinit.so revoke
session     required      pam_limits.so
-session     optional      pam_systemd.so
session     [success=1 default=ignore] pam_succeed_if.so service in crond quiet use_uid
session     required      pam_unix.so

password-auth

#%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        [success=1 default=ignore]      pam_unix.so nullok                          # 新增
auth        [default=die]     pam_faillock.so authfail audit deny=3 unlock_time=120     # 新增
auth        required      pam_faildelay.so delay=2000000
auth        sufficient    pam_unix.so nullok try_first_pass
auth        requisite     pam_succeed_if.so uid >= 1000 quiet_success
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     required      pam_permit.so  
account     required      pam_faillock.so       # 新增


password    requisite     pam_pwquality.so try_first_pass local_users_only retry=3 authtok_type=
password    sufficient    pam_unix.so sha512 shadow nullok try_first_pass use_authtok


password    required      pam_deny.so

session     optional      pam_keyinit.so revoke
session     required      pam_limits.so
-session     optional      pam_systemd.so
session     [success=1 default=ignore] pam_succeed_if.so service in crond quiet use_uid
session     required      pam_unix.so

查看日志输出

# tail -f /var/log/secure
Apr 28 06:50:48 localhost sshd[4647]: Failed password for yunwei from 192.168.174.130 port 44938 ssh2
Apr 28 06:50:48 localhost unix_chkpwd[4650]: password check failed for user (yunwei)
Apr 28 06:50:50 localhost sshd[4647]: Failed password for yunwei from 192.168.174.130 port 44938 ssh2
Apr 28 06:50:51 localhost unix_chkpwd[4651]: password check failed for user (yunwei)
Apr 28 06:50:53 localhost sshd[4647]: Failed password for yunwei from 192.168.174.130 port 44938 ssh2
Apr 28 06:50:53 localhost sshd[4647]: Connection closed by 192.168.174.130 port 44938 [preauth]
Apr 28 06:50:53 localhost sshd[4647]: PAM 2 more authentication failures; logname= uid=0 euid=0 tty=ssh ruser= rhost=192.168.174.130  user=yunwei
Apr 28 06:51:04 localhost sshd[4652]: reverse mapping checking getaddrinfo for bogon [192.168.174.130] failed - POSSIBLE BREAK-IN ATTEMPT!
Apr 28 06:51:07 localhost sshd[4652]: Accepted password for yunwei from 192.168.174.130 port 44940 ssh2
Apr 28 06:51:07 localhost sshd[4652]: pam_unix(sshd:session): session opened for user yunwei by (uid=0)

查看锁定用户信息

查看所有锁定用户信息

# faillock
yunwei:
When                Type  Source                                           Valid
2024-04-28 06:50:23 RHOST 192.168.174.130                                      V
2024-04-28 06:50:25 RHOST 192.168.174.130                                      V
2024-04-28 06:50:28 RHOST 192.168.174.130                                      V

查看指定锁定用户

# faillock --user yunwei
yunwei:
When                Type  Source                                           Valid
2024-04-28 06:50:23 RHOST 192.168.174.130                                      V
2024-04-28 06:50:25 RHOST 192.168.174.130                                      V
2024-04-28 06:50:28 RHOST 192.168.174.130                                      V

解除用户锁定

解除所有用户锁定

# faillock --reset

解除指定用户锁定

# faillock --user yunwei --reset

PAM 关键字说明

required: 这个关键字指定了所列模块是必须的,如果标记为required的模块失败,则认证或授权将立即失败。
requisite: 类似于required,但如果requisite模块失败,PAM会立即返回失败,不再检查其他模块。
sufficient: 如果sufficient模块成功,它会返回“成功”,然后PAM会继续检查其他模块。如果所有sufficient模块都失败,则PAM会继续检查required和requisite模块。
optional: 标记为optional的模块被视为可选的。即使optional模块失败,认证或授权也可以继续。
suggested: 该关键字并非PAM配置中的标准关键字,可能是某些特定系统或应用程序中添加的定制关键字。通常用于建议性的策略和模块。
preauth: 指明模块应在进行实际身份验证之前执行,对用户进行先前的验证。
account: 用于检查用户账户是否可用的模块,例如检查密码期限、用户活动等。
password: 用于更改用户密码的模块。
session: 处理用户会话建立和终止的模块,如在用户登录时启动会话或在用户注销时结束会话。
silent: 当模块失败时,不会产生错误消息或警告。
even_deny_root: 即使是root用户也将受到锁定的影响。
permanent_lockout = false: 设置账户暂时锁定,而非永久锁定。
authfail:认证失败时触发 faillock。
success:是一个控制指令,用于定义在一个模块成功完成后,PAM 应该跳过多少个后续模块而继续执行认证流程。如果指定了 success=1,PAM 将会跳过下一个模块,直接执行下下一个模块。如果指令是 success=2,那么在一个成功状态后,将会跳过两个模块,以此类推。
audit: 用于记录认证事件和日志的审计模块,可以将关键事件和信息写入系统的安全日志中。这些事件可以包括成功或失败的认证尝试、账户锁定、密码更改等。
reset_time=3600: 设置重置失败计数的时间间隔为3600秒(1小时),以实现累积失败次数的设定。
default: default 关键字用于指定当没有其他更具体的条件或情况匹配时应采取的默认行为。它通常与条件语句一起使用,用于定义在所有其他条件均未匹配时所应使用的行为。
default=ignore: 当未匹配任何其他规则时,default=ignore 表示忽略此模块,即不执行任何操作。
default=die: 当未匹配任何其他规则时,default=die 表示立即中止认证或授权过程,并返回失败状态。
default=bad: 在未匹配其他规则时,default=bad 表示返回失败状态,但允许继续尝试其他模块。
default=ok: 当未匹配任何其他规则时,default=ok 表示认证或授权成功,继续进行后续操作。

system-auth 文件说明

PAM配置文件用于控制用户身份验证、账户检查、密码更改等活动的策略。在CentOS系统中,PAM框架负责管理这些策略。
#%PAM-1.0          %PAM-1.0:标识这个文件遵循PAM 1.0的规范。这个文件是自动生成的,如果使用authconfig工具重新配置PAM,用户所做的更改将会被覆盖。
# This file is auto-generated.
# User changes will be destroyed the next time authconfig is run.

# 认证(auth)
auth        required      pam_env.so          # 加载环境变量。
auth        required      pam_faildelay.so delay=2000000  # 在身份验证失败后延迟2秒再进行下一次尝试。
auth        sufficient    pam_unix.so nullok try_first_pass # 使用Unix标准认证,nullok允许空密码,try_first_pass尝试使用之前的密码。
auth        requisite     pam_succeed_if.so uid >= 1000 quiet_success # 仅当用户ID大于等于1000时认证才继续,quiet_success在成功时不输出信息。
auth        required      pam_deny.so  # 默认拒绝所有认证,除非之前的某个模块已经成功。

# 账户管理(account)
account     required      pam_unix.so   # 使用Unix账户管理。
account     sufficient    pam_localuser.so   # 如果是本地用户,则此模块足够进行账户管理。
account     sufficient    pam_succeed_if.so uid < 1000 quiet  # 对于UID小于1000的用户,此模块足以满足账户管理需求,quiet在成功时不输出信息。
account     required      pam_permit.so  # 无条件允许。

# 密码管理(password)
password    requisite     pam_pwquality.so try_first_pass local_users_only retry=3 authtok_type=  # 强制密码质量要求,try_first_pass尝试使用前一密码,local_users_only只适用于本地用户,retry=3重试3次。
password    sufficient    pam_unix.so sha512 shadow nullok try_first_pass use_authtok   # 使用Unix密码管理,sha512使用SHA-512散列,shadow使用阴影密码文件,nullok允许空密码,use_authtok使用更新的认证令牌。
password    required      pam_deny.so  # 默认拒绝所有密码更改请求。

# 会话管理(session)
session     optional      pam_keyinit.so revoke # 初始化关键会话并在会话结束时撤销它。
session     required      pam_limits.so  # 应用限制,如文件大小、进程数等。
-session     optional      pam_systemd.so  # 为会话启动systemd用户切片。
session     [success=1 default=ignore] pam_succeed_if.so service in crond quiet use_uid  # 如果会话是由crond服务启动,则此模块成功执行,不输出信息,使用UID
session     required      pam_unix.so  # 加载Unix风格会话管理。

标签:centos,登录,required,auth,unix,session,so,设置,pam
From: https://www.cnblogs.com/wangguishe/p/18159909

相关文章

  • Centos7搭建本地yum源(最少步骤)
    Centos7搭建本地yum源(最少步骤)配置本地yum源一、部署磁盘1、查看磁盘是否已连接2、查看磁盘所属的盘符lsblk这里的磁盘名称都在/dev下面的。3、挂载和永久挂载挂载前要创建挂载文件(这里就挂载到/mnt/dvd吧)mkdir/mnt/dvd(1)挂载mount/dev/sr0/mnt/dvd(2)永久挂载需......
  • centos7出现网络不可达connect network is unreachable?
    centos7出现网络不可达connect:networkisunreachable?问题:在Linux系统中,用户尝试修改IP地址配置后,遇到ping命令提示connect:networkisunreachable,表明网络不可达。原因分析:IP配置错误:修改后的IP地址可能不在正确的子网内,或者与默认网关不在同一网段,导致无法正常通信......
  • centos7虚拟机配置ens网卡静态地址还是会dhcp分配一个地址?
    centos7虚拟机配置ens网卡静态地址还是会dhcp分配一个地址?问题现象[root@cent0s7~]#ipa1:lo:<LOOPBACK,UP,LOWER_UP>mtu65536qdiscnoqueuestateUNKNOWNgroupdefaultqlen1000link/loopback00:00:00:00:00:00brd00:00:00:00:00:00inet127.0.0.1/8s......
  • vmware中安装centos7, 安装redis, 并通过可视化软件(RESP)连接
    1.虚拟机网络问题解决刚安好的centos可能没有网卡(输入ipa没有ip地址),此时需要进行如下操作 vi/etc/sysconfig/network-scripts/ifconfig-ens33修改成如下:ONBOOT=yes 然后重启网络服务:servicenetworkrestart此时重新查看ipa就可以看到ip地址了在本地ping虚拟机......
  • Matplotlib 设置x轴的标签
    在Matplotlib中,如果你有一个时间序列数据,并且x轴上的时间标签太多导致它们重叠或难以阅读,你可以通过几种方法来减少显示的标签数量或调整它们的格式。以下是一些常用的方法:使用plt.xticks()手动设置x轴标签:你可以通过plt.xticks()手动设置你想显示的x轴标签的位置和文本。imp......
  • vue,js直接导出excel,xlsx的方法,XLSX_STYLE 行高设置失效的问题解决
    1、先安装依赖:xlsx、xlsx-style、file-saver三个包npminstallxlsxxlsx-stylefile-saver2、引入:<script>import*asXLSXfrom'xlsx/xlsx.mjs'importXLSX_STYLEfrom'xlsx-style';import{saveAs}from'file-saver';exportdefau......
  • kali 设置 Java 版本,并更换为 1.8 版本
    kali设置Java版本,并更换为1.8版本1.安装JDK1.下载java1.8:https://repo.huaweicloud.com/java/jdk/8u202-b08/jdk-8u202-linux-x64.tar.gz2.建立目录,将下载的jdk的安装包复制过去并进行解压sudomkdir-p/usr/local/javacpjdk-8u202-linux-x64.tar.gz/usr/l......
  • alertmanager 设置 repeat_interval 不生效
    这个问题其实并不是repeat_interval真的没生效,而是告警没有重复,人家发的是新的告警,没有命中repeat_interval规则。举个栗子-alert:HighCpuLoadexpr:100-(avg(irate(node_cpu_seconds_total{mode="idle"}[5m]))by(instance)*100)>70for:1m......
  • mongodb异机做时间点恢复(异机建议部署免密登录)
    环境:OS:Centos7DB:mongodb5原环境:1主2从,异机恢复的环境:单机(oplog.rs是否开启都可以,开启可以参考:https://www.cnblogs.com/hxlasky/p/17979922) 1.查看当前的表数据情况myrepl:PRIMARY>usedb_pushmsg;switchedtodbdb_pushmsgmyrepl:PRIMARY>showtables;app......
  • 获取html中的节点对象以及设置标签的属性
    1.设置了三种方法来根据不同的场合获取不同的节点对象:vartest=function(){//获取id的值vard1=document.getElementById("d1");alert(d1.innerHTML)}vartest1=function(){//获取标签的值vardivs=document.getElementsByTagName("div");for(vari=0;i<......