[Linux]el8安全配置faillock:登录失败达阈值自动锁定账户配置

前言

本篇文章的配置仅使用于el8版本的Linux,目前已在centos8、BCLinux8上验证成功,其他版本系统是否可行还得考查。
el8中管理用户登录失败锁定账户所用的模块是faillock.so,如果想要将配置应用与其他版本的Linux,建议确认Linux上是否存在faillock模块,并且在配置之前使用同版本的虚拟机进行配置测试,并在正式配置之前进行必要的备份操作。
——这个配置的风险可能会远比你预想的高,如果配置错了,你可能没有挽回的机会,不得不重装系统。哥们在这个问题上吃过一次大亏,引以为戒。

一、配置内容

auth required pam_faillock.so preauth silent audit deny=3 unlock_time=300
auth [success=1 default=ignore] pam_unix.so nullok_secure
auth required pam_faillock.so authfail audit deny=3 unlock_time=300
account required pam_faillock.so

这个是配置的内容,其中deny=3表示输错3次锁定账号,unlock_time=300表示锁定时间,单位为秒。
这两个参数可以根据实际情况进行修改,注意前后统一,并且不要改动其他内容。

二、需要配置的文件

sudo vi /etc/pam.d/login
sudo vi /etc/pam.d/sshd
sudo vi /etc/pam.d/system-auth
sudo vi /etc/pam.d/password-auth

从安全方面考虑,以上几个文件都需要加以限制,它们分别对不同方面的安全认证进行管理,你可以根据实际情况进行调整,我简单介绍下这几个配置分别管理了什么:

  • login:管理本地用户登录的配置,例如你用的vmware虚拟机,在vmware虚拟机窗口中进行登录时,会进行该文件的认证逻辑。
  • sshd:管理远程ssh登录认证的配置。例如你通过ssh软件连接到vmware虚拟机,那么进入的将会是这个文件的认证逻辑。
  • system-auth:当用户在系统中进行管理操作,执行sudo权限相关的命令时,例如sudo vi /etc/my.cnf,将会进行这个文件的认证逻辑。
  • passord-auth:当用户执行passwd命令尝试修改密码时,将会进入该文件的认证逻辑。

如果你对其中的某个文件的修改有误,导致文件中的认证逻辑无法成功走下去,那么最终便会认证失败,即使你一直输入的时正确的密码。
例如当你对system-auth文件进行修改有误,导致文件的认证逻辑无法成功走下去,那么你的所有sudo命令都语法成功执行,100%“密码错误”。(单是这种情况情况还可以抢救,不用急着remake)

三、配置的细节

认证配置文件中的逻辑具有前后关系,不可随意颠倒。
pam文件的配置有四个指令:

  • auth:用于处理用户认证,即验证用户的身份。
  • account:用于检查用户的账号状态,确保用户有权登录系统。
  • session:即在用户成功登录后,系统如何处理会话的建立和终止。
  • password:处理密码管理,即当用户更改密码时,系统如何处理密码的更改

配置文件的配置,一般都是以auth、account、session、password的顺序进行配置的。
而我们配置的内容是3条auth指令和一条account指令,因此应该要加在原本的auth和account指令之间。
如下所示:

auth        required                                     pam_env.so
auth        required                                     pam_faildelay.so delay=2000000
auth        sufficient                                   pam_fprintd.so
auth        [default=1 ignore=ignore success=ok]         pam_usertype.so isregular
auth        [default=1 ignore=ignore success=ok]         pam_localuser.so
auth        sufficient                                   pam_unix.so nullok
auth        [default=1 ignore=ignore success=ok]         pam_usertype.so isregular
auth        sufficient                                   pam_sss.so forward_pass
auth        required                                     pam_deny.so
<faillock的配置加在这里>
account     required                                     pam_unix.so
account     sufficient                                   pam_localuser.so
account     sufficient                                   pam_usertype.so issystem
account     [default=bad success=ok user_unknown=ignore] pam_sss.so
account     required                                     pam_permit.sopassword    requisite                                    pam_pwquality.so local_users_only
password    sufficient                                   pam_unix.so sha512 shadow nullok use_authtok
password    [success=1 default=ignore]                   pam_localuser.so
password    sufficient                                   pam_sss.so use_authtok
password    required                                     pam_deny.sosession     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
session     optional                                     pam_sss.so

