{"id":7576,"date":"2018-06-16T12:13:04","date_gmt":"2018-06-16T04:13:04","guid":{"rendered":"http:\/\/rmohan.com\/?p=7576"},"modified":"2018-06-16T13:56:15","modified_gmt":"2018-06-16T05:56:15","slug":"centos7-openldap","status":"publish","type":"post","link":"https:\/\/mohan.sg\/?p=7576","title":{"rendered":"centos7 openldap"},"content":{"rendered":"<p>systemctl stop firewalld.service<br \/>\nsetenforce 0<\/p>\n<p>sed -i s\/^SELINUX=enforcing\/SELINUX=disabled\/g \/etc\/selinux\/config<\/p>\n<p>127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4<br \/>\n::1 localhost localhost.localdomain localhost6 localhost6.localdomain6<br \/>\n192.168.1.70 master.apple.com master<br \/>\n192.168.1.71 slave.apple.com slave<br \/>\n192.168.1.73 client1.apple.com client1<br \/>\n192.168.1.74 client2.apple.com client2<\/p>\n<p>yum -y install openldap compat-openldap openldap-clients openldap-servers openldap-servers-sql openldap-devel migrationtools vim<\/p>\n<p>cd \/etc\/openldap\/slapd.d<\/p>\n<p>rm -rf<\/p>\n<p>cp \/usr\/share\/openldap-servers\/slapd.ldif \/root\/ldap\/<\/p>\n<p>Set OpenLDAP admin password.<br \/>\n# generate encrypted password<\/p>\n<p>slappasswd -s redhat -n &gt; \/etc\/openldap\/passwd<\/p>\n<p>slappasswd -h {SSHA} -s ldppassword<\/p>\n<p>[root@ldap ~]# slappasswd<\/p>\n<p>New password:<\/p>\n<p>Re-enter new password:<\/p>\n<p>[root@master ldap]# cat slapd.ldif<br \/>\n#<br \/>\n# See slapd-config(5) for details on configuration options.<br \/>\n# This file should NOT be com readable.<br \/>\n#<\/p>\n<p>dn: cn=config<br \/>\nobjectClass: olcGlobal<br \/>\ncn: config<br \/>\nolcArgsFile: \/var\/run\/openldap\/slapd.args<br \/>\nolcPidFile: \/var\/run\/openldap\/slapd.pid<br \/>\n#<br \/>\n# TLS settings<br \/>\n#<br \/>\nolcTLSCACertificatePath: \/etc\/openldap\/certs<br \/>\nolcTLSCertificateFile: &#8220;OpenLDAP Server&#8221;<br \/>\nolcTLSCertificateKeyFile: \/etc\/openldap\/certs\/password<br \/>\n#<br \/>\n# Do not enable referrals until AFTER you have a working directory<br \/>\n# service AND an understanding of referrals.<br \/>\n#<br \/>\n#olcReferral: ldap:\/\/root.openldap.org<br \/>\n#<br \/>\n# Sample security restrictions<br \/>\n# Require integrity protection (prevent hijacking)<br \/>\n# Require 112-bit (3DES or better) encryption for updates<br \/>\n# Require 64-bit encryption for simple bind<br \/>\n#<br \/>\n#olcSecurity: ssf=1 update_ssf=112 simple_bind=64<\/p>\n<p>#<br \/>\n# Load dynamic backend modules:<br \/>\n# &#8211; modulepath is architecture dependent value (32\/64-bit system)<br \/>\n# &#8211; back_sql.la backend requires openldap-servers-sql package<br \/>\n# &#8211; dyngroup.la and dynlist.la cannot be used at the same time<br \/>\n#<\/p>\n<p>#dn: cn=module,cn=config<br \/>\n#objectClass: olcModuleList<br \/>\n#cn: module<br \/>\n#olcModulepath: \/usr\/lib\/openldap<br \/>\n#olcModulepath: \/usr\/lib64\/openldap<br \/>\n#olcModuleload: accesslog.la<br \/>\n#olcModuleload: auditlog.la<br \/>\n#olcModuleload: back_dnsapple.la<br \/>\n#olcModuleload: back_ldap.la<br \/>\n#olcModuleload: back_mdb.la<br \/>\n#olcModuleload: back_meta.la<br \/>\n#olcModuleload: back_null.la<br \/>\n#olcModuleload: back_passwd.la<br \/>\n#olcModuleload: back_relay.la<br \/>\n#olcModuleload: back_shell.la<br \/>\n#olcModuleload: back_sock.la<br \/>\n#olcModuleload: collect.la<br \/>\n#olcModuleload: constraint.la<br \/>\n#olcModuleload: dds.la<br \/>\n#olcModuleload: deref.la<br \/>\n#olcModuleload: dyngroup.la<br \/>\n#olcModuleload: dynlist.la<br \/>\n#olcModuleload: memberof.la<br \/>\n#olcModuleload: pcache.la<br \/>\n#olcModuleload: ppolicy.la<br \/>\n#olcModuleload: refint.la<br \/>\n#olcModuleload: retcode.la<br \/>\n#olcModuleload: rwm.la<br \/>\n#olcModuleload: seqmod.la<br \/>\n#olcModuleload: smbk5pwd.la<br \/>\n#olcModuleload: sssvlv.la<br \/>\n#olcModuleload: syncprov.la<br \/>\n#olcModuleload: translucent.la<br \/>\n#olcModuleload: unique.la<br \/>\n#olcModuleload: valsort.la<\/p>\n<p>#<br \/>\n# Schema settings<br \/>\n#<\/p>\n<p>dn: cn=schema,cn=config<br \/>\nobjectClass: olcSchemaConfig<br \/>\ncn: schema<\/p>\n<p>include: file:\/\/\/etc\/openldap\/schema\/corba.ldif<br \/>\ninclude: file:\/\/\/etc\/openldap\/schema\/core.ldif<br \/>\ninclude: file:\/\/\/etc\/openldap\/schema\/cosine.ldif<br \/>\ninclude: file:\/\/\/etc\/openldap\/schema\/duaconf.ldif<br \/>\ninclude: file:\/\/\/etc\/openldap\/schema\/dyngroup.ldif<br \/>\ninclude: file:\/\/\/etc\/openldap\/schema\/inetorgperson.ldif<br \/>\ninclude: file:\/\/\/etc\/openldap\/schema\/java.ldif<br \/>\ninclude: file:\/\/\/etc\/openldap\/schema\/misc.ldif<br \/>\ninclude: file:\/\/\/etc\/openldap\/schema\/nis.ldif<br \/>\ninclude: file:\/\/\/etc\/openldap\/schema\/openldap.ldif<br \/>\ninclude: file:\/\/\/etc\/openldap\/schema\/ppolicy.ldif<br \/>\ninclude: file:\/\/\/etc\/openldap\/schema\/collective.ldif<\/p>\n<p>#<br \/>\n# Frontend settings<br \/>\n#<\/p>\n<p>dn: olcDatabase=frontend,cn=config<br \/>\nobjectClass: olcDatabaseConfig<br \/>\nobjectClass: olcFrontendConfig<br \/>\nolcDatabase: frontend<br \/>\n#<br \/>\n# Sample global access control policy:<br \/>\n# Root DSE: allow anyone to read it<br \/>\n# Subschema (sub)entry DSE: allow anyone to read it<br \/>\n# Other DSEs:<br \/>\n# Allow self write access<br \/>\n# Allow authenticated users read access<br \/>\n# Allow anonymous users to authenticate<br \/>\n#<br \/>\n#olcAccess: to dn.base=&#8221;&#8221; by * read<br \/>\n#olcAccess: to dn.base=&#8221;cn=Subschema&#8221; by * read<br \/>\n#olcAccess: to *<br \/>\n# by self write<br \/>\n# by users read<br \/>\n# by anonymous auth<br \/>\n#<br \/>\n# if no access controls are present, the default policy<br \/>\n# allows anyone and everyone to read anything but restricts<br \/>\n# updates to rootdn. (e.g., &#8220;access to * by * read&#8221;)<br \/>\n#<br \/>\n# rootdn can always read and write EVERYTHING!<br \/>\n#<\/p>\n<p>#<br \/>\n# Configuration database<br \/>\n#<\/p>\n<p>dn: olcDatabase=config,cn=config<br \/>\nobjectClass: olcDatabaseConfig<br \/>\nolcDatabase: config<br \/>\nolcAccess: to * by dn.base=&#8221;gidNumber=0+uidNumber=0,cn=peercred,cn=external,c<br \/>\nn=auth&#8221; manage by * none<\/p>\n<p>#<br \/>\n# Server status monitoring<br \/>\n#<\/p>\n<p>dn: olcDatabase=monitor,cn=config<br \/>\nobjectClass: olcDatabaseConfig<br \/>\nolcDatabase: monitor<br \/>\nolcAccess: to * by dn.base=&#8221;gidNumber=0+uidNumber=0,cn=peercred,cn=external,c<br \/>\nn=auth&#8221; read by dn.base=&#8221;cn=Manager,dc=apple,dc=com&#8221; read by * none<\/p>\n<p>#<br \/>\n# Backend database definitions<br \/>\n#<\/p>\n<p>dn: olcDatabase=hdb,cn=config<br \/>\nobjectClass: olcDatabaseConfig<br \/>\nobjectClass: olcHdbConfig<br \/>\nolcDatabase: hdb<br \/>\nolcSuffix: dc=apple,dc=com<br \/>\nolcRootDN: cn=Manager,dc=apple,dc=com<br \/>\nolcRootPW: {SSHA}cc+n64r5WNtLivZppJmYvWWMo3DIhcAy<br \/>\nolcDbDirectory: \/var\/lib\/ldap<br \/>\nolcDbIndex: objectClass eq,pres<br \/>\nolcDbIndex: ou,cn,mail,surname,givenname eq,pres,sub<\/p>\n<p>rm -rf \/etc\/openldap\/slapd.d\/*<\/p>\n<p>[root@master ldap]# slapadd -F \/etc\/openldap\/slapd.d\/ -n 0 -l \/root\/ldap\/slapd.ldif<br \/>\n_#################### 100.00% eta none elapsed none fast!<br \/>\nClosing DB&#8230;<br \/>\n[root@master ldap]#<\/p>\n<p>[root@server home]# slaptest -u -F \/etc\/openldap\/slapd.d\/<br \/>\nconfig file testing succeeded<\/p>\n<p>config file testing succeeded<\/p>\n<p>chown -Rv ldap.ldap \/etc\/openldap\/slapd.d<\/p>\n<p>[root@server slapd.d]# chown -Rv ldap.ldap \/etc\/openldap\/slapd.d\/<\/p>\n<p>[root@master ldap]# cd \/etc\/openldap\/slapd.d\/<br \/>\n[root@master slapd.d]# ls -la<br \/>\ntotal 4<br \/>\ndrwxr-x&#8212; 3 ldap ldap 45 Jun 15 19:18 .<br \/>\ndrwxr-xr-x. 5 root root 92 Jun 15 19:07 ..<br \/>\ndrwxr-x&#8212; 3 ldap ldap 182 Jun 15 19:18 cn=config<br \/>\n-rw&#8212;&#8212;- 1 ldap ldap 589 Jun 15 19:18 cn=config.ldif<br \/>\n[root@master slapd.d]#<\/p>\n<p>[root@master ldap]# systemctl start slapd.service<br \/>\n[root@master ldap]# systemctl status slapd.service<br \/>\n[root@master ldap]# systemctl enable slapd.service<\/p>\n<p>[root@master ldap]# cat create_user.sh<br \/>\n#!\/bin\/bash<br \/>\nUSER_LIST=ldapuser.txt<br \/>\nHOME_ldap=\/home\/ldapuser<br \/>\nmkdir -pv $HOME_ldap<br \/>\nfor USERID in `awk &#8216;{print $1}&#8217; $USER_LIST`; do<br \/>\nUSERNAME=&#8221;`grep &#8220;$USERID&#8221; $USER_LIST | awk &#8216;{print $2}&#8217;`&#8221;<br \/>\nHOMEDIR=${HOME_ldap}\/${USERNAME}<br \/>\nuseradd $USERNAME -u $USERID -d $HOMEDIR<br \/>\ngrep &#8220;$USERID&#8221; $USER_LIST | awk &#8216;{print $3}&#8217; | passwd &#8211;stdin $USERNAME<br \/>\ndone<\/p>\n<p>[root@master ldap]# cat ldapuser.txt<br \/>\n5000 lduser1 123456<br \/>\n5001 lduser2 123456<br \/>\n5002 lduser3 123456<br \/>\n5003 lduser4 123456<br \/>\n5004 lduser5 123456<br \/>\n5005 lduser6 123456<br \/>\n[root@master ldap]#<\/p>\n<p>vim \/usr\/share\/migrationtools\/migrate_common.ph<\/p>\n<p># Default DNS domain<br \/>\n$DEFAULT_MAIL_DOMAIN = &#8220;apple.com&#8221;;<\/p>\n<p># Default base<br \/>\n$DEFAULT_BASE = &#8220;dc=apple,dc=com&#8221;;<\/p>\n<p>vim \/usr\/share\/migrationtools\/migrate_common.ph<br \/>\n\/usr\/share\/migrationtools\/migrate_base.pl &gt; \/root\/ldap\/base.ldif<\/p>\n<p>\/usr\/share\/migrationtools\/migrate_passwd.pl \/etc\/passwd \/root\/ldap\/user.ldif<br \/>\ncat \/root\/ldap\/user.ldif<br \/>\n\/usr\/share\/migrationtools\/migrate_group.pl \/etc\/group \/root\/ldap\/group.ldif<\/p>\n<p>ldapadd -D &#8220;cn=Manager,dc=apple,dc=com&#8221; -W -x -f base.ldif<br \/>\nldapadd -D &#8220;cn=Manager,dc=apple,dc=com&#8221; -W -x -f user.ldif<br \/>\nldapadd -D &#8220;cn=Manager,dc=apple,dc=com&#8221; -W -x -f group.ldif<\/p>\n<p>yum -y install nfs-utils<\/p>\n<p>yum -y install nfs-utils<\/p>\n<p>[root@server ~]# cat \/etc\/exports<br \/>\n\/home\/ldapuser 192.168.1.0\/24(rw,sync)<\/p>\n<p>[root@server ~]# systemctl start nfs-server.service<\/p>\n<p>[root@client home]# exportfs -rv<br \/>\nexporting *:\/home\/ldapuser<\/p>\n<p>systemctl enable nfs-server.service<\/p>\n<p>vi \/etc\/rsyslog.conf<\/p>\n<p>local4.* \/var\/log\/ldap.log<br \/>\ntouch \/var\/log\/ldap.log<\/p>\n<p>rsyslog?<\/p>\n<p>systemctl restart rsyslog.service<\/p>\n<p>slapd \/var\/log\/messages<\/p>\n<p>systemctl status slapd.service -l<\/p>\n<p>tail -f \/var\/log\/messages<\/p>\n<p>SSL SETUP IN LDAP<\/p>\n<p>openssl req -nodes -sha256 -newkey rsa:2048 -keyout PrivateKey.key -out CertificateRequest.csr<\/p>\n<p>2. Optional: Check to see if the CSR really has 256bit signatures<\/p>\n<p>openssl req -in CertificateRequest.csr -text -noout<\/p>\n<p>You should see \u201cSignature Algorithm: sha256WithRSAEncryption\u201d<\/p>\n<p>3. Create the certificate<\/p>\n<p>We use the CSR and sign it with the private key and create a public certificate<\/p>\n<p>openssl req -nodes -sha256 -newkey rsa:2048 -keyout PrivateKey.key -out CertificateRequest.csr<br \/>\nopenssl req -in CertificateRequest.csr -text -noout<br \/>\nopenssl x509 -req -days 365 -sha256 -in CertificateRequest.csr -signkey PrivateKey.key -out my256.crt<\/p>\n<p>cp my256.crt \/etc\/openldap\/certs\/server.crt<\/p>\n<p>cp PrivateKey.key \/etc\/openldap\/certs\/server.key<\/p>\n<p>cp \/etc\/pki\/tls\/certs\/ca-bundle.crt \/etc\/openldap\/certs\/<br \/>\ncat my256.crt PrivateKey.key &gt;&gt; master.pem<br \/>\ncat my256.crt PrivateKey.key &gt;&gt; slave.pem<\/p>\n<p>vi mod_ssl.ldif<\/p>\n<p># create new<br \/>\ndn: cn=config<br \/>\nchangetype: modify<br \/>\nadd: olcTLSCACertificateFile<br \/>\nolcTLSCACertificateFile: \/etc\/openldap\/certs\/ca-bundle.crt<br \/>\n&#8211;<br \/>\nreplace: olcTLSCertificateFile<br \/>\nolcTLSCertificateFile: \/etc\/openldap\/certs\/server.crt<br \/>\n&#8211;<br \/>\nreplace: olcTLSCertificateKeyFile<br \/>\nolcTLSCertificateKeyFile: \/etc\/openldap\/certs\/server.key<\/p>\n<p>[root@master ldap]# ldapmodify -Y EXTERNAL -H ldapi:\/\/\/ -f mod_ssl.ldif<br \/>\nSASL\/EXTERNAL authentication started<br \/>\nSASL username: gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth<br \/>\nSASL SSF: 0<br \/>\nmodifying entry &#8220;cn=config&#8221;<\/p>\n<p>[root@master ldap]# vi \/etc\/sysconfig\/slapd<br \/>\nadd<br \/>\nSLAPD_URLS=&#8221;ldapi:\/\/\/ ldap:\/\/\/ ldaps:\/\/\/&#8221;<\/p>\n<p>systemctl restart slapd<\/p>\n<p>client end<\/p>\n<p>[root@master ldap]# cat \/etc\/hosts<br \/>\n127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4<br \/>\n::1 localhost localhost.localdomain localhost6 localhost6.localdomain6<br \/>\n192.168.1.70 master.apple.com master<br \/>\n192.168.1.71 slave.apple.com slave<br \/>\n192.168.1.73 client1.apple.com client1<br \/>\n192.168.1.74 client2.apple.com client2<\/p>\n<p>yum -y install sssd-ldap nss-pam-ldapd nfs-utils<\/p>\n<p>authconfig-tui<\/p>\n<p>authconfig &#8211;enableldap &#8211;enableldapauth &#8211;ldapserver=ldaps:\/\/master.apple.com &#8211;ldapbasedn=&#8221;dc=apple,dc=com&#8221; &#8211;enablemkhomedir &#8211;disableldaptls &#8211;update<br \/>\nauthconfig &#8211;enableldap &#8211;enableldapauth &#8211;ldapserver=ldaps:\/\/slave.apple.com &#8211;ldapbasedn=&#8221;dc=apple,dc=com&#8221; &#8211;enablemkhomedir &#8211;disableldaptls &#8211;update<\/p>\n<p>reate the c hash of the CA certificate.<\/p>\n<p>\/etc\/pki\/tls\/misc\/c_hash \/etc\/openldap\/cacerts\/server.pem<\/p>\n<p>Output:<\/p>\n<p>997ee4fb.0 =&gt; \/etc\/openldap\/cacerts\/server.pem<\/p>\n<p>Now, symlink the rootCA.pem to the shown 8 digit hex number.<\/p>\n<p>ln -s \/etc\/openldap\/cacerts\/server.pem 997ee4fb.0<\/p>\n<p>[root@client1 ~]# echo &#8220;TLS_REQCERT allow&#8221; &gt;&gt; \/etc\/openldap\/ldap.conf<\/p>\n<p>[root@client1 ~]# echo &#8220;tls_reqcert allow&#8221; &gt;&gt; \/etc\/nslcd.conf<\/p>\n<p>Restart the LDAP client service.<\/p>\n<p>systemctl restart nslcd<\/p>\n<p>[root@client1 ~]# getent passwd lduser1<br \/>\nlduser1:x:5000:5000:lduser1:\/home\/ldapuser\/lduser1:\/bin\/bash<\/p>\n<p>[root@client1 \/]# mkdir -p \/home\/ldapuser<br \/>\n[root@client1 \/]# mount -t nfs 192.168.1.70:\/home\/ldapuser\/ \/home\/ldapuser\/<br \/>\n[root@client1\/]# cd \/home\/ldapuser\/<br \/>\n[root@client ldapuser]# ls<br \/>\nlduser1 lduser2 lduser3 lduser4 lduser5 lduser6<br \/>\n[root@client ldapuser]# su &#8211; lduser1<br \/>\nLast login: Sat May 20 23:11:00 EDT 2017 on pts\/0<\/p>\n<p>Configure LDAP Client for TLS connection.<br \/>\n[root@client1 ~]# echo &#8220;TLS_REQCERT allow&#8221; &gt;&gt; \/etc\/openldap\/ldap.conf<\/p>\n<p>[root@client1 ~]# echo &#8220;tls_reqcert allow&#8221; &gt;&gt; \/etc\/nslcd.conf<\/p>\n<p>[root@client1 ~]# authconfig &#8211;enableldaptls &#8211;update<\/p>\n<p>getsebool: SELinux is disabled<\/p>\n<p>scp server.pem root@client1:\/tmp\/<\/p>\n<p>Enable debug logging on CentOS 7 LDAP Server<\/p>\n<p>vi \/root\/ldap\/logging.ldif<br \/>\n&#8212;&#8212;<br \/>\ncat logging.ldif<br \/>\ndn: cn=config<br \/>\nreplace: olcLogLevel<br \/>\nolcLogLevel: -1<br \/>\n&#8212;&#8212;<\/p>\n<p># apply<br \/>\nldapmodify -Y EXTERNAL -H ldapi:\/\/\/ -f \/root\/ldap\/logging.ldif<\/p>\n<p># verify<br \/>\nldapsearch -Y EXTERNAL -H ldapi:\/\/\/ -b cn=config -s base|grep -i LOG<\/p>\n<p>systemctl restart slapd<\/p>\n<p>vi \/etc\/rsyslog.conf<br \/>\n&#8212;&#8212;<br \/>\nlocal4.* -\/var\/log\/slapd.log<br \/>\n&#8212;&#8212;<\/p>\n<p>systemctl restart rsyslog<\/p>\n<p>vi \/etc\/logrotate.d\/syslog<br \/>\n&#8212;&#8211;<br \/>\n# add this line<br \/>\n\/var\/log\/slapd.log<\/p>\n<p>Master slave replication<br \/>\nroot@master ldap]# cat rpuser.ldif<br \/>\ndn: uid=rpuser,dc=apple,dc=com<br \/>\nobjectClass: simpleSecurityObject<br \/>\nobjectclass: account<br \/>\nuid: rpuser<br \/>\ndescription: Replication User<br \/>\nuserPassword: root1234<\/p>\n<p>[root@master ldap]# ldapadd -x -W -D cn=Manager,dc=apple,dc=com -W -f rpuser.ldif<br \/>\nEnter LDAP Password:<br \/>\nadding new entry &#8220;uid=rpuser,dc=apple,dc=com&#8221;<\/p>\n<p>Configure LDAP Provider. Add syncprov module.<br \/>\n[root@master ~]# vi mod_syncprov.ldif<br \/>\n# create new<\/p>\n<p>dn: cn=module,cn=config<br \/>\nobjectClass: olcModuleList<br \/>\ncn: module<br \/>\nolcModulePath: \/usr\/lib64\/openldap<br \/>\nolcModuleLoad: syncprov.la<\/p>\n<p>[root@master ~]# ldapadd -Y EXTERNAL -H ldapi:\/\/\/ -f mod_syncprov.ldif<\/p>\n<p>SASL\/EXTERNAL authentication started<br \/>\nSASL username: gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth<br \/>\nSASL SSF: 0<br \/>\nadding new entry &#8220;cn=module,cn=config&#8221;<\/p>\n<p>[root@master ~]# vi syncprov.ldif<br \/>\n# create new<\/p>\n<p>dn: olcOverlay=syncprov,olcDatabase={2}hdb,cn=config<br \/>\nobjectClass: olcOverlayConfig<br \/>\nobjectClass: olcSyncProvConfig<br \/>\nolcOverlay: syncprov<br \/>\nolcSpSessionLog: 100<\/p>\n<p>[root@master ~]# ldapadd -Y EXTERNAL -H ldapi:\/\/\/ -f syncprov.ldif<\/p>\n<p>SASL\/EXTERNAL authentication started<br \/>\nSASL username: gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth<br \/>\nSASL SSF: 0<br \/>\nadding new entry &#8220;olcOverlay=syncprov,olcDatabase={2}hdb,cn=config&#8221;<\/p>\n<p>vi syncrepl.ldif<\/p>\n<p>[root@slave ldap]# cat syncrepl.ldif<br \/>\ndn: olcDatabase={2}hdb,cn=config<br \/>\nchangetype: modify<br \/>\nadd: olcSyncRepl<br \/>\nolcSyncRepl: rid=001<br \/>\nprovider=ldap:\/\/192.168.1.70:389\/<br \/>\nbindmethod=simple<br \/>\nbinddn=&#8221;uid=rpuser,dc=apple,dc=com&#8221;<br \/>\ncredentials=root1234<br \/>\nsearchbase=&#8221;dc=apple,dc=com&#8221;<br \/>\nscope=sub<br \/>\nschemachecking=on<br \/>\ntype=refreshAndPersist<br \/>\nretry=&#8221;30 5 300 3&#8243;<br \/>\ninterval=00:00:05:00<br \/>\n[root@slave ldap]#<\/p>\n<p>ldapadd -Y EXTERNAL -H ldapi:\/\/\/ -f syncrepl.ldif<\/p>\n<p>Test the LDAP replication:<\/p>\n<p>Let\u2019s create a user in LDAP called \u201cldaprptest\u201c, to do that, create a .ldif file on the master LDAP server.<\/p>\n<p>[root@master ~]# vi ldaprptest.ldif<\/p>\n<p>Update the above file with below content.<\/p>\n<p>dn: uid=ldaprptest,ou=People,dc=apple,dc=com<br \/>\nobjectClass: top<br \/>\nobjectClass: account<br \/>\nobjectClass: posixAccount<br \/>\nobjectClass: shadowAccount<br \/>\ncn: ldaprptest<br \/>\nuid: ldaprptest<br \/>\nuidNumber: 9988<br \/>\ngidNumber: 100<br \/>\nhomeDirectory: \/home\/ldaprptest<br \/>\nloginShell: \/bin\/bash<br \/>\ngecos: LDAP Replication Test User<br \/>\nuserPassword: redhat123<br \/>\nshadowLastChange: 17058<br \/>\nshadowMin: 0<br \/>\nshadowMax: 99999<br \/>\nshadowWarning: 7<\/p>\n<p>ldapsearch -x cn=ldaprptest -b dc=apple,dc=com<\/p>\n<p>[root@master ldap]# slappasswd<br \/>\nNew password:<br \/>\nRe-enter new password:<br \/>\n{SSHA}hbfwS2+203V3p+P6CB5n7nHVZpRB6ns+<br \/>\n[root@master ldap]# vi adduser.ldif<br \/>\n[root@master ldap]# cat adduser.ldif<br \/>\ndn: uid=mohan,ou=People,dc=apple,dc=com<br \/>\nobjectClass: top<br \/>\nobjectClass: account<br \/>\nobjectClass: posixAccount<br \/>\nobjectClass: shadowAccount<br \/>\ncn: mohan<br \/>\nuid: mohan<br \/>\nuidNumber: 9999<br \/>\ngidNumber: 100<br \/>\nhomeDirectory: \/home\/mohan<br \/>\nloginShell: \/bin\/bash<br \/>\ngecos: Mohan [Admin (at) Apple]<br \/>\nuserPassword: {SSHA}uWC6jFxw\/4nY3GEQfwf4Eh\/cq13lvyKy<br \/>\nshadowLastChange: 17058<br \/>\nshadowMin: 0<br \/>\nshadowMax: 99999<br \/>\nshadowWarning: 7<br \/>\n[root@master ldap]# ldapadd -x -W -D cn=Manager,dc=apple,dc=com -W -f adduser.ldif<br \/>\nEnter LDAP Password:<br \/>\nadding new entry &#8220;uid=mohan,ou=People,dc=apple,dc=com&#8221;<\/p>\n<p>Backup LDAP with slapcat on CentOS 7<\/p>\n<p>#!\/bin\/bash<br \/>\nexport PATH=\/usr\/local\/sbin:\/usr\/local\/bin:\/sbin:\/bin:\/usr\/sbin:\/usr\/bin<br \/>\nset -e<br \/>\nKEEP=7<br \/>\nBASE_DN=&#8217;dc=apple,dc=com&#8217;<br \/>\nLDAPBK=&#8221;ldap-$( date +%y%m%d-%H%M ).ldif&#8221;<br \/>\nBACKUPDIR=&#8217;\/root\/ldap-backup&#8217;<br \/>\ntest -d &#8220;$BACKUPDIR&#8221; || mkdir -p &#8220;$BACKUPDIR&#8221;<br \/>\nslapcat -b &#8220;$BASE_DN&#8221; -l &#8220;$BACKUPDIR\/$LDAPBK&#8221;<br \/>\ngzip -9 &#8220;$BACKUPDIR\/$LDAPBK&#8221;<br \/>\nls -1tr $BACKUPDIR\/*.ldif.gz | head -n-$KEEP | xargs rm &#8211;<\/p>\n<p>ldapmodify -Y EXTERNAL -H ldapi:\/\/\/ -f monitor.ldif<\/p>\n<p>cp \/usr\/share\/openldap-servers\/DB_CONFIG.example \/var\/lib\/ldap\/DB_CONFIG<br \/>\nchown ldap:ldap \/var\/lib\/ldap\/*<\/p>\n<p>Add the cosine and nis LDAP schemas.<\/p>\n<p>ldapadd -Y EXTERNAL -H ldapi:\/\/\/ -f \/etc\/openldap\/schema\/cosine.ldif<br \/>\nldapadd -Y EXTERNAL -H ldapi:\/\/\/ -f \/etc\/openldap\/schema\/nis.ldif<br \/>\nldapadd -Y EXTERNAL -H ldapi:\/\/\/ -f \/etc\/openldap\/schema\/inetorgperson.ldif<\/p>\n<p>Generate base.ldif file for your domain.<\/p>\n<p>vi base.ldif<\/p>\n<p>Use the below information. You can modify it according to your requirement.<\/p>\n<p>dn: dc=apple,dc=com<br \/>\ndc: apple<br \/>\nobjectClass: top<br \/>\nobjectClass: domain<\/p>\n<p>dn: cn=ldapadm,dc=apple,dc=com<br \/>\nobjectClass: organizationalRole<br \/>\ncn: ldapadm<br \/>\ndescription: LDAP Manager<\/p>\n<p>dn: cn=Manager,dc=apple,dc=com<br \/>\nobjectClass: organizationalRole<br \/>\ncn: Manager<br \/>\ndescription: Directory Manager<\/p>\n<p>dn: ou=People,dc=apple,dc=com<br \/>\nobjectClass: organizationalUnit<br \/>\nou: People<\/p>\n<p>dn: ou=Group,dc=apple,dc=com<br \/>\nobjectClass: organizationalUnit<br \/>\nou: Group<\/p>\n<p>Build the directory structure.<\/p>\n<p>ldapadd -x -W -D cn=Manager,dc=apple,dc=com -W -f base.ldif<\/p>\n<p>ldapsearch -x -W -D &#8216;cn=Manager,dc=apple,dc=com &#8216; -b &#8220;&#8221; -s base<\/p>\n<p>ldapsearch -x -b &#8221; -s base &#8216;(objectclass=*)&#8217; namingContexts<\/p>\n","protected":false},"excerpt":{"rendered":"<p>systemctl stop firewalld.service setenforce 0<\/p>\n<p>sed -i s\/^SELINUX=enforcing\/SELINUX=disabled\/g \/etc\/selinux\/config<\/p>\n<p>127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4 ::1 localhost localhost.localdomain localhost6 localhost6.localdomain6 192.168.1.70 master.apple.com master 192.168.1.71 slave.apple.com slave 192.168.1.73 client1.apple.com client1 192.168.1.74 client2.apple.com client2<\/p>\n<p>yum -y install openldap compat-openldap openldap-clients openldap-servers openldap-servers-sql openldap-devel migrationtools vim<\/p>\n<p>cd \/etc\/openldap\/slapd.d<\/p>\n<p>rm -rf<\/p>\n<p>cp \/usr\/share\/openldap-servers\/slapd.ldif \/root\/ldap\/<\/p>\n<p>Set OpenLDAP admin password. # generate [&#8230;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[95],"tags":[],"_links":{"self":[{"href":"https:\/\/mohan.sg\/index.php?rest_route=\/wp\/v2\/posts\/7576"}],"collection":[{"href":"https:\/\/mohan.sg\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/mohan.sg\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/mohan.sg\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/mohan.sg\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=7576"}],"version-history":[{"count":5,"href":"https:\/\/mohan.sg\/index.php?rest_route=\/wp\/v2\/posts\/7576\/revisions"}],"predecessor-version":[{"id":7582,"href":"https:\/\/mohan.sg\/index.php?rest_route=\/wp\/v2\/posts\/7576\/revisions\/7582"}],"wp:attachment":[{"href":"https:\/\/mohan.sg\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=7576"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/mohan.sg\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=7576"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/mohan.sg\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=7576"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}