zoukankan      html  css  js  c++  java
  • OpenLDAP 密码策略

    OpenLDAP默认是没有密码检查策略的,123456这也得密码也能接受,这显然是管理员不希望看到的。

    参考地址:https://www.yaoge123.com/blog/archives/1276

            导入密码策略schema

      ldapadd -Y EXTERNAL -H ldapi:/// -D "cn=config" -f /etc/openldap/schema/ppolicy.ldif

             假如没有cn=module{0}的话,参考地址:https://www.cnblogs.com/Kevin-1967/p/8931304.html,需要添加:因为需要在OpenLdap中添加组的功能,所以需要添加memberOf功能,步骤如下

    在/etc/openldap目录下新建文件memberof_load_configure.ldif。授权:chown -R ldap:ldap memberof_load_configure.ldif

    内容如下:

    dn: cn=module{0},cn=config
    objectClass: olcModuleList
    cn: module{0}
    olcModulepath: /usr/lib64/openldap
    olcModuleload: {0}memberof.la

    dn: olcOverlay={0}memberof,olcDatabase={2}hdb,cn=config
    objectClass: olcMemberOf
    objectClass: olcOverlayConfig
    objectClass: olcConfig
    objectClass: top
    olcOverlay: {0}memberof

    说明:上面的参数请根据实际情况修改(比如32的系统的话olcModulepath为/usr/lib/openldap)
    dn: cn=module{0},cn=config 如果/etc/openldap/slapd.d/cn=config目录下已经存在cn=module{0}.ldif 文件的话,你就需要修改 module后面的数字了
    dn: olcOverlay={0}memberof,olcDatabase={2}bdb,cn=config 这行中 如果上述目录中没有olcDatabase={2}bdb.ldif文件就把 olcDatabase={2}bdb改成olcDatabase={2}hdb
    之后执行命令ldapadd -Q -Y EXTERNAL -H ldapi:/// -f memberof_load_configure.ldif。

    注:配置双主的则两台都要加载mod_ppolicy.ldif这个以后在执行后面的命令   

    加载模块,因为已经添加过syncprov模块了,所以只要追加ppolicy模块就可以了

    dn: cn=module{0},cn=config
    changetype: modify
    add: olcModuleLoad
    olcModuleLoad: ppolicy.la
    
    ldapmodify -Y EXTERNAL -H ldapi:/// -f mod_ppolicy.ldif

      指定默认策略dn名

    dn: olcOverlay=ppolicy,olcDatabase={2}hdb,cn=config
    changeType: add
    objectClass: olcOverlayConfig
    objectClass: olcPPolicyConfig
    olcOverlay: ppolicy
    olcPPolicyDefault: cn=default,ou=Users,dc=hbjc,dc=com
    olcPPolicyHashCleartext: TRUE
    ldapmodify -Y EXTERNAL -H ldapi:/// -f ppolicy.ldif

    参考地址:https://blog.csdn.net/u011607971/article/details/86378361

    创建组:cat << EOF | ldapadd -x -D "cn=admin,dc=hbjc,dc=com" -W

    dn: ou=Users,dc=hbjc,dc=com
    objectClass: top
    objectClass: organizationalUnit
    ou: Users
    EOF


    创建默认策略:
    注:若设置pwdMaxAge:3600,则一个小时以后就过期了。单独设置在一个用户中设置密码策略是不生效的。

    cat << EOF | ldapadd -x -D "cn=admin,dc=hbjc,dc=com" -W

    dn: cn=default,ou=Users,dc=hbjc,dc=com
    cn: default
    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: 2592000
    pwdExpireWarning: 1209600
    pwdLockoutDuration: 900
    pwdLockout: TRUE
    EOF

    针对不同用户使用不同的密码策略:

    dn: cn=servicesaccounts,ou=Users,dc=hbjc,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

    查询用户:

    ldapsearch -x -LLL -H ldap://localhost:389/ -b dc=hbjc,dc=com -D "cn=admin,dc=hbjc,dc=com" -w 密码 uid=xxx +

    解锁账号:只要把用户的pwdAccountLockedTime这个属性删除即可。

    cat << EOF | ldapadd -x -D "cn=admin,dc=hbjc,dc=com" -W
    dn: uid=xxx,ou=Users,dc=hbjc,dc=com
    changetype: modify
    delete: pwdAccountLockedTime 
    EOF

    第一次登录强制修改密码设置:pwdReset 属性设置为TRUE

    密码策略属性参考地址:https://wiki.shileizcc.com/confluence/pages/viewpage.action?pageId=40566878

    https://www.cnblogs.com/cishi/p/9160520.html

    密码策略属性详解

    密码策略涉及的属性如下。

    pwdAllowUserChange:允许用户修改其密码。

    pwdAttribute:pwdPolicy 对象的一个属性,用于识别用户密码。

    pwdExpireWarning:密码过期前告警天数。

    pwdFailureCountInterval:密码失败后恢复时间。

    pwdGraceAuthNLimit:密码过期后不能登入的天数,0 代表禁止登录。

    pwdInHistory:开启密码历史记录,用户保证不能和之前设置的密码相同。

    pwdLockout:超过定义次数,账号被锁定。

    pwdLockoutDuration:密码连接输入错误次数后,账号锁定时间。

    pwdMaxAge:密码有效期,到期需要强制修改密码。

    pwdMaxFailure:密码最大失效次数,超过后账号被锁定。

    pwdMinAge:密码有效期。

    pwdMinLength:密码修改密码时最短的密码长度。

    pwdMustChange:用户登录系统后提示修改密码。

    pwdSafeModify:是否允许用户修改密码,与 pwdMustChange 共同使用。

    pwdLockoutDuration:账号锁定后,不能自动解锁,此时需要管理员干涉。

    设定用户密码定期修改及过期时间

    向条目中添加一个名为shadowAccount的objectClass, 设定如下属性(attributes):
    shadowLastChange: 密码从1970年1月1日开始, 到最近一次修改, 一共间隔了多少天. 比如这里指定成16967就表示2016年6月15日. 也可以直接获取当天的日期,方法为:在系统里useradd一个用户,查看/etc/shadow中该用户的第三个值, 即是该值. 该值如果设置成0, 则表示下次登陆将强制修改密码, 用户修改密码成功以后, 该值将发生对应的变化;
    shadowMin: 密码从shadowLastChange指定的日期开始, 到多少天以后才能再次修改密码, 防止某些人天天没事就修改密码, 此值设置成0表示不限制;
    shadowMax: 密码从shadowLastChange指定的日期开始, 到多少天以后过期(即多少天后必须更改密码);
    shadowInactive: 密码过期以后还可以登陆多少天(每次登陆都会要求更改密码), 如果超过此值指定的天数, 下次登陆时会提示Your account has expired; please contact your system administrator;
    shadowWarning: 提前多少天开始警告用户密码将会过期;
    shadowExpire: 密码从1970年1月1日开始, 多少天以后将会过期, 这里一般用不到;
    shadowFlag: 暂时无用

    一组建议的值

    • shadowLastChange: 0
    • shadowMin: 0
    • shadowMax: 90 #每隔90天强制更换密码
    • shadowInactive: 7 #过期以后还有7天可以登陆,每次登陆都会提示修改密码
    • shadowWarning: 8 #提前8天开始提示密码即将过期

    Openldap密码策略pwdAttribute属性设置OID

    参考地址:https://blog.csdn.net/wxb880114/article/details/102408269

    http://osask.cn/front/ask/view/472349

    pwdAttribute: userPassword
    或者
    pwdAttribute: 2.5.4.35

  • 相关阅读:
    Flask之蓝图
    Flask之请求扩展
    Flask之flash
    Flask之session
    Flask之请求与响应
    Flask之模板系统
    Flask之路由系统
    Flask之配置文件
    Flask之快速入门
    Django项目 第一课 【nvm、node、npm安装及使用】
  • 原文地址:https://www.cnblogs.com/js1314/p/13162345.html
Copyright © 2011-2022 走看看