注:此处仅做实例,其他pam配置可能与你系统上的有所差别,但这不是重点,你只明确应该把我们的配置放在哪里就行。其他无关的配置,请不要随意改动,避免给自己造成麻烦。

四、配置的日志

4.1 监视认证日志

sudo tail -f /var/log/secure

在你配置之前,建议单独开一个会话,执行以上命令,这个文件中记录着安全认证的情况,如果你的配置出现问题,也将会在这里找到线索。
注意一定要在修改配置之前,因为也只有这个时候,你才能100%查看这个文件的内容。

4.2 保持连接会话

在修改完成之后,建议保持当前会话不断开,并尝试新建一个新的会话。
这是因为,pam认证配置有误,会导致认证失败,新会话无法建立。但是原有的会话并不会断开。


原创内容,转载请说明出处。
这个pam认证配置的更多细节,我至今没有完成了解,欢迎大佬在评论区交流指导,谢谢。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/68174.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【nnUNetv2进阶】二十七、nnUNetv2 魔改网络-小试牛刀-引入FMB模块

nnunet使用及改进教程。 【nnUNetv2实践】一、nnUNetv2安装 【nnUNetv2实践】二、nnUNetv2快速入门-训练验证推理集成一条龙教程 【nnUNe

vue3中自定一个组件并且能够用v-model对自定义组件进行数据的双向绑定

1. 基础用法 在 Vue3 中&#xff0c;v-model 在组件上的使用有了更灵活的方式。默认情况下&#xff0c;v-model 使用 modelValue 作为 prop&#xff0c;update:modelValue 作为事件。 1.1 基本示例 <!-- CustomInput.vue --> <template><input:value"mo…

TCP协议(网络)

目录 TCP协议 TCP协议段格式(报文首部) 原理图​编辑 确认应答(ACK)机制 报头介绍 超时重传机制​编辑 连接管理机制 为什么要三次握手 服务端状态转化: 客户端状态转化: 理解TIME_WAIT状态 解决TIME_WAIT状态引起的bind失败的方法(可以立即链接端口号) setsockop…

【JS|第29期】JavaScript中的事件类型

日期&#xff1a;2025年1月25日 作者&#xff1a;Commas 签名&#xff1a;(ง •_•)ง 积跬步以致千里,积小流以成江海…… 注释&#xff1a;如果您觉得有所帮助&#xff0c;帮忙点个赞&#xff0c;也可以关注我&#xff0c;我们一起成长&#xff1b;如果有不对的地方&#xf…

基于Java+socket实现多线程聊天室-控制台版

基于Javasocket实现多线程聊天室-控制台版 一、系统介绍二、功能展示1.运行效果 三、代码展示四、其它1.其他系统实现2.获取源码 一、系统介绍 首先启动server端&#xff0c;然后启动client端。任意一个client发送给server的消息都将会被转发给所有在线的client&#xff0c;实…

Redis-缓存

1.缓存 1.1 什么是缓存&#xff1f; 越野车,山地自行车,都拥有"避震器",防止车体加速后因惯性,在酷似"U"字母的地形上飞跃,硬着陆导致的损害,像个弹簧一样;同样,实际开发中,系统也需要"避震器",防止过高的数据访问猛冲系统,导致其操作线程无法…

群晖docker获取私有化镜像http: server gave HTTP response to HTTPS client].

