文章目录

  • 问题背景
  • 解决
    • CentOS7 解决
    • CentOS6
    • 效果
  • 参考

问题背景

遇到了密码策略的问题。

其中一项是设置用户连续三次登录失败后,锁定用户一个小时。

于是,使用faillock模块在/etc/pam.d/system-auth/etc/pam.d/password-auth中完成了设置。

但是在生产环境中,是使用了ldap认证的,其内已经有了相关的密码策略,使用ldap账号登录机器失败时,会被锁定,属性是pwdAccountLockedTime

但是如果有的场景,又会使用本地用户呢?

所以就需要配置faillockldap一同工作。

解决

注意,当安装authconfig工具后,/etc/pam.d/system-auth是指向/etc/pam.d/system-auth-ac的一个软链接。

CentOS7 解决

  • 保证系统中的system-authpassword-auth是干净的初始化状态
  • 使用authconfig工具,先进行一次原始备份,防止改得面目全非时,可以回滚
    • authconfig --savebackup=system_raw.bak
  • 使用authconfig工具同时开启ldapfaillock
[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

CentOS6authconfig没有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策略共存问题相关推荐

  1. 设计模式之略见一斑(策略模式strategy)

         java设计模式 写道       策略模式在在给定的输入条件下,实现某个目标的计划或者方案.策略与算法类似:算法是定义好的过程,它能够提供一组输入产生一个输出.而策略是一个计划,它也涉及如 ...

  2. 微软用户服务器ldap,如何处理 LDAP 服务器 Cookie

    如何处理 LDAP 服务器 Cookie 05/31/2017 本文内容 适用范围:Windows Server 2022.Windows Server 2019.Windows Server 201 ...

  3. Exchange2003一些基础问题(转)

    1.什么是邮件中继? 2.在Exchange 2003中,如何知道哪些SMTP域是你的权威域? 3.什么是开放中继(匿名中继)? 4.在Exchange 2003中,那些选项可以用来控制邮件中继? 5 ...

  4. exchange问题

    Exchange 常见问题之一 1.什么是邮件中继?  2.在Exchange 2003中,如何知道哪些SMTP域是你的权威域?  3.什么是开放中继(匿名中继)?  4.在Exchange 2003 ...

  5. Ntdsutil对活动目录的管理

    有传言说微软正计划去掉Ntdsutil.exe,该工具从Windows 2000开始就提供到各种活动目录功能的命令行访问.Ntdsutil已经成为我调试活动目录问题的常用工具,但是我却发现,尽管在Wi ...

  6. 湖仓一体技术调研(Apache Hudi、Iceberg和Delta lake对比)

    湖仓一体技术调研(Apache Hudi.Iceberg和Delta lake对比) 作者:程哥哥.刘某迎 .杜某安.刘某.施某宇.严某程 1 引 言 ​ 随着当前的大数据技术逐步革新,企业对单一的数 ...

  7. bluemix_使用Bluemix采用混合云模型

    本教程是使用IBMBluemix®界面的先前版本编写的. 随着技术的飞速发展,某些步骤和插图可能已更改. 我们的团队使用可组合服务方法构建了一个销售报价到现金应用程序,并将其部署在混合云上. 我们的混 ...

  8. 挑战真实场景对话——小爱同学背后关键技术深度解析

    本文来自 PaperWeekly 和 biendata 组织的企业 AI 技术实战讲座.作者为小米人工智能部的崔世起,崔老师以著名的"小爱同学"为实例,详细介绍了全双工关键技术及其 ...

  9. CentOS 6.2目录服务之LDAP(一)

    LDAP是light weight Directory Access Protocol (轻量级目录访问协议)的缩写,其前身是更为古老的DAP协议.基于X.500标准的,但是很简单,并且可以根据需要定 ...

最新文章

  1. 这篇文章,或许可以改善你的不快乐。
  2. RDKit | 基于RDKit的氨基酸序列转换为SMILES
  3. Hadoop + MapReduce 端口自定义配置
  4. 喜报!中华万年历签约神策数据
  5. 面向dba的linux shell 脚本简介,面向dba的linuxshell脚本简介.doc
  6. 理解 React Hooks
  7. SQL Server 2005 智能感知插件 - SQL Prompt 3.8.0.224
  8. java-二分查找树的实现
  9. Bitmap添加文字水印
  10. 拿了股权的员工能不干活吗?
  11. 计算机程序C语言若初始数为48,2016年计算机软考程序员模拟选择试题
  12. rails--bcrypt对密码加密
  13. iconv命令与函数
  14. 网络安全之uRPF技术
  15. Android接入google地图
  16. unity 局域网读取文件_C#读写局域网共享文件夹文件
  17. ORB_SLAM安装以及运行实例
  18. 改wifi密码显示服务器拒绝访问权限,wifi密码对但是拒绝接入? | 192路由网
  19. unity怎么制作云飘动_Unity Shader教程之 旗帜飘扬效果的简单实现
  20. Python实战——外星人入侵游戏

热门文章

  1. Jmeter接口自动化(八)函数 上
  2. 控制电缆分布电容产生的原因及电容量计算
  3. 【《Linus Torvalds自传-Linux OS 之父》摘录】
  4. 打开窗,让阳光洒进来
  5. 地位不保?亚马逊接下来要努力争取市场份额!
  6. 智慧物流自动化智能仓储管理架构分析
  7. 给网页添加背景图片1
  8. 工业场景知识图谱落地实战
  9. 复合牛奶的全球与中国市场2022-2028年:技术、参与者、趋势、市场规模及占有率研究报告
  10. 2023最新最全vscode插件精选