LDAP policies: Difference between revisions
Jump to navigation
Jump to search
No edit summary |
No edit summary |
||
| Line 13: | Line 13: | ||
=== Backup === | === Backup === | ||
<pre> | <pre> | ||
# | # Init | ||
MySourceList="/etc/default/slapd\n/etc/ldap/slapd.d/" | MySourceList="/etc/default/slapd\n/etc/ldap/slapd.d/" | ||
| Line 34: | Line 34: | ||
MyBackup=~/ldap.backup."$(hostname -f)"."${MyRefDate}".tar.gz | MyBackup=~/ldap.backup."$(hostname -f)"."${MyRefDate}".tar.gz | ||
# | # Action | ||
echo -e $MySourceList |tar czvf "${MyBackup}" -T - | echo -e $MySourceList |tar czvf "${MyBackup}" -T - | ||
</pre> | |||
=== Check backup === | |||
ls -l "${MyBackup}" | ls -l "${MyBackup}" | ||
=== Start LDAP === | === Start LDAP === | ||
| Line 47: | Line 47: | ||
=== Install === | === Install === | ||
<pre> | <pre> | ||
# | # Init | ||
MyFilter=$(MyPatern='^olcDatabase: (\{[0-9]+\}.db)$' | MyFilter=$(MyPatern='^olcDatabase: (\{[0-9]+\}.db)$' | ||
slapcat -n0 |\ | slapcat -n0 |\ | ||
| Line 114: | Line 114: | ||
* Enter the Ldap password | * Enter the Ldap password | ||
=== Stop | === Stop LDAP === | ||
service pacemaker stop | service pacemaker stop | ||
service corosync stop | service corosync stop | ||
| Line 130: | Line 130: | ||
=== Init test === | === Init test === | ||
<pre> | <pre> | ||
# | # Init | ||
MyFilter=$(MyPatern='^olcSuffix: (dc=[^,]*,dc=[^,]*)$' | MyFilter=$(MyPatern='^olcSuffix: (dc=[^,]*,dc=[^,]*)$' | ||
slapcat -n0 |\ | slapcat -n0 |\ | ||
| Line 145: | Line 145: | ||
sed -rn "s/$MyPatern/\1/p" |head -1) ;echo "$MyFilter" | sed -rn "s/$MyPatern/\1/p" |head -1) ;echo "$MyFilter" | ||
MyUserDN="$MyFilter" | MyUserDN="$MyFilter" | ||
# | |||
# Reset user password | |||
ldappasswd -D "${MyolcRootDN}" -W "${MyUserDN}" -s mypasswd | ldappasswd -D "${MyolcRootDN}" -W "${MyUserDN}" -s mypasswd | ||
</pre> | </pre> | ||
| Line 174: | Line 175: | ||
=== Restore === | === Restore === | ||
<pre> | <pre> | ||
# | # Init | ||
MyBackup=~/ldap.backup."$(hostname -f)"."${MyRefDate}".tar.gz | MyBackup=~/ldap.backup."$(hostname -f)"."${MyRefDate}".tar.gz | ||
# | # Action | ||
cd / &&\ | cd / &&\ | ||
find $(tar -ztf "${MyBackup}") -type f |cpio -ov --format=ustar |gzip >~/ldap.tmp.tar.gz &&\ | find $(tar -ztf "${MyBackup}") -type f |cpio -ov --format=ustar |gzip >~/ldap.tmp.tar.gz &&\ | ||
| Line 183: | Line 184: | ||
tar xzvf "${MyBackup}") &&\ | tar xzvf "${MyBackup}") &&\ | ||
cd - | cd - | ||
# Reverse! = ~/ldap.tmp.tar.gz | |||
</pre> | </pre> | ||
Revision as of 22:35, 30 November 2016
How install LDAP password policies?
Requirement
- To have the Ldap password (Keepass!)
- Down time 1 hour
Stop all LDAP nodes
- Prevent users from beginning of maintenance.
service pacemaker stop service corosync stop
Node install
Backup
# Init
MySourceList="/etc/default/slapd\n/etc/ldap/slapd.d/"
MyFilter=$(MyPatern='^SLAPD_CONF=(\/.*)$'
cat /etc/default/slapd |\
sed -rn "s/$MyPatern/\1/p" |head -1) ;echo "$MyFilter"
[ ! -z "$MyFilter" ] &&MySourceList+="\n${MyFilter}"
MyFilter=$(MyPatern='^olcConfigDir: (\/.*)$'
slapcat -n0 |\
sed -rn "s/$MyPatern/\1/p" |head -1) ;echo "$MyFilter"
[ ! -z "$MyFilter" ] &&MySourceList+="\n${MyFilter}"
MyFilter=$(MyPatern='^olcDbDirectory: (\/.*)$'
slapcat -n0 |\
sed -rn "s/$MyPatern/\1/p" |head -1) ;echo "$MyFilter"
[ ! -z "$MyFilter" ] &&MySourceList+="\n${MyFilter}"
MyRefDate="$(date -u '+%Y-%m-%dT%H_%M_%SZ')"
MyBackup=~/ldap.backup."$(hostname -f)"."${MyRefDate}".tar.gz
# Action
echo -e $MySourceList |tar czvf "${MyBackup}" -T -
Check backup
ls -l "${MyBackup}"
Start LDAP
service corosync start service pacemaker start
Install
# Init
MyFilter=$(MyPatern='^olcDatabase: (\{[0-9]+\}.db)$'
slapcat -n0 |\
sed -rn "s/$MyPatern/\1/p" |head -1) ;echo "$MyFilter"
MyolcDatabase="$MyFilter"
MyFilter=$(MyPatern='^olcSuffix: (dc=[^,]*,dc=[^,]*)$'
slapcat -n0 |\
sed -rn "s/$MyPatern/\1/p" |head -1) ;echo "$MyFilter"
MyolcSuffix="$MyFilter"
MyFilter=$(MyPatern='^olcRootDN: (cn=[^,]*,dc=[^,]*,dc=[^,]*)$'
slapcat -n 0 |\
sed -rn "s/$MyPatern/\1/p"|head -1) ;echo $MyFilter
MyolcRootDN="$MyFilter"
#==== [OpenLDAP] Add schema ====
ldapadd -Y EXTERNAL -H ldapi:/// -f /etc/ldap/schema/ppolicy.ldif
#==== [OpenLDAP] Enable ====
cat <<EOT >/tmp/$$.ldif
dn: cn=module{0},cn=config
changetype: modify
add: olcModuleLoad
olcModuleLoad: ppolicy
dn: olcOverlay={0}ppolicy,olcDatabase=${MyolcDatabase},cn=config
objectClass: olcOverlayConfig
objectClass: olcPPolicyConfig
olcOverlay: {0}ppolicy
olcPPolicyDefault: cn=MyOrgPPolicy,ou=Policies,${MyolcSuffix}
EOT
ldapadd -Q -Y EXTERNAL -H ldapi:/// -f /tmp/$$.ldif
#==== Define policies ====
cat <<EOT >/tmp/$$.ldif
dn: ou=Policies,${MyolcSuffix}
objectClass: top
objectClass: organizationalUnit
ou: Policies
description: My Organization policies come here
dn: cn=MyOrgPPolicy,ou=Policies,${MyolcSuffix}
cn: MyOrgPPolicy
objectClass: pwdPolicy
objectClass: device
objectClass: top
pwdAttribute: userPassword
pwdMaxAge: 7776000
pwdExpireWarning: 1814400
pwdInHistory: 4
pwdCheckQuality: 1
pwdMinLength: 8
pwdMaxFailure: 5
pwdLockout: TRUE
pwdLockoutDuration: 600
pwdGraceAuthNLimit: 0
pwdFailureCountInterval: 0
pwdMustChange: TRUE
pwdAllowUserChange: TRUE
pwdSafeModify: FALSE
EOT
ldapadd -D "${MyolcRootDN}" -W -f /tmp/$$.ldif
- Enter the Ldap password
Stop LDAP
service pacemaker stop service corosync stop
Start all LDAP nodes
- Prevent users from ending of maintenance.
service corosync start service pacemaker start
Test
Requirement
- User test
MyUser="<UserTest>"
Init test
# Init
MyFilter=$(MyPatern='^olcSuffix: (dc=[^,]*,dc=[^,]*)$'
slapcat -n0 |\
sed -rn "s/$MyPatern/\1/p" |head -1) ;echo "$MyFilter"
MyolcSuffix="$MyFilter"
MyFilter=$(MyPatern='^olcRootDN: (cn=[^,]*,dc=[^,]*,dc=[^,]*)$'
slapcat -n 0 |\
sed -rn "s/$MyPatern/\1/p"|head -1) ;echo $MyFilter
MyolcRootDN="$MyFilter"
MyFilter=$(MyPatern='^dn: ([^=]*=[^,]*'"${MyUser}"'[^,]*,ou=users,dc=[^,]*,dc=[^,]*)$'
slapcat -b $MyolcSuffix |\
sed -rn "s/$MyPatern/\1/p" |head -1) ;echo "$MyFilter"
MyUserDN="$MyFilter"
# Reset user password
ldappasswd -D "${MyolcRootDN}" -W "${MyUserDN}" -s mypasswd
- Enter the Ldap password
Start checking
- Test many passwords :
ldappasswd -x -H ldap://localhost -D "${MyUserDN}" -w mypasswd -s mypasswdnew
- Prevent users from ending of maintenance.
Node uninstall
Requirement
- Down time 1/2 hour
- Backup file
ls -lrt ~/ldap.backup.*.tar.gz |tail
echo "Default backup : MyBackup=$MyBackup" echo echo "Change if necessary"
Stop all LDAP nodes
- Prevent users from beginning of maintenance.
service pacemaker stop service corosync stop
Restore
# Init
MyBackup=~/ldap.backup."$(hostname -f)"."${MyRefDate}".tar.gz
# Action
cd / &&\
find $(tar -ztf "${MyBackup}") -type f |cpio -ov --format=ustar |gzip >~/ldap.tmp.tar.gz &&\
(find $(tar -ztf "${MyBackup}") -type f -delete
tar xzvf "${MyBackup}") &&\
cd -
# Reverse! = ~/ldap.tmp.tar.gz
Start all LDAP nodes
- Prevent users from ending of maintenance.
service corosync start service pacemaker start