<WRAP center round info 60%> Verwendete LDAP-Ports:
Port 389 ungesichert Port 636 TLS-Verbindungen
</WRAP>
yum install openldap-servers -y
apt-get install -y slapd slapd-contrib
# # 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
/etc/openldap
cd /etc/oepnldap cp -R slapd.d slapd.d.DEFAULT -> Sicherung der Originaldateien
firewall-cmd --permanent --zone=lan-1 --add-port=389/tcp firewall-cmd --permanent --zone=lan-1 --add-port=636/tcp # SSL/TLS firewall-cmd --reload
yum install openldap-clients
cp /usr/share/openldap-servers/DB_CONFIG.example /var/lib/ldap/DB_CONFIG 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).
chown ldap:ldap /var/lib/ldap/DB_CONFIG
systemctl enable slapd systemctl start slapd
/usr/sbin/slappasswd -h {SSHA}
# New password:
# Re-enter new password:
# → {SSHA}<verschlüsseltes Passwort> -> MUSS in db.ldif hinter olcRootPW eingetragen werden
Dateiendung = LDIF → LDAP Data Interchange Format
cd /etc/openldap mkdir ldif cd ldif
vi db.ldif
dn: olcDatabase={2}hdb,cn=config changetype: modify replace: olcSuffix olcSuffix: dc=fritz,dc=box
dn: olcDatabase={2}hdb,cn=config changetype: modify replace: olcRootDN olcRootDN: cn=ldapadm,dc=fritz,dc=box
dn: olcDatabase={2}hdb,cn=config changetype: modify replace: olcRootPW olcRootPW: <generiertes Passwort>
cd /etc/openldap/ldif
ldapmodify -Y EXTERNAL -H ldapi:/// -f db.ldif
cd /etc/openldap/ldif
vi monitor.ldif
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=ldapadm,dc=fritz,dc=box" read by * none
cd /etc/openldap/ldif
ldapmodify -Y EXTERNAL -H ldapi:/// -f monitor.ldif
ldapadd -Y EXTERNAL -H ldapi:/// -f /etc/openldap/schema/cosine.ldif ldapadd -Y EXTERNAL -H ldapi:/// -f /etc/openldap/schema/nis.ldif ldapadd -Y EXTERNAL -H ldapi:/// -f /etc/openldap/schema/inetorgperson.ldif
vi base.ldif
dn: dc=fritz,dc=box dc: fritz objectClass: top objectClass: domain
dn: cn=ldapadm,dc=fritz,dc=box objectClass: organizationalRole cn: ldapadm description: LDAP Manager
dn: ou=People,dc=fritz,dc=box objectClass: organizationalUnit ou: People
dn: ou=Group,dc=fritz,dc=box objectClass: organizationalUnit ou: Group
ldapadd -x -W -D "cn=ldapadm,dc=fritz,dc=box" -f base.ldif -> mit PW-Abfrage auf STDIN oder direkt mit PW: ldapadd -x -w <Passwort> -D "cn=ldapadm,dc=fritz,dc=box" -f base.ldif
slapcat -n2
dn: dc=fritz,dc=box dc: fritz objectClass: top objectClass: domain structuralObjectClass: domain entryUUID: cbeb2cce-e398-103a-8046-b7a24d4664d2 creatorsName: cn=ldapadm,dc=fritz,dc=box createTimestamp: 20210105115631Z entryCSN: 20210105115631.993944Z#000000#000#000000 modifiersName: cn=ldapadm,dc=fritz,dc=box modifyTimestamp: 20210105115631Z dn: cn=ldapadm,dc=fritz,dc=box objectClass: organizationalRole cn: ldapadm description: LDAP Manager structuralObjectClass: organizationalRole entryUUID: cbebc454-e398-103a-8047-b7a24d4664d2 creatorsName: cn=ldapadm,dc=fritz,dc=box createTimestamp: 20210105115631Z entryCSN: 20210105115631.997820Z#000000#000#000000 modifiersName: cn=ldapadm,dc=fritz,dc=box modifyTimestamp: 20210105115631Z dn: ou=People,dc=fritz,dc=box objectClass: organizationalUnit ou: People structuralObjectClass: organizationalUnit entryUUID: cbec285e-e398-103a-8048-b7a24d4664d2 creatorsName: cn=ldapadm,dc=fritz,dc=box createTimestamp: 20210105115632Z entryCSN: 20210105115632.000384Z#000000#000#000000 modifiersName: cn=ldapadm,dc=fritz,dc=box modifyTimestamp: 20210105115632Z dn: ou=Group,dc=fritz,dc=box objectClass: organizationalUnit ou: Group structuralObjectClass: organizationalUnit entryUUID: cbecae32-e398-103a-8049-b7a24d4664d2 creatorsName: cn=ldapadm,dc=fritz,dc=box createTimestamp: 20210105115632Z entryCSN: 20210105115632.003810Z#000000#000#000000 modifiersName: cn=ldapadm,dc=fritz,dc=box modifyTimestamp: 20210105115632Z
systemctl stop slapd
rm -rf /var/lib/ldap
mkdir /var/lib/ldap
cp /usr/share/openldap-servers/DB_CONFIG.example /var/lib/ldap/DB_CONFIG
chown -R ldap:ldap /var/lib/ldap
cd /etc/openldap
rm -rf slapd.d cp -R slapd.d.DEFAULT slapd.d chown -R ldap:ldap slapd.d
systemctl start slapd
vi /etc/openldap/ldif/user_hans.ldif
dn: uid=hans,ou=People,dc=Fritz,dc=box
objectClass: top
objectClass: account
objectClass: posixAccount
objectClass: shadowAccount
cn: hans
uid: hans
uidNumber: 9999
gidNumber: 100
homeDirectory: /home/hans
loginShell: /bin/bash
gecos: hans [Admin (at) Fritz]
userPassword: {crypt}x
shadowLastChange: 17058
shadowMin: 0
shadowMax: 99999
shadowWarning: 7
ldapadd -x -W -D "cn=ldapadm,dc=fritz,dc=box" -f /etc/openldap/ldif/user_hans.ldif
ldappasswd -s <PASSWORT> -W -D "cn=ldapadm,dc=fritz,dc=box" -x "uid=hans,ou=People,dc=fritz,dc=box"
vi /etc/openldap/ldif/user_meier.ldif
dn: uid=meier,ou=Group,dc=fritz,dc=box
objectClass: top
objectClass: account
objectClass: posixAccount
objectClass: shadowAccount
cn: meier
uid: meier
uidNumber: 9998
gidNumber: 101
homeDirectory: /home/meier
loginShell: /bin/bash
gecos: meier [Admin (at) fritz]
userPassword: {crypt}x
shadowLastChange: 17058
shadowMin: 0
shadowMax: 99999
shadowWarning: 7
ldapadd -x -W -D "cn=ldapadm,dc=fritz,dc=box" -f /etc/openldap/ldif/user_meier.ldif
ldappasswd -s <PASSWORT> -W -D "cn=ldapadm,dc=fritz,dc=box" -x "uid=meier,ou=Group,dc=fritz,dc=box"
ldapsearch -x cn=meier -b dc=fritz,dc=box
How To Change Account Passwords on an OpenLDAP Server: //www.digitalocean.com/community/tutorials/how-to-change-account-passwords-on-an-openldap-server OpenLDAP using OLC (cn=config): use-security
vi /etc/openldap/ldif/loglevel.ldif
dn: cn=config changetype: modify add: olcLogLevel olcLogLevel: <LOGLEVEL> # z. B -1 (any enable all debugging ) oder 0 (no debugging
Level Keyword Description
-1 any enable all debugging 0 no debugging 1 (0x1 trace) trace function calls 2 (0x2 packets) debug packet handling 4 (0x4 args) heavy trace debugging 8 (0x8 conns) connection management 16 (0x10 BER) print out packets sent and received 32 (0x20 filter) search filter processing 64 (0x40 config) configuration processing 128 (0x80 ACL) access control list processing 256 (0x100 stats) stats log connections/operations/results 512 (0x200 stats2) stats log entries sent 1024 (0x400 shell) print communication with shell backends 2048 (0x800 parse) print entry parsing debugging 16384 (0x4000 sync) syncrepl consumer processing 32768 (0x8000 none) only messages that get logged whatever log level is set
–> Die Loglevel sind mischbar, als z. B. 129= Loglevel 1 + Loglevel 128
== Datei /etc/openldap/ldif/loglevel.ldif der LDAP-Domäne hinzufügen:
cd /etc/openldap/ldif ldapmodify -Y EXTERNAL -H ldapi:/// -f loglevel.ldif
LDAP-Client Konfiguration:
Doku: https://www.digitalocean.com/community/tutorials/how-to-use-ldif-files-to-make-changes-to-an-openldap-system
apt install ldapscripts
cp /etc/ldap/ldap.conf /etc/ldap.conf.<YYYYMMDDSSMM> vi /etc/ldap/ldap.conf
→ BASE dc=fritz,dc=box → URI ldap://ldap.fritz.box
wenn die Werte in der /etc/ldap.conf nicht gesetzt sind mit: ldapsearch -H ldap://ldap.fritz.box -b "dc=fritz,dc=box" -D "cn=ldapadm,dc=fritz,dc=box" "uid=hans" -x -w <Passwort>
sonst mit: ldapsearch -x -LLL uid=hans
dn: uid=hans,ou=People,dc=fritz,dc=box objectClass: top objectClass: account objectClass: posixAccount objectClass: shadowAccount cn: hans uid: hans uidNumber: 9999 gidNumber: 100 homeDirectory: /home/hans loginShell: /bin/bash gecos: hans [Admin (at) Fritz] shadowLastChange: 17058 shadowMin: 0 shadowMax: 99999 shadowWarning: 7 userPassword:: e1NTSEF9Q1hTdmlqYkdJUjRjZEpHRHBYRTZoVHkwYzd0VzlxQ00= dn: uid=meier,ou=Group,dc=fritz,dc=box objectClass: top objectClass: account objectClass: posixAccount objectClass: shadowAccount cn: hans uid: hans uid: meier uidNumber: 9998 gidNumber: 100 homeDirectory: /home/meier loginShell: /bin/bash gecos: meier [Admin (at) Fritz] shadowLastChange: 17058 shadowMin: 0 shadowMax: 99999 shadowWarning: 7 userPassword:: e1NTSEF9Nkg2M2d2T2gzbHpRNUdCYU16OVlVTHJNdWw2WjVLcU8=
mkdir -p /etc/openldap/ldif vi /etc/openldap/ldif/user_meier.ldif
dn: uid=meier,ou=Group,dc=fritz,dc=box changetype: modify replace: gidNumber gidNumber: 101
ldapmodify -x -D "cn=ldapadm,dc=fritz,dc=box" -W -f user_meier.ldif -> Es kommt eine Passwortabfrage (LDAP-Admin)
# mit Passwortabfrage ldapdelete -x -D "cn=ldapadm,dc=fritz,dc=box" -W "uid=meier,ou=Group,dc=fritz,dc=box" # ohne Passwortabfrage ldapdelete -x -D "cn=ldapadm,dc=fritz,dc=box" -w <Passwort> "uid=meier,ou=Group,dc=fritz,dc=box"
LDAP Browser/Editor: Quelle: https://community.microfocus.com/t5/Identity-Manager-Tips/Jarek-Gawor-s-excellent-LDAP-Browser-Editor-v2-8-2/ta-p/1771772
cd /etc cp rsyslogd.conf rsyslogd.conf.<YYYYMMDD> vi rsyslogd.conf
# LOCAL4 Standardwert für syslog facility local4.* /var/log/slapd.log
syslogd neu starten:
systemctl restart rsyslog
LDAP-Tools, Datenbank slapd darf nicht laufen:
slapcat -l <Dateiname> -> Gesamtkopie der Datenbank als .ldif-file
Standard-Zugriffsberechtigungen bei LDAP:
access to <was> by <wer> <Zugriffsart> -> Standard: access to * by * read
Genutzte Befehle bei laufenden sdapd:
ldappasswd ldapadd ldapdelete
add.ldif Beispieldatei:
dn: uid=meier,ou=Group,dc=fritz,dc=box changtype: modify add: mail mail: meinemail@gmail.com
Beispielsuche: ldapsearch -x -LLL -uid=hans das 1. L beschränkt die Ausgabe der Kommentar das 2. L verhindert die Ausgabe der LDAP-Version -> mit der Option -b kann man die Base für die Baumsuche angeben.
<WRAP center round info 60%> PAM: Module unter /lib/security (/lib64/security) </WRAP>
pam_unix nutzt die Dateien /etc/passwd und /etc/shadow, pam_cracklib -> Sicherheit des neu gewählten Passworts prüfen pam_limits -> Arbeitsspeicher und CPU-Zeit eines Benutzers limitieren pam_listfile -> Listen nutzen, um den Zugriff zu verweigern oder zu erlauben
<WRAP center round important 60%> Wenn der Ordner /etc/pam.d/ exisiert wird die Datei /etc/pam.conf ignoriert </WRAP>
Quelle: https://tylersguides.com/guides/configuring-openldap-authentication-centos-7/
Centos 7: Notwendige Module installieren:
yum install nss-pam-ldapd -y
Modul “nss-pam-ldapd” konfigurieren:
cd /etc cp nslcd.conf nslcd.conf.DEFAULT vi nslcd.conf -> die Einstellungen für den LDAP-Server
Folgende Einträge ändern/ergänzen inder /etc/nslcd.conf:
uri ldap://ldap.fritz.box base dc=fritz,dc=box base passwd ou=People,dc=fritz,dc=box base shadow ou=People,dc=fritz,dc=box base group ou=Group,dc=fritz,dc=box
LDAP-Dienst in den Autostart aufnehmen und starten:
systemctl enable nslcd systemctl start nslcd
PAM für LDAP-Unterstützung konfigurieren (LOGIN)
authconfig --updateall --enableldap --enableldapaut
pam-auth-update --enable ldap --enable ldapauth sufficient → [success=done new_authtok_reqd=done default=ignore]
Damit für einem neuen LDAP-User auch das Homedir automatngelegt wird, folgende Zeile in /etc/pam.d/login einfügen:
session required pam_mkhomedir.so skel=/etc/skel umask=0222
In die Datei /etc/pam.d/gdm folgende Zeile hinzufügen:
session required pam_mkhomedir.so skel=/etc/skel umask=0222
Windows-PC LDAP-Anmeldung: siehe Open-Source-Software
Konfigurationsdatei:
/etc/sssd.conf
Inhalt der sssd.conf:
[domain/fritz.box] autofs_provider = ldap cache_credentials = False ldap_search_base = dc=fritz,dc=box id_provider = ldap auth_provider = ldap chpass_provider = ldap ldap_uri = ldap://ldap.fritz.box:389 ldap_id_use_start_tls = False ldap_tls_cacertdir = /etc/openldap/cacerts ldap_schema = rfc2307bis ldap_auth_disable_tls_never_use_in_production = true use_fully_qualified_names = True [sssd] config_file_version = 2 reconnection_retries = 3 sbus_timeout = 30 services = nss, pam domains = fritz.box [nss] filter_groups = root filter_users = root reconnection_retries = 3 entry_cache_timeout = 300 entry_cache_nowait_percentage = 75 [pam] reconnection_retries = 3 offline_credentials_expiration = 2 offline_failed_login_attempts = 3 offline_failed_login_delay = 5 [autofs]