LDAP密码策略配置

LDAP 开启密码策略管理

部署过程

  1. 导入基础 objectClass

    # 加载ppolicy配置
    ldapadd -Y EXTERNAL -H ldapi:/// -f new_ppolicy.ldif
    

    new_ppolicy.ldif内容如下:

    dn: cn=ppolicy,cn=schema,cn=config
    objectClass: olcSchemaConfig
    cn: ppolicy
    olcAttributeTypes: {0}( 1.3.6.1.4.1.42.2.27.8.1.1 NAME 'pwdAttribute' EQUALI
     TY objectIdentifierMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.38 )
    olcAttributeTypes: {1}( 1.3.6.1.4.1.42.2.27.8.1.2 NAME 'pwdMinAge' EQUALITY 
     integerMatch ORDERING integerOrderingMatch SYNTAX 1.3.6.1.4.1.1466.115.121.
     1.27 SINGLE-VALUE )
    olcAttributeTypes: {2}( 1.3.6.1.4.1.42.2.27.8.1.3 NAME 'pwdMaxAge' EQUALITY 
     integerMatch ORDERING integerOrderingMatch SYNTAX 1.3.6.1.4.1.1466.115.121.
     1.27 SINGLE-VALUE )
    olcAttributeTypes: {3}( 1.3.6.1.4.1.42.2.27.8.1.4 NAME 'pwdInHistory' EQUALI
     TY integerMatch ORDERING integerOrderingMatch SYNTAX 1.3.6.1.4.1.1466.115.1
     21.1.27 SINGLE-VALUE )
    olcAttributeTypes: {4}( 1.3.6.1.4.1.42.2.27.8.1.5 NAME 'pwdCheckQuality' EQU
     ALITY integerMatch ORDERING integerOrderingMatch SYNTAX 1.3.6.1.4.1.1466.11
     5.121.1.27 SINGLE-VALUE )
    olcAttributeTypes: {5}( 1.3.6.1.4.1.42.2.27.8.1.6 NAME 'pwdMinLength' EQUALI
     TY integerMatch ORDERING integerOrderingMatch SYNTAX 1.3.6.1.4.1.1466.115.1
     21.1.27 SINGLE-VALUE )
    olcAttributeTypes: {6}( 1.3.6.1.4.1.42.2.27.8.1.7 NAME 'pwdExpireWarning' EQ
     UALITY integerMatch ORDERING integerOrderingMatch SYNTAX 1.3.6.1.4.1.1466.1
     15.121.1.27 SINGLE-VALUE )
    olcAttributeTypes: {7}( 1.3.6.1.4.1.42.2.27.8.1.8 NAME 'pwdGraceAuthNLimit' 
     EQUALITY integerMatch ORDERING integerOrderingMatch SYNTAX 1.3.6.1.4.1.1466
     .115.121.1.27 SINGLE-VALUE )
    olcAttributeTypes: {8}( 1.3.6.1.4.1.42.2.27.8.1.9 NAME 'pwdLockout' EQUALITY
      booleanMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.7 SINGLE-VALUE )
    olcAttributeTypes: {9}( 1.3.6.1.4.1.42.2.27.8.1.10 NAME 'pwdLockoutDuration'
      EQUALITY integerMatch ORDERING integerOrderingMatch SYNTAX 1.3.6.1.4.1.146
     6.115.121.1.27 SINGLE-VALUE )
    olcAttributeTypes: {10}( 1.3.6.1.4.1.42.2.27.8.1.11 NAME 'pwdMaxFailure' EQU
     ALITY integerMatch ORDERING integerOrderingMatch SYNTAX 1.3.6.1.4.1.1466.11
     5.121.1.27 SINGLE-VALUE )
    olcAttributeTypes: {11}( 1.3.6.1.4.1.42.2.27.8.1.12 NAME 'pwdFailureCountInt
     erval' EQUALITY integerMatch ORDERING integerOrderingMatch SYNTAX 1.3.6.1.4
     .1.1466.115.121.1.27 SINGLE-VALUE )
    olcAttributeTypes: {12}( 1.3.6.1.4.1.42.2.27.8.1.13 NAME 'pwdMustChange' EQU
     ALITY booleanMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.7 SINGLE-VALUE )
    olcAttributeTypes: {13}( 1.3.6.1.4.1.42.2.27.8.1.14 NAME 'pwdAllowUserChange
     ' EQUALITY booleanMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.7 SINGLE-VALUE )
    olcAttributeTypes: {14}( 1.3.6.1.4.1.42.2.27.8.1.15 NAME 'pwdSafeModify' EQU
     ALITY booleanMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.7 SINGLE-VALUE )
    olcAttributeTypes: {15}( 1.3.6.1.4.1.42.2.27.8.1.30 NAME 'pwdMaxRecordedFail
     ure' EQUALITY integerMatch ORDERING integerOrderingMatch SYNTAX 1.3.6.1.4.1
     .1466.115.121.1.27 SINGLE-VALUE )
    olcAttributeTypes: {16}( 1.3.6.1.4.1.4754.1.99.1 NAME 'pwdCheckModule' DESC 
     'Loadable module that instantiates check_password() function' EQUALITY case
     ExactIA5Match SYNTAX 1.3.6.1.4.1.1466.115.121.1.26 SINGLE-VALUE )
    olcObjectClasses: {0}( 1.3.6.1.4.1.4754.2.99.1 NAME 'pwdPolicyChecker' SUP t
     op AUXILIARY MAY pwdCheckModule )
    olcObjectClasses: {1}( 1.3.6.1.4.1.42.2.27.8.2.1 NAME 'pwdPolicy' SUP top AU
     XILIARY MUST pwdAttribute MAY ( pwdMinAge $ pwdMaxAge $ pwdInHistory $ pwdC
     heckQuality $ pwdMinLength $ pwdExpireWarning $ pwdGraceAuthNLimit $ pwdLoc
     kout $ pwdLockoutDuration $ pwdMaxFailure $ pwdFailureCountInterval $ pwdMu
     stChange $ pwdAllowUserChange $ pwdSafeModify $ pwdMaxRecordedFailure ) )
    
  2. 配置module模块,加载 accesslogauditlogppolicymemberof

    cat << EOF | ldapadd -Y EXTERNAL -H ldapi:///
    dn: cn=module,cn=config
    objectClass: olcModuleList
    cn: module
    olcModulePath: /usr/lib64/openldap
    olcModulepath:	/usr/lib/openldap
    olcModuleload: accesslog.la
    olcModuleload: auditlog.la
    olcModuleload: memberof.la
    olcModuleLoad: ppolicy.la
    EOF
    
  3. 配置DB

    cat << EOF | ldapadd -Y EXTERNAL -H ldapi:///
    dn: olcOverlay=ppolicy,olcDatabase={2}hdb,cn=config
    changetype: add
    objectClass: olcConfig
    objectClass: olcOverlayConfig
    objectClass: olcPPolicyConfig
    olcOverlay: ppolicy
    olcPPolicyDefault: cn=pwdDefault,ou=Policies,dc=laoshiren,dc=com
    olcPPolicyHashCleartext: TRUE
    olcPPolicyUseLockout: TRUE
    EOF
    
  4. 创建组

    cat << EOF | ldapadd -x -D cn=manager,dc=laoshiren,dc=com -W
    dn: ou=Policies,dc=laoshiren,dc=com
    objectClass: top
    objectClass: organizationalUnit
    ou: Policies
    EOF
    
  5. 创建默认密码策略

    密码属性说明,请查看官网属相说明 搜索相应属性即可

    cat << EOF | ldapadd -x -D cn=manager,dc=laoshiren,dc=com -W
    dn: cn=pwdDefault,ou=Policies,dc=laoshiren,dc=com
    cn: pwdDefault
    objectClass: top
    objectClass: device
    objectClass: pwdPolicy
    objectClass: pwdPolicyChecker
    pwdAttribute: userPassword
    pwdInHistory: 8
    pwdMinLength: 8
    pwdMaxFailure: 3
    pwdFailureCountInterval: 1800
    pwdCheckQuality: 2
    pwdMustChange: TRUE
    pwdGraceAuthNLimit: 0
    pwdMaxAge: 3600
    pwdExpireWarning: 1209600
    pwdLockoutDuration: 900
    pwdLockout: TRUE
    EOF
    
    # 查看用户信息,前提存在该用户
    ldapsearch -x -b "uid=linux_user1,ou=People,dc=laoshiren,dc=com" +
    

扩展

  • 增加用户首次登陆更改密码

    cat << EOF | ldapadd -x -D "cn=manager,dc=laoshiren,dc=com" -w FCzxpJWCccuB -H ldap://172.16.10.220
    dn: uid=linux_user1,ou=People,dc=laoshiren,dc=com
    changetype: modify
    replace: pwdReset
    pwdReset: TRUE
    EOF
    
  • 删除该用户登陆更改密码属性

    cat << EOF | ldapadd -x -D "cn=manager,dc=laoshiren,dc=com" -w FCzxpJWCccuB -H ldap://172.16.10.220
    changetype: modify
    delete: pwdReset
    EOF
    
  • 针对不同用户使用不同的密码策略

    # 对于服务帐户,不使帐户过期更安全。
    cat << EOF | ldapadd -x -D cn=manager,dc=laoshiren,dc=com -W
    dn: cn=servicesaccounts, ou=Policies,dc=laoshiren,dc=com
    cn: servicesaccounts
    objectClass: top
    objectClass: device
    objectClass: pwdPolicy
    pwdAllowUserChange: TRUE
    pwdAttribute: userPassword
    pwdExpireWarning: 0
    pwdFailureCountInterval: 0
    pwdGraceAuthNLimit: 5
    pwdLockout: FALSE
    pwdLockoutDuration: 0
    pwdInHistory: 0
    pwdMaxAge: 0
    pwdMaxFailure: 0
    pwdMinAge: 0
    pwdMinLength: 15
    pwdMustChange: FALSE
    pwdSafeModify: FALSE
    EOF
    
  • 配置用户访问以及更改密码权限

    # 允许用户更改密码
    cat << EOF | ldapmodify -c -Y EXTERNAL -Q -H ldapi:///
    dn: olcDatabase={2}hdb,cn=config
    changetype: modify
    replace: olcAccess
    olcAccess: {0}to attrs=userPassword,shadowLastChange by self write by dn="cn=ppolicy,ou=Policies,dc=laoshiren,dc=com" write by anonymous auth by * read
    olcAccess: {1}to * by self write by dn="cn=ppolicy,ou=Policies,dc=laoshiren,dc=com" write by * read
    EOF
    
  • 密码过期处理

    # 更改用户密码,此处不经过密码策略,随意书写。
    ldappasswd -H ldap://172.16.10.220 -x -D "cn=manager,dc=laoshiren,dc=com" -W -S "uid=linux_user1,ou=People,dc=laoshiren,dc=com"
    
    
  • 配置日志输出界别

    更改日志级别
    cat log.ldif 
    dn: cn=config
    changetype: modify
    add: olcLogLevel
    olcLogLevel: -1
    
    
    ldapadd -Y EXTERNAL -H ldapi:/// -f log.ldif
    

测试

  • 测试用户更改密码

    • 尝试1

      输入密码为111111

      # server 端通过未通过规则
      Jan 12 08:32:12 ldap-server slapd[1296]: conn=1161 op=5 RESULT oid= err=19 text=Password fails quality checking policy
      
    • 尝试2

      输入密码HsJC8m3y

  • 测试用户过期

    以上默认规则我设置的密码过期时间为一小时,所以以下输出会是已经过期

  • 7
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
LDAP服务器上配置密码策略需要使用PPolicy(Password Policy)模块。PPolicy模块提供了一组密码策略控制参数,可以用于实现各种密码策略要求。 在OpenLDAP服务器上,可以通过以下步骤配置PPolicy模块: 1. 安装必要的软件包 在终端中执行以下命令安装必要的软件包: ``` yum install openldap-servers openldap-clients openldap-servers-sql openldap-devel ``` 2. 加载PPolicy模块 编辑/etc/openldap/slapd.conf文件,在文件末尾添加以下内容: ``` modulepath /usr/lib64/openldap/ moduleload ppolicy.la ``` 上述配置启用PPolicy模块,并将PPolicy模块加载到OpenLDAP服务器中。 3. 配置PPolicy策略 编辑/etc/openldap/slapd.conf文件,在文件末尾添加以下内容: ``` overlay ppolicy ppolicy_default "cn=default,ou=policies,dc=example,dc=com" ppolicy_use_lockout ppolicy_hash_cleartext ``` 上述配置表示启用PPolicy策略,并将默认策略设置为名为"default"的策略。 4. 创建PPolicy策略 使用ldapadd命令创建一个名为"default"的PPolicy策略,内容如下: ``` dn: cn=default,ou=policies,dc=example,dc=com objectClass: top objectClass: device objectClass: pwdPolicy cn: default pwdAllowUserChange: TRUE pwdAttribute: userPassword pwdCheckQuality: 2 pwdExpireWarning: 86400 pwdFailureCountInterval: 30 pwdGraceAuthNLimit: 0 pwdInHistory: 5 pwdLockout: TRUE pwdLockoutDuration: 3600 pwdMaxAge: 7776000 pwdMaxFailure: 5 pwdMinAge: 0 pwdMinLength: 8 pwdMustChange: TRUE pwdSafeModify: FALSE ``` 上述配置表示启用PPolicy策略,并设置了一些密码策略参数,如密码最长有效期、最短长度、历史密码个数等等。 5. 重启OpenLDAP服务器 在终端中执行以下命令重启OpenLDAP服务器: ``` systemctl restart slapd.service ``` 通过以上步骤,就可以在LDAP服务器上配置密码策略,从而实现更加安全的身份验证。需要注意的是,在客户端配置密码策略时,需要确保与LDAP服务器上的配置一致。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值