群晖docker获取私有化镜像提示http: server gave HTTP response to HTTPS clien 问题描述 层级时间用户事件Information2023/07/08 12:47:45cxlogeAdd image from xx.xx.31.240:1923/go-gitea/gitea:1.19.3Error2023/07/08 12:47:48cxlogeFailed to pull image [Get "http…

MySQL日志详解——日志分类、二进制日志bin log、回滚日志undo log、重做日志redo log

文章目录 一、前言1.1 MySQL体系结构1.2 MySQL日志分类1.3 其他几种日志1.3.1 查询日志1.3.2 慢查询日志1.3.3 错误日志 二、bin log 二进制日志2.1 bin log简介2.2 binlog日志格式2.3 日志删除2.4 写入/刷盘机制 三、undo log 回滚日志3.1 undo log简介3.2 隐藏字段 —— 事务…

算法中的移动窗帘——C++滑动窗口算法详解

1. 滑动窗口简介 滑动窗口是一种在算法中常用的技巧&#xff0c;主要用来处理具有连续性的子数组或子序列问题。通过滑动窗口&#xff0c;可以在一维数组或字符串上维护一个固定或可变长度的窗口&#xff0c;逐步移动窗口&#xff0c;避免重复计算&#xff0c;从而提升效率。常…

亚博microros小车-原生ubuntu支持系列:11手指控制与手势识别

识别框架还是沿用之前的了MediaPipe Hand。 背景知识不摘重复&#xff0c;参见之前的&#xff1a;亚博microros小车-原生ubuntu支持系列&#xff1a;10-画笔-CSDN博客 手指控制 src/yahboom_esp32_mediapipe/yahboom_esp32_mediapipe/目录下新建文件10_HandCtrl.py&#xff…

LabVIEW太阳能照明监控系统

在公共照明领域&#xff0c;传统的电力照明系统存在高能耗和维护不便等问题。利用LabVIEW开发太阳能照明监控系统&#xff0c;通过智能控制和实时监测&#xff0c;提高能源利用效率&#xff0c;降低维护成本&#xff0c;实现照明系统的可持续发展。 ​ 项目背景 随着能源危机…

今何在:“思索答案就是一种对虚无的战斗”

今何在&#xff08;网络文学作家、编剧&#xff09; 白惠元&#xff08;北京师范大学文学院副教授&#xff09; 网络文学发展二十余年来&#xff0c;其创作生态虽历经迭代&#xff0c;同时也为当代文学版图留下了一些经典性长篇作品。本栏目邀请北京大学网络文学研究团队&…

Linux的权限和一些shell原理

目录 shell的原理 Linux权限 sudo命令提权 权限 文件的属性 ⽂件类型&#xff1a; 基本权限&#xff1a; chmod改权限 umask chown 该拥有者 chgrp 改所属组 最后&#xff1a; 目录权限 粘滞位 shell的原理 我们广义上的Linux系统 Linux内核Linux外壳 Linux严格…

Avalonia UI MVVM DataTemplate里绑定Command

Avalonia 模板里面绑定ViewModel跟WPF写法有些不同。需要单独绑定Command. WPF里面可以直接按照下面的方法绑定DataContext. <Button Content"Button" Command"{Binding DataContext.ClickCommand, RelativeSource{RelativeSource AncestorType{x:Type User…

MATLAB语言的文件操作

MATLAB语言的文件操作 1. 引言 MATLAB是一种高性能的语言&#xff0c;广泛应用于数学计算、数据分析和可视化等领域。在实际的应用中&#xff0c;经常需要对文件进行操作&#xff0c;包括读取文件、写入文件以及对文件进行修改等。本文将详细探讨MATLAB的文件操作&#xff0c…

用wordpress搭建跨境电商独立站后没有询盘该怎么办

如果在使用WordPress搭建跨境电商独立站后没有收到询盘&#xff0c;可以采取以下详细解决办法&#xff1a; 优化网站基础建设 选择合适的域名和主机 建议选择国际化的域名(如以.com结尾)&#xff0c;并选择支持SEO优化的主机服务商&#xff0c;例如Namecheap或SiteGround&am…

ConnectionResetError: [Errno 104] Connection reset by peer

python遇到这样一个报错&#xff1a; imap imaplib.IMAP4_SSL("outlook.office365.com", 993)File "/usr/lib/python3.9/imaplib.py", line 1324, in __init__IMAP4.__init__(self, host, port, timeout)File "/usr/lib/python3.9/imaplib.py",…

WPF常见面试题解答

以下是WPF&#xff08;Windows Presentation Foundation&#xff09;面试中常见的问题及解答&#xff0c;涵盖基础概念、高级功能和实际应用&#xff0c;帮助你更好地准备面试&#xff1a; 基础概念 什么是WPF&#xff1f; WPF是微软开发的用于构建桌面应用程序的UI框架&#x…

Redis - 数据类型与编码方式

Redis中常用的5种数据类型 包括字符串、哈希、列表、集合、有序集合 字符串&#xff0c;相当于Java中的String哈希&#xff0c;相当于Java中的HashMap列表&#xff0c;相当于Java中的List集合&#xff0c;相当于Java中的Set有序集合&#xff0c;多存储了一个权重 Redis承诺使…

git Bash通过SSH key 登录github的详细步骤

1 问题 通过在windows 终端中的通过git登录github 不再是通过密码登录了&#xff0c;需要本地生成一个密钥&#xff0c;配置到gihub中才能使用 2 步骤 &#xff08;1&#xff09;首先配置用户名和邮箱 git config --global user.name "用户名"git config --global…