faillock与ldap策略共存问题
文章目录
- 问题背景
- 解决
- CentOS7 解决
- CentOS6
- 效果
- 参考
问题背景
遇到了密码策略的问题。
其中一项是设置用户连续三次登录失败后,锁定用户一个小时。
于是,使用faillock
模块在/etc/pam.d/system-auth
和/etc/pam.d/password-auth
中完成了设置。
但是在生产环境中,是使用了ldap
认证的,其内已经有了相关的密码策略,使用ldap
账号登录机器失败时,会被锁定,属性是pwdAccountLockedTime
。
但是如果有的场景,又会使用本地用户呢?
所以就需要配置faillock
与ldap
一同工作。
解决
注意,当安装authconfig
工具后,/etc/pam.d/system-auth
是指向/etc/pam.d/system-auth-ac
的一个软链接。
CentOS7 解决
- 保证系统中的
system-auth
和password-auth
是干净的初始化状态 - 使用
authconfig
工具,先进行一次原始备份,防止改得面目全非时,可以回滚authconfig --savebackup=system_raw.bak
- 使用
authconfig
工具同时开启ldap
和faillock
[root@nano-kvm-13 pam.d]# authconfig --enablemkhomedir --enableldap --enableldapauth --ldapserver=ldap://10.6.38.254 --ldapbasedn="dc=biyao,dc=com" --enableshadow --enablefaillock --faillockargs="preauth silent audit deny=3 unlock_time=3600" --update
- 再手动修改一下
system-auth
文件 ,否则faillock
不生效
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 required pam_faildelay.so delay=2000000
auth required pam_faillock.so preauth silent preauth silent audit deny=3 unlock_time=3600
auth sufficient pam_unix.so nullok try_first_pass
auth requisite pam_succeed_if.so uid >= 1000 quiet_success
auth sufficient pam_ldap.so use_first_pass
#auth required pam_faillock.so authfail preauth silent audit deny=3 unlock_time=3600 这一行改成下面的样子
auth required pam_faillock.so authfail audit deny=3 unlock_time=3600
auth required pam_deny.soaccount required pam_faillock.so
account required pam_unix.so broken_shadow
account sufficient pam_localuser.so
account sufficient pam_succeed_if.so uid < 1000 quiet
account [default=bad success=ok user_unknown=ignore] pam_ldap.so
account required pam_permit.sopassword requisite pam_pwquality.so try_first_pass local_users_only retry=3 authtok_type=
password sufficient pam_unix.so md5 shadow nullok try_first_pass use_authtok
password sufficient pam_ldap.so use_authtok
password required pam_deny.sosession optional pam_keyinit.so revoke
session required pam_limits.so
-session optional pam_systemd.so
session optional pam_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_ldap.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 required pam_faildelay.so delay=2000000
auth required pam_faillock.so preauth silent preauth silent audit deny=3 unlock_time=3600
auth sufficient pam_unix.so nullok try_first_pass
auth required pam_faillock.so authfail audit deny=3 unlock_time=3600
auth requisite pam_succeed_if.so uid >= 1000 quiet_success
auth sufficient pam_ldap.so use_first_pass
auth required pam_deny.soaccount required pam_faillock.so
account required pam_unix.so broken_shadow
account sufficient pam_localuser.so
account sufficient pam_succeed_if.so uid < 1000 quiet
account [default=bad success=ok user_unknown=ignore] pam_ldap.so
account required pam_permit.sopassword requisite pam_pwquality.so try_first_pass local_users_only retry=3 authtok_type=
password sufficient pam_unix.so md5 shadow nullok try_first_pass use_authtok
password sufficient pam_ldap.so use_authtokpassword required pam_deny.sosession optional pam_keyinit.so revoke
session required pam_limits.so
-session optional pam_systemd.so
session optional pam_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_ldap.so
CentOS6
CentOS6
上authconfig
没有faillock
的选项。
# 先移除这个,再安装nss-pam-ldapd, openldap-clients
[root@biyaotest pam.d]# yum remove sssd[root@biyaotest pam.d]# authconfig --enablemkhomedir --enableldap --enableldapauth --ldapserver=ldap://10.6.38.254 --ldapbasedn="dc=biyao,dc=com" --enableshadow --disableldaptls --disableldapstarttls --disablesssd --disablesssdauth --update
Starting nslcd: [ OK ]
Starting oddjobd: [ OK ]
- 手动添加
faillock
的配置项
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 sufficient pam_fprintd.so
auth required pam_faillock.so preauth silent preauth silent audit deny=3 unlock_time=3600
auth sufficient pam_unix.so nullok try_first_pass
auth requisite pam_succeed_if.so uid >= 500 quiet
auth sufficient pam_ldap.so use_first_pass
auth required pam_faillock.so authfail audit deny=3 unlock_time=3600
auth required pam_deny.soaccount required pam_faillock.so
account required pam_unix.so broken_shadow
account sufficient pam_localuser.so
account sufficient pam_succeed_if.so uid < 500 quiet
account [default=bad success=ok user_unknown=ignore] pam_ldap.so
account required pam_permit.sopassword requisite pam_cracklib.so try_first_pass retry=3 type=
password sufficient pam_unix.so sha512 shadow nullok try_first_pass use_authtok
password sufficient pam_ldap.so use_authtok
password required pam_deny.sosession optional pam_keyinit.so revoke
session required pam_limits.so
session optional pam_oddjob_mkhomedir.so
session [success=1 default=ignore] pam_succeed_if.so service in crond quiet use_uid
session required pam_unix.so
session optional pam_ldap.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 required pam_faillock.so preauth silent preauth silent audit deny=3 unlock_time=3600
auth sufficient pam_unix.so nullok try_first_pass
auth required pam_faillock.so authfail audit deny=3 unlock_time=3600
auth requisite pam_succeed_if.so uid >= 500 quiet
auth sufficient pam_ldap.so use_first_pass
auth required pam_deny.soaccount required pam_faillock.so
account required pam_unix.so broken_shadow
account sufficient pam_localuser.so
account sufficient pam_succeed_if.so uid < 500 quiet
account [default=bad success=ok user_unknown=ignore] pam_ldap.so
account required pam_permit.sopassword requisite pam_cracklib.so try_first_pass retry=3 type=
password sufficient pam_unix.so sha512 shadow nullok try_first_pass use_authtok
password sufficient pam_ldap.so use_authtok
password required pam_deny.sosession optional pam_keyinit.so revoke
session required pam_limits.so
session optional pam_oddjob_mkhomedir.so
session [success=1 default=ignore] pam_succeed_if.so service in crond quiet use_uid
session required pam_unix.so
session optional pam_ldap.so
效果
- 本地用户和ldap用户登录失败都会被faillock记录。
- 本地用户登录失败后,faillock --reset 即可使用正确密码重新登录
- ldap用户登录失败后,会同时被 faillock 和 ldap 共同锁定,
- 这时,faillock --reset 之后,使用正确密码登录,因为ldap中没有解除,仍然会失败,faillock仍然会记录
- 需要在两边共同解锁
参考
- https://access.redhat.com/documentation/en-us/red_hat_enterprise_linux/8/html/configuring_authentication_and_authorization_in_rhel/configuring-user-authentication-using-authselect_configuring-authentication-and-authorization-in-rhel : CHAPTER 1. CONFIGURING USER AUTHENTICATION USING AUTHSELECT
faillock与ldap策略共存问题相关推荐
- 设计模式之略见一斑(策略模式strategy)
java设计模式 写道 策略模式在在给定的输入条件下,实现某个目标的计划或者方案.策略与算法类似:算法是定义好的过程,它能够提供一组输入产生一个输出.而策略是一个计划,它也涉及如 ...
- 微软用户服务器ldap,如何处理 LDAP 服务器 Cookie
如何处理 LDAP 服务器 Cookie 05/31/2017 本文内容 适用范围:Windows Server 2022.Windows Server 2019.Windows Server 201 ...
- Exchange2003一些基础问题(转)
1.什么是邮件中继? 2.在Exchange 2003中,如何知道哪些SMTP域是你的权威域? 3.什么是开放中继(匿名中继)? 4.在Exchange 2003中,那些选项可以用来控制邮件中继? 5 ...
- exchange问题
Exchange 常见问题之一 1.什么是邮件中继? 2.在Exchange 2003中,如何知道哪些SMTP域是你的权威域? 3.什么是开放中继(匿名中继)? 4.在Exchange 2003 ...
- Ntdsutil对活动目录的管理
有传言说微软正计划去掉Ntdsutil.exe,该工具从Windows 2000开始就提供到各种活动目录功能的命令行访问.Ntdsutil已经成为我调试活动目录问题的常用工具,但是我却发现,尽管在Wi ...
- 湖仓一体技术调研(Apache Hudi、Iceberg和Delta lake对比)
湖仓一体技术调研(Apache Hudi.Iceberg和Delta lake对比) 作者:程哥哥.刘某迎 .杜某安.刘某.施某宇.严某程 1 引 言 随着当前的大数据技术逐步革新,企业对单一的数 ...
- bluemix_使用Bluemix采用混合云模型
本教程是使用IBMBluemix®界面的先前版本编写的. 随着技术的飞速发展,某些步骤和插图可能已更改. 我们的团队使用可组合服务方法构建了一个销售报价到现金应用程序,并将其部署在混合云上. 我们的混 ...
- 挑战真实场景对话——小爱同学背后关键技术深度解析
本文来自 PaperWeekly 和 biendata 组织的企业 AI 技术实战讲座.作者为小米人工智能部的崔世起,崔老师以著名的"小爱同学"为实例,详细介绍了全双工关键技术及其 ...
- CentOS 6.2目录服务之LDAP(一)
LDAP是light weight Directory Access Protocol (轻量级目录访问协议)的缩写,其前身是更为古老的DAP协议.基于X.500标准的,但是很简单,并且可以根据需要定 ...
最新文章
- 这篇文章,或许可以改善你的不快乐。
- RDKit | 基于RDKit的氨基酸序列转换为SMILES
- Hadoop + MapReduce 端口自定义配置
- 喜报!中华万年历签约神策数据
- 面向dba的linux shell 脚本简介,面向dba的linuxshell脚本简介.doc
- 理解 React Hooks
- SQL Server 2005 智能感知插件 - SQL Prompt 3.8.0.224
- java-二分查找树的实现
- Bitmap添加文字水印
- 拿了股权的员工能不干活吗?
- 计算机程序C语言若初始数为48,2016年计算机软考程序员模拟选择试题
- rails--bcrypt对密码加密
- iconv命令与函数
- 网络安全之uRPF技术
- Android接入google地图
- unity 局域网读取文件_C#读写局域网共享文件夹文件
- ORB_SLAM安装以及运行实例
- 改wifi密码显示服务器拒绝访问权限,wifi密码对但是拒绝接入? | 192路由网
- unity怎么制作云飘动_Unity Shader教程之 旗帜飘扬效果的简单实现
- Python实战——外星人入侵游戏