Inhaltsverzeichnis
LDAP CentOS 7
LDAP ist ein Netzwerkprotokoll und dient zur Bereitstellung von Verzeichnisdiensten. Es vermittelt die Kommunikation zwischen dem LDAP-Client und dem Directory Server, bzw. einem Backend-System, welches Verzeichnisinformationen bereitstellt.
Die hier beschriebene Variante von LDAP ist OpenLDAP, welche eine freie Implementierung des Lightweight Directory Access Protocols ist.
Ab hier werden zur Ausführung nachfolgender Befehle root
-Rechte benötigt. Um der Benutzer root
zu werden, melden Sie sich bitte als root
-Benutzer am System an, oder wechseln mit nachfolgendem Befehl zum Benutzer root
:
$ su - Password:
Installation
Zur Installation eines OpenLDAP-Servers wird nachfolgendes Paket benötigt:
Mit nachfolgendem Befehl, wird das Pakete openldap-servers
installiert:
# yum install openldap-servers Resolving Dependencies --> Running transaction check ---> Package openldap-servers.x86_64 0:2.4.39-3.el7 will be installed --> Processing Dependency: libltdl.so.7()(64bit) for package: openldap-servers-2.4.39-3.el7.x86_64 --> Running transaction check ---> Package libtool-ltdl.x86_64 0:2.4.2-20.el7 will be installed --> Finished Dependency Resolution Changes in packages about to be updated: Dependencies Resolved ================================================================================ Package Arch Version Repository Size ================================================================================ Installing: openldap-servers x86_64 2.4.39-3.el7 base 2.1 M Installing for dependencies: libtool-ltdl x86_64 2.4.2-20.el7 base 49 k Transaction Summary ================================================================================ Install 1 Package (+1 Dependent package) Total download size: 2.1 M Installed size: 4.7 M Is this ok [y/d/N]: y Downloading packages: (1/2): openldap-servers-2.4.39-3.el7.x86_64.rpm | 2.1 MB 00:00 (2/2): libtool-ltdl-2.4.2-20.el7.x86_64.rpm | 49 kB 00:00 -------------------------------------------------------------------------------- Total 6.1 MB/s | 2.1 MB 00:00 Running transaction check Running transaction test Transaction test succeeded Running transaction Installing : libtool-ltdl-2.4.2-20.el7.x86_64 1/2 Installing : openldap-servers-2.4.39-3.el7.x86_64 2/2 Verifying : libtool-ltdl-2.4.2-20.el7.x86_64 1/2 Verifying : openldap-servers-2.4.39-3.el7.x86_64 2/2 Installed: openldap-servers.x86_64 0:2.4.39-3.el7 Dependency Installed: libtool-ltdl.x86_64 0:2.4.2-20.el7 Complete!
Mit nachfolgendem Befehl kann überprüft werden, welche Inhalte mit den Paket openldap-servers
installiert wurden.
# rpm -qil openldap-servers Name : openldap-servers Version : 2.4.39 Release : 3.el7 Architecture: x86_64 Install Date: Fri 14 Nov 2014 09:01:33 AM CET Group : System Environment/Daemons Size : 4887346 License : OpenLDAP Signature : RSA/SHA256, Fri 04 Jul 2014 06:04:24 AM CEST, Key ID 24c6a8a7f4a80eb5 Source RPM : openldap-2.4.39-3.el7.src.rpm Build Date : Tue 10 Jun 2014 01:24:08 AM CEST Build Host : worker1.bsys.centos.org Relocations : (not relocatable) Packager : CentOS BuildSystem <http://bugs.centos.org> Vendor : CentOS URL : http://www.openldap.org/ Summary : LDAP server Description : OpenLDAP is an open-source suite of LDAP (Lightweight Directory Access Protocol) applications and development tools. LDAP is a set of protocols for accessing directory services (usually phone book style information, but other information is possible) over the Internet, similar to the way DNS (Domain Name System) information is propagated over the Internet. This package contains the slapd server and related files. /etc/openldap/check_password.conf /etc/openldap/schema /etc/openldap/schema/collective.ldif /etc/openldap/schema/collective.schema /etc/openldap/schema/corba.ldif /etc/openldap/schema/corba.schema /etc/openldap/schema/core.ldif /etc/openldap/schema/core.schema /etc/openldap/schema/cosine.ldif /etc/openldap/schema/cosine.schema /etc/openldap/schema/duaconf.ldif /etc/openldap/schema/duaconf.schema /etc/openldap/schema/dyngroup.ldif /etc/openldap/schema/dyngroup.schema /etc/openldap/schema/inetorgperson.ldif /etc/openldap/schema/inetorgperson.schema /etc/openldap/schema/java.ldif /etc/openldap/schema/java.schema /etc/openldap/schema/misc.ldif /etc/openldap/schema/misc.schema /etc/openldap/schema/nis.ldif /etc/openldap/schema/nis.schema /etc/openldap/schema/openldap.ldif /etc/openldap/schema/openldap.schema /etc/openldap/schema/pmi.ldif /etc/openldap/schema/pmi.schema /etc/openldap/schema/ppolicy.ldif /etc/openldap/schema/ppolicy.schema /etc/openldap/slapd.conf /etc/openldap/slapd.conf.bak /etc/openldap/slapd.d /etc/sysconfig/slapd /usr/lib/systemd/system/slapd.service /usr/lib/tmpfiles.d/slapd.conf /usr/lib64/openldap/accesslog-2.4.so.2 /usr/lib64/openldap/accesslog-2.4.so.2.10.2 /usr/lib64/openldap/accesslog.la /usr/lib64/openldap/auditlog-2.4.so.2 /usr/lib64/openldap/auditlog-2.4.so.2.10.2 /usr/lib64/openldap/auditlog.la /usr/lib64/openldap/back_dnssrv-2.4.so.2 /usr/lib64/openldap/back_dnssrv-2.4.so.2.10.2 /usr/lib64/openldap/back_dnssrv.la /usr/lib64/openldap/back_ldap-2.4.so.2 /usr/lib64/openldap/back_ldap-2.4.so.2.10.2 /usr/lib64/openldap/back_ldap.la /usr/lib64/openldap/back_meta-2.4.so.2 /usr/lib64/openldap/back_meta-2.4.so.2.10.2 /usr/lib64/openldap/back_meta.la /usr/lib64/openldap/back_null-2.4.so.2 /usr/lib64/openldap/back_null-2.4.so.2.10.2 /usr/lib64/openldap/back_null.la /usr/lib64/openldap/back_passwd-2.4.so.2 /usr/lib64/openldap/back_passwd-2.4.so.2.10.2 /usr/lib64/openldap/back_passwd.la /usr/lib64/openldap/back_perl-2.4.so.2 /usr/lib64/openldap/back_perl-2.4.so.2.10.2 /usr/lib64/openldap/back_perl.la /usr/lib64/openldap/back_relay-2.4.so.2 /usr/lib64/openldap/back_relay-2.4.so.2.10.2 /usr/lib64/openldap/back_relay.la /usr/lib64/openldap/back_shell-2.4.so.2 /usr/lib64/openldap/back_shell-2.4.so.2.10.2 /usr/lib64/openldap/back_shell.la /usr/lib64/openldap/back_sock-2.4.so.2 /usr/lib64/openldap/back_sock-2.4.so.2.10.2 /usr/lib64/openldap/back_sock.la /usr/lib64/openldap/check_password.so.1.1 /usr/lib64/openldap/collect-2.4.so.2 /usr/lib64/openldap/collect-2.4.so.2.10.2 /usr/lib64/openldap/collect.la /usr/lib64/openldap/constraint-2.4.so.2 /usr/lib64/openldap/constraint-2.4.so.2.10.2 /usr/lib64/openldap/constraint.la /usr/lib64/openldap/dds-2.4.so.2 /usr/lib64/openldap/dds-2.4.so.2.10.2 /usr/lib64/openldap/dds.la /usr/lib64/openldap/deref-2.4.so.2 /usr/lib64/openldap/deref-2.4.so.2.10.2 /usr/lib64/openldap/deref.la /usr/lib64/openldap/dyngroup-2.4.so.2 /usr/lib64/openldap/dyngroup-2.4.so.2.10.2 /usr/lib64/openldap/dyngroup.la /usr/lib64/openldap/dynlist-2.4.so.2 /usr/lib64/openldap/dynlist-2.4.so.2.10.2 /usr/lib64/openldap/dynlist.la /usr/lib64/openldap/memberof-2.4.so.2 /usr/lib64/openldap/memberof-2.4.so.2.10.2 /usr/lib64/openldap/memberof.la /usr/lib64/openldap/pcache-2.4.so.2 /usr/lib64/openldap/pcache-2.4.so.2.10.2 /usr/lib64/openldap/pcache.la /usr/lib64/openldap/ppolicy-2.4.so.2 /usr/lib64/openldap/ppolicy-2.4.so.2.10.2 /usr/lib64/openldap/ppolicy.la /usr/lib64/openldap/refint-2.4.so.2 /usr/lib64/openldap/refint-2.4.so.2.10.2 /usr/lib64/openldap/refint.la /usr/lib64/openldap/retcode-2.4.so.2 /usr/lib64/openldap/retcode-2.4.so.2.10.2 /usr/lib64/openldap/retcode.la /usr/lib64/openldap/rwm-2.4.so.2 /usr/lib64/openldap/rwm-2.4.so.2.10.2 /usr/lib64/openldap/rwm.la /usr/lib64/openldap/seqmod-2.4.so.2 /usr/lib64/openldap/seqmod-2.4.so.2.10.2 /usr/lib64/openldap/seqmod.la /usr/lib64/openldap/smbk5pwd-2.4.so.2 /usr/lib64/openldap/smbk5pwd-2.4.so.2.10.2 /usr/lib64/openldap/smbk5pwd.la /usr/lib64/openldap/sssvlv-2.4.so.2 /usr/lib64/openldap/sssvlv-2.4.so.2.10.2 /usr/lib64/openldap/sssvlv.la /usr/lib64/openldap/syncprov-2.4.so.2 /usr/lib64/openldap/syncprov-2.4.so.2.10.2 /usr/lib64/openldap/syncprov.la /usr/lib64/openldap/translucent-2.4.so.2 /usr/lib64/openldap/translucent-2.4.so.2.10.2 /usr/lib64/openldap/translucent.la /usr/lib64/openldap/unique-2.4.so.2 /usr/lib64/openldap/unique-2.4.so.2.10.2 /usr/lib64/openldap/unique.la /usr/lib64/openldap/valsort-2.4.so.2 /usr/lib64/openldap/valsort-2.4.so.2.10.2 /usr/lib64/openldap/valsort.la /usr/libexec/openldap/check-config.sh /usr/libexec/openldap/convert-config.sh /usr/libexec/openldap/functions /usr/libexec/openldap/generate-server-cert.sh /usr/libexec/openldap/upgrade-db.sh /usr/sbin/slapacl /usr/sbin/slapadd /usr/sbin/slapauth /usr/sbin/slapcat /usr/sbin/slapd /usr/sbin/slapdn /usr/sbin/slapindex /usr/sbin/slappasswd /usr/sbin/slapschema /usr/sbin/slaptest /usr/share/doc/openldap-servers-2.4.39 /usr/share/doc/openldap-servers-2.4.39/README.back_perl /usr/share/doc/openldap-servers-2.4.39/README.check_pwd /usr/share/doc/openldap-servers-2.4.39/README.schema /usr/share/doc/openldap-servers-2.4.39/README.smbk5pwd /usr/share/doc/openldap-servers-2.4.39/SampleLDAP.pm /usr/share/doc/openldap-servers-2.4.39/allmail-en.png /usr/share/doc/openldap-servers-2.4.39/allusersgroup-en.png /usr/share/doc/openldap-servers-2.4.39/config_dit.png /usr/share/doc/openldap-servers-2.4.39/config_local.png /usr/share/doc/openldap-servers-2.4.39/config_ref.png /usr/share/doc/openldap-servers-2.4.39/config_repl.png /usr/share/doc/openldap-servers-2.4.39/delta-syncrepl.png /usr/share/doc/openldap-servers-2.4.39/dual_dc.png /usr/share/doc/openldap-servers-2.4.39/guide.html /usr/share/doc/openldap-servers-2.4.39/intro_dctree.png /usr/share/doc/openldap-servers-2.4.39/intro_tree.png /usr/share/doc/openldap-servers-2.4.39/ldap-sync-refreshandpersist.png /usr/share/doc/openldap-servers-2.4.39/ldap-sync-refreshonly.png /usr/share/doc/openldap-servers-2.4.39/n-way-multi-master.png /usr/share/doc/openldap-servers-2.4.39/push-based-complete.png /usr/share/doc/openldap-servers-2.4.39/push-based-standalone.png /usr/share/doc/openldap-servers-2.4.39/refint.png /usr/share/doc/openldap-servers-2.4.39/set-following-references.png /usr/share/doc/openldap-servers-2.4.39/set-memberUid.png /usr/share/doc/openldap-servers-2.4.39/set-recursivegroup.png /usr/share/man/man5/slapd-bdb.5.gz /usr/share/man/man5/slapd-config.5.gz /usr/share/man/man5/slapd-dnssrv.5.gz /usr/share/man/man5/slapd-hdb.5.gz /usr/share/man/man5/slapd-ldap.5.gz /usr/share/man/man5/slapd-ldbm.5.gz /usr/share/man/man5/slapd-ldif.5.gz /usr/share/man/man5/slapd-mdb.5.gz /usr/share/man/man5/slapd-meta.5.gz /usr/share/man/man5/slapd-monitor.5.gz /usr/share/man/man5/slapd-ndb.5.gz /usr/share/man/man5/slapd-null.5.gz /usr/share/man/man5/slapd-passwd.5.gz /usr/share/man/man5/slapd-perl.5.gz /usr/share/man/man5/slapd-relay.5.gz /usr/share/man/man5/slapd-shell.5.gz /usr/share/man/man5/slapd-sock.5.gz /usr/share/man/man5/slapd-sql.5.gz /usr/share/man/man5/slapd.access.5.gz /usr/share/man/man5/slapd.backends.5.gz /usr/share/man/man5/slapd.conf.5.gz /usr/share/man/man5/slapd.overlays.5.gz /usr/share/man/man5/slapd.plugin.5.gz /usr/share/man/man5/slapo-accesslog.5.gz /usr/share/man/man5/slapo-auditlog.5.gz /usr/share/man/man5/slapo-chain.5.gz /usr/share/man/man5/slapo-collect.5.gz /usr/share/man/man5/slapo-constraint.5.gz /usr/share/man/man5/slapo-dds.5.gz /usr/share/man/man5/slapo-dyngroup.5.gz /usr/share/man/man5/slapo-dynlist.5.gz /usr/share/man/man5/slapo-memberof.5.gz /usr/share/man/man5/slapo-pbind.5.gz /usr/share/man/man5/slapo-pcache.5.gz /usr/share/man/man5/slapo-ppolicy.5.gz /usr/share/man/man5/slapo-refint.5.gz /usr/share/man/man5/slapo-retcode.5.gz /usr/share/man/man5/slapo-rwm.5.gz /usr/share/man/man5/slapo-sock.5.gz /usr/share/man/man5/slapo-sssvlv.5.gz /usr/share/man/man5/slapo-syncprov.5.gz /usr/share/man/man5/slapo-translucent.5.gz /usr/share/man/man5/slapo-unique.5.gz /usr/share/man/man5/slapo-valsort.5.gz /usr/share/man/man8/slapacl.8.gz /usr/share/man/man8/slapadd.8.gz /usr/share/man/man8/slapauth.8.gz /usr/share/man/man8/slapcat.8.gz /usr/share/man/man8/slapd.8.gz /usr/share/man/man8/slapdn.8.gz /usr/share/man/man8/slapindex.8.gz /usr/share/man/man8/slappasswd.8.gz /usr/share/man/man8/slapschema.8.gz /usr/share/man/man8/slaptest.8.gz /usr/share/openldap-servers /usr/share/openldap-servers/DB_CONFIG.example /usr/share/openldap-servers/slapd.ldif /var/lib/ldap /var/run/openldap
Um z.B. Abfragen gegen den OpenLDAP-Servers richten zu können wird nachfolgendes Paket benötigt:
installiert werden.
Mit nachfolgendem Befehl, wird das Pakete openldap-clients
installiert:
# yum install openldap-clients Resolving Dependencies --> Running transaction check ---> Package openldap-clients.x86_64 0:2.4.39-3.el7 will be installed --> Finished Dependency Resolution Changes in packages about to be updated: Dependencies Resolved ================================================================================ Package Arch Version Repository Size ================================================================================ Installing: openldap-clients x86_64 2.4.39-3.el7 base 183 k Transaction Summary ================================================================================ Install 1 Package Total download size: 183 k Installed size: 575 k Is this ok [y/d/N]: y Downloading packages: openldap-clients-2.4.39-3.el7.x86_64.rpm | 183 kB 00:00 Running transaction check Running transaction test Transaction test succeeded Running transaction Installing : openldap-clients-2.4.39-3.el7.x86_64 1/1 Verifying : openldap-clients-2.4.39-3.el7.x86_64 1/1 Installed: openldap-clients.x86_64 0:2.4.39-3.el7 Complete!
Mit nachfolgendem Befehl kann überprüft werden, welche Inhalte mit den Paket openldap-clients
installiert wurden.
# rpm -qil openldap-clients Name : openldap-clients Version : 2.4.39 Release : 3.el7 Architecture: x86_64 Install Date: Fri 14 Nov 2014 09:02:59 AM CET Group : Applications/Internet Size : 588425 License : OpenLDAP Signature : RSA/SHA256, Fri 04 Jul 2014 06:04:16 AM CEST, Key ID 24c6a8a7f4a80eb5 Source RPM : openldap-2.4.39-3.el7.src.rpm Build Date : Tue 10 Jun 2014 01:24:08 AM CEST Build Host : worker1.bsys.centos.org Relocations : (not relocatable) Packager : CentOS BuildSystem <http://bugs.centos.org> Vendor : CentOS URL : http://www.openldap.org/ Summary : LDAP client utilities Description : OpenLDAP is an open-source suite of LDAP (Lightweight Directory Access Protocol) applications and development tools. LDAP is a set of protocols for accessing directory services (usually phone book style information, but other information is possible) over the Internet, similar to the way DNS (Domain Name System) information is propagated over the Internet. The openldap-clients package contains the client programs needed for accessing and modifying OpenLDAP directories. /usr/bin/ldapadd /usr/bin/ldapcompare /usr/bin/ldapdelete /usr/bin/ldapexop /usr/bin/ldapmodify /usr/bin/ldapmodrdn /usr/bin/ldappasswd /usr/bin/ldapsearch /usr/bin/ldapurl /usr/bin/ldapwhoami /usr/share/man/man1/ldapadd.1.gz /usr/share/man/man1/ldapcompare.1.gz /usr/share/man/man1/ldapdelete.1.gz /usr/share/man/man1/ldapexop.1.gz /usr/share/man/man1/ldapmodify.1.gz /usr/share/man/man1/ldapmodrdn.1.gz /usr/share/man/man1/ldappasswd.1.gz /usr/share/man/man1/ldapsearch.1.gz /usr/share/man/man1/ldapurl.1.gz /usr/share/man/man1/ldapwhoami.1.gz
Dienst/Deamon-Start einrichten
Um einen OpenLDAP-Server, welcher als Dienst/Deamon als Hintergrundprozess läuft, auch nach einem Neustart des Servers zur Verfügung zu haben, soll der Dienst/Daemon mit dem Server mit gestartet werden, was mit nachfolgendem Befehl realisiert werden kann:
# systemctl enable slapd.service ln -s '/usr/lib/systemd/system/slapd.service' '/etc/systemd/system/multi-user.target.wants/slapd.service'
Eine Überprüfung, ob beim Neustart des Server der slapd
-Dienst/Deamon wirklich mit gestartet wird, kann mit nachfolgendem Befehl erfolgen und sollte eine Anzeige, wie ebenfalls nachfolgend dargestellt ausgeben:
# systemctl list-unit-files --type=service | grep -e slapd.service slapd.service enabled
bzw.
# systemctl is-enabled slapd.service enabled
IPv6 deaktivieren
Der Einsatz von IPv6 soll nicht durchgeführt werden. Deshalb muss die nachfolgende Konfigurationsdatei wie folgt angepasst werden:
/etc/sysconfig/slapd
Folgende Ergänzung in der Konfigurationsdatei /etc/sysconfig/slapd
muss durchgeführt werden, um den slapd
-Dienst/Daemon ohne die Nutzung von IPv6 zu starten (komplette Konfigurationsdatei):
# OpenLDAP server configuration # see 'man slapd' for additional information # Where the server will run (-h option) # - ldapi:/// is required for on-the-fly configuration using client tools # (use SASL with EXTERNAL mechanism for authentication) # - default: ldapi:/// ldap:/// # - example: ldapi:/// ldap://127.0.0.1/ ldap://10.0.0.1:1389/ ldaps:/// SLAPD_URLS="ldapi:/// ldap:///" # Any custom options # Tachtler # default: #SLAPD_OPTIONS="" SLAPD_OPTIONS="-4" # Keytab location for GSSAPI Kerberos authentication #KRB5_KTNAME="FILE:/etc/openldap/ldap.keytab"
Effektiv werden am Ende der Konfigurationsdatei nachfolgende Zeilen angefügt:
# Tachtler # default: #SLAPD_OPTIONS="" SLAPD_OPTIONS="-4"
- Um die Unterstützung von IPv6 in CentOS ab der Version 6.0 zu deaktivieren, kann die Beschreibung unter nachfolgendem Link genutzt werden:
iptables Regel
Damit der OpenLDAP-Server auch erreichbar ist und nicht die Ergebnisse der Verzeichnisdienst-Abfragen vom Paketfilter iptables
blockiert werden, muss nachfolgende Regel zum iptables
-Regelwerk hinzugefügt werden.
Um die aktuellen iptables
-Regeln erweitern zu können, sollten diese erst einmal aufgelistet werden, was mit nachfolgendem Befehl durchgeführt werden kann:
# iptables -L -nv --line-numbers Chain INPUT (policy ACCEPT 0 packets, 0 bytes) num pkts bytes target prot opt in out source destination 1 141 15811 ACCEPT all -- * * 0.0.0.0/0 0.0.0.0/0 state RELATED,ESTABLISHED 2 0 0 ACCEPT icmp -- * * 0.0.0.0/0 0.0.0.0/0 3 0 0 ACCEPT all -- lo * 0.0.0.0/0 0.0.0.0/0 4 1 60 ACCEPT tcp -- * * 0.0.0.0/0 0.0.0.0/0 state NEW tcp dpt:22 5 2 64 REJECT all -- * * 0.0.0.0/0 0.0.0.0/0 reject-with icmp-host-prohibited Chain FORWARD (policy ACCEPT 0 packets, 0 bytes) num pkts bytes target prot opt in out source destination 1 0 0 REJECT all -- * * 0.0.0.0/0 0.0.0.0/0 reject-with icmp-host-prohibited Chain OUTPUT (policy ACCEPT 0 packets, 0 bytes) num pkts bytes target prot opt in out source destination
Nachfolgende Befehle, fügen folgende iptables
-Regeln dem iptables
-Regelwerk nach der Position 4 hinzu, ohne das der Paketfilter angehalten werden muss:
-A INPUT -p tcp --dport 636 -j ACCEPT
-A INPUT -p tcp --dport 389 -j ACCEPT
und hier die Befehle:
# iptables -I INPUT 5 -p tcp --dport 636 -j ACCEPT # iptables -I INPUT 5 -p tcp --dport 389 -j ACCEPT
Ein erneute Abfrage des iptables
-Regelwerts, sollte dann nachfolgend dargestellte Ausgabe ergeben, was mit folgendem Befehl durchgeführt werden kann:
# iptables -L -nv --line-numbers Chain INPUT (policy ACCEPT 0 packets, 0 bytes) num pkts bytes target prot opt in out source destination 1 10015 3790K ACCEPT all -- * * 0.0.0.0/0 0.0.0.0/0 state RELATED,ESTABLISHED 2 0 0 ACCEPT icmp -- * * 0.0.0.0/0 0.0.0.0/0 3 0 0 ACCEPT all -- lo * 0.0.0.0/0 0.0.0.0/0 4 1 60 ACCEPT tcp -- * * 0.0.0.0/0 0.0.0.0/0 state NEW tcp dpt:22 5 0 0 ACCEPT tcp -- * * 0.0.0.0/0 0.0.0.0/0 tcp dpt:389 6 0 0 ACCEPT tcp -- * * 0.0.0.0/0 0.0.0.0/0 tcp dpt:636 7 33 1056 LOG all -- * * 0.0.0.0/0 0.0.0.0/0 LOG flags 0 level 4 8 33 1056 REJECT all -- * * 0.0.0.0/0 0.0.0.0/0 reject-with icmp-host-prohibited Chain FORWARD (policy ACCEPT 0 packets, 0 bytes) num pkts bytes target prot opt in out source destination 1 0 0 LOG all -- * * 0.0.0.0/0 0.0.0.0/0 LOG flags 0 level 4 2 0 0 REJECT all -- * * 0.0.0.0/0 0.0.0.0/0 reject-with icmp-host-prohibited Chain OUTPUT (policy ACCEPT 0 packets, 0 bytes) num pkts bytes target prot opt in out source destination
Die neuen Zeilen sind an Position 5 (INPUT) und Position 6 (INPUT) zu sehen, hier nachfolgend zur Verdeutlichung noch einmal dargestellt (nur relevanter Ausschnitt):
... 5 0 0 ACCEPT tcp -- * * 0.0.0.0/0 0.0.0.0/0 tcp dpt:389 6 0 0 ACCEPT tcp -- * * 0.0.0.0/0 0.0.0.0/0 tcp dpt:636 ...
Um diese iptables
-Regel dauerhaft, auch nach einem Neustart des Server, weiterhin im iptables
-Regelwerk zu speichern, muss nachfolgend dargestellter Befehl abschließend noch ausgeführt werden:
# /usr/sbin/iptables-save > /etc/sysconfig/iptables
Basis-Konfiguration
Vorbereitung
Bevor mit den Änderungen an den *.ldif-Konfigurationsdateien begonnen werden kann, sollte das Standard-Konfigurationsverzeichnis, welche wie folgt benannt ist, samt Inhalt gesichert werden, was mit nachfolgendem Befehl durchgeführt werden kann:
# cp -ar /etc/openldap/slapd.d /etc/openldap/slapd.d.orig
Es sollte eine zusätzliches Verzeichnis mit dem Namen:
/etc/openldap/slapd.d.orig
entstanden sein. Die Abfrage ob das neue Verzeichnis vorhanden ist, kann mit nachfolgendem Befehl durchgeführt werden und sollte eine Ausgabe wie die nachfolgend gezeigt, erzeugen:
# ls -la /etc/openldap/ total 24 drwxr-xr-x. 6 root root 106 Nov 14 09:21 . drwxr-xr-x. 73 root root 8192 Nov 14 09:01 .. drwxr-xr-x. 2 root root 6 Jun 10 01:23 certs -rw-r--r-- 1 root root 121 Jun 10 01:23 check_password.conf -rw-r--r--. 1 root root 363 Jun 10 01:23 ldap.conf drwxr-xr-x 2 root root 4096 Nov 14 09:01 schema drwx------ 3 ldap ldap 43 Nov 14 09:01 slapd.d drwx------ 3 ldap ldap 43 Nov 14 09:01 slapd.d.orig
Der Inhalt der beiden Verzeichnisse /etc/openldap/slapd.d
- und - /etc/openldap/slapd.d.orig
sollte identisch sein, was mit nachfolgendem Befehl überprüft werden kann:
# diff -r /etc/openldap/slapd.d /etc/openldap/slapd.d.orig/
WICHTIG - Es sollte KEINE Ausgabe erzeugt werden !!!
Konfigurationsdateien
Es gibt zwei wichtige Konfigurationsdateien,
/etc/openldap/ldap.conf
/var/lib/ldap/DB_CONFIG
und das wichtigste, das Konfigurationsverzeichnis:
/etc/openldap/slapd.d/*
/etc/openldap/ldap.conf
In der Konfigurationsdatei /etc/openldap/ldap.conf
wird die Basis-Domain für den LDAP-Client festgelegt. Dies ist die Standard-Konfigurationsdatei:
# cat /etc/openldap/ldap.conf # # LDAP Defaults # # See ldap.conf(5) for details # This file should be world readable but not world writable. #BASE dc=example,dc=com #URI ldap://ldap.example.com ldap://ldap-master.example.com:666 #SIZELIMIT 12 #TIMELIMIT 15 #DEREF never TLS_CACERTDIR /etc/openldap/certs # Turning this off breaks GSSAPI used with krb5 when rdns = false SASL_NOCANON on
Mit der Variable BASE wird der standardmäßig abgefragte Teilbaum festgelegt. Das bedeutet, dass alle Anfragen unterhalb von dc=tachtler, dc=net
durchzuführen sind. Dies wird häufig Searchbase (Suchbasis) genannt. Die Variable URI gibt den Server an und wie dieser standardmäßig abgefragt wird.
Folgende Anpassungen der Konfigurationsdatei /etc/openldap/ldap.conf
genügen, um grundsätzlich einen LDAP-Server zu betreiben:
# # LDAP Defaults # # See ldap.conf(5) for details # This file should be world readable but not world writable. # Tachtler # default: #BASE dc=example,dc=com # default: #URI ldap://ldap.example.com ldap://ldap-master.example.com:666 BASE dc=tachtler,dc=net URI ldap://ldap.idmz.tachtler.net #SIZELIMIT 12 #TIMELIMIT 15 #DEREF never TLS_CACERTDIR /etc/openldap/certs # Turning this off breaks GSSAPI used with krb5 when rdns = false SASL_NOCANON on
/var/lib/ldap/DB_CONFIG
Zur Definition des benötigten „Backend“-Verzeichnisdienstes, hier eine Berkely-DB (BDB) muss im nachfolgend aufgeführten Verzeichnis eine Konfigurationsdatei mit nachfolgend benannten Namen erstellt werden
/var/lib/ldap/DB_CONFIG
Als Vorlage für den Inhalt dieser Datei, kann die aus der Installation des RPM-Pakets mitgelieferte Konfigurationsdatei
/usr/share/openldap-servers/DB_CONFIG.example
verwendet werden.
Nachfolgender Befehl sollte eine Kopie im Verzeichnis /var/lib/ldap
erstellen:
# cp -a /usr/share/openldap-servers/DB_CONFIG.example /var/lib/ldap/DB_CONFIG
Ein Anpassung der Besitzrechte, sollte mit nachfolgendem Befehl durchgeführt werden:
# chown ldap:ldap /var/lib/ldap/DB_CONFIG
Zur Überprüfung, ob die vorhergehenden Schritte in Bezug auf die Konfigurationsdatei /var/lib/ldap/DB_CONFIG
erfolgreich waren, kann nachfolgender Befehl genutzt werden, welche ebenfalls eine Ausgabe wie nachfolgend dargestellt erzeugen sollte:
# ls -la /var/lib/ldap total 8 drwx------. 2 ldap ldap 22 Nov 14 09:33 . drwxr-xr-x. 24 root root 4096 Nov 14 03:43 .. -rw-r--r-- 1 ldap ldap 845 Jun 10 01:23 DB_CONFIG
HINWEIS - Der Inhalt der Datei, kann unverändert bleiben !!!
Der Inhalt der Konfigurationsdatei /var/lib/ldap/DB_CONFIG
sollte wie folgt aussehen, was mit nachfolgendem Befehl überprüft werden kann:
(Komplette Konfigurationsdatei)
# cat /var/lib/ldap/DB_CONFIG # $OpenLDAP$ # Example DB_CONFIG file for use with slapd(8) BDB/HDB databases. # # See the Oracle Berkeley DB documentation # <http://www.oracle.com/technology/documentation/berkeley-db/db/ref/env/db_config.html> # for detail description of DB_CONFIG syntax and semantics. # # Hints can also be found in the OpenLDAP Software FAQ # <http://www.openldap.org/faq/index.cgi?file=2> # in particular: # <http://www.openldap.org/faq/index.cgi?file=1075> # Note: most DB_CONFIG settings will take effect only upon rebuilding # the DB environment. # one 0.25 GB cache set_cachesize 0 268435456 1 # Data Directory #set_data_dir db # Transaction Log settings set_lg_regionmax 262144 set_lg_bsize 2097152 #set_lg_dir logs # Note: special DB_CONFIG flags are no longer needed for "quick" # slapadd(8) or slapindex(8) access (see their -q option).
/etc/hosts
Falls keine DNS-Auflösung des Namens, welcher in der Konfigurationsdatei
/etc/openldap/ldap.conf
unter
... URI ldap://ldap.idmz.tachtler.net ...
möglich ist, muss in der Konfigurationsdatei
/etc/hosts
nachfolgende Ergänzung hinzugefügt werden:
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4 ::1 localhost localhost.localdomain localhost6 localhost6.localdomain6 192.168.0.30 ldap.idmz.tachtler.net
HINWEIS - Die Ergänzung ist in der 3 Zeile in oben gezeigter Konfigurationsdatei!
Somit kann gewährleistet werden, dass die Verwendung des DNS-Namens möglich ist.
LOG-Schreibung
/etc/rsyslog.conf
Um die LOG-Einträge des OpenLDAP-Servers, bzw. des slapd
-Daemons/Dienstes in einer separaten LOG-Datei, wie z.B.
/var/log/slapd.log
loggen zu lassen, sind nachfolgende Änderungen des Standard-LOG-Deamons/Dienstes unter CentOS in der Version 7.x
rsyslog
in der Konfigurationsdatei
/etc/rsyslog.conf
durchzuführen.
Hier die Ergänzungen in der Konfigurationsdatei /etc/rsyslog.conf
(nur relevanter Ausschnitt):
... # Tachtler # Log all the slapd messages in one place. local4.* -/var/log/slapd.log ...
Der Neustart des Standard-LOG-Deamons/Dienstes rsyslog
kann mit nachfolgendem Befehl durchgeführt werden:
# systemctl restart rsyslog.service
/etc/logrotate.d/syslog
Nachfolgende Ergänzung sollte in der Konfigurationsdatei
/etc/logrotate.d/syslog
um auch das Rotieren der neuen Log-Datei
/var/log/slapd.log
durchführen zu können:
(Komplette Konfigurationsdatei)
/var/log/cron /var/log/maillog /var/log/messages /var/log/secure /var/log/spooler /var/log/slapd.log { sharedscripts postrotate /bin/kill -HUP `cat /var/run/syslogd.pid 2> /dev/null` 2> /dev/null || true endscript }
HINWEIS - Die Ergänzung ist in der 6 Zeile in oben gezeigter Konfigurationsdatei!
Erster Start
Bevor weitere Konfigurationsschritte erfolgen, sollte dem ersten Start nichts im Wege stehen, da bereits hier Konfigurationseinstellungen durchgeführt werden, was mit nachfolgendem Befehl durchgeführt werden kann:
# systemctl start slapd.service
HINWEIS - Es erfolgen keine weiteren Ausgaben, wenn der Start erfolgreich war !
OpenLDAP-Server Überprüfung
Ob der OpenLDAP-Server, sprich der slapd
-Dienst/Deamon auch tatsächlich als Hintergrundprozess läuft, kann mit nachfolgendem Befehl überprüft werden (Es sollte eine Ausgabe wie nachfolgend dargestellt erfolgen - es kommt auf die zweite Zeile an!):
# ps auxwf | grep slapd root 16948 0.0 0.0 112640 928 pts/0 S+ 13:36 0:00 \_ grep --color=auto slapd ldap 16944 0.3 1.2 425596 23768 ? Ssl 13:36 0:00 /usr/sbin/slapd -u ldap -h ldapi:/// ldap:/// -4
und nachfolgender Befehl:
# netstat -tulpen | grep slapd tcp 0 0 0.0.0.0:389 0.0.0.0:* LISTEN 0 85342 16944/slapd
bzw. nachfolgender Befehl:
# systemctl status slapd.service slapd.service - OpenLDAP Server Daemon Loaded: loaded (/usr/lib/systemd/system/slapd.service; enabled) Active: active (running) since Fri 2014-11-14 13:36:13 CET; 1min 13s ago Process: 16940 ExecStart=/usr/sbin/slapd -u ldap -h ${SLAPD_URLS} $SLAPD_OPTIONS (code=exited, status=0/SUCCESS) Process: 16925 ExecStartPre=/usr/libexec/openldap/check-config.sh (code=exited, status=0/SUCCESS) Main PID: 16944 (slapd) CGroup: /system.slice/slapd.service └─16944 /usr/sbin/slapd -u ldap -h ldapi:/// ldap:/// -4 Nov 14 13:36:12 vml70030.idmz.tachtler.net systemd[1]: Starting OpenLDAP Serv... Nov 14 13:36:12 vml70030.idmz.tachtler.net runuser[16928]: pam_unix(runuser:s... Nov 14 13:36:12 vml70030.idmz.tachtler.net slapd[16940]: @(#) $OpenLDAP: slap... mockbuild@wo... Nov 14 13:36:13 vml70030.idmz.tachtler.net slapd[16944]: slapd starting Nov 14 13:36:13 vml70030.idmz.tachtler.net systemd[1]: Started OpenLDAP Serve... Hint: Some lines were ellipsized, use -l to show in full.
Eine weitere Überprüfung, ob der erste Start erfolgreich war, kann durch Einsicht der LOG-Dateien
/var/log/slapd.log
durchgeführt werden.
Ausgabe der LOG-Datei /var/log/slapd.log
mit nachfolgendem Befehl, die Ausgabe sollte wie nachfolgend dargestellt aussehen:
# cat /var/log/slapd.log Nov 14 13:36:12 vml70030 slapd[16940]: @(#) $OpenLDAP: slapd 2.4.39 (Jun 9 2014 23:23:12) $ mockbuild@worker1.bsys.centos.org:/builddir/build/BUILD/openldap-2.4.39/openldap-2.4.39/servers/slapd Nov 14 13:36:13 vml70030 slapd[16944]: slapd starting
Durch nachfolgenden Befehl, kann das Verzeichnis in dem die Berkely(HDB)-Datenbank standardmäßig die Dateien ablegt, angezeigt werden. Die Ausgabe sollte in etwa wie nachfolgend gezeigt aussehen:
# ls -la /var/lib/ldap/ total 19160 drwx------. 2 ldap ldap 4096 Nov 14 13:36 . drwxr-xr-x. 24 root root 4096 Nov 14 03:43 .. -rw-r--r-- 1 ldap ldap 2048 Nov 14 13:36 alock -rw------- 1 ldap ldap 2351104 Nov 14 13:36 __db.001 -rw------- 1 ldap ldap 17457152 Nov 14 13:36 __db.002 -rw------- 1 ldap ldap 1884160 Nov 14 13:36 __db.003 -rw-r--r-- 1 ldap ldap 845 Jun 10 01:23 DB_CONFIG -rw------- 1 ldap ldap 8192 Nov 14 13:36 dn2id.bdb -rw------- 1 ldap ldap 32768 Nov 14 13:36 id2entry.bdb -rw------- 1 ldap ldap 10485760 Nov 14 13:36 log.0000000001
Konfigurationsdateien
Nachdem der OpenLDAP-Server nun am laufen ist, kann mit der individuellen Konfiguration begonnen werden.
Bevor mit der Konfiguration begonnen werden sollte, soll hier ein Verzeichnis, wie nachfolgend dargestellt, mit nachfolgendem Befehl angelegt werden, welches die einzelnen LDIF-Dateien aufnehmen soll, die zur Konfiguration erstellt werden sollen:
# mkdir /etc/openldap/ldif
Des weiteren soll vorab ein Passwort erstellt werden, welches im nächsten Schritt als ROOT-Passwort implementiert werden soll, damit unter Angabe dieses Passwortes, alle Konfigurationen des OpenLDAP-Servers verwaltet werden können, was mit nachfolgendem Befehl durchgeführt werden soll:
# /usr/sbin/slappasswd New password: Re-enter new password: {SSHA}69iaXumzEio/JQTg1DOni/tnzsZ0FYCf
LDIF: Root-Passwort
Mit nachfolgendem Befehl soll nun eine LDIF-Datei in nachfolgendem Verzeichnis, mit nachfolgendem Namen und nachfolgendem Inhalt erstellt werden.
LDIF-Datei | Verwendungszweck |
---|---|
/etc/openldap/ldif/cn=config_olcRootPW.ldif | Erstellung eines ROOT-Passwortes |
# touch /etc/openldap/ldif/cn=config_olcRootPW.ldif
Die LDIF-Datei /etc/openldap/ldif/cn=config_olcRootPW.ldif
soll nachfolgenden Inhalt bekommen:
dn: olcDatabase={0}config,cn=config changetype: modify replace: olcRootPW olcRootPW: {SSHA}69iaXumzEio/JQTg1DOni/tnzsZ0FYCf
HINWEIS - Hier kommt das zuvor erstellte Passwort zum Einsatz!
Abschließend wird mit nachfolgendem Befehl der Inhalt der LDIF-Datei im laufendem Betrieb des OpenLDAP-Servers der Konfiguration des OpenLDAP-Servers hinzugefügt:
# ldapmodify -Y EXTERNAL -H ldapi:/// -f /etc/openldap/ldif/cn\=config_olcRootPW.ldif SASL/EXTERNAL authentication started SASL username: gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth SASL SSF: 0 modifying entry "olcDatabase={0}config,cn=config"
WICHTIG - Damit wurde ein ROOT-Passwort gesetzt, wodurch durch Angabe dieses Passwortes, alle Konfigurationen des OpenLDAP-Servers verwaltet werden können !!!
/etc/openldap/slapd.d/cn=config.ldif
Die Konfigurationsdatei
/etc/openldap/slapd.d/cn=config.ldif
stellt die Hauptkonfigurationsdatei des OpenLDAP-Servers dar und beinhaltet die globalen Konfigurationen.
WICHTIG - Es sollten KEINE Änderungen durch manuelle Ergänzungen durchgeführt werden !!!
Eine Abfrage der Konfiguration, welche mit nachfolgendem Befehl durchgeführt werden kann, sollte eine Ausgabe in etwa wie die nachfolgende zum Vorschein bringen:
# ldapsearch -W -x -D cn=config -b cn=config "(objectclass=olcGlobal)" Enter LDAP Password: # extended LDIF # # LDAPv3 # base <cn=config> with scope subtree # filter: (objectclass=olcGlobal) # requesting: ALL # # config dn: cn=config objectClass: olcGlobal cn: config olcArgsFile: /var/run/openldap/slapd.args olcPidFile: /var/run/openldap/slapd.pid olcTLSCACertificatePath: /etc/openldap/certs olcTLSCertificateFile: "OpenLDAP Server" olcTLSCertificateKeyFile: /etc/openldap/certs/password # search result search: 2 result: 0 Success # numResponses: 2 # numEntries: 1
/etc/openldap/slapd.d/cn=config/olcDatabase={0}config.ldif
Die Konfigurationsdatei
/etc/openldap/slapd.d/cn=config/olcDatabase={0}config.ldif
stellt die Hauptkonfigurationsdatei des OpenLDAP-Servers dar und beinhaltet den expliziten Konfigurationen.
WICHTIG - Es sollten KEINE Änderungen durch manuelle Ergänzungen durchgeführt werden !!!
Eine Abfrage der Konfiguration, welche mit nachfolgendem Befehl durchgeführt werden kann, sollte eine Ausgabe in etwa wie die nachfolgende zum Vorschein bringen:
# ldapsearch -W -x -D cn=config -b olcDatabase={0}config,cn=config Enter LDAP Password: # extended LDIF # # LDAPv3 # base <olcDatabase={0}config,cn=config> with scope subtree # filter: (objectclass=*) # requesting: ALL # # {0}config, config dn: olcDatabase={0}config,cn=config objectClass: olcDatabaseConfig olcDatabase: {0}config olcAccess: {0}to * by dn.base="gidNumber=0+uidNumber=0,cn=peercred,cn=external ,cn=auth" manage by * none olcRootPW: {SSHA}69iaXumzEio/JQTg1DOni/tnzsZ0FYCf # search result search: 2 result: 0 Success # numResponses: 2 # numEntries: 1
/etc/openldap/slapd.d/cn=config/olcDatabase={-1}frontend.ldif
Die Konfigurationsdatei
/etc/openldap/slapd.d/cn=config/olcDatabase={-1}frontend.ldif
stellt die Zugriffskonfigurationsdatei des OpenLDAP-Servers dar und beinhaltet die Konfigurationen für den Zugriff.
WICHTIG - Es sollten KEINE Änderungen durch manuelle Ergänzungen durchgeführt werden !!!
Eine Abfrage der Konfiguration, welche mit nachfolgendem Befehl durchgeführt werden kann, sollte eine Ausgabe in etwa wie die nachfolgende zum Vorschein bringen:
# ldapsearch -W -x -D cn=config -b olcDatabase={-1}frontend,cn=config Enter LDAP Password: # extended LDIF # # LDAPv3 # base <olcDatabase={-1}frontend,cn=config> with scope subtree # filter: (objectclass=*) # requesting: ALL # # {-1}frontend, config dn: olcDatabase={-1}frontend,cn=config objectClass: olcDatabaseConfig olcDatabase: frontend # search result search: 2 result: 0 Success # numResponses: 2 # numEntries: 1
/etc/openldap/slapd.d/cn=config/olcDatabase={1}monitor.ldif
Die Konfigurationsdatei
/etc/openldap/slapd.d/cn=config/olcDatabase={1}monitor.ldif
stellt die Selbstüberwachungskonfigurationsdatei des OpenLDAP-Servers dar und beinhaltet die Konfigurationen zur Überwachung und Selbstverwaltung.
WICHTIG - Es sollten KEINE Änderungen durch manuelle Ergänzungen durchgeführt werden !!!
Eine Abfrage der Konfiguration, welche mit nachfolgendem Befehl durchgeführt werden kann, sollte eine Ausgabe in etwa wie die nachfolgende zum Vorschein bringen:
# ldapsearch -W -x -D cn=config -b olcDatabase={1}monitor,cn=config Enter LDAP Password: # extended LDIF # # LDAPv3 # base <olcDatabase={1}monitor,cn=config> with scope subtree # filter: (objectclass=*) # requesting: ALL # # {1}monitor, config dn: olcDatabase={1}monitor,cn=config objectClass: olcDatabaseConfig olcDatabase: {1}monitor olcAccess: {0}to * by dn.base="gidNumber=0+uidNumber=0,cn=peercred,cn=external ,cn=auth" read by dn.base="cn=Manager,dc=my-domain,dc=com" read by * none # search result search: 2 result: 0 Success # numResponses: 2 # numEntries: 1
/etc/openldap/slapd.d/cn=config/olcDatabase={2}hdb.ldif
Die Konfigurationsdatei
/etc/openldap/slapd.d/cn=config/olcDatabase={2}hdb.ldif
stellt die Datenbankkonfiguration des OpenLDAP-Servers dar und beinhaltet die Konfiguration der darunterliegenden Datenbank.
WICHTIG - Es sollten KEINE Änderungen durch manuelle Ergänzungen durchgeführt werden !!!
Eine Abfrage der Konfiguration, welche mit nachfolgendem Befehl durchgeführt werden kann, sollte eine Ausgabe in etwa wie die nachfolgende zum Vorschein bringen:
# ldapsearch -W -x -D cn=config -b olcDatabase={2}hdb,cn=config Enter LDAP Password: # extended LDIF # # LDAPv3 # base <olcDatabase={2}hdb,cn=config> with scope subtree # filter: (objectclass=*) # requesting: ALL # # {2}hdb, config dn: olcDatabase={2}hdb,cn=config objectClass: olcDatabaseConfig objectClass: olcHdbConfig olcDatabase: {2}hdb olcDbDirectory: /var/lib/ldap olcSuffix: dc=my-domain,dc=com olcRootDN: cn=Manager,dc=my-domain,dc=com olcDbIndex: objectClass eq,pres olcDbIndex: ou,cn,mail,surname,givenname eq,pres,sub # search result search: 2 result: 0 Success # numResponses: 2 # numEntries: 1
Komplette Konfiguration
Mit nachfolgendem Befehl, kann die komplette Konfiguration, wie sie durch den OpenLDAP-Server selbst verwaltet wird, inklusive aller zur Verwendung kommenden und geladenen Schemata und der vorangegangenen Konfigurationen, ausgegeben werden:
(Nur beispielhafter Ausschnitt)
# ldapsearch -W -x -D cn=config -b cn=config Enter LDAP Password: # extended LDIF # # LDAPv3 # base <cn=config> with scope subtree # filter: (objectclass=*) # requesting: ALL # ... # numResponses: 8 # numEntries: 7
Erweiterte-Konfiguration
Zur Konfiguration des OpenLDAP-Servers, sollen LDIF-Dateien zum Einsatz kommen, welche im Verzeichnis
/etc/openldap/ldif
erstellt und abgelegt werden sollen.
Des weiteren ist die Kenntnis des Passwortes, welches im vorher durchgeführten Schritt der Einrichtung des OpenLDAP-Servers unter
erstellt wurde und als olcRootPW
im OpenLDAP-Server hinterlegt wurde, erforderlich.
LDIF: Base
Aktuell sollte die Basis bzw. die Wurzel des LDAP-Baumes noch auf nachfolgende Einstellung lauten
dc=my-domain,dc=com
Die Angabe der Basis bzw. die Wurzel des LDAP-Baumes kommt in nachfolgenden Konfigurationsabschnitten des OpenLDAP-Servers vor und muss dort auch jeweils geändert werden:
olcDatabase={1}monitor,cn=config
olcAccess
olcDatabase={2}hdb,cn=config
olcSuffix
olcRootDN
Um die Änderungen in den jeweiligen Konfigurationsabschnitten durchführen zu können, soll mit nachfolgendem Befehl eine neue LDIF-Datei in nachfolgendem Verzeichnis, mit nachfolgendem Namen und nachfolgendem Inhalt erstellt werden.
LDIF-Datei | Verwendungszweck |
---|---|
/etc/openldap/ldif/cn=config_BASE.ldif | Änderung von dc=my-domain,dc=com |
# touch /etc/openldap/ldif/cn=config_BASE.ldif
Die LDIF-Datei /etc/openldap/ldif/cn=config_BASE.ldif
soll nachfolgenden Inhalt bekommen:
dn: olcDatabase={1}monitor,cn=config changetype: modify replace: olcAccess olcAccess: {0}to * by dn.base="gidNumber=0+uidNumber=0,cn=peercred,cn=external ,cn=auth" read by dn.base="cn=Manager,dc=tachtler,dc=net" read by * none dn: olcDatabase={2}hdb,cn=config changetype: modify replace: olcSuffix olcSuffix: dc=tachtler,dc=net dn: olcDatabase={2}hdb,cn=config changetype: modify replace: olcRootDN olcRootDN: cn=Manager,dc=tachtler,dc=net
HINWEIS - Es dürfen KEINE Leerzeichen zwischen den einzelnen Anweisungen in den Leerzeilen vorhanden sein!
Abschließend wird mit nachfolgendem Befehl der Inhalt der LDIF-Datei im laufendem Betrieb des OpenLDAP-Servers dazu verwendet die Konfiguration des OpenLDAP-Servers abzuändern:
# ldapmodify -Y EXTERNAL -H ldapi:/// -f /etc/openldap/ldif/cn\=config_BASE.ldif SASL/EXTERNAL authentication started SASL username: gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth SASL SSF: 0 modifying entry "olcDatabase={1}monitor,cn=config" modifying entry "olcDatabase={2}hdb,cn=config" modifying entry "olcDatabase={2}hdb,cn=config"
Um überprüfen zu können, ob alle Änderungen erfolgreich durchgeführt wurden, kann nachfolgender Befehl genutzt werden und sollte eine Ausgabe wie nachfolgende zur Anzeige bringen:
# ldapsearch -W -x -D cn=config -b cn=config | grep -b1 cn=Manager Enter LDAP Password: 62457-olcAccess: {0}to * by dn.base="gidNumber=0+uidNumber=0,cn=peercred,cn=external 62536: ,cn=auth" read by dn.base="cn=Manager,dc=tachtler,dc=net" read by * none 62610- -- 62853-olcSuffix: dc=tachtler,dc=net 62883:olcRootDN: cn=Manager,dc=tachtler,dc=net 62924-
LDIF: Manager-Passwort
Auch der Manager soll ein Passwort erhalten, damit der Zugriff geschützt ist.
Deshalb muss vorab ein Passwort erstellt werden, welches im nächsten Schritt als Manager-Passwort implementiert werden soll, damit unter Angabe dieses Passwortes, zukünftig alle Konfigurationen des OpenLDAP-Servers verwaltet werden können, was mit nachfolgendem Befehl durchgeführt werden soll:
# /usr/sbin/slappasswd New password: Re-enter new password: {SSHA}moVXokSVz9/pcZpdyJ0EYlzutrnt4iK1
Mit nachfolgendem Befehl soll nun eine LDIF-Datei in nachfolgendem Verzeichnis, mit nachfolgendem Namen und nachfolgendem Inhalt erstellt werden.
LDIF-Datei | Verwendungszweck |
---|---|
/etc/openldap/ldif/cn=config_Manager_olcRootPW.ldif | Erstellung eines Manager-Passwortes |
# touch /etc/openldap/ldif/cn=config_Manager_olcRootPW.ldif
Die LDIF-Datei /etc/openldap/ldif/cn=config_Manager_olcRootPW.ldif
soll nachfolgenden Inhalt bekommen:
dn: olcDatabase={2}hdb,cn=config changetype: modify add: olcRootPW olcRootPW: {SSHA}moVXokSVz9/pcZpdyJ0EYlzutrnt4iK1
HINWEIS - Hier kommt das zuvor erstellte Passwort zum Einsatz!
Abschließend wird mit nachfolgendem Befehl der Inhalt der LDIF-Datei im laufendem Betrieb des OpenLDAP-Servers der Konfiguration des OpenLDAP-Servers hinzugefügt:
# ldapmodify -Y EXTERNAL -H ldapi:/// -f /etc/openldap/ldif/cn\=config_Manager_olcRootPW.ldif SASL/EXTERNAL authentication started SASL username: gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth SASL SSF: 0 modifying entry "olcDatabase={2}hdb,cn=config"
WICHTIG - Damit wurde ein Manager-Passwort gesetzt, wodurch durch Angabe dieses Passwortes, alle Konfigurationen des OpenLDAP-Servers verwaltet werden können !!!
Um überprüfen zu können, ob alle Änderungen erfolgreich durchgeführt wurden, kann nachfolgender Befehl genutzt werden und sollte eine Ausgabe wie nachfolgende zur Anzeige bringen:
# ldapsearch -W -x -D cn=config -b olcDatabase={2}hdb,cn=config Enter LDAP Password: # extended LDIF # # LDAPv3 # base <olcDatabase={2}hdb,cn=config> with scope subtree # filter: (objectclass=*) # requesting: ALL # # {2}hdb, config dn: olcDatabase={2}hdb,cn=config objectClass: olcDatabaseConfig objectClass: olcHdbConfig olcDatabase: {2}hdb olcDbDirectory: /var/lib/ldap olcDbIndex: objectClass eq,pres olcDbIndex: ou,cn,mail,surname,givenname eq,pres,sub olcSuffix: dc=tachtler,dc=net olcRootDN: cn=Manager,dc=tachtler,dc=net olcRootPW: {SSHA}moVXokSVz9/pcZpdyJ0EYlzutrnt4iK1 # search result search: 2 result: 0 Success # numResponses: 2 # numEntries: 1
LDIF: olcIdleTimeout
Der Parameter olcIdleTimeout
beendet nach dem angegebenen Wert in Sekunden die Verbindung zum Client, wenn diese innerhalb der angegebenen Zeit keine Aktivitäten mehr zeigt.
Mit nachfolgendem Befehl soll nun eine LDIF-Datei in nachfolgendem Verzeichnis, mit nachfolgendem Namen und nachfolgendem Inhalt erstellt werden.
LDIF-Datei | Verwendungszweck |
---|---|
/etc/openldap/ldif/cn=config_GLOBAL_olcIdleTimeout.ldif | Beendet ungenutzte Client Verbindungen nach der angegebenen Zeit in Sekunden |
# touch /etc/openldap/ldif/cn=config_GLOBAL_olcIdleTimeout.ldif
Die LDIF-Datei /etc/openldap/ldif/cn=config_GLOBAL_olcIdleTimeout.ldif
soll nachfolgenden Inhalt bekommen:
dn: cn=config changetype: modify add: olcIdleTimeout olcIdleTimeout: 15
Abschließend wird mit nachfolgendem Befehl der Inhalt der LDIF-Datei im laufendem Betrieb des OpenLDAP-Servers der Konfiguration des OpenLDAP-Servers hinzugefügt:
# ldapmodify -Y EXTERNAL -H ldapi:/// -f /etc/openldap/ldif/cn\=config_GLOBAL_olcIdleTimeout.ldif SASL/EXTERNAL authentication started SASL username: gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth SASL SSF: 0 modifying entry "cn=config"
Um überprüfen zu können, ob alle Änderungen erfolgreich durchgeführt wurden, kann nachfolgender Befehl genutzt werden und sollte eine Ausgabe wie nachfolgende zur Anzeige bringen:
# ldapsearch -W -x -D cn=config -b cn=config "(objectclass=olcGlobal)" Enter LDAP Password: # extended LDIF # # LDAPv3 # base <cn=config> with scope subtree # filter: (objectclass=olcGlobal) # requesting: ALL # # config dn: cn=config objectClass: olcGlobal cn: config olcArgsFile: /var/run/openldap/slapd.args olcPidFile: /var/run/openldap/slapd.pid olcTLSCACertificatePath: /etc/openldap/certs olcTLSCertificateFile: "OpenLDAP Server" olcTLSCertificateKeyFile: /etc/openldap/certs/password olcIdleTimeout: 15 # search result search: 2 result: 0 Success # numResponses: 2 # numEntries: 1
LDIF: olcReferral
Der Parameter olcReferral
definiert die zurückgelieferte URL, wenn der OpenLDAP-Server keine lokale Datenbank findet, um die Anfrage zu beantworten.
Mit nachfolgendem Befehl soll nun eine LDIF-Datei in nachfolgendem Verzeichnis, mit nachfolgendem Namen und nachfolgendem Inhalt erstellt werden.
LDIF-Datei | Verwendungszweck |
---|---|
/etc/openldap/ldif/cn=config_GLOBAL_olcReferral.ldif | Rückgabe URL, wenn eine Anfrage nicht beantwortet werden kann |
# touch /etc/openldap/ldif/cn=config_GLOBAL_olcReferral.ldif
Die LDIF-Datei /etc/openldap/ldif/cn=config_GLOBAL_olcReferral.ldif
soll nachfolgenden Inhalt bekommen:
dn: cn=config changetype: modify add: olcReferral olcReferral: ldap://ldap.idmz.tachtler.net
Abschließend wird mit nachfolgendem Befehl der Inhalt der LDIF-Datei im laufendem Betrieb des OpenLDAP-Servers der Konfiguration des OpenLDAP-Servers hinzugefügt:
# ldapmodify -Y EXTERNAL -H ldapi:/// -f /etc/openldap/ldif/cn\=config_GLOBAL_olcReferral.ldif SASL/EXTERNAL authentication started SASL username: gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth SASL SSF: 0 modifying entry "cn=config"
Um überprüfen zu können, ob alle Änderungen erfolgreich durchgeführt wurden, kann nachfolgender Befehl genutzt werden und sollte eine Ausgabe wie nachfolgende zur Anzeige bringen:
# ldapsearch -W -x -D cn=config -b cn=config "(objectclass=olcGlobal)" Enter LDAP Password: # extended LDIF # # LDAPv3 # base <cn=config> with scope subtree # filter: (objectclass=olcGlobal) # requesting: ALL # # config dn: cn=config objectClass: olcGlobal cn: config olcArgsFile: /var/run/openldap/slapd.args olcPidFile: /var/run/openldap/slapd.pid olcTLSCACertificatePath: /etc/openldap/certs olcTLSCertificateFile: "OpenLDAP Server" olcTLSCertificateKeyFile: /etc/openldap/certs/password olcIdleTimeout: 15 olcReferral: ldap://ldap.idmz.tachtler.net # search result search: 2 result: 0 Success # numResponses: 2 # numEntries: 1
TLS-Zertifikat erstellen
Um den OpenLDAP-Server nicht nur unverschlüsselt, sondern auch via TLS/StartTLS-Verschlüsselung ansprechen zu können, muss zuerst ein Zertifikat erzeugt werden. Dies kann durch eine offizielle Zertifizierungsstelle durchgeführt werden, was jedoch natürlich mit Kosten verbunden ist, oder es kommt ein sogenanntes Self-Signed-Certificate (Selbst erstelltes/unterschriebenes) Zertifikat zum Einsatz.
Um die Verschlüsselung einsetzen zu können, sind folgende Komponenten erforderlich:
- eine eigen Certificate Authority (CA), welche Self-Signed-Certificate (Selbst erstelltes/unterschriebenes) Zertifikat esrtellen kann
- einen CSR (Certificate Request), welcher von einer Certificate Authority (CA) signiert wird
- einem private key (privaten Schlüssel), welcher zum CRT (Certificate) gehört und zum Einsatz eines CRT (Certificate) benötigt wird
- das CRT (Certificate) selbst, welcher von der Certificate Authority (CA) ausgestellt wird
Zur Erstellung eines Self-Signed-Certificate und zur Erstellung der oben genannten Komponenten, wird das RPM-Paket
openssl
benötigt, welches i.d.R. bereits installiert sein sollte.
Erstellen Certificate Authority (CA)
Zur Erstellung einer eigene Certificate Authority (CA) kann ein Script, welches bei der Installation von openssl
mitgeliefert wird und sich im Verzeichnis /etc/pki/tls/misc/
befindet, genutzt werden. Der Name des Script lautet
/etc/pki/tls/misc/CA
.
HINWEIS - Die zu erstellende Certificate Authority (CA) hat standardmäßig eine Laufzeit von 3 Jahren !!!
Falls eine längere Laufzeit als drei Jahre gewünscht sein soll, kann nachfolgender Parameter im Skript, in nachfolgendem Verzeichnis, mit nachfolgendem Namen
/etc/pki/tls/misc/CA
angepasst werden:
(Nur relevanter Ausschnitt)
... # Tachtler # default: CADAYS="-days 1095" # 3 years CADAYS="-days 31091" # 16.11.2014 - 31.12.2099 ...
WICHTIG - Die Laufzeit der Certificate Authority (CA) muss länger als die Laufzeit des Zertifikates sein !!!
Folgender Aufruf erstellt eine eigene Certificate Authority (CA):
HINWEIS - Nicht benötigte Angaben werden mit Eingabe eines Punktes [.] übersprungen!
# /etc/pki/tls/misc/CA -newca CA certificate filename (or enter to create) Making CA certificate ... Generating a 2048 bit RSA private key ............................................................................................................... ............................................................................................................... .................+++ ................................+++ writing new private key to '/etc/pki/CA/private/./cakey.pem' Enter PEM pass phrase: Verifying - Enter PEM pass phrase: ----- You are about to be asked to enter information that will be incorporated into your certificate request. What you are about to enter is what is called a Distinguished Name or a DN. There are quite a few fields but you can leave some blank For some fields there will be a default value, If you enter '.', the field will be left blank. ----- Country Name (2 letter code) [XX]:DE State or Province Name (full name) []:Bayern (Bavaria) Locality Name (eg, city) [Default City]:Muenchen (Munich) Organization Name (eg, company) [Default Company Ltd]:Klaus Tachtler Organizational Unit Name (eg, section) []:. Common Name (eg, your name or your server's hostname) []:www.tachtler.net Email Address []:hostmaster@tachtler.net Please enter the following 'extra' attributes to be sent with your certificate request A challenge password []: An optional company name []:. Using configuration from /etc/pki/tls/openssl.cnf Enter pass phrase for /etc/pki/CA/private/./cakey.pem: Check that the request matches the signature Signature ok Certificate Details: Serial Number: 11423039639335115830 (0x9e86ca07b5c69c36) Validity Not Before: Nov 16 08:46:20 2014 GMT Not After : Dec 31 08:46:20 2099 GMT Subject: countryName = DE stateOrProvinceName = Bayern (Bavaria) organizationName = Klaus Tachtler commonName = www.tachtler.net emailAddress = hostmaster@tachtler.net X509v3 extensions: X509v3 Subject Key Identifier: 04:3C:D9:D4:7E:88:43:56:5B:A6:6E:30:0C:29:CB:71:D3:E6:9B:5A X509v3 Authority Key Identifier: keyid:04:3C:D9:D4:7E:88:43:56:5B:A6:6E:30:0C:29:CB:71:D3:E6:9B:5A X509v3 Basic Constraints: CA:TRUE Certificate is to be certified until Dec 31 08:46:20 2099 GMT (31091 days) Write out database with 1 new entries Data Base Updated
Durch ausführen des Scriptes mit nachfolgendem Aufrufparameter /etc/pki/tls/misc/CA -newca
ist eine neue Verzeichnisstruktur unter
/etc/pki/CA
entstanden, deren Inhalt mit nachfolgendem Befehl bequem aufgelistet werden kann:
# ls -la /etc/pki/CA/* -rw-r--r-- 1 root root 4557 Nov 16 09:46 /etc/pki/CA/cacert.pem -rw-r--r-- 1 root root 1082 Nov 16 09:46 /etc/pki/CA/careq.pem -rw-r--r-- 1 root root 144 Nov 16 09:46 /etc/pki/CA/index.txt -rw-r--r-- 1 root root 21 Nov 16 09:46 /etc/pki/CA/index.txt.attr -rw-r--r-- 1 root root 0 Nov 16 09:45 /etc/pki/CA/index.txt.old -rw-r--r-- 1 root root 17 Nov 16 09:46 /etc/pki/CA/serial /etc/pki/CA/certs: total 4 drwxr-xr-x. 2 root root 6 Oct 16 17:41 . drwxr-xr-x. 6 root root 4096 Nov 16 09:46 .. /etc/pki/CA/crl: total 4 drwxr-xr-x. 2 root root 6 Oct 16 17:41 . drwxr-xr-x. 6 root root 4096 Nov 16 09:46 .. /etc/pki/CA/newcerts: total 12 drwxr-xr-x. 2 root root 33 Nov 16 09:46 . drwxr-xr-x. 6 root root 4096 Nov 16 09:46 .. -rw-r--r-- 1 root root 4557 Nov 16 09:46 9E86CA07B5C69C36.pem /etc/pki/CA/private: total 8 drwx------. 2 root root 22 Nov 16 09:45 . drwxr-xr-x. 6 root root 4096 Nov 16 09:46 .. -rw-r--r-- 1 root root 1834 Nov 16 09:46 cakey.pem
Erstellen CSR (Certificate Request)
Ebenfalls mit dem Script, welches schon bei der Erstellung einer eigene Certificate Authority (CA) genutzt wurde und sich unter /etc/pki/tls/misc
befindet und den Namen CA
trägt, kann nun dieses auch zur Erstellung von
- einem CSR (Certificate Request)
- einem private key (privaten Schlüssel)
genutzt werden.
HINWEIS - Das zu erstellende Zertifikat hat standardmäßig eine Laufzeit von 1 Jahr !!!
Falls eine längere Laufzeit als ein Jahr gewünscht sein soll, kann nachfolgender Parameter im Skript, in nachfolgendem Verzeichnis, mit nachfolgendem Namen
/etc/pki/tls/openssl.cnf
angepasst werden:
(Nur relevanter Ausschnitt)
... # Tachtler # default: default_days = 365 # how long to certify for default_days = 3698 # how long to certify for 16.11.2014 - 31.12.2024 ...
HINWEIS - Nicht benötigte Angaben werden mit Eingabe eines Punktes [.] übersprungen!
# /etc/pki/tls/misc/CA -newreq Generating a 2048 bit RSA private key ....................................+++ ........................+++ writing new private key to 'newkey.pem' Enter PEM pass phrase: Verifying - Enter PEM pass phrase: ----- You are about to be asked to enter information that will be incorporated into your certificate request. What you are about to enter is what is called a Distinguished Name or a DN. There are quite a few fields but you can leave some blank For some fields there will be a default value, If you enter '.', the field will be left blank. ----- Country Name (2 letter code) [XX]:DE State or Province Name (full name) []:Bayern (Bavaria) Locality Name (eg, city) [Default City]:Muenchen (Munich) Organization Name (eg, company) [Default Company Ltd]:Klaus Tachtler Organizational Unit Name (eg, section) []:. Common Name (eg, your name or your server's hostname) []:ldap.idmz.tachtler.net Email Address []:hostmaster@tachtler.net Please enter the following 'extra' attributes to be sent with your certificate request A challenge password []: An optional company name []:. Request is in newreq.pem, private key is in newkey.pem
Durch ausführen des Scripts mit nachfolgendem Aufrufparameter /etc/pki/tls/misc/CA -newreq
sind zwei neue Dateien unter
/etc/pki/CA
entstanden, welche mit nachfolgendem Befehl aufgelistet werden können:
# ls -la /etc/pki/CA/new*.pem -rw-r--r-- 1 root root 1834 Nov 16 09:52 /etc/pki/CA/newkey.pem -rw-r--r-- 1 root root 1090 Nov 16 09:52 /etc/pki/CA/newreq.pem
WICHTIG - Die so entstandene Datei /etc/pki/CA/newreq.pem
enthält den CSR (Certificate Request).
Signieren CSR (Certificate Requests)
Um den in obigen Beispiel entstandenen CSR (Certificate Request) nun mit der Certificate Authority (CA) zu unterschreiben und somit ein CRT (Certificate) zu erzeugen, kann wieder das Script, welches schon bei der Erstellung der Certificate Authority (CA) genutzt wurde und sich unter /etc/pki/CA
befindet und den Namen CA
trägt, mit nachfolgendem Befehl genutzt werden:
WICHTIG - Das Passwort, ist das Passwort, welches im Schritt LDAP CentOS 7 - Erstellen Certificate Authority (CA) verwendet wurde!
# /etc/pki/tls/misc/CA -sign Using configuration from /etc/pki/tls/openssl.cnf Enter pass phrase for /etc/pki/CA/private/cakey.pem: Check that the request matches the signature Signature ok Certificate Details: Serial Number: 11423039639335115831 (0x9e86ca07b5c69c37) Validity Not Before: Nov 16 08:53:07 2014 GMT Not After : Dec 31 08:53:07 2024 GMT Subject: countryName = DE stateOrProvinceName = Bayern (Bavaria) localityName = Muenchen (Munich) organizationName = Klaus Tachtler commonName = ldap.idmz.tachtler.net emailAddress = hostmaster@tachtler.net X509v3 extensions: X509v3 Basic Constraints: CA:FALSE Netscape Comment: OpenSSL Generated Certificate X509v3 Subject Key Identifier: 57:B3:A0:53:D9:26:E4:FC:3D:01:CF:82:D9:0F:3F:4C:F3:89:A8:37 X509v3 Authority Key Identifier: keyid:04:3C:D9:D4:7E:88:43:56:5B:A6:6E:30:0C:29:CB:71:D3:E6:9B:5A Certificate is to be certified until Dec 31 08:53:07 2024 GMT (3698 days) Sign the certificate? [y/n]:y 1 out of 1 certificate requests certified, commit? [y/n]y Write out database with 1 new entries Data Base Updated Certificate: Data: Version: 3 (0x2) Serial Number: 11423039639335115831 (0x9e86ca07b5c69c37) Signature Algorithm: sha256WithRSAEncryption Issuer: C=DE, ST=Bayern (Bavaria), O=Klaus Tachtler, CN=www.tachtler.net/emailAddress=hostmaster@tachtler.net Validity Not Before: Nov 16 08:53:07 2014 GMT Not After : Dec 31 08:53:07 2024 GMT Subject: C=DE, ST=Bayern (Bavaria), L=Muenchen (Munich), O=Klaus Tachtler, CN=ldap.idmz.tachtler.net/emailAddress=hostmaster@tachtler.net Subject Public Key Info: Public Key Algorithm: rsaEncryption Public-Key: (2048 bit) Modulus: 00:c5:7a:62:ae:55:da:fe:5c:e8:2f:b0:23:60:ea: 3b:14:55:00:ca:c0:ba:69:fa:e3:2e:8d:a6:4e:81: 7f:b5:8a:f6:53:a3:72:da:6b:d1:5f:22:66:bc:85: c6:2a:76:a7:86:82:0a:6b:4c:95:71:6f:e1:96:63: f6:33:ba:dd:ff:ee:12:0d:d2:78:72:72:1c:d4:72: 34:7e:75:73:1b:31:79:0a:a6:eb:22:2d:9f:a6:c5: 61:7f:3a:f7:20:d5:2b:fb:3d:32:ad:76:0d:43:a0: dc:08:35:cf:8d:8c:d0:20:29:68:78:4e:f8:ba:63: ca:15:50:8d:13:ba:5d:79:e0:93:f0:f7:c3:83:c0: ce:9e:07:1c:4d:5a:f1:59:6d:c5:c2:5f:ef:4e:72: 63:d8:9c:be:6f:5c:10:59:48:78:6d:44:c5:42:73: a1:e1:67:b7:5e:ca:4f:09:55:04:d6:64:01:eb:e9: e3:93:cb:5e:80:ce:a4:79:c4:fa:fe:8d:42:35:c0: 83:aa:a2:c8:d9:d9:fc:91:81:f3:40:e3:8d:3c:80: 92:35:0f:19:41:e9:e0:b3:a9:c2:78:72:b8:47:0d: 10:54:ce:79:d0:17:c8:5b:59:c4:93:15:af:80:4b: 8e:be:2c:e2:5a:3e:18:bb:47:a9:cb:d5:68:a2:ea: 26:d3 Exponent: 65537 (0x10001) X509v3 extensions: X509v3 Basic Constraints: CA:FALSE Netscape Comment: OpenSSL Generated Certificate X509v3 Subject Key Identifier: 57:B3:A0:53:D9:26:E4:FC:3D:01:CF:82:D9:0F:3F:4C:F3:89:A8:37 X509v3 Authority Key Identifier: keyid:04:3C:D9:D4:7E:88:43:56:5B:A6:6E:30:0C:29:CB:71:D3:E6:9B:5A Signature Algorithm: sha256WithRSAEncryption 86:b3:65:e7:d0:f7:e4:10:63:7b:ca:58:c1:c6:33:46:8c:aa: a6:1c:c1:d5:e2:a7:4f:68:80:cc:47:d7:3c:e9:7b:e4:f7:a1: 7c:44:ac:8a:27:16:12:01:46:1a:9a:a7:38:f1:17:d5:16:de: a5:55:f5:93:f6:87:45:25:ae:ef:2c:32:9f:ea:ae:b7:27:38: 4d:fb:b4:13:a6:27:9f:b2:10:57:bc:cf:d1:53:fd:3d:d6:49: 42:48:b8:18:72:53:07:82:a4:de:c7:30:f9:f5:da:9f:f4:22: 40:09:d0:a6:e8:5c:42:45:67:59:35:17:dc:5e:9f:d0:41:8a: bd:f7:39:27:73:02:e9:3d:c5:04:8e:fe:a9:11:d4:d8:16:b1: a8:f5:1c:d6:6c:84:47:9e:29:90:d2:ca:41:28:de:c6:dc:bc: f9:b3:8b:53:b5:6f:ce:b8:e4:5d:ad:78:7f:20:87:78:63:2b: 85:78:ca:89:5d:9c:7b:b3:ab:8a:4b:30:5a:a3:82:8e:73:f9: 56:23:2b:a5:76:56:5f:1c:52:05:48:86:d2:05:fd:56:e1:eb: 62:21:15:10:f0:93:ad:d5:85:a2:59:ff:f8:ea:b3:9b:7a:3b: ef:8a:45:6a:a2:de:fc:ed:93:08:6f:c5:e2:37:29:be:62:18: 96:55:a9:91 -----BEGIN CERTIFICATE----- MIIEKjCCAxKgAwIBAgIJAJ6Gyge1xpw3MA1GCSqGSIb3DQEBCwUAMIGEMQswCQYD VQQGEwJERTEZMBcGB1UECAwQQmF5ZXJuIChCYXZhcmlhKTEXMBUGA1UECgwOS2xh dXMgVGFjaHRsZXIxGTAXBgNVBAMMEHd3dy50YGNodGxlci5uZXQxJjAkBgkqhkiG 9w0BCQEWF2hvc3RtYXN0ZXJAdGF1aHRsZXIubmV0MB4XDTE0MTExNjA4NTMwN1oX DTI0MTIzMTA4NTMwN1owgaYxAzAJBgNVBAYTAkRFMRkwFwYDVQQIDBBCYXllcm4g KEJhdmFyaWEpMRowGAYDVBQHDBFNdWVuY2hlbiAoTXVuaWNoKTEXMBUGA1UECgwO S2xhdXMgVGFjaHRsZXIxJzAdBgNVBAMMFmxkYXAuaWRtei50YWNodGxlci5uZXQx JjAkBgkqhkiG9w0BCQEWF2hvc3RtYXN1ZXJAdGFjaHRsZYIubmV0MIIBIjnNBgkq hkiG9w0BAQEFBAOCAQ8AMIIBCgKCAQEAxXpi/lXa/lzoL7AjYOo7FFUAysC6afrj To2mToF/tYr3U6Qy2mvRXyJmvIXGL3anhoIKa0yVcW/hlmP2M7rd/+4SDdJ4cnIc 1HI0fnVzG3F5CqbrIifpsVhfzr3INUr+z0yrXYNQ6DcCDXPjZzQICloeE74umPK FVCNE7pdeeCT8PfDg8DsngcdTVrxWW21wl/vTnJj2Jy+b1wAWUh4bUTFQnKh4We3 XspPCVUE1mQB6+njk8tegM5keMT6/o1CNcCDqqLI2dn8kYHzQOONPICShQ8ZQeng s6nCeHK4Rw0QVM550Be4Q1nEkxWvgEuOviziWj4Yu0epy9Vowuom0wIDAQABo3sw eTAJBgNVHRMEAjAAMCwGCWAGSAGG+EIBDQQfFh1PcGVuU1NMIEdlbmVyYXRlZCBD ZXJ0aWZpY2F0ZTAdBgNVHU4EFgQUV7OgU9km5Pw9Ac+C2Q8/TPOJqDcwHwYDVR0j BBgwFoAUBDzZ1H6IQ1Zbpm1wDCnLcdPmm1owDQYJKoZIhvcNAQELBQADggEBAIaz ZefQ9+QgY3vKWMHGM0aMqbYswdXip19ogMxH1zzpe+T3oXxErIonFxIBRhqapzjx F9UW3qVV9ZP2h0Ul7u7sMp/qrrcnOE37tEOmJ5+yAFe8z9FT/T3WSUJIuBhyUweC pN7HMPn12p/0IkAJ0KbpYEJFZ1k1F9xen9BBir33OSdyAuk9xQSO/qkR1NgWsaj1 HNZshEeeKZDSykEo3sbcvPnzi1O1b8645G2teH8gh3hjK4V4yoldnHuzqopLMFqj go5z+VYjK6V2Vm8cUgVIhtIV/Vbh62IhxRDwk63VhaJZ//jqs5t6O++KRWqi3vvt kwhvxeI3Kb5iGKZVyZE= -----END CERTIFICATE----- Signed certificate is in newcert.pem
Durch ausführen des Scriptes mit nachfolgendem Aufrufparameter /etc/pki/tls/misc/CA -sign
ist eine weitere neue Dateien unter
/etc/pki/CA
entstanden, welche mit nachfolgendem Befehl aufgelistet werden kann:
# ls -la /etc/pki/CA/new*.pem -rw-r--r-- 1 root root 4764 Nov 16 09:53 /etc/pki/CA/newcert.pem -rw-r--r-- 1 root root 1834 Nov 16 09:52 /etc/pki/CA/newkey.pem -rw-r--r-- 1 root root 1090 Nov 16 09:52 /etc/pki/CA/newreq.pem
WICHTIG - Die so entstandene Datei /etc/pki/CA/newcert.pem
enthält das neue CRT (Certificate)!
Entfernen des Passwortes vom private key
Ein Problem ist durch die Erstellung der einzelnen Komponenten, wie in den drei vorhergehenden Schritten beschrieben worden noch offen.
WICHTIG - Der private key (privaten Schlüssel) ist mit einer Passphrase gesichert !
Um dieses Problem zu lösen und das Passwort aus dem private key (privaten Schlüssel) zu entfernen, kann folgender Aufruf von openssl
genutzt werden:
WICHTIG - Das Passwort, ist das Passwort, welches im Schritt LDAP CentOS 7 - Erstellen Certificate Authority (CA) verwendet wurde!
# openssl rsa < /etc/pki/CA/newkey.pem > /etc/pki/CA/key.pem Enter pass phrase: writing RSA key
Durch ausführen des oben genannten Befehls ist eine weitere neue Dateien unter
/etc/pki/tls/misc
entstanden, welche mit nachfolgendem Befehl aufgelistet werden kann:
# ls -la /etc/pki/CA/*key* -rw-r--r-- 1 root root 1679 Nov 16 09:57 /etc/pki/CA/key.pem -rw-r--r-- 1 root root 1834 Nov 16 09:52 /etc/pki/CA/newkey.pem
WICHTIG - Die so entstandene Datei /etc/pki/CA/key.pem
enthält den private key (privaten Schlüssel) OHNE Passphrase!
LDAPS-Konfiguration
Um den LDAP-Server OpenLDAP auch via LDAPS erreichbar zu machen sind nachfolgende Schritte notwendig. Es soll hier ein Self-Signed-Certificate zum Einsatz kommen, da dies für den eigenen Gebrauch am kostengünstigsten um vom Aufwand her, auch am realistischen durchzuführen ist.
Wie die benötigten Komponenten erstellt werden können, kann unter nachfolgendem internen Link:
nachgelesen werden.
Installation Zertifikat
Nach dem ein Zertifikat wie hier: LDAP CentOS 7 - TLS-Zertifikat erstellen beschrieben erstellt wurden, müssen die benötigen Komponenten noch an die entsprechenden Stellen im Betriebssystem kopiert werden. Dazu sind nachfolgende Befehle notwendig.
Bevor mit der abschließenden Konfiguration von OpenLDAP zur Nutzung von LDAPS begonnen werden kann, sind die in den vorhergehenden Schritten erstellten Dateien:
/etc/pki/CA/key.pem
/etc/pki/CA/newcert.pem
/etc/pki/CA/cacert.pem
noch zu kopieren und ggf. umzubenennen und die Dateirechte der entsprechend anzupassen!
Als erstes werden mit den nachfolgenden Befehlen drei neue Verzeichnisse im bestehen Verzeichnis /etc/pki
angelegt:
# mkdir /etc/pki/openldap # mkdir /etc/pki/openldap/certs # mkdir /etc/pki/openldap/private
Anschließend werden mit den nachfolgenden Befehlen die entsprechenden Dateien an den jeweiligen Bestimmungsort kopiert und ggf. umbenannt:
# cp -a /etc/pki/CA/key.pem /etc/pki/openldap/private/key.pem # cp -a /etc/pki/CA/newcert.pem /etc/pki/openldap/certs/cert.pem # cp -a /etc/pki/CA/cacert.pem /etc/pki/openldap/certs/CAcert.pem
Die Benutzer- und Dateirechte der soeben kopieren und ggf. umbenannten Dateien
/etc/pki/openldap/private/key.pem
/etc/pki/openldap/certs/cert.pem
/etc/pki/openldap/certs/CAcert.pem
können mit folgenden Befehlen die Benutzerrechte wie folgt korrigiert werden:
# chown root.ldap /etc/pki/openldap/private/key.pem # chown root.ldap /etc/pki/openldap/certs/cert.pem # chown root.ldap /etc/pki/openldap/certs/CAcert.pem
und mit folgenden Befehlen die Dateirechte:
# chmod 640 /etc/pki/openldap/private/key.pem # chmod 640 /etc/pki/openldap/certs/cert.pem # chmod 640 /etc/pki/openldap/certs/CAcert.pem
Durch Ausführen der oben genannten Befehle sieht der Inhalt des Verzeichnisses
/etc/pki/openldap
wie folgt aus, welches mit nachfolgendem Befehl aufgelistet werden kann:
# ls -la /etc/pki/openldap/* /etc/pki/openldap/certs: total 16 drwxr-xr-x 2 root root 38 Nov 16 10:00 . drwxr-xr-x 4 root root 32 Nov 16 09:59 .. -rw-r----- 1 root ldap 4557 Nov 16 09:46 CAcert.pem -rw-r----- 1 root ldap 4764 Nov 16 09:53 cert.pem /etc/pki/openldap/private: total 4 drwxr-xr-x 2 root root 20 Nov 16 09:59 . drwxr-xr-x 4 root root 32 Nov 16 09:59 .. -rw-r----- 1 root ldap 1679 Nov 16 09:57 key.pem
Die jeweiligen Arbeitskopien der gerade kopierten Dateien, können mit nachfolgenden Befehlen gelöscht werden:
# rm /etc/pki/CA/key.pem /etc/pki/CA/new*.pem rm: remove regular file '/etc/pki/CA/key.pem'? y rm: remove regular file '/etc/pki/CA/newcert.pem'? y rm: remove regular file '/etc/pki/CA/newkey.pem'? y rm: remove regular file '/etc/pki/CA/newreq.pem'? y
LDAPS Konfiguration: /etc/openldap/ldap.conf
Folgende Anpassungen der Konfigurationsdatei /etc/openldap/ldap.conf
müssen erfolgen, um grundsätzlich einen LDAPS-Server mit einem Self-Signed-Certificate zu betreiben:
# # LDAP Defaults # # See ldap.conf(5) for details # This file should be world readable but not world writable. # Tachtler # default: #BASE dc=example,dc=com # default: #URI ldap://ldap.example.com ldap://ldap-master.example.com:666 BASE dc=tachtler,dc=net URI ldap://ldap.idmz.tachtler.net #SIZELIMIT 12 #TIMELIMIT 15 #DEREF never TLS_CACERTDIR /etc/openldap/certs # Tachtler - new - TLS_REQCERT allow # Turning this off breaks GSSAPI used with krb5 when rdns = false SASL_NOCANON on
WICHTIG - Der Eintrag
# Tachtler - new - TLS_REQCERT allow
ignoriert das Scheitern der Überprüfung des Server-Zertifikats !!!
LDAPS Konfiguration: /etc/sysconfig/slapd
Folgende Anpassungen der Konfigurationsdatei /etc/sysconfig/slapd
müssen zusätzlich erfolgen, um grundsätzlich einen LDAPS-Server zu betreiben:
# OpenLDAP server configuration # see 'man slapd' for additional information # Where the server will run (-h option) # - ldapi:/// is required for on-the-fly configuration using client tools # (use SASL with EXTERNAL mechanism for authentication) # - default: ldapi:/// ldap:/// # - example: ldapi:/// ldap://127.0.0.1/ ldap://10.0.0.1:1389/ ldaps:/// # Tachtler # default: SLAPD_URLS="ldapi:/// ldap:///" SLAPD_URLS="ldapi:/// ldap:/// ldaps:///" # Any custom options # Tachtler # default: #SLAPD_OPTIONS="" SLAPD_OPTIONS="-4" # Keytab location for GSSAPI Kerberos authentication #KRB5_KTNAME="FILE:/etc/openldap/ldap.keytab"
WICHTIG - Die Ergänzung des Eintrages
ALT:
SLAPD_URLS="ldapi:/// ldap:///"
NEU:
# Tachtler # default: SLAPD_URLS="ldapi:/// ldap:///" SLAPD_URLS="ldapi:/// ldap:/// ldaps:///"
der das Starten und Lauschen des OpenLDAP-Servers bzw. slapd
-Daemons/Dienstes via ldaps:
bzw. auf Port 636
realisiert!
LDAPS Konfiguration: LDIF: TLS
Um den OpenLDAP-Server bzw. den slapd
-Daemon/Dienst via LDAPS erreichbar zu machen sind nachfolgende Ergänzungen in der Konfigurationsdatei
/etc/openldap/slapd.d/cn=config.ldif
notwendig.
WICHTIG - Es sollten KEINE Änderungen durch manuelle Ergänzungen durchgeführt werden !!!
Nachfolgende Parameter sollen dabei gesetzt werden :
olcTLSCipherSuite:
- Angabe der Verschlüsselungsstärke bzw. der VerschlüsselungsmechanismenolcTLSCertificateFile:
- Die ZertifikatsdateiolcTLSCertificateKeyFile:
- Der zum Zertifikat gehörende private SchlüsselolcTLSCACertificateFile:
- Das ROOT-Zertifikat aus der eigenen Certificate Authority (CA)
Mit nachfolgendem Befehl soll nun eine LDIF-Datei in nachfolgendem Verzeichnis, mit nachfolgendem Namen und nachfolgendem Inhalt erstellt werden.
LDIF-Datei | Verwendungszweck |
---|---|
/etc/openldap/ldif/cn=config_TLS.ldif | Einführung TLS/STARTTLS-Nutzung via ldaps: |
# touch /etc/openldap/ldif/cn=config_TLS.ldif
Die LDIF-Datei /etc/openldap/ldif/cn=config_TLS.ldif
soll nachfolgenden Inhalt bekommen:
dn: cn=config changetype: modify add: olcTLSCipherSuite olcTLSCipherSuite: HIGH - replace: olcTLSCertificateFile olcTLSCertificateFile: /etc/pki/openldap/certs/cert.pem - replace: olcTLSCertificateKeyFile olcTLSCertificateKeyFile: /etc/pki/openldap/private/key.pem - add: olcTLSCACertificateFile olcTLSCACertificateFile: /etc/pki/openldap/certs/CAcert.pem
Abschließend wird mit nachfolgendem Befehl der Inhalt der LDIF-Datei im laufendem Betrieb des OpenLDAP-Servers der Konfiguration des OpenLDAP-Servers hinzugefügt:
# ldapmodify -W -x -D cn=config -f /etc/openldap/ldif/cn\=config_TLS.ldif Enter LDAP Password: modifying entry "cn=config"
Um überprüfen zu können, ob alle Änderungen erfolgreich durchgeführt wurden, kann nachfolgender Befehl genutzt werden und sollte eine Ausgabe wie nachfolgende zur Anzeige bringen:
# ldapsearch -W -x -D cn=config -b cn=config "(objectclass=olcGlobal)" Enter LDAP Password: # extended LDIF # # LDAPv3 # base <cn=config> with scope subtree # filter: (objectclass=olcGlobal) # requesting: ALL # # config dn: cn=config objectClass: olcGlobal cn: config olcArgsFile: /var/run/openldap/slapd.args olcPidFile: /var/run/openldap/slapd.pid olcTLSCACertificatePath: /etc/openldap/certs olcIdleTimeout: 15 olcReferral: ldap://ldap.idmz.tachtler.net olcTLSCipherSuite: HIGH olcTLSCertificateFile: /etc/pki/openldap/certs/cert.pem olcTLSCertificateKeyFile: /etc/pki/openldap/private/key.pem olcTLSCACertificateFile: /etc/pki/openldap/certs/CAcert.pem # search result search: 2 result: 0 Success # numResponses: 2 # numEntries: 1
HINWEIS - Der Parameter
olcTLSCACertificatePath: /etc/openldap/certs
kann, muss aber nicht verändert werden, und soll hier auch nicht verändert werden!
WICHTIG - Die Einträge
olcTLSCipherSuite: HIGH
olcTLSCertificateFile: /etc/pki/openldap/certs/cert.pem
olcTLSCertificateKeyFile: /etc/pki/openldap/private/key.pem
olcTLSCACertificateFile: /etc/pki/openldap/certs/CAcert.pem
ermöglichen die Nutzung eines LDAPS-Servers.
WICHTIG - Ein Neustart des OpenLDAP-Servers ist aufgrund der Änderungen in weiteren Konfigurationsdateien
- (
/etc/openldap/ldap.conf
/etc/sysconfig/slapd
)
trotzdem notwendig!!!
Der Neustart des OpenLDAP-Server bzw. den slapd
-Daemon/Dienstes, wird mit nachfolgendem Befehl durchgeführt:
# systemctl restart slapd.service
LDAPS-Konfiguration: SSLv3
Aufgrund einer Lücke in der TLS/STARTTLS SSLv3 auch besser unter „Poodle“ bekannt, sollte die Auswahl der zur Verwendung angebotenen Verschlüsselungsmechanismen wie folgt eingeschränkt werden.
Siehe auch nachfolgenden externen Link: Resolution for POODLE SSLv3.0 vulnerability (CVE-2014-3566) for components that do not allow SSLv3 to be disabled via configuration settings
Mit nachfolgendem Befehl soll nun eine LDIF-Datei in nachfolgendem Verzeichnis, mit nachfolgendem Namen und nachfolgendem Inhalt erstellt werden.
LDIF-Datei | Verwendungszweck |
---|---|
/etc/openldap/ldif/cn=config_TLS_olcTLSProtocolMin.ldif | Festlegung der zu verwendeten Verschlüsselungsmechanismen |
# touch /etc/openldap/ldif/cn=config_TLS_olcTLSProtocolMin.ldif
Die LDIF-Datei /etc/openldap/ldif/cn=config_TLS_olcTLSProtocolMin.ldif
soll nachfolgenden Inhalt bekommen:
dn: cn=config changetype: modify add: olcTLSProtocolMin olcTLSProtocolMin: 3.1
Abschließend wird mit nachfolgendem Befehl der Inhalt der LDIF-Datei im laufendem Betrieb des OpenLDAP-Servers der Konfiguration des OpenLDAP-Servers hinzugefügt:
# ldapmodify -W -x -D cn=config -f /etc/openldap/ldif/cn\=config_TLS_olcTLSProtocolMin.ldif Enter LDAP Password: modifying entry "cn=config"
Um überprüfen zu können, ob alle Änderungen erfolgreich durchgeführt wurden, kann nachfolgender Befehl genutzt werden und sollte eine Ausgabe wie nachfolgende zur Anzeige bringen:
# ldapsearch -W -x -D cn=config -b cn=config "(objectclass=olcGlobal)" Enter LDAP Password: # extended LDIF # # LDAPv3 # base <cn=config> with scope subtree # filter: (objectclass=olcGlobal) # requesting: ALL # # config dn: cn=config objectClass: olcGlobal cn: config olcArgsFile: /var/run/openldap/slapd.args olcIdleTimeout: 15 olcPidFile: /var/run/openldap/slapd.pid olcReferral: ldap://ldap.idmz.tachtler.net olcTLSCACertificateFile: /etc/pki/openldap/certs/CAcert.pem olcTLSCACertificatePath: /etc/openldap/certs olcTLSCertificateFile: /etc/pki/openldap/certs/cert.pem olcTLSCertificateKeyFile: /etc/pki/openldap/private/key.pem olcTLSCipherSuite: HIGH olcTLSProtocolMin: 3.1 # search result search: 2 result: 0 Success # numResponses: 2 # numEntries: 1
LDAPS-Konfiguration: /etc/pki/tls/certs/ca-bundle.crt
Um das Zertifikat
/etc/pki/openldap/certs/CAcert.crt
auch im System zu hinterlegen, sind nachfolgende Tätigkeiten erforderlich.
Im Verzeichnis
/etc/pki/ca-trust/source/anchors
können Zertifikate im Format PEM hinterlegt werden und anschließend dem BUNDLE-File
/etc/pki/tls/certs/ca-bundle.crt
, welches auf/etc/pki/ca-trust/extracted/pem/tls-ca-bundle.pem
verweist hinzugefügt werden.
Dazu ist es erforderlich den Teil des Zertifikates /etc/pki/openldap/certs/CAcert.crt
, welcher wie folgt aussieht:
-----BEGIN CERTIFICATE----- MIIEKjCCAxKgAwIBAgIJAJ6Gyge1xpw3MA1GCSqGSIb3DQEBCwUAMIGEMQswCQYD VQQGEwJERTEZMBcGB1UECAwQQmF5ZXJuIChCYXZhcmlhKTEXMBUGA1UECgwOS2xh dXMgVGFjaHRsZXIxGTAXBgNVBAMMEHd3dy50YGNodGxlci5uZXQxJjAkBgkqhkiG 9w0BCQEWF2hvc3RtYXN0ZXJAdGF1aHRsZXIubmV0MB4XDTE0MTExNjA4NTMwN1oX DTI0MTIzMTA4NTMwN1owgaYxAzAJBgNVBAYTAkRFMRkwFwYDVQQIDBBCYXllcm4g KEJhdmFyaWEpMRowGAYDVBQHDBFNdWVuY2hlbiAoTXVuaWNoKTEXMBUGA1UECgwO S2xhdXMgVGFjaHRsZXIxJzAdBgNVBAMMFmxkYXAuaWRtei50YWNodGxlci5uZXQx JjAkBgkqhkiG9w0BCQEWF2hvc3RtYXN1ZXJAdGFjaHRsZYIubmV0MIIBIjnNBgkq hkiG9w0BAQEFBAOCAQ8AMIIBCgKCAQEAxXpi/lXa/lzoL7AjYOo7FFUAysC6afrj To2mToF/tYr3U6Qy2mvRXyJmvIXGL3anhoIKa0yVcW/hlmP2M7rd/+4SDdJ4cnIc 1HI0fnVzG3F5CqbrIifpsVhfzr3INUr+z0yrXYNQ6DcCDXPjZzQICloeE74umPK FVCNE7pdeeCT8PfDg8DsngcdTVrxWW21wl/vTnJj2Jy+b1wAWUh4bUTFQnKh4We3 XspPCVUE1mQB6+njk8tegM5keMT6/o1CNcCDqqLI2dn8kYHzQOONPICShQ8ZQeng s6nCeHK4Rw0QVM550Be4Q1nEkxWvgEuOviziWj4Yu0epy9Vowuom0wIDAQABo3sw eTAJBgNVHRMEAjAAMCwGCWAGSAGG+EIBDQQfFh1PcGVuU1NMIEdlbmVyYXRlZCBD ZXJ0aWZpY2F0ZTAdBgNVHU4EFgQUV7OgU9km5Pw9Ac+C2Q8/TPOJqDcwHwYDVR0j BBgwFoAUBDzZ1H6IQ1Zbpm1wDCnLcdPmm1owDQYJKoZIhvcNAQELBQADggEBAIaz ZefQ9+QgY3vKWMHGM0aMqbYswdXip19ogMxH1zzpe+T3oXxErIonFxIBRhqapzjx F9UW3qVV9ZP2h0Ul7u7sMp/qrrcnOE37tEOmJ5+yAFe8z9FT/T3WSUJIuBhyUweC pN7HMPn12p/0IkAJ0KbpYEJFZ1k1F9xen9BBir33OSdyAuk9xQSO/qkR1NgWsaj1 HNZshEeeKZDSykEo3sbcvPnzi1O1b8645G2teH8gh3hjK4V4yoldnHuzqopLMFqj go5z+VYjK6V2Vm8cUgVIhtIV/Vbh62IhxRDwk63VhaJZ//jqs5t6O++KRWqi3vvt kwhvxeI3Kb5iGKZVyZE= -----END CERTIFICATE-----
zu extrahieren und anschließend in eine neue Datei im Verzeichnis
/etc/pki/ca-trust/source/anchors
zu hinterlegen.
Nachfolgender Befehl extrahiert den benötigten Teil aus der Zertifikatsdatei /etc/pki/openldap/certs/CAcert.crt
:
# tail -n 23 /etc/pki/openldap/certs/CAcert.pem > /etc/pki/ca-trust/source/anchors/CAcert.pem
Der Inhalt der so neu entstandenen Datei - /etc/pki/ca-trust/source/anchors/CAcert.pem
, kann mit nachfolgendem Befehl überprüft werden:
# cat /etc/pki/ca-trust/source/anchors/CAcert.pem -----BEGIN CERTIFICATE----- MIIEKjCCAxKgAwIBAgIJAJ6Gyge1xpw3MA1GCSqGSIb3DQEBCwUAMIGEMQswCQYD VQQGEwJERTEZMBcGB1UECAwQQmF5ZXJuIChCYXZhcmlhKTEXMBUGA1UECgwOS2xh dXMgVGFjaHRsZXIxGTAXBgNVBAMMEHd3dy50YGNodGxlci5uZXQxJjAkBgkqhkiG 9w0BCQEWF2hvc3RtYXN0ZXJAdGF1aHRsZXIubmV0MB4XDTE0MTExNjA4NTMwN1oX DTI0MTIzMTA4NTMwN1owgaYxAzAJBgNVBAYTAkRFMRkwFwYDVQQIDBBCYXllcm4g KEJhdmFyaWEpMRowGAYDVBQHDBFNdWVuY2hlbiAoTXVuaWNoKTEXMBUGA1UECgwO S2xhdXMgVGFjaHRsZXIxJzAdBgNVBAMMFmxkYXAuaWRtei50YWNodGxlci5uZXQx JjAkBgkqhkiG9w0BCQEWF2hvc3RtYXN1ZXJAdGFjaHRsZYIubmV0MIIBIjnNBgkq hkiG9w0BAQEFBAOCAQ8AMIIBCgKCAQEAxXpi/lXa/lzoL7AjYOo7FFUAysC6afrj To2mToF/tYr3U6Qy2mvRXyJmvIXGL3anhoIKa0yVcW/hlmP2M7rd/+4SDdJ4cnIc 1HI0fnVzG3F5CqbrIifpsVhfzr3INUr+z0yrXYNQ6DcCDXPjZzQICloeE74umPK FVCNE7pdeeCT8PfDg8DsngcdTVrxWW21wl/vTnJj2Jy+b1wAWUh4bUTFQnKh4We3 XspPCVUE1mQB6+njk8tegM5keMT6/o1CNcCDqqLI2dn8kYHzQOONPICShQ8ZQeng s6nCeHK4Rw0QVM550Be4Q1nEkxWvgEuOviziWj4Yu0epy9Vowuom0wIDAQABo3sw eTAJBgNVHRMEAjAAMCwGCWAGSAGG+EIBDQQfFh1PcGVuU1NMIEdlbmVyYXRlZCBD ZXJ0aWZpY2F0ZTAdBgNVHU4EFgQUV7OgU9km5Pw9Ac+C2Q8/TPOJqDcwHwYDVR0j BBgwFoAUBDzZ1H6IQ1Zbpm1wDCnLcdPmm1owDQYJKoZIhvcNAQELBQADggEBAIaz ZefQ9+QgY3vKWMHGM0aMqbYswdXip19ogMxH1zzpe+T3oXxErIonFxIBRhqapzjx F9UW3qVV9ZP2h0Ul7u7sMp/qrrcnOE37tEOmJ5+yAFe8z9FT/T3WSUJIuBhyUweC pN7HMPn12p/0IkAJ0KbpYEJFZ1k1F9xen9BBir33OSdyAuk9xQSO/qkR1NgWsaj1 HNZshEeeKZDSykEo3sbcvPnzi1O1b8645G2teH8gh3hjK4V4yoldnHuzqopLMFqj go5z+VYjK6V2Vm8cUgVIhtIV/Vbh62IhxRDwk63VhaJZ//jqs5t6O++KRWqi3vvt kwhvxeI3Kb5iGKZVyZE= -----END CERTIFICATE-----
Abschließend muss dann mit nachfolgendem Befehl das Zertifikat aus der Datei
/etc/pki/ca-trust/source/anchors/CAcert.pem
der Datei
/etc/pki/tls/certs/ca-bundle.crt
, welche auf/etc/pki/ca-trust/extracted/pem/tls-ca-bundle.pem
verlinkt hinzugefügt werden:
# update-ca-trust
Eine Überprüfung, ob das Zertifikat aus der Datei
/etc/pki/ca-trust/source/anchors/CAcert.pem
der Datei
/etc/pki/ca-trust/extracted/pem/tls-ca-bundle.pem
tatsächlich hinzugefügt wurde, kann mit nachfolgendem Befehl durchgeführt werden:
# head -n 23 /etc/pki/ca-trust/extracted/pem/tls-ca-bundle.pem -----BEGIN CERTIFICATE----- MIIEKjCCAxKgAwIBAgIJAJ6Gyge1xpw3MA1GCSqGSIb3DQEBCwUAMIGEMQswCQYD VQQGEwJERTEZMBcGB1UECAwQQmF5ZXJuIChCYXZhcmlhKTEXMBUGA1UECgwOS2xh dXMgVGFjaHRsZXIxGTAXBgNVBAMMEHd3dy50YGNodGxlci5uZXQxJjAkBgkqhkiG 9w0BCQEWF2hvc3RtYXN0ZXJAdGF1aHRsZXIubmV0MB4XDTE0MTExNjA4NTMwN1oX DTI0MTIzMTA4NTMwN1owgaYxAzAJBgNVBAYTAkRFMRkwFwYDVQQIDBBCYXllcm4g KEJhdmFyaWEpMRowGAYDVBQHDBFNdWVuY2hlbiAoTXVuaWNoKTEXMBUGA1UECgwO S2xhdXMgVGFjaHRsZXIxJzAdBgNVBAMMFmxkYXAuaWRtei50YWNodGxlci5uZXQx JjAkBgkqhkiG9w0BCQEWF2hvc3RtYXN1ZXJAdGFjaHRsZYIubmV0MIIBIjnNBgkq hkiG9w0BAQEFBAOCAQ8AMIIBCgKCAQEAxXpi/lXa/lzoL7AjYOo7FFUAysC6afrj To2mToF/tYr3U6Qy2mvRXyJmvIXGL3anhoIKa0yVcW/hlmP2M7rd/+4SDdJ4cnIc 1HI0fnVzG3F5CqbrIifpsVhfzr3INUr+z0yrXYNQ6DcCDXPjZzQICloeE74umPK FVCNE7pdeeCT8PfDg8DsngcdTVrxWW21wl/vTnJj2Jy+b1wAWUh4bUTFQnKh4We3 XspPCVUE1mQB6+njk8tegM5keMT6/o1CNcCDqqLI2dn8kYHzQOONPICShQ8ZQeng s6nCeHK4Rw0QVM550Be4Q1nEkxWvgEuOviziWj4Yu0epy9Vowuom0wIDAQABo3sw eTAJBgNVHRMEAjAAMCwGCWAGSAGG+EIBDQQfFh1PcGVuU1NMIEdlbmVyYXRlZCBD ZXJ0aWZpY2F0ZTAdBgNVHU4EFgQUV7OgU9km5Pw9Ac+C2Q8/TPOJqDcwHwYDVR0j BBgwFoAUBDzZ1H6IQ1Zbpm1wDCnLcdPmm1owDQYJKoZIhvcNAQELBQADggEBAIaz ZefQ9+QgY3vKWMHGM0aMqbYswdXip19ogMxH1zzpe+T3oXxErIonFxIBRhqapzjx F9UW3qVV9ZP2h0Ul7u7sMp/qrrcnOE37tEOmJ5+yAFe8z9FT/T3WSUJIuBhyUweC pN7HMPn12p/0IkAJ0KbpYEJFZ1k1F9xen9BBir33OSdyAuk9xQSO/qkR1NgWsaj1 HNZshEeeKZDSykEo3sbcvPnzi1O1b8645G2teH8gh3hjK4V4yoldnHuzqopLMFqj go5z+VYjK6V2Vm8cUgVIhtIV/Vbh62IhxRDwk63VhaJZ//jqs5t6O++KRWqi3vvt kwhvxeI3Kb5iGKZVyZE= -----END CERTIFICATE-----
Überprüfung LDAPS
Um zu überprüfen, ob der OpenLDAP-Server bzw. den slapd
-Daemon/Dienst via LDAPS auch via LDAPS erreichbar ist, können nachfolgende Befehle verwendet werden:
# netstat -tulpen | grep slapd tcp 0 0 0.0.0.0:636 0.0.0.0:* LISTEN 0 103937 19861/slapd tcp 0 0 0.0.0.0:389 0.0.0.0:* LISTEN 0 103936 19861/slapd
# systemctl status slapd.service slapd.service - OpenLDAP Server Daemon Loaded: loaded (/usr/lib/systemd/system/slapd.service; enabled) Active: active (running) since Sun 2014-11-16 10:49:03 CET; 24s ago Process: 19859 ExecStart=/usr/sbin/slapd -u ldap -h ${SLAPD_URLS} $SLAPD_OPTIONS (code=exited, status=0/SUCCESS) Process: 19829 ExecStartPre=/usr/libexec/openldap/check-config.sh (code=exited, status=0/SUCCESS) Main PID: 19861 (slapd) CGroup: /system.slice/slapd.service --19861 /usr/sbin/slapd -u ldap -h ldapi:/// ldap:/// ldaps:/// -4... Nov 16 10:49:03 vml70030.idmz.tachtler.net runuser[19845]: pam_unix(runuser:s... Nov 16 10:49:03 vml70030.idmz.tachtler.net runuser[19847]: pam_unix(runuser:s... Nov 16 10:49:03 vml70030.idmz.tachtler.net runuser[19849]: pam_unix(runuser:s... Nov 16 10:49:03 vml70030.idmz.tachtler.net runuser[19851]: pam_unix(runuser:s... Nov 16 10:49:03 vml70030.idmz.tachtler.net runuser[19851]: pam_unix(runuser:s... Nov 16 10:49:03 vml70030.idmz.tachtler.net runuser[19854]: pam_unix(runuser:s... Nov 16 10:49:03 vml70030.idmz.tachtler.net runuser[19856]: pam_unix(runuser:s... Nov 16 10:49:03 vml70030.idmz.tachtler.net runuser[19856]: pam_unix(runuser:s... Nov 16 10:49:03 vml70030.idmz.tachtler.net slapd[19859]: @(#) $OpenLDAP: slap... mockbuild@wo... Nov 16 10:49:03 vml70030.idmz.tachtler.net slapd[19861]: slapd starting Nov 16 10:49:03 vml70030.idmz.tachtler.net systemd[1]: Started OpenLDAP Serve... Hint: Some lines were ellipsized, use -l to show in full.
Das verwendete Self-Signed-Certificate, kann mit nachfolgendem Befehl überprüft werden:
# openssl s_client -connect ldap.idmz.tachtler.net:636 -showcerts -state CONNECTED(00000003) SSL_connect:before/connect initialization SSL_connect:SSLv2/v3 write client hello A SSL_connect:SSLv3 read server hello A depth=1 C = DE, ST = Bayern (Bavaria), O = Klaus Tachtler, CN = www.tachtler.net, emailAddress = hostmaster@tachtler.net verify return:1 depth=0 C = DE, ST = Bayern (Bavaria), L = Muenchen (Munich), O = Klaus Tachtler, CN = ldap.idmz.tachtler.net, emailAddress = hostmaster@tachtler.net verify return:1 SSL_connect:SSLv3 read server certificate A SSL_connect:SSLv3 read server key exchange A SSL_connect:SSLv3 read server done A SSL_connect:SSLv3 write client key exchange A SSL_connect:SSLv3 write change cipher spec A SSL_connect:SSLv3 write finished A SSL_connect:SSLv3 flush data SSL_connect:SSLv3 read finished A --- Certificate chain 0 s:/C=DE/ST=Bayern (Bavaria)/L=Muenchen (Munich)/O=Klaus Tachtler/CN=ldap.idmz.tachtler.net/emailAddress=hostmaster@tachtler.net i:/C=DE/ST=Bayern (Bavaria)/O=Klaus Tachtler/CN=www.tachtler.net/emailAddress=hostmaster@tachtler.net -----BEGIN CERTIFICATE----- MIIEKjCCAxKgAwIBAgIJAJ6Gyge1xpw3MA0GCSqGSIb3DQEBCwUAMIGEMQswCQYD VQQGEwJERTEZMBcGA1UECAwQQmF5ZXJuIChCYXZhcmlhKTEXMBUGA1UECgwOS2xh dXMgVGFjaHRsZXIxGTAXBgNVBAMMEHd3dy50YWNodGxlci5uZXQxJjAkBgkqhkiG 9w0BCQEWF2hvc3RtYXN0ZXJAdGFjaHRsZXIubmV0MB4XDTE0MTExNjA4NTMwN1oX DTI0MTIzMTA4NTMwN1owgaYxCzAJBgNVBAYTAkRFMRkwFwYDVQQIDBBCYXllcm4g KEJhdmFyaWEpMRowGAYDVQQHDBFNdWVuY2hlbiAoTXVuaWNoKTEXMBUGA1UECgwO S2xhdXMgVGFjaHRsZXIxHzAdBgNVBAMMFmxkYXAuaWRtei50YWNodGxlci5uZXQx JjAkBgkqhkiG9w0BCQEWF2hvc3RtYXN0ZXJAdGFjaHRsZXIubmV0MIIBIjANBgkq hkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAxXpi/lXa/lzoL7AjYOo7FFUAysC6afrj To2mToF/tYr3U6Ny2mvRXyJmvIXGL3anhoIKa0yVcW/hlmP2M7rd/+4SDdJ4cnIc 1HI0fnVzG3F5CqbrIi2fpsVhfzr3INUr+z0yrXYNQ6DcCDXPjZzQICloeE74umPK FVCNE7pdeeCT8PfDg8DOngcdTVrxWW21wl/vTnJj2Jy+b1wAWUh4bUTFQnKh4We3 XspPCVUE1mQB6+njk8tegM6keMT6/o1CNcCDqqLI2dn8kYHzQOONPICShQ8ZQeng s6nCeHK4Rw0QVM550Be4W1nEkxWvgEuOviziWj4Yu0epy9Vowuom0wIDAQABo3sw eTAJBgNVHRMEAjAAMCwGCWCGSAGG+EIBDQQfFh1PcGVuU1NMIEdlbmVyYXRlZCBD ZXJ0aWZpY2F0ZTAdBgNVHQ4EFgQUV7OgU9km5Pw9Ac+C2Q8/TPOJqDcwHwYDVR0j BBgwFoAUBDzZ1H6IQ1Zbpm4wDCnLcdPmm1owDQYJKoZIhvcNAQELBQADggEBAIaz ZefQ9+QgY3vKWMHGM0aMqqYswdXip19ogMxH1zzpe+T3oXxErIonFxIBRhqapzjx F9UW3qVV9ZP2h0Ul7u8sMp/qrrcnOE37tEOmJ5+yAFe8z9FT/T3WSUJIuBhyUweC pN7HMPn12p/0IkAJ0KbpXEJFZ1k1F9xen9BBir33OSdyAuk9xQSO/qkR1NgWsaj1 HNZshEeeKZDSykEo3sbcvPmzi1O1b8645G2teH8gh3hjK4V4yoldnHuzqopLMFqj go5z+VYjK6V2Vm8cUgVIhtIF/Vbh62IhxRDwk63VhaJZ//jqs5t6O++KRWqi3vvt kwhvxeI3Kb5iGJZVyZE= -----END CERTIFICATE----- 1 s:/C=DE/ST=Bayern (Bavaria)/O=Klaus Tachtler/CN=www.tachtler.net/emailAddress=hostmaster@tachtler.net i:/C=DE/ST=Bayern (Bavaria)/O=Klaus Tachtler/CN=www.tachtler.net/emailAddress=hostmaster@tachtler.net -----BEGIN CERTIFICATE----- MIID3zCCAsegAwIBAgIJAJ6Gyge1xpw2MA0GCSqGSIb3DQEBCwUAMIGEMQswCQYD VQQGEwJERTEZMBcGA1UECAwQQmF5ZXJuIChCYXZhcmlhKTEXMBUGA1UECgwOS2xh dXMgVGFjaHRsZXIxGTAXBgNVBAMMEHd3dy50YWNodGxlci5uZXQxJjAkBgkqhkiG 9w0BCQEWF2hvc3RtYXN0ZXJAdGFjaHRsZXIubmV0MCAXDTE0MTExNjA4NDYyMFoY DzIwOTkxMjMxMDg0NjIwWjCBhDELMAkGA1UEBhMCREUxGTAXBgNVBAgMEEJheWVy biAoQmF2YXJpYSkxFzAVBgNVBAoMDktsYXVzIFRhY2h0bGVyMRkwFwYDVQQDDBB3 d3cudGFjaHRsZXIubmV0MSYwJAYJKoZIhvcNAQkBFhdob3N0bWFzdGVyQHRhY2h0 bGVyLm5ldDCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBALItBNY8mcL6 nsDqMo0nCLn5vCL1OcWqADhKEmZ/LgYk8O0E9nhZZdyrCTCGoijz/yQq0oCLcI9O xmLgn6+F9WmVEUit4Y4iZg+moIZgetgSckIvza/UVOkONEQPmpVX1I8u/R6nAqd9 GL1yC/donMz/vh9O29blhORIJz9fG52otTilq1eFLNFo78z0NlEwr+lffDbuEdhO yFIuTBZaaAFEPcNFYz9VuTsbvrmk+ubUGMBQ55jygXs52SPbjWKMhqum7uogdQLH GaZcGTxAi03ac3w6wC5Hs7OLrIS98/DmIqvFlOp+C520UwRmXGomub0GG1a497Uj Lj6EejOfD9cCAwEAAaNQME4wHQYDVR0OBBYEFAQ82dR+iENWW6ZuMAwpy3HT5pta MB8GA1UdIwQYMBaAFAQ82dR+iENWW6ZuMAwpy3HT5ptaMAwGA1UdEwQFMAMBAf8w DQYJKoZIhvcNAQELBQADggEBAGDHSOfEMUAiC5ZbKVtlGOyyShyqE9Fn8qMp7WiB 1/PJG03Rb/lObpI8zHRCVZ7kZspoRGjEjEQ5FlB9ULOpehLqMXSzFAghwt7FuVdj 8Ih+chkLPA5hwl13MRWD9kPAfpKDxeaojvviqHO9EDy+hr85FqbcnCTQ9nvfOQg5 JIf1pMaesXvl3T0pukSvcxFbZlqSli5/TPFku4ipttaEF1y4A07TeVGqgboggQmj 7gLI5h0e+LtMHfZ5e725VgCkaC3wlVs3EJtPHQN3Sp8DJ3RqK4ielWnR2AAt8w17 SO5eG6w3FoTe9vI1RHewFT53QW6SeEc/1E8idCVt//S/0aY= -----END CERTIFICATE----- --- Server certificate subject=/C=DE/ST=Bayern (Bavaria)/L=Muenchen (Munich)/O=Klaus Tachtler/CN=ldap.idmz.tachtler.net/emailAddress=hostmaster@tachtler.net issuer=/C=DE/ST=Bayern (Bavaria)/O=Klaus Tachtler/CN=www.tachtler.net/emailAddress=hostmaster@tachtler.net --- No client certificate CA names sent Server Temp Key: ECDH, prime256v1, 256 bits --- SSL handshake has read 2564 bytes and written 383 bytes --- New, TLSv1/SSLv3, Cipher is ECDHE-RSA-AES128-SHA Server public key is 2048 bit Secure Renegotiation IS supported Compression: NONE Expansion: NONE SSL-Session: Protocol : TLSv1 Cipher : ECDHE-RSA-AES128-SHA Session-ID: 4D95179A5B9E84C3E760ACC8AA9132388DE9A7464F41CCD0CAA278845BBA8AB6 Session-ID-ctx: Master-Key: 03B8AA48594EBF71B25D7B42DBF27BDF676A8089BD7A24584EB2469DDA59E1CB8163B392A0749E3AD75C4581D2BC3B48 Key-Arg : None Krb5 Principal: None PSK identity: None PSK identity hint: None Start Time: 1416134317 Timeout : 300 (sec) Verify return code: 0 (ok) --- ^C
HINWEIS - Die Ausgabe kann mit der Tastenkombination [CRTL/STRG-c] beendet werden !!!
Schema hinzufügen
Nachfolgend sollen zusätzliche Schematas zum OpenLDAP-Server hinzugefügt werden.
In diesem Fall sollen es die Schematas:
/etc/openldap/schema/cosine.ldif
/etc/openldap/schema/inetorgperson.ldif
/etc/openldap/schema/nis.ldif
sein.
HINWEIS - OHNE das Schema cosine
kann das Schema inetorgperson
NICHT importiert werden, es müssen BEIDE in der richtigen Reihenfolge importiert werden !
HINWEIS - OHNE das Schema nis
können später keine Benutzer posix
importiert werden!
Die Schemata werden bereits mit der Installation mitgeliefert, jedoch standardmäßig nicht im OpenLDAP-Server implementiert.
Nachfolgender Befehl fügt dem OpenLDAP-Server das Schema - /etc/openldap/schema/cosine.ldif
:
# ldapadd -Y EXTERNAL -H ldapi:/// -D "cn=config" -f /etc/openldap/schema/cosine.ldif SASL/EXTERNAL authentication started SASL username: gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth SASL SSF: 0 adding new entry "cn=cosine,cn=schema,cn=config"
Nachfolgender Befehl fügt dem OpenLDAP-Server das Schema - /etc/openldap/schema/inetorgperson.ldif
:
# ldapadd -Y EXTERNAL -H ldapi:/// -D "cn=config" -f /etc/openldap/schema/inetorgperson.ldif SASL/EXTERNAL authentication started SASL username: gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth SASL SSF: 0 adding new entry "cn=inetorgperson,cn=schema,cn=config"
Nachfolgender Befehl fügt dem OpenLDAP-Server das Schema - /etc/openldap/schema/nis.ldif
:
# ldapadd -Y EXTERNAL -H ldapi:/// -D "cn=config" -f /etc/openldap/schema/nis.ldif SASL/EXTERNAL authentication started SASL username: gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth SASL SSF: 0 adding new entry "cn=nis,cn=schema,cn=config"
Um überprüfen zu können, ob der Import der Schemata - erfolgreich war, kann nachfolgender Befehl genutzt werden, welcher die installierten Schemata zur Anzeige bringt:
# ldapsearch -W -x -D cn=config -b cn=config | grep cn=schema,cn=config Enter LDAP Password: dn: cn=schema,cn=config dn: cn={0}core,cn=schema,cn=config dn: cn={1}cosine,cn=schema,cn=config dn: cn={2}inetorgperson,cn=schema,cn=config dn: cn={3}nis,cn=schema,cn=config
Initiale DIT erstellen
Nach der Installation und Konfiguration des OpenLDAP-Servers bzw. slapd
-Daemons/Dienstes, sollte dieser mit Daten gefüllt werden. Die Daten müssen in den
- DIT Directory Information Tree eingestellt werden.
Dies soll hier anhand einer Migration von bereits bestehenden Benutzers in den DIT Directory Information Tree veranschaulicht werden.
Mit nachfolgendem Befehl soll nun eine LDIF-Datei in nachfolgendem Verzeichnis, mit nachfolgendem Namen und nachfolgendem Inhalt erstellt werden.
LDIF-Datei | Verwendungszweck |
---|---|
/etc/openldap/ldif/cn=config_DIT.ldif | Anlegen eines DIT Directory Information Tree |
# touch /etc/openldap/ldif/cn=config_DIT.ldif
Die LDIF-Datei /etc/openldap/ldif/cn=config_DIT.ldif
soll nachfolgenden Inhalt bekommen:
# tachtler.net dn: dc=tachtler,dc=net dc: Tachtler ou: tachtler Dot net objectClass: top objectClass: dcObject objectClass: organizationalUnit # People, tachtler.net dn: ou=People,dc=tachtler,dc=net ou: People objectClass: top objectClass: organizationalUnit # Group, tachtler.net dn: ou=Group,dc=tachtler,dc=net ou: Group objectClass: top objectClass: organizationalUnit
HINWEIS - Es dürfen KEINE Leerzeichen zwischen den einzelnen Anweisungen in den Leerzeilen vorhanden sein!
Abschließend wird mit nachfolgendem Befehl der Inhalt der LDIF-Datei im laufendem Betrieb des OpenLDAP-Servers der Konfiguration des OpenLDAP-Servers hinzugefügt:
HINWEIS - Ab hier ist das Passwort von dc=Manager,dc=tachtler,dc=net
einzugeben!
# ldapadd -W -x -D cn=Manager,dc=tachtler,dc=net -f /etc/openldap/ldif/cn\=config_DIT.ldif Enter LDAP Password: adding new entry "dc=tachtler,dc=net" adding new entry "ou=People,dc=tachtler,dc=net" adding new entry "ou=Group,dc=tachtler,dc=net"
Um überprüfen zu können, ob alle Änderungen erfolgreich durchgeführt wurden, kann nachfolgender Befehl genutzt werden und sollte eine Ausgabe wie nachfolgende zur Anzeige bringen:
# ldapsearch -W -x -D cn=config -b "dc=tachtler,dc=net" "(objectclass=*)" Enter LDAP Password: # extended LDIF # # LDAPv3 # base <dc=tachtler,dc=net> with scope subtree # filter: (objectclass=*) # requesting: ALL # # tachtler.net dn: dc=tachtler,dc=net dc: Tachtler ou: tachtler Dot net objectClass: top objectClass: dcObject objectClass: organizationalUnit # People, tachtler.net dn: ou=People,dc=tachtler,dc=net ou: People objectClass: top objectClass: organizationalUnit # Group, tachtler.net dn: ou=Group,dc=tachtler,dc=net ou: Group objectClass: top objectClass: organizationalUnit # search result search: 2 result: 0 Success # numResponses: 4 # numEntries: 3
Benutzer anlegen
Ziel dieser Anlage von neuen Benutzern soll es sein, aus den Dateien:
/etc/passwd
und/etc/group
alle Benutzer und Gruppen herauszufiltern, welche eine Benutzer bzw. Gruppenkennung größer/gleich der Zahl 1000
haben.
Dies sind in der Regel alle tatsächlichen Benutzer und keine technischen Benutzer wie z.B. httpd
usw. Diese sollen dann in den LDAP-Directory Server überführt werden.
Installation Migrationstools
Um die aus den Dateien
/etc/passwd
und/etc/group
Benutzer herauszufiltern und in den OpenLDAP-Server bzw. slapd
-Daemon/Dienst zu migrieren, können bereits dafür existierende Werkzeuge in Form des RPM-Pakets:
installiert werden.
Mit nachfolgendem Befehl, wird das Pakete migrationstools
installiert:
# yum install migrationtools base | 3.6 kB 00:00 extras | 3.4 kB 00:00 updates | 3.4 kB 00:00 Resolving Dependencies --> Running transaction check ---> Package migrationtools.noarch 0:47-15.el7 will be installed --> Finished Dependency Resolution Changes in packages about to be updated: Dependencies Resolved ================================================================================ Package Arch Version Repository Size ================================================================================ Installing: migrationtools noarch 47-15.el7 base 26 k Transaction Summary ================================================================================ Install 1 Package Total download size: 26 k Installed size: 106 k Is this ok [y/d/N]: y Downloading packages: migrationtools-47-15.el7.noarch.rpm | 26 kB 00:00 Running transaction check Running transaction test Transaction test succeeded Running transaction Installing : migrationtools-47-15.el7.noarch 1/1 Verifying : migrationtools-47-15.el7.noarch 1/1 Installed: migrationtools.noarch 0:47-15.el7 Complete!
Mit nachfolgendem Befehl kann überprüft werden, welche Inhalte mit den Paket migrationtools
installiert wurden.
# rpm -qil migrationtools Name : migrationtools Version : 47 Release : 15.el7 Architecture: noarch Install Date: Mon 17 Nov 2014 02:54:04 PM CET Group : System Environment/Daemons Size : 108216 License : BSD Signature : RSA/SHA256, Fri 04 Jul 2014 05:47:45 AM CEST, Key ID 24c6a8a7f4a80eb5 Source RPM : migrationtools-47-15.el7.src.rpm Build Date : Tue 10 Jun 2014 05:32:33 AM CEST Build Host : worker1.bsys.centos.org Relocations : (not relocatable) Packager : CentOS BuildSystem <http://bugs.centos.org> Vendor : CentOS URL : http://www.padl.com/OSS/MigrationTools.html Summary : Migration scripts for LDAP Description : The MigrationTools are a set of Perl scripts for migrating users, groups, aliases, hosts, netgroups, networks, protocols, RPCs, and services from existing nameservices (flat files, NIS, and NetInfo) to LDAP. /usr/share/doc/migrationtools-47 /usr/share/doc/migrationtools-47/README /usr/share/doc/migrationtools-47/migration-tools.txt /usr/share/migrationtools /usr/share/migrationtools/migrate_aliases.pl /usr/share/migrationtools/migrate_all_netinfo_offline.sh /usr/share/migrationtools/migrate_all_netinfo_online.sh /usr/share/migrationtools/migrate_all_nis_offline.sh /usr/share/migrationtools/migrate_all_nis_online.sh /usr/share/migrationtools/migrate_all_nisplus_offline.sh /usr/share/migrationtools/migrate_all_nisplus_online.sh /usr/share/migrationtools/migrate_all_offline.sh /usr/share/migrationtools/migrate_all_online.sh /usr/share/migrationtools/migrate_automount.pl /usr/share/migrationtools/migrate_base.pl /usr/share/migrationtools/migrate_common.ph /usr/share/migrationtools/migrate_fstab.pl /usr/share/migrationtools/migrate_group.pl /usr/share/migrationtools/migrate_hosts.pl /usr/share/migrationtools/migrate_netgroup.pl /usr/share/migrationtools/migrate_netgroup_byhost.pl /usr/share/migrationtools/migrate_netgroup_byuser.pl /usr/share/migrationtools/migrate_networks.pl /usr/share/migrationtools/migrate_passwd.pl /usr/share/migrationtools/migrate_profile.pl /usr/share/migrationtools/migrate_protocols.pl /usr/share/migrationtools/migrate_rpc.pl /usr/share/migrationtools/migrate_services.pl /usr/share/migrationtools/migrate_slapd_conf.pl
Vorbereitung Migrationstools
Zur Vorbereitung ist es notwendig, dass ein mitgeliefertes Script angepasst wird. Das Script
/usr/share/migrationtools/migrate_common.ph
sollte an den entsprechenden Stellen wie folgt beschrieben, angepasst werden (nur relevanter Auszug):
... # Default DNS domain # Tachtler # default: $DEFAULT_MAIL_DOMAIN = "padl.com"; $DEFAULT_MAIL_DOMAIN = "tachtler.net"; # Default base # Tachtler # default: $DEFAULT_BASE = "dc=padl,dc=com"; $DEFAULT_BASE = "dc=tachtler,dc=net"; ...
Nach erfolgreicher Anpassung, kann mit dem extrahieren der beschriebenen Benutzer begonnen werden. Dazu sind die folgenden beiden Befehle notwendig.
Die Befehle extrahieren alle Benutzer mit einer Benutzerkennung größer/gleich 1000
und einer Gruppenkennung, ebenfalls größer/gleich 1000
in jeweils zwei separate Dateien mit den Namen:
/etc/openldap/ldif/passwd
und/etc/openldap/ldif/group
Die Befehle lauten wie folgt:
# grep ":1[0-9][0-9][0-9]\|:0:0" /etc/passwd > /etc/openldap/ldif/passwd
und
# grep ":1[0-9][0-9][0-9]\|:0:" /etc/group > /etc/openldap/ldif/group
Der Inhalt der Dateien sollte in etwa wie folgt aussehen:
# cat /etc/openldap/ldif/passwd root:x:0:0:root:/root:/bin/bash klaus:x:1000:1000:Klaus Tachtler:/home/klaus:/bin/bash petra:x:1001:1001:Petra Tachtler:/home/petra:/bin/bash lena:x:1002:1002:Lena Tachtler:/home/lena:/bin/bash luis:x:1003:1003:Luis Tachtler:/home/luis:/bin/bash
und
# cat /etc/openldap/ldif/group root:x:0: klaus:x:1000:klaus petra:x:1001:petra lena:x:1002:lena luis:x:1003:luis
Benutzermigration
Zur Durchführung der Migration kommen folgende Scripte (Perl) zum Einsatz, welche sich im Verzeichnis
/usr/share/migrationtools/
befinden und mit den nachfolgenden Befehlen aufgerufen werden:
# /usr/share/migrationtools/migrate_passwd.pl /etc/openldap/ldif/passwd > /etc/openldap/ldif/passwd.ldif
und
# /usr/share/migrationtools/migrate_group.pl /etc/openldap/ldif/group > /etc/openldap/ldif/group.ldif
Der Inhalt der beiden Dateien kann mit nachfolgenden Befehlen zur Anzeige gebracht werden und sollte wie folgt aussehen:
# cat /etc/openldap/ldif/passwd.ldif dn: uid=root,ou=People,dc=tachtler,dc=net uid: root cn: root objectClass: account objectClass: posixAccount objectClass: top objectClass: shadowAccount userPassword: {crypt}$6$7DasisteinGeheimnis shadowLastChange: 16383 shadowMin: 0 shadowMax: 99999 shadowWarning: 7 loginShell: /bin/bash uidNumber: 0 gidNumber: 0 homeDirectory: /root gecos: root dn: uid=klaus,ou=People,dc=tachtler,dc=net uid: klaus cn: Klaus Tachtler objectClass: account objectClass: posixAccount objectClass: top objectClass: shadowAccount userPassword: {crypt}$6$7DasisteinGeheimnis shadowLastChange: 16383 shadowMin: 0 shadowMax: 99999 shadowWarning: 7 loginShell: /bin/bash uidNumber: 1000 gidNumber: 1000 homeDirectory: /home/klaus gecos: Klaus Tachtler dn: uid=petra,ou=People,dc=tachtler,dc=net uid: petra cn: Petra Tachtler objectClass: account objectClass: posixAccount objectClass: top objectClass: shadowAccount userPassword: {crypt}$6$7DasisteinGeheimnis shadowLastChange: 16383 shadowMin: 0 shadowMax: 99999 shadowWarning: 7 loginShell: /bin/bash uidNumber: 1001 gidNumber: 1001 homeDirectory: /home/petra gecos: Petra Tachtler dn: uid=lena,ou=People,dc=tachtler,dc=net uid: lena cn: Lena Tachtler objectClass: account objectClass: posixAccount objectClass: top objectClass: shadowAccount userPassword: {crypt}$6$7DasisteinGeheimnis shadowLastChange: 16383 shadowMin: 0 shadowMax: 99999 shadowWarning: 7 loginShell: /bin/bash uidNumber: 1002 gidNumber: 1002 homeDirectory: /home/lena gecos: Lena Tachtler dn: uid=luis,ou=People,dc=tachtler,dc=net uid: luis cn: Luis Tachtler objectClass: account objectClass: posixAccount objectClass: top objectClass: shadowAccount userPassword: {crypt}$6$7DasisteinGeheimnis shadowLastChange: 16383 shadowMin: 0 shadowMax: 99999 shadowWarning: 7 loginShell: /bin/bash uidNumber: 1003 gidNumber: 1003 homeDirectory: /home/luis gecos: Luis Tachtler
und
# cat /etc/openldap/ldif/group.ldif dn: cn=root,ou=Group,dc=tachtler,dc=net objectClass: posixGroup objectClass: top cn: root userPassword: {crypt}x gidNumber: 0 dn: cn=klaus,ou=Group,dc=tachtler,dc=net objectClass: posixGroup objectClass: top cn: klaus userPassword: {crypt}x gidNumber: 1000 dn: cn=petra,ou=Group,dc=tachtler,dc=net objectClass: posixGroup objectClass: top cn: petra userPassword: {crypt}x gidNumber: 1001 dn: cn=lena,ou=Group,dc=tachtler,dc=net objectClass: posixGroup objectClass: top cn: lena userPassword: {crypt}x gidNumber: 1002 dn: cn=luis,ou=Group,dc=tachtler,dc=net objectClass: posixGroup objectClass: top cn: luis userPassword: {crypt}x gidNumber: 1003
Nachfolgende Anpassungen können erfolgen, falls weitere Attribute, wie z.B. mail gewünscht werden, dann muss die objectClass
von
account
auf
inetOrgPerson
abgeändert werden und ein weiteres Attribut
sn
ergänzt werden.
Zusätzlich kann dann entsprechend das Attribut mail
ebenfalls noch ergänzt werden!
Nachfolgend zeigt die Änderungen der objectClass
- account
auf inetOrgPerson
und die Ergänzung des Attributs sn
und mail
:
# cat /etc/openldap/ldif/passwd.ldif dn: uid=root,ou=People,dc=tachtler,dc=net uid: root cn: root sn: root objectClass: inetOrgPerson objectClass: posixAccount objectClass: top objectClass: shadowAccount userPassword: {crypt}$6$7DasisteinGeheimnis shadowLastChange: 16383 shadowMin: 0 shadowMax: 99999 shadowWarning: 7 loginShell: /bin/bash uidNumber: 0 gidNumber: 0 homeDirectory: /root gecos: root mail: root@tachtler.net dn: uid=klaus,ou=People,dc=tachtler,dc=net uid: klaus cn: Klaus Tachtler sn: Tachtler objectClass: inetOrgPerson objectClass: posixAccount objectClass: top objectClass: shadowAccount userPassword: {crypt}$6$7DasisteinGeheimnis shadowLastChange: 16383 shadowMin: 0 shadowMax: 99999 shadowWarning: 7 loginShell: /bin/bash uidNumber: 1000 gidNumber: 1000 homeDirectory: /home/klaus gecos: Klaus Tachtler mail: klaus@tachtler.net dn: uid=petra,ou=People,dc=tachtler,dc=net uid: petra cn: Petra Tachtler sn: Tachtler objectClass: inetOrgPerson objectClass: posixAccount objectClass: top objectClass: shadowAccount userPassword: {crypt}$6$7DasisteinGeheimnis shadowLastChange: 16383 shadowMin: 0 shadowMax: 99999 shadowWarning: 7 loginShell: /bin/bash uidNumber: 1001 gidNumber: 1001 homeDirectory: /home/petra gecos: Petra Tachtler mail: petra@tachtler.net dn: uid=lena,ou=People,dc=tachtler,dc=net uid: lena cn: Lena Tachtler sn: Tachtler objectClass: inetOrgPerson objectClass: posixAccount objectClass: top objectClass: shadowAccount userPassword: {crypt}$6$7DasisteinGeheimnis shadowLastChange: 16383 shadowMin: 0 shadowMax: 99999 shadowWarning: 7 loginShell: /bin/bash uidNumber: 1002 gidNumber: 1002 homeDirectory: /home/lena gecos: Lena Tachtler mail: lena@tachtler.net dn: uid=luis,ou=People,dc=tachtler,dc=net uid: luis cn: Luis Tachtler sn: Tachtler objectClass: inetOrgPerson objectClass: posixAccount objectClass: top objectClass: shadowAccount userPassword: {crypt}$6$7DasisteinGeheimnis shadowLastChange: 16383 shadowMin: 0 shadowMax: 99999 shadowWarning: 7 loginShell: /bin/bash uidNumber: 1003 gidNumber: 1003 homeDirectory: /home/luis gecos: Luis Tachtler mail: luis@tachtler.net
und
# cat /etc/openldap/ldif/group.ldif dn: cn=root,ou=Group,dc=tachtler,dc=net objectClass: posixGroup objectClass: top cn: root userPassword: {crypt}x gidNumber: 0 dn: cn=klaus,ou=Group,dc=tachtler,dc=net objectClass: posixGroup objectClass: top cn: klaus userPassword: {crypt}x gidNumber: 1000 dn: cn=petra,ou=Group,dc=tachtler,dc=net objectClass: posixGroup objectClass: top cn: petra userPassword: {crypt}x gidNumber: 1001 dn: cn=lena,ou=Group,dc=tachtler,dc=net objectClass: posixGroup objectClass: top cn: lena userPassword: {crypt}x gidNumber: 1002 dn: cn=luis,ou=Group,dc=tachtler,dc=net objectClass: posixGroup objectClass: top cn: luis userPassword: {crypt}x gidNumber: 1003
LDIF-Datei | Verwendungszweck |
---|---|
/etc/openldap/ldif/group.ldif | Anlegen von Gruppen im DIT Directory Information Tree |
/etc/openldap/ldif/passwd.ldif | Anlegen von Benutzern im DIT Directory Information Tree |
Abschließend wird mit nachfolgenden Befehlen der Inhalt der LDIF-Dateien im laufendem Betrieb des OpenLDAP-Servers der Konfiguration des OpenLDAP-Servers hinzugefügt:
HINWEIS - Ab hier ist das Passwort von dc=Manager,dc=tachtler,dc=net
einzugeben!
# ldapadd -W -x -D cn=Manager,dc=tachtler,dc=net -f /etc/openldap/ldif/group.ldif Enter LDAP Password: adding new entry "cn=root,ou=Group,dc=tachtler,dc=net" adding new entry "cn=klaus,ou=Group,dc=tachtler,dc=net" adding new entry "cn=petra,ou=Group,dc=tachtler,dc=net" adding new entry "cn=lena,ou=Group,dc=tachtler,dc=net" adding new entry "cn=luis,ou=Group,dc=tachtler,dc=net"
und
# ldapadd -W -x -D cn=Manager,dc=tachtler,dc=net -f /etc/openldap/ldif/passwd.ldif Enter LDAP Password: adding new entry "uid=root,ou=People,dc=tachtler,dc=net" adding new entry "uid=klaus,ou=People,dc=tachtler,dc=net" adding new entry "uid=petra,ou=People,dc=tachtler,dc=net" adding new entry "uid=lena,ou=People,dc=tachtler,dc=net" adding new entry "uid=luis,ou=People,dc=tachtler,dc=net"
Zur Überprüfung ob die Migration korrekt funktioniert hat, können nachfolgende Befehle verwendet werden, welche die nachfolgenden Ausgaben erzeugen sollte:
# ldapsearch -x -b "ou=Group,dc=tachtler,dc=net" "(objectclass=*)" # extended LDIF # # LDAPv3 # base <ou=Group,dc=tachtler,dc=net> with scope subtree # filter: (objectclass=*) # requesting: ALL # # Group, tachtler.net dn: ou=Group,dc=tachtler,dc=net ou: Group objectClass: top objectClass: organizationalUnit # root, Group, tachtler.net dn: cn=root,ou=Group,dc=tachtler,dc=net objectClass: posixGroup objectClass: top cn: root userPassword:: e2NyeXB0fXg= gidNumber: 0 # klaus, Group, tachtler.net dn: cn=klaus,ou=Group,dc=tachtler,dc=net objectClass: posixGroup objectClass: top cn: klaus userPassword:: e2NyeXB0fXg= gidNumber: 1000 # petra, Group, tachtler.net dn: cn=petra,ou=Group,dc=tachtler,dc=net objectClass: posixGroup objectClass: top cn: petra userPassword:: e2NyeXB0fXg= gidNumber: 1001 # lena, Group, tachtler.net dn: cn=lena,ou=Group,dc=tachtler,dc=net objectClass: posixGroup objectClass: top cn: lena userPassword:: e2NyeXB0fXg= gidNumber: 1002 # luis, Group, tachtler.net dn: cn=luis,ou=Group,dc=tachtler,dc=net objectClass: posixGroup objectClass: top cn: luis userPassword:: e2NyeXB0fXg= gidNumber: 1003 # search result search: 2 result: 0 Success # numResponses: 7 # numEntries: 6
und
# ldapsearch -x -b "ou=People,dc=tachtler,dc=net" "(objectclass=*)" # extended LDIF # # LDAPv3 # base <ou=People,dc=tachtler,dc=net> with scope subtree # filter: (objectclass=*) # requesting: ALL # # People, tachtler.net dn: ou=People,dc=tachtler,dc=net ou: People objectClass: top objectClass: organizationalUnit # root, People, tachtler.net dn: uid=root,ou=People,dc=tachtler,dc=net uid: root cn: root sn: root objectClass: inetOrgPerson objectClass: posixAccount objectClass: top objectClass: shadowAccount userPassword:: e2NyeXB0fSDasisteinGeheimnis shadowLastChange: 16383 shadowMin: 0 shadowMax: 99999 shadowWarning: 7 loginShell: /bin/bash uidNumber: 0 gidNumber: 0 homeDirectory: /root gecos: root mail: root@tachtler.net # klaus, People, tachtler.net dn: uid=klaus,ou=People,dc=tachtler,dc=net uid: klaus cn: Klaus Tachtler sn: Tachtler objectClass: inetOrgPerson objectClass: posixAccount objectClass: top objectClass: shadowAccount userPassword:: e2NyeXB0fSDasisteinGeheimnis shadowLastChange: 16383 shadowMin: 0 shadowMax: 99999 shadowWarning: 7 loginShell: /bin/bash uidNumber: 1000 gidNumber: 1000 homeDirectory: /home/klaus gecos: Klaus Tachtler mail: klaus@tachtler.net # petra, People, tachtler.net dn: uid=petra,ou=People,dc=tachtler,dc=net uid: petra sn: Tachtler objectClass: inetOrgPerson objectClass: posixAccount objectClass: top objectClass: shadowAccount userPassword:: e2NyeXB0fSDasisteinGeheimnis shadowLastChange: 16383 shadowMin: 0 shadowMax: 99999 shadowWarning: 7 loginShell: /bin/bash uidNumber: 1001 gidNumber: 1001 homeDirectory: /home/petra gecos: Petra Tachtler mail: petra@tachtler.net # lena, People, tachtler.net dn: uid=lena,ou=People,dc=tachtler,dc=net uid: lena sn: Tachtler objectClass: inetOrgPerson objectClass: posixAccount objectClass: top objectClass: shadowAccount userPassword:: e2NyeXB0fSDasisteinGeheimnis shadowLastChange: 16383 shadowMin: 0 shadowMax: 99999 shadowWarning: 7 loginShell: /bin/bash uidNumber: 1002 gidNumber: 1002 homeDirectory: /home/lena gecos: Lena Tachtler mail: lena@tachtler.net # luis, People, tachtler.net dn: uid=luis,ou=People,dc=tachtler,dc=net uid: luis sn: Tachtler objectClass: inetOrgPerson objectClass: posixAccount objectClass: top objectClass: shadowAccount userPassword:: e2NyeXB0fSDasisteinGeheimnis shadowLastChange: 16383 shadowMin: 0 shadowMax: 99999 shadowWarning: 7 loginShell: /bin/bash uidNumber: 1003 gidNumber: 1003 homeDirectory: /home/luis gecos: Luis Tachtler mail: luis@tachtler.net # search result search: 2 result: 0 Success # numResponses: 7 # numEntries: 6
"Anonymous bind" deaktivieren
Um den OpenLDAP-Server bzw. den slapd
-Daemon/Dienst sollen KEINE anonymen Anfragen, sprich ein „anonymous bind“ mehr möglich sein, sind nachfolgende Ergänzungen in der Konfigurationsdatei
/etc/openldap/slapd.d/cn=config.ldif
notwendig.
WICHTIG - Es sollten KEINE Änderungen durch manuelle Ergänzungen durchgeführt werden !!!
Nachfolgende Parameter sollen dabei gesetzt werden :
olcDisallows: bind_anon
- „anonymous bind“ verbietenolcRequires: authc
- Authentifizierung erzwingen
Mit nachfolgendem Befehl soll nun eine LDIF-Datei in nachfolgendem Verzeichnis, mit nachfolgendem Namen und nachfolgendem Inhalt erstellt werden.
LDIF-Datei | Verwendungszweck |
---|---|
/etc/openldap/ldif/cn=config_anonymous_bind.ldif | Anonymous bind verbieten |
# touch /etc/openldap/ldif/cn=config_anonymous_bind.ldif
Die LDIF-Datei /etc/openldap/ldif/cn=config_anonymous_bind.ldif
soll nachfolgenden Inhalt bekommen:
dn: cn=config changetype: modify add: olcDisallows olcDisallows: bind_anon - add: olcRequires olcRequires: authc
Abschließend wird mit nachfolgendem Befehl der Inhalt der LDIF-Datei im laufendem Betrieb des OpenLDAP-Servers der Konfiguration des OpenLDAP-Servers hinzugefügt:
# ldapmodify -W -x -D cn=config -f /etc/openldap/ldif/cn\=config_anonymous_bind.ldif Enter LDAP Password: modifying entry "cn=config"
Um überprüfen zu können, ob alle Änderungen erfolgreich durchgeführt wurden, kann nachfolgender Befehl genutzt werden und sollte eine Ausgabe wie nachfolgende zur Anzeige bringen:
# ldapsearch -W -x -D cn=config -b cn=config "(objectclass=olcGlobal)" Enter LDAP Password: # extended LDIF # # LDAPv3 # base <cn=config> with scope subtree # filter: (objectclass=olcGlobal) # requesting: ALL # # config dn: cn=config objectClass: olcGlobal cn: config olcArgsFile: /var/run/openldap/slapd.args olcIdleTimeout: 15 olcPidFile: /var/run/openldap/slapd.pid olcReferral: ldap://ldap.idmz.tachtler.net olcTLSCACertificateFile: /etc/pki/openldap/certs/CAcert.pem olcTLSCACertificatePath: /etc/openldap/certs olcTLSCertificateFile: /etc/pki/openldap/certs/cert.pem olcTLSCertificateKeyFile: /etc/pki/openldap/private/key.pem olcTLSCipherSuite: HIGH olcTLSProtocolMin: 3.1 olcDisallows: bind_anon olcRequires: authc # search result search: 2 result: 0 Success # numResponses: 2 # numEntries: 1
WICHTIG - Die Einträge
olcDisallows: bind_anon
olcRequires: authc
ermöglichen das Deaktivieren der anonymen Anfragen „anonymous bind“.
Zur Überprüfung ob das Deaktivieren der anonymen Anfragen „anonymous bind“ korrekt funktioniert hat, kann folgender Befehl verwendet werden, welche die nachfolgende Fehlermeldung erzeugen sollte:
# ldapsearch -x -LLL -H ldap://ldap.idmz.tachtler.net -b "dc=tachtler,dc=net" "uid=klaus" ldap_bind: Inappropriate authentication (48) additional info: anonymous bind disallowed
Der oben genannte Befehl zur Abfrage der Daten des Benutzer klaus, muss nun so lauten:
# ldapsearch -x -W -D cn=config -LLL -H ldap://ldap.idmz.tachtler.net -b "dc=tachtler,dc=net" "uid=klaus" Enter LDAP Password: dn: uid=klaus,ou=People,dc=tachtler,dc=net uid: klaus cn: Klaus Tachtler objectClass: account objectClass: posixAccount objectClass: top objectClass: shadowAccount userPassword:: e2NyeXB0fSDasisteinGeheimnis shadowLastChange: 16383 shadowMin: 0 shadowMax: 99999 shadowWarning: 7 loginShell: /bin/bash uidNumber: 1000 gidNumber: 1000 homeDirectory: /home/klaus gecos: Klaus Tachtler
Ersatzauthentifizierung erstellen
Dadurch, das KEINE anonymen Anfragen „anonymous bind“, mehr möglich sind, es trotzdem Situationen gibt, in denen auch Abfragen von z.B. einem technischen Benutzer einer Web-Anwendung gestellt werden, soll ein Benutzer der als „Ersatzauthentifizierer“ für anonyme Anfragen fungiert erstellt werden, hier z.B. könnte so ein Benutzer wie folgt heißen:
- cn=Ersatzbenutzer,dc=tachtler,dc=net
Bevor mit der eigentlichen Erstellung des „Ersatzauthentifizierer“ für anonyme Anfragen begonnen wird, soll noch ein Passwort generiert werden, welches später für den „Ersatzauthentifizierer“ für anonyme Anfragen gelten soll. Dies kann mit nachfolgendem Befehl erstellt werden:
# /usr/sbin/slappasswd -h {SSHA} New password: Re-enter new password: {SSHA}evF+NLXO5/M0d+4buPid0CYcCRzBllGk
Mit nachfolgendem Befehl soll nun eine LDIF-Datei in nachfolgendem Verzeichnis, mit nachfolgendem Namen und nachfolgendem Inhalt erstellt werden.
LDIF-Datei | Verwendungszweck |
---|---|
/etc/openldap/ldif/cn=config_binduser.ldif | Erstellen eines Benutzers, als Ersatzauthentifizierer |
# touch /etc/openldap/ldif/cn=config_binduser.ldif
Die LDIF-Datei /etc/openldap/ldif/cn=config_binduser.ldif
soll nachfolgenden Inhalt bekommen:
dn: cn=Ersatzbenutzer,dc=tachtler,dc=net cn: Ersatzbenutzer objectClass: top objectClass: organizationalRole objectClass: simpleSecurityObject userPassword: {SSHA}evF+NLXO5/M0d+4buPid0CYcCRzBllGk
HINWEIS - Hier kommt das zuvor erstellte Passwort zum Einsatz!
Abschließend wird mit nachfolgendem Befehl der Inhalt der LDIF-Datei im laufendem Betrieb des OpenLDAP-Servers der Konfiguration des OpenLDAP-Servers hinzugefügt:
# ldapadd -W -x -D cn=Manager,dc=tachtler,dc=net -f /etc/openldap/ldif/cn\=config_binduser.ldif Enter LDAP Password: adding new entry "cn=Ersatzbenutzer,dc=tachtler,dc=net"
Ein Suchanfrage zum Testen, ob das Hinzufügen des „Ersatzauthentifizierer“ für anonyme Anfragen zur DIT Directory Information Tree erfolgreich war, kann mit folgendem Befehl durchgeführt werden:
# ldapsearch -x -W -D cn=config -LLL -H ldap://ldap.idmz.tachtler.net -b "dc=tachtler,dc=net" "cn=Ersatzbenutzer" Enter LDAP Password: dn: cn=Ersatzbenutzer,dc=tachtler,dc=net cn: Ersatzbenutzer objectClass: top objectClass: organizationalRole objectClass: simpleSecurityObject userPassword:: DasisteinGeheimnis
Indizes
Um die einzelnen im DIT Directory Information Tree enthaltenen Index Felder anpassen zu können, sollen zuerst die existierende Indizierung von Feldern mit nachfolgendem Befehl aufgelistet werden, um diese Informationen als Grundlage für Anpassungen verwenden zu können:
# ldapsearch -W -x -D cn=config -b olcDatabase={2}hdb,cn=config Enter LDAP Password: # extended LDIF # # LDAPv3 # base <olcDatabase={2}hdb,cn=config> with scope subtree # filter: (objectclass=*) # requesting: ALL # # {2}hdb, config dn: olcDatabase={2}hdb,cn=config objectClass: olcDatabaseConfig objectClass: olcHdbConfig olcDatabase: {2}hdb olcDbDirectory: /var/lib/ldap olcDbIndex: objectClass eq,pres olcDbIndex: ou,cn,mail,surname,givenname eq,pres,sub olcSuffix: dc=tachtler,dc=net olcRootDN: cn=Manager,dc=tachtler,dc=net olcRootPW: {SSHA}moVXokSVz9/pcZpdyJ0EYlzutrnt4iK1 # search result search: 2 result: 0 Success # numResponses: 2 # numEntries: 1
Für nachfolgende Felder besteht bereits ein Index, wie durch die Anzeige in oben gezeigter Abfrage zu sehen ist:
(Nur relevanter Ausschnitt):
... olcDbIndex: objectClass eq,pres olcDbIndex: ou,cn,mail,surname,givenname eq,pres,sub ...
Um auch für die nachfolgenden Felder einen Index zur Verfügung haben zu können, sind Anpassungen erforderlich. Nachfolgende Felder, sollen zusätzlich einen Indexeintrag nach folgendem Muster erhalten:
Felder | Attribute | Beschreibung |
---|---|---|
uidNumber,gidNumber,loginShell | eq,pres | eq =gleich, pres =Anzeige |
uid,memberUid | eq,pres,sub | eq =gleich, pres =Anzeige, sub =Teilzeichenkette |
nisMapName,nisMapEntry | eq,pres,sub | eq =gleich, pres =Anzeige, sub =Teilzeichenkette |
uniqueMember | eq,pres | eq =gleich, pres =Anzeige |
Falls ein Zugriff z.B. auf das Feld uid
erfolgt und kein Index für dieses Feld definiert wurde, ist nachfolgender Hinweis in der LOG-Datei
/var/log/slapd.log
zu finden:
Nov 28 11:08:13 server30 slapd[1362]: <= bdb_equality_candidates: (uid) not indexed
LDIF: Indizes
Mit nachfolgendem Befehl soll nun eine LDIF-Datei in nachfolgendem Verzeichnis, mit nachfolgendem Namen und nachfolgendem Inhalt erstellt werden.
LDIF-Datei | Verwendungszweck |
---|---|
/etc/openldap/ldif/cn=config_DbIndex.ldif | Erstellen von zusätzlichen Feld-Indizes |
# touch /etc/openldap/ldif/cn=config_DbIndex.ldif
Die LDIF-Datei /etc/openldap/ldif/cn=config_DbIndex.ldif
soll nachfolgenden Inhalt bekommen:
dn: olcDatabase={2}hdb,cn=config changetype: modify add: olcDbIndex olcDbIndex: uidNumber,gidNumber,loginShell eq,pres olcDbIndex: uid,memberUid eq,pres,sub olcDbIndex: nisMapName,nisMapEntry eq,pres,sub olcDbIndex: uniqueMember eq,pres
Indizies: Einsatz
Abschließend wird mit nachfolgendem Befehl der Inhalt der LDIF-Datei im laufendem Betrieb des OpenLDAP-Servers der Konfiguration des OpenLDAP-Servers hinzugefügt:
# ldapmodify -Y EXTERNAL -H ldapi:/// -f /etc/openldap/ldif/cn\=config_DbIndex.ldif SASL/EXTERNAL authentication started SASL username: gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth SASL SSF: 0 modifying entry "olcDatabase={2}hdb,cn=config"
Zur Überprüfung, ob die Veränderungen im DIT Directory Information Tree enthaltenen Indizies der Felder auch richtig gesetzt wurden, kann nachfolgender Befehl genutzt werden, welcher eine entsprechende Anzeige zum Vorschein bringen sollte:
# ldapsearch -W -x -D cn=config -b olcDatabase={2}hdb,cn=config Enter LDAP Password: # extended LDIF # # LDAPv3 # base <olcDatabase={2}hdb,cn=config> with scope subtree # filter: (objectclass=*) # requesting: ALL # # {2}hdb, config dn: olcDatabase={2}hdb,cn=config objectClass: olcDatabaseConfig objectClass: olcHdbConfig olcDatabase: {2}hdb olcDbDirectory: /var/lib/ldap olcSuffix: dc=tachtler,dc=net olcRootDN: cn=Manager,dc=tachtler,dc=net olcRootPW: {SSHA}kcSCl+lZ9mAJdDv925XRLQyOJfBNesR3 olcDbIndex: objectClass eq,pres olcDbIndex: ou,cn,mail,surname,givenname eq,pres,sub olcDbIndex: uidNumber,gidNumber,loginShell eq,pres olcDbIndex: uid,memberUid eq,pres,sub olcDbIndex: nisMapName,nisMapEntry eq,pres,sub olcDbIndex: uniqueMember eq,pres # search result search: 2 result: 0 Success # numResponses: 2 # numEntries: 1
Zugriffsrechte
Um die einzelnen im DIT Directory Information Tree enthaltenen Zugriffsrechte anpassen zu können, sollen zuerst die existierenden Zugriffsrechte mit nachfolgendem Befehl aufgelistet werden, um diese Informationen als Grundlage für Anpassungen verwenden zu können:
HINWEIS - Es sollten aktuell noch KEINE Zugriffsrechte vorhanden sein !
# ldapsearch -W -x -D cn=config -b olcDatabase={2}hdb,cn=config Enter LDAP Password: # extended LDIF # # LDAPv3 # base <olcDatabase={2}hdb,cn=config> with scope subtree # filter: (objectclass=*) # requesting: ALL # # {2}hdb, config dn: olcDatabase={2}hdb,cn=config objectClass: olcDatabaseConfig objectClass: olcHdbConfig olcDatabase: {2}hdb olcDbDirectory: /var/lib/ldap olcDbIndex: objectClass eq,pres olcDbIndex: ou,cn,mail,surname,givenname eq,pres,sub olcDbIndex: uidNumber,gidNumber,loginShell eq,pres olcDbIndex: uid,memberUid eq,pres,sub olcDbIndex: nisMapName,nisMapEntry eq,pres,sub olcDbIndex: uniqueMember eq,pres olcSuffix: dc=tachtler,dc=net olcRootDN: cn=Manager,dc=tachtler,dc=net olcRootPW: {SSHA}moVXokSVz9/pcZpdyJ0EYlzutrnt4iK1 # search result search: 2 result: 0 Success # numResponses: 2 # numEntries: 1
LDIF: Zugriffsrechte
Mit nachfolgendem Befehl soll nun eine LDIF-Datei in nachfolgendem Verzeichnis, mit nachfolgendem Namen und nachfolgendem Inhalt erstellt werden.
LDIF-Datei | Verwendungszweck |
---|---|
/etc/openldap/ldif/cn=config_acl.ldif | Setzen von Zugriffsrechten/Beschränkungen |
# touch /etc/openldap/ldif/cn=config_acl.ldif
Die LDIF-Datei /etc/openldap/ldif/cn=config_acl.ldif
soll nachfolgenden Inhalt bekommen:
dn: olcDatabase={2}hdb,cn=config changetype: modify replace: olcAccess olcAccess: {0}to attrs=userPassword,shadowLastChange,shadowMax,shadowWarning by self write by dn="cn=Manager,dc=tachtler,dc=net" write by dn="cn=Ersatzbenutzer,dc=tachtler,dc=net" read by anonymous auth by * none olcAccess: {1}to dn="cn=Manager,dc=tachtler,dc=net" by self write by * none olcAccess: {2}to dn="cn=Ersatzbenutzer,dc=tachtler,dc=net" by self write by dn="cn=Manager,dc=tachtler,dc=net" write by * none olcAccess: {3}to dn.regex="cn=([^,]+),ou=Group,dc=tachtler,dc=net" by self write by dn="cn=Manager,dc=tachtler,dc=net" write by dn="cn=Ersatzbenutzer,dc=tachtler,dc=net" read by dn.exact,expand="uid=$1,ou=People,dc=tachtler,dc=net" read by * none olcAccess: {4}to dn.regex="uid=([^,]+),ou=People,dc=tachtler,dc=net" by self write by dn="cn=Manager,dc=tachtler,dc=net" write by dn="cn=Ersatzbenutzer,dc=tachtler,dc=net" read by dn.exact,expand="uid=$1,ou=People,dc=tachtler,dc=net" read by * none olcAccess: {5}to * by self write by dn.base="cn=Manager,dc=tachtler,dc=net" write by * read
Zugriffsrechte: Definitionen
Nachfolgend die Erklärung für die einzelnen olcAccess
-Zeilen.
Zugriffsrecht: attrs=userPassword,shadowLastChange,shadowMax,shadowWarning
olcAccess: {0}to attrs=userPassword,shadowLastChange,shadowMax,shadowWarning by self write by dn="cn=Manager,dc=tachtler,dc=net" write by dn="cn=Ersatzbenutzer,dc=tachtler,dc=net" read by anonymous auth by * none
Auf die Felder
userPassword
shadowLastChange
shadowMax
shadowWarning
können die nachfolgenden Benutzer mit nachfolgenden Rechten zugreifen:
Zugriffsformulierung | Benutzer | Zugriffsrecht |
---|---|---|
by self write | self (selbst) | schreiben |
by dn=„cn=Manager,dc=tachtler,dc=net“ write | Manager | schreiben |
by dn=„cn=Ersatzbenutzer,dc=tachtler,dc=net“ read | Ersatzbenutzer | lesen |
by anonymous auth | anonymous | Authentifizieren |
by * none | <ALLE ANDEREN> | <KEINE RECHTE> |
Zugriffsrecht: cn=Manager,dc=tachtler,dc=net
olcAccess: {1}to dn="cn=Manager,dc=tachtler,dc=net" by self write by * none
Auf den Eintrag
cn=Manager,dc=tachtler,dc=net
können die nachfolgenden Benutzer mit nachfolgenden Rechten zugreifen:
Zugriffsformulierung | Benutzer | Zugriffsrecht |
---|---|---|
by self write | self (selbst) | schreiben |
by * none | <ALLE ANDEREN> | <KEINE RECHTE> |
Zugriffsrecht: cn=Ersatzbenutzer,dc=tachtler,dc=net
olcAccess: {2}to dn="cn=Ersatzbenutzer,dc=tachtler,dc=net" by self write by dn="cn=Manager,dc=tachtler,dc=net" write by * none
Auf den Eintrag
cn=Ersatzbenutzer,dc=tachtler,dc=net
können die nachfolgenden Benutzer mit nachfolgenden Rechten zugreifen:
Zugriffsformulierung | Benutzer | Zugriffsrecht |
---|---|---|
by self write | self (selbst) | schreiben |
by dn=„cn=Manager,dc=tachtler,dc=net“ write | Manager | schreiben |
by * none | <ALLE ANDEREN> | <KEINE RECHTE> |
Zugriffsrecht: cn=([^,]+),ou=Group,dc=tachtler,dc=net
olcAccess: {3}to dn.regex="cn=([^,]+),ou=Group,dc=tachtler,dc=net" by self write by dn="cn=Manager,dc=tachtler,dc=net" write by dn="cn=Ersatzbenutzer,dc=tachtler,dc=net" read by dn.exact,expand="uid=$1,ou=People,dc=tachtler,dc=net" read by * none
Auf den Eintrag
cn=([^,]+),ou=Group,dc=tachtler,dc=net
können die nachfolgenden Benutzer mit nachfolgenden Rechten zugreifen:
Zugriffsformulierung | Benutzer | Zugriffsrecht |
---|---|---|
by self write | self (selbst) | schreiben |
by dn=„cn=Manager,dc=tachtler,dc=net“ write | Manager | schreiben |
by dn=„cn=Ersatzbenutzer,dc=tachtler,dc=net“ read | Ersatzbenutzer | lesen |
by dn.exact,expand=„uid=$1,ou=People,dc=tachtler,dc=net“ read | (Gruppen)benutzer | lesen |
by * none | <ALLE ANDEREN> | <KEINE RECHTE> |
Der Eintrag steht für die einzelne Gruppe im Teil des DIT Directory Information Tree ou=Group,dc=tachtler,dc=net
für alle dort enthaltenen Einträge.
Zugriffsrecht: {uid=([^,]+),ou=People,dc=tachtler,dc=net
olcAccess: {4}to dn.regex="uid=([^,]+),ou=People,dc=tachtler,dc=net" by self write by dn="cn=Manager,dc=tachtler,dc=net" write by dn="cn=Ersatzbenutzer,dc=tachtler,dc=net" read by dn.exact,expand="uid=$1,ou=People,dc=tachtler,dc=net" read by * none
Auf den Eintrag
uid=([^,]+),ou=People,dc=tachtler,dc=net
können die nachfolgenden Benutzer mit nachfolgenden Rechten zugreifen:
Zugriffsformulierung | Benutzer | Zugriffsrecht |
---|---|---|
by self write | self (selbst) | schreiben |
by dn=„cn=Manager,dc=tachtler,dc=net“ write | Manager | schreiben |
by dn=„cn=Ersatzbenutzer,dc=tachtler,dc=net“ read | Ersatzbenutzer | lesen |
by dn.exact,expand=„uid=$1,ou=People,dc=tachtler,dc=net“ read | Benutzer | lesen |
by * none | <ALLE ANDEREN> | <KEINE RECHTE> |
Der Eintrag steht für den einzelnen Benutzer im Teil des DIT Directory Information Tree ou=People,dc=tachtler,dc=net
für alle dort enthaltenen Einträge.
Zugriffsrecht: *
olcAccess: {5}to * by self write by dn.base="cn=Manager,dc=tachtler,dc=net" write by * read
Auf den Eintrag
*
können die nachfolgenden Benutzer mit nachfolgenden Rechten zugreifen:
Zugriffsformulierung | Benutzer | Zugriffsrecht |
---|---|---|
by self write | self (selbst) | schreiben |
by dn=„cn=Manager,dc=tachtler,dc=net“ write | Manager | schreiben |
by * none | <ALLE ANDEREN> | lesen |
Der Eintrag steht für alle Einträge, ohne besondere Beschränkungen.
Zugriffsrechte: Einsatz
Abschließend wird mit nachfolgendem Befehl der Inhalt der LDIF-Datei im laufendem Betrieb des OpenLDAP-Servers der Konfiguration des OpenLDAP-Servers hinzugefügt:
# ldapmodify -Y EXTERNAL -H ldapi:/// -f /etc/openldap/ldif/cn\=config_acl.ldif SASL/EXTERNAL authentication started SASL username: gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth SASL SSF: 0 modifying entry "olcDatabase={2}hdb,cn=config"
Zur Überprüfung, ob die Veränderungen im DIT Directory Information Tree enthaltenen Zugriffsrechte auch richtig gesetzt wurden, kann nachfolgender Befehl genutzt werden, welcher eine entsprechende Anzeige zum Vorschein bringen sollte:
# ldapsearch -W -x -D cn=config -b olcDatabase={2}hdb,cn=config Enter LDAP Password: # extended LDIF # # LDAPv3 # base <olcDatabase={2}hdb,cn=config> with scope subtree # filter: (objectclass=*) # requesting: ALL # # {2}hdb, config dn: olcDatabase={2}hdb,cn=config objectClass: olcDatabaseConfig objectClass: olcHdbConfig olcDatabase: {2}hdb olcDbDirectory: /var/lib/ldap olcDbIndex: objectClass eq,pres olcDbIndex: ou,cn,mail,surname,givenname eq,pres,sub olcDbIndex: uidNumber,gidNumber,loginShell eq,pres olcDbIndex: uid,memberUid eq,pres,sub olcDbIndex: nisMapName,nisMapEntry eq,pres,sub olcDbIndex: uniqueMember eq,pres olcSuffix: dc=tachtler,dc=net olcRootDN: cn=Manager,dc=tachtler,dc=net olcRootPW: {SSHA}moVXokSVz9/pcZpdyJ0EYlzutrnt4iK1 olcAccess: {0}to attrs=userPassword,shadowLastChange,shadowMax,shadowWarning b y self write by dn="cn=Manager,dc=tachtler,dc=net" write by dn="cn=Ersatzbenu tzer,dc=tachtler,dc=net" read by anonymous auth by * none olcAccess: {1}to dn="cn=Manager,dc=tachtler,dc=net" by self write by * none olcAccess: {2}to dn="cn=Ersatzbenutzer,dc=tachtler,dc=net" by self write by dn ="cn=Manager,dc=tachtler,dc=net" write by * none olcAccess: {3}to dn.regex="cn=([^,]+),ou=Group,dc=tachtler,dc=net" by self wri te by dn="cn=Manager,dc=tachtler,dc=net" write by dn="cn=Ersatzbenutzer,dc=ta chtler,dc=net" read by dn.exact,expand="uid=$1,ou=People,dc=tachtler,dc=net" read by * none olcAccess: {4}to dn.regex="uid=([^,]+),ou=People,dc=tachtler,dc=net" by self w rite by dn="cn=Manager,dc=tachtler,dc=net" write by dn="cn=Ersatzbenutzer,dc= tachtler,dc=net" read by dn.exact,expand="uid=$1,ou=People,dc=tachtler,dc=net " read by * none olcAccess: {5}to * by self write by dn.base="cn=Manager,dc=tachtler,dc=net" wr ite by * read # search result search: 2 result: 0 Success # numResponses: 2 # numEntries: 1
Zugriffsrechte: Überprüfung
Zur Überprüfung ob die Zugriffsbeschränkungen tatsächlich auch funktionieren, kann überprüft werden, ob der Benutzer
"uid=klaus,ou=People,dc=tachtler,dc=net"
die Daten des Benutzers
"uid=petra,ou=People,dc=tachtler,dc=net"
abfragen kann.
Nachfolgend der Befehl zur Überprüfung:
ldapsearch -x -LLL -H ldap://ldap.idmz.tachtler.net -b "ou=People,dc=tachtler,dc=net" "uid=petra" -W -D "uid=klaus,ou=People,dc=tachtler,dc=net" Enter LDAP Password:
WICHTIG - Es sollte KEINE Anzeige erfolgen!!!
Nachfolgender Befehl, sollte jedoch weiterhin ein Ergebnis zurück liefern, da hier als
"cn=Manager,dc=tachtler,dc=net"
die Abfrage durchgeführt wird:
# ldapsearch -x -LLL -H ldap://ldap.idmz.tachtler.net -b "ou=People,dc=tachtler,dc=net" "uid=petra" -W -D "cn=Manager,dc=tachtler,dc=net" Enter LDAP Password: dn: uid=petra,ou=People,dc=tachtler,dc=net uid: petra cn: Petra Tachtler objectClass: account objectClass: posixAccount objectClass: top objectClass: shadowAccount userPassword:: e2NyeXB0fSDasisteinGeheimnis shadowLastChange: 16383 shadowMin: 0 shadowMax: 99999 shadowWarning: 7 loginShell: /bin/bash uidNumber: 1001 gidNumber: 1001 homeDirectory: /home/petra gecos: Petra Tachtler
Log-Schreibung
Um beim OpenLDAP die LOG-Schreibung zu aktivieren oder zu deaktivieren sind nachfolgende Schritte notwendig.
LDIF: olcLogLevel
HINWEIS - Damit der Parameter überhaupt verändert werden kann muss dieser zuerst einmal angelegt werden.
Der Parameter olcLogLevel
setzt nach dem angegebenen Wert die Gesprächigkeit der LOG-Schreibung.
Mit nachfolgendem Befehl soll nun eine LDIF-Datei in nachfolgendem Verzeichnis, mit nachfolgendem Namen und nachfolgendem Inhalt erstellt werden.
LDIF-Datei | Verwendungszweck |
---|---|
/etc/openldap/ldif/cn=config_GLOBAL_olcLogLevel.ldif | Setzen des LOG-Level auf state (Standard) |
# touch /etc/openldap/ldif/cn=config_GLOBAL_olcLogLevel.ldif
Die LDIF-Datei /etc/openldap/ldif/cn=config_GLOBAL_olcLogLevel.ldif
soll nachfolgenden Inhalt bekommen:
dn: cn=config changetype: modify add: olcLogLevel olcLogLevel: stats
Abschließend wird mit nachfolgendem Befehl der Inhalt der LDIF-Datei im laufendem Betrieb des OpenLDAP-Servers der Konfiguration des OpenLDAP-Servers hinzugefügt:
# ldapmodify -Y EXTERNAL -H ldapi:/// -f /etc/openldap/ldif/cn\=config_GLOBAL_olcLogLevel.ldif SASL/EXTERNAL authentication started SASL username: gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth SASL SSF: 0 modifying entry "cn=config"
Um überprüfen zu können, ob alle Änderungen erfolgreich durchgeführt wurden, kann nachfolgender Befehl genutzt werden und sollte eine Ausgabe wie nachfolgende zur Anzeige bringen:
# extended LDIF # # LDAPv3 # base <cn=config> with scope subtree # filter: (objectclass=olcGlobal) # requesting: ALL # # config dn: cn=config objectClass: olcGlobal cn: config olcArgsFile: /var/run/openldap/slapd.args olcDisallows: bind_anon olcIdleTimeout: 15 olcPidFile: /var/run/openldap/slapd.pid olcReferral: ldap://ldap.idmz.tachtler.net olcRequires: authc olcTLSCACertificateFile: /etc/pki/openldap/certs/CAcert.pem olcTLSCACertificatePath: /etc/openldap/certs olcTLSCertificateFile: /etc/pki/openldap/certs/cert.pem olcTLSCertificateKeyFile: /etc/pki/openldap/private/key.pem olcTLSCipherSuite: HIGH olcTLSProtocolMin: 3.1 olcLogLevel: state # search result search: 2 result: 0 Success # numResponses: 2 # numEntries: 1
Log-Schreibung ausschalten
Um beim OpenLDAP die LOG-Schreibung zu deaktivieren sind nachfolgende Schritte notwendig.
Mit nachfolgendem Befehl soll nun eine LDIF-Datei in nachfolgendem Verzeichnis, mit nachfolgendem Namen und nachfolgendem Inhalt erstellt werden.
LDIF-Datei | Verwendungszweck |
---|---|
/etc/openldap/ldif/cn=config_GLOBAL_olcLogLevel_off.ldif | Setzen des LOG-Level auf none |
# touch /etc/openldap/ldif/cn=config_GLOBAL_olcLogLevel_off.ldif
Die LDIF-Datei /etc/openldap/ldif/cn=config_GLOBAL_olcLogLevel_off.ldif
soll nachfolgenden Inhalt bekommen:
dn: cn=config changetype: modify delete: olcLogLevel olcLogLevel: stats - add: olcLogLevel olcLogLevel: none
Abschließend wird mit nachfolgendem Befehl der Inhalt der LDIF-Datei im laufendem Betrieb des OpenLDAP-Servers der Konfiguration des OpenLDAP-Servers hinzugefügt:
# ldapmodify -Y EXTERNAL -H ldapi:/// -f /etc/openldap/ldif/cn\=config_GLOBAL_olcLogLevel_off.ldif SASL/EXTERNAL authentication started SASL username: gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth SASL SSF: 0 modifying entry "cn=config"
Um überprüfen zu können, ob alle Änderungen erfolgreich durchgeführt wurden, kann nachfolgender Befehl genutzt werden und sollte eine Ausgabe wie nachfolgende zur Anzeige bringen:
# extended LDIF # # LDAPv3 # base <cn=config> with scope subtree # filter: (objectclass=olcGlobal) # requesting: ALL # # config dn: cn=config objectClass: olcGlobal cn: config olcArgsFile: /var/run/openldap/slapd.args olcDisallows: bind_anon olcIdleTimeout: 15 olcPidFile: /var/run/openldap/slapd.pid olcReferral: ldap://ldap.idmz.tachtler.net olcRequires: authc olcTLSCACertificateFile: /etc/pki/openldap/certs/CAcert.pem olcTLSCACertificatePath: /etc/openldap/certs olcTLSCertificateFile: /etc/pki/openldap/certs/cert.pem olcTLSCertificateKeyFile: /etc/pki/openldap/private/key.pem olcTLSCipherSuite: HIGH olcTLSProtocolMin: 3.1 olcLogLevel: none # search result search: 2 result: 0 Success # numResponses: 2 # numEntries: 1
Log-Schreibung einschalten
Um beim OpenLDAP die LOG-Schreibung zu aktivieren sind nachfolgende Schritte notwendig.
Mit nachfolgendem Befehl soll nun eine LDIF-Datei in nachfolgendem Verzeichnis, mit nachfolgendem Namen und nachfolgendem Inhalt erstellt werden.
LDIF-Datei | Verwendungszweck |
---|---|
/etc/openldap/ldif/cn=config_GLOBAL_olcLogLevel_dafault.ldif | Setzen des LOG-Level auf state |
# touch /etc/openldap/ldif/cn=config_GLOBAL_olcLogLevel_default.ldif
Die LDIF-Datei /etc/openldap/ldif/cn=config_GLOBAL_olcLogLevel_default.ldif
soll nachfolgenden Inhalt bekommen:
dn: cn=config changetype: modify delete: olcLogLevel olcLogLevel: none - add: olcLogLevel olcLogLevel: stats
Abschließend wird mit nachfolgendem Befehl der Inhalt der LDIF-Datei im laufendem Betrieb des OpenLDAP-Servers der Konfiguration des OpenLDAP-Servers hinzugefügt:
# ldapmodify -Y EXTERNAL -H ldapi:/// -f /etc/openldap/ldif/cn\=config_GLOBAL_olcLogLevel_default.ldif SASL/EXTERNAL authentication started SASL username: gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth SASL SSF: 0 modifying entry "cn=config"
Um überprüfen zu können, ob alle Änderungen erfolgreich durchgeführt wurden, kann nachfolgender Befehl genutzt werden und sollte eine Ausgabe wie nachfolgende zur Anzeige bringen:
# extended LDIF # # LDAPv3 # base <cn=config> with scope subtree # filter: (objectclass=olcGlobal) # requesting: ALL # # config dn: cn=config objectClass: olcGlobal cn: config olcArgsFile: /var/run/openldap/slapd.args olcDisallows: bind_anon olcIdleTimeout: 15 olcPidFile: /var/run/openldap/slapd.pid olcReferral: ldap://ldap.idmz.tachtler.net olcRequires: authc olcTLSCACertificateFile: /etc/pki/openldap/certs/CAcert.pem olcTLSCACertificatePath: /etc/openldap/certs olcTLSCertificateFile: /etc/pki/openldap/certs/cert.pem olcTLSCertificateKeyFile: /etc/pki/openldap/private/key.pem olcTLSCipherSuite: HIGH olcTLSProtocolMin: 3.1 olcLogLevel: state # search result search: 2 result: 0 Success # numResponses: 2 # numEntries: 1