Zentrale Benutzerverwaltung mit OpenLDAP und SSS: Unterschied zwischen den Versionen
Zur Navigation springen
Zur Suche springen
| Zeile 3: | Zeile 3: | ||
* apt update | * apt update | ||
* DEBIAN_FRONTEND=noninteractive apt install -y slapd ldap-utils | * DEBIAN_FRONTEND=noninteractive apt install -y slapd ldap-utils | ||
| − | |||
| − | |||
| − | |||
= Grundkonfiguration = | = Grundkonfiguration = | ||
* dpkg-reconfigure slapd | * dpkg-reconfigure slapd | ||
| − | |||
| − | |||
{| class="wikitable" | {| class="wikitable" | ||
| − | ! Debconf Question | + | ! Debconf Question !! Recommended Input |
|- | |- | ||
| − | | | + | | Omit OpenLDAP server configuration? || No |
|- | |- | ||
| − | | | + | | DNS domain name: || it213.int |
|- | |- | ||
| − | | | + | | Organization name: || it213 |
|- | |- | ||
| − | | | + | | Administrator password: || 123Start$ |
|- | |- | ||
| − | | | + | | Database backend to use: || MDB |
|- | |- | ||
| − | | | + | | Remove database when slapd is purged? || No |
|- | |- | ||
| − | | | + | | Move old database? || Yes |
|- | |- | ||
| − | | | + | | Allow LDAPv2 protocol? || No |
| − | |||
| − | |||
|} | |} | ||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
= Kontrolle = | = Kontrolle = | ||
| − | |||
* ldapsearch -x -LLL | * ldapsearch -x -LLL | ||
= Grundstruktur = | = Grundstruktur = | ||
| − | |||
| − | |||
== Erstellen == | == Erstellen == | ||
| − | * cat /root/struktur.ldif | + | * cat <<EOF > /root/struktur.ldif |
<pre> | <pre> | ||
dn: ou=users,dc=it213,dc=int | dn: ou=users,dc=it213,dc=int | ||
| Zeile 98: | Zeile 50: | ||
ou: sudo | ou: sudo | ||
</pre> | </pre> | ||
| + | EOF | ||
== Anlegen == | == Anlegen == | ||
* ldapadd -xD cn=admin,dc=it213,dc=int -w 123Start$ -f /root/struktur.ldif | * ldapadd -xD cn=admin,dc=it213,dc=int -w 123Start$ -f /root/struktur.ldif | ||
| − | = | + | = Benutzer und Gruppen = |
| − | |||
* apt install ldapscripts | * apt install ldapscripts | ||
== Konfiguration == | == Konfiguration == | ||
| − | |||
* vim /etc/ldapscripts/ldapscripts.conf | * vim /etc/ldapscripts/ldapscripts.conf | ||
<pre> | <pre> | ||
| Zeile 114: | Zeile 65: | ||
GSUFFIX="ou=groups" | GSUFFIX="ou=groups" | ||
USUFFIX="ou=users" | USUFFIX="ou=users" | ||
| − | |||
BINDDN="cn=admin,dc=it213,dc=int" | BINDDN="cn=admin,dc=it213,dc=int" | ||
| − | |||
| − | |||
| − | |||
| − | |||
BINDPWDFILE="/etc/ldapscripts/ldapscripts.passwd" | BINDPWDFILE="/etc/ldapscripts/ldapscripts.passwd" | ||
| + | UIDSTART="10000" | ||
GIDSTART="10000" | GIDSTART="10000" | ||
| − | |||
| − | |||
</pre> | </pre> | ||
| − | |||
* echo -n "123Start$" > /etc/ldapscripts/ldapscripts.passwd | * echo -n "123Start$" > /etc/ldapscripts/ldapscripts.passwd | ||
* chmod 600 /etc/ldapscripts/ldapscripts.passwd | * chmod 600 /etc/ldapscripts/ldapscripts.passwd | ||
| − | + | == Gruppen == | |
| − | |||
* ldapaddgroup it | * ldapaddgroup it | ||
| + | * ldapaddgroup sudo | ||
| − | + | == Benutzer == | |
* ldapadduser thomas it | * ldapadduser thomas it | ||
* ldapadduser tina it | * ldapadduser tina it | ||
| − | == | + | == Passwort == |
* ldapsetpasswd thomas | * ldapsetpasswd thomas | ||
* ldapsetpasswd tina | * ldapsetpasswd tina | ||
| − | = | + | == Gruppe zuweisen == |
| − | == | + | * ldapaddusertogroup thomas sudo |
| + | * ldapaddusertogroup tina sudo | ||
| + | |||
| + | = SSSD Anbindung = | ||
* apt install sssd libnss-sss libpam-sss libsss-sudo | * apt install sssd libnss-sss libpam-sss libsss-sudo | ||
| − | == | + | == Konfiguration == |
* vim /etc/sssd/sssd.conf | * vim /etc/sssd/sssd.conf | ||
<pre> | <pre> | ||
| Zeile 165: | Zeile 112: | ||
cache_credentials = True | cache_credentials = True | ||
| − | |||
ldap_id_use_start_tls = false | ldap_id_use_start_tls = false | ||
| − | |||
ldap_tls_reqcert = never | ldap_tls_reqcert = never | ||
</pre> | </pre> | ||
| Zeile 174: | Zeile 119: | ||
* systemctl restart sssd | * systemctl restart sssd | ||
| − | == | + | == NSS == |
| + | * sed -i 's/^sudoers:.*/sudoers: files sss/' /etc/nsswitch.conf | ||
| + | |||
| + | == PAM == | ||
* pam-auth-update --enable sss mkhomedir | * pam-auth-update --enable sss mkhomedir | ||
| − | == | + | = Sudo (LDAP) = |
| − | * cat / | + | |
| + | == Schema erweitern == | ||
| + | ; falls sudoRole noch nicht existiert | ||
| + | * cat <<EOF > /root/sudo-schema-fix.ldif | ||
<pre> | <pre> | ||
| − | + | dn: cn={4}sudo,cn=schema,cn=config | |
| − | + | changetype: modify | |
| − | + | add: olcAttributeTypes | |
| − | + | olcAttributeTypes: ( 1.3.6.1.4.1.15953.9.1.1 NAME 'sudoUser' EQUALITY caseExactMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 ) | |
| + | - | ||
| + | add: olcAttributeTypes | ||
| + | olcAttributeTypes: ( 1.3.6.1.4.1.15953.9.1.2 NAME 'sudoHost' EQUALITY caseExactMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 ) | ||
| + | - | ||
| + | add: olcAttributeTypes | ||
| + | olcAttributeTypes: ( 1.3.6.1.4.1.15953.9.1.3 NAME 'sudoCommand' EQUALITY caseExactMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 ) | ||
| + | - | ||
| + | add: olcAttributeTypes | ||
| + | olcAttributeTypes: ( 1.3.6.1.4.1.15953.9.1.4 NAME 'sudoRunAsUser' EQUALITY caseExactMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 ) | ||
| + | - | ||
| + | add: olcAttributeTypes | ||
| + | olcAttributeTypes: ( 1.3.6.1.4.1.15953.9.1.5 NAME 'sudoRunAsGroup' EQUALITY caseExactMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 ) | ||
| + | - | ||
| + | add: olcObjectClasses | ||
| + | olcObjectClasses: ( 1.3.6.1.4.1.15953.9.2.1 NAME 'sudoRole' SUP top STRUCTURAL MUST cn MAY ( sudoUser $ sudoHost $ sudoCommand $ sudoRunAsUser $ sudoRunAsGroup ) ) | ||
</pre> | </pre> | ||
| + | EOF | ||
| − | + | * ldapmodify -Y EXTERNAL -H ldapi:/// -f /root/sudo-schema-fix.ldif | |
| − | == Sudo | + | |
| − | * cat /root/ | + | == Sudo Regel == |
| + | * cat <<EOF > /root/sudo.ldif | ||
<pre> | <pre> | ||
| − | dn: cn= | + | dn: cn=sudo,ou=sudo,dc=it213,dc=int |
objectClass: top | objectClass: top | ||
objectClass: sudoRole | objectClass: sudoRole | ||
| − | cn: | + | cn: sudo |
sudoUser: %sudo | sudoUser: %sudo | ||
sudoHost: ALL | sudoHost: ALL | ||
| Zeile 200: | Zeile 168: | ||
sudoCommand: ALL | sudoCommand: ALL | ||
</pre> | </pre> | ||
| + | EOF | ||
| − | * ldapadd -xD cn=admin,dc=it213,dc=int -w 123Start$ -f /root/ | + | * ldapadd -xD cn=admin,dc=it213,dc=int -w 123Start$ -f /root/sudo.ldif |
| − | == | + | == Cache leeren == |
| − | * | + | * sss_cache -E |
| − | * | + | * systemctl restart sssd |
| − | |||
| − | == | + | == Test == |
* su - thomas | * su - thomas | ||
* sudo -l | * sudo -l | ||
* sudo whoami | * sudo whoami | ||
Version vom 2. April 2026, 08:32 Uhr
Installation
- passwort nach wahl festlegen
- apt update
- DEBIAN_FRONTEND=noninteractive apt install -y slapd ldap-utils
Grundkonfiguration
- dpkg-reconfigure slapd
| Debconf Question | Recommended Input |
|---|---|
| Omit OpenLDAP server configuration? | No |
| DNS domain name: | it213.int |
| Organization name: | it213 |
| Administrator password: | 123Start$ |
| Database backend to use: | MDB |
| Remove database when slapd is purged? | No |
| Move old database? | Yes |
| Allow LDAPv2 protocol? | No |
Kontrolle
- ldapsearch -x -LLL
Grundstruktur
Erstellen
- cat <<EOF > /root/struktur.ldif
dn: ou=users,dc=it213,dc=int objectClass: organizationalUnit ou: users dn: ou=groups,dc=it213,dc=int objectClass: organizationalUnit ou: groups dn: ou=hosts,dc=it213,dc=int objectClass: organizationalUnit ou: hosts dn: ou=sudo,dc=it213,dc=int objectClass: organizationalUnit ou: sudo
EOF
Anlegen
- ldapadd -xD cn=admin,dc=it213,dc=int -w 123Start$ -f /root/struktur.ldif
Benutzer und Gruppen
- apt install ldapscripts
Konfiguration
- vim /etc/ldapscripts/ldapscripts.conf
SERVER="ldap://ldap.it213.int" SUFFIX="dc=it213,dc=int" GSUFFIX="ou=groups" USUFFIX="ou=users" BINDDN="cn=admin,dc=it213,dc=int" BINDPWDFILE="/etc/ldapscripts/ldapscripts.passwd" UIDSTART="10000" GIDSTART="10000"
- echo -n "123Start$" > /etc/ldapscripts/ldapscripts.passwd
- chmod 600 /etc/ldapscripts/ldapscripts.passwd
Gruppen
- ldapaddgroup it
- ldapaddgroup sudo
Benutzer
- ldapadduser thomas it
- ldapadduser tina it
Passwort
- ldapsetpasswd thomas
- ldapsetpasswd tina
Gruppe zuweisen
- ldapaddusertogroup thomas sudo
- ldapaddusertogroup tina sudo
SSSD Anbindung
- apt install sssd libnss-sss libpam-sss libsss-sudo
Konfiguration
- vim /etc/sssd/sssd.conf
[sssd] services = nss, pam, sudo domains = it213.int [domain/it213.int] id_provider = ldap auth_provider = ldap access_provider = permit sudo_provider = ldap ldap_uri = ldap://ldap.it213.int ldap_search_base = dc=it213,dc=int ldap_sudo_search_base = ou=sudo,dc=it213,dc=int cache_credentials = True ldap_id_use_start_tls = false ldap_tls_reqcert = never
- chmod 600 /etc/sssd/sssd.conf
- systemctl restart sssd
NSS
- sed -i 's/^sudoers:.*/sudoers: files sss/' /etc/nsswitch.conf
PAM
- pam-auth-update --enable sss mkhomedir
Sudo (LDAP)
Schema erweitern
- falls sudoRole noch nicht existiert
- cat <<EOF > /root/sudo-schema-fix.ldif
dn: cn={4}sudo,cn=schema,cn=config
changetype: modify
add: olcAttributeTypes
olcAttributeTypes: ( 1.3.6.1.4.1.15953.9.1.1 NAME 'sudoUser' EQUALITY caseExactMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 )
-
add: olcAttributeTypes
olcAttributeTypes: ( 1.3.6.1.4.1.15953.9.1.2 NAME 'sudoHost' EQUALITY caseExactMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 )
-
add: olcAttributeTypes
olcAttributeTypes: ( 1.3.6.1.4.1.15953.9.1.3 NAME 'sudoCommand' EQUALITY caseExactMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 )
-
add: olcAttributeTypes
olcAttributeTypes: ( 1.3.6.1.4.1.15953.9.1.4 NAME 'sudoRunAsUser' EQUALITY caseExactMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 )
-
add: olcAttributeTypes
olcAttributeTypes: ( 1.3.6.1.4.1.15953.9.1.5 NAME 'sudoRunAsGroup' EQUALITY caseExactMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 )
-
add: olcObjectClasses
olcObjectClasses: ( 1.3.6.1.4.1.15953.9.2.1 NAME 'sudoRole' SUP top STRUCTURAL MUST cn MAY ( sudoUser $ sudoHost $ sudoCommand $ sudoRunAsUser $ sudoRunAsGroup ) )
EOF
- ldapmodify -Y EXTERNAL -H ldapi:/// -f /root/sudo-schema-fix.ldif
Sudo Regel
- cat <<EOF > /root/sudo.ldif
dn: cn=sudo,ou=sudo,dc=it213,dc=int objectClass: top objectClass: sudoRole cn: sudo sudoUser: %sudo sudoHost: ALL sudoRunAsUser: ALL sudoRunAsGroup: ALL sudoCommand: ALL
EOF
- ldapadd -xD cn=admin,dc=it213,dc=int -w 123Start$ -f /root/sudo.ldif
Cache leeren
- sss_cache -E
- systemctl restart sssd
Test
- su - thomas
- sudo -l
- sudo whoami