Zentrale Benutzerverwaltung mit OpenLDAP und SSS: Unterschied zwischen den Versionen

Aus Xinux Wiki
Zur Navigation springen Zur Suche springen
Zeile 1: Zeile 1:
−
=Installation=
+
= Installation =
 
;passwort nach wahl festlegen
 
;passwort nach wahl festlegen
−
*apt install slapd ldap-utils  
+
* apt install slapd ldap-utils
  
 
;slapd: OpenLDAP Standalone Server  
 
;slapd: OpenLDAP Standalone Server  
 
;ldap-utils: Utilities zum Zugriff auf den LDAP Server
 
;ldap-utils: Utilities zum Zugriff auf den LDAP Server
  
−
=Grundkonfiguration=
+
= Grundkonfiguration =
 
[[Datei:Ldap-61.png]]
 
[[Datei:Ldap-61.png]]
  
 
[[Datei:Ldap-62.png]]
 
[[Datei:Ldap-62.png]]
−
=Weitere Konfiguration=
+
 
−
*dpkg-reconfigure -p low slapd
+
= Weitere Konfiguration =
 +
* dpkg-reconfigure -p low slapd
  
 
[[Datei:Ldap-63.png]]
 
[[Datei:Ldap-63.png]]
Zeile 26: Zeile 27:
  
 
[[Datei:Ldap-66.png]]
 
[[Datei:Ldap-66.png]]
−
=Konfiguration des Clients=
+
 
−
==ldap.conf==
+
= Konfiguration des Clients =
−
*cat /etc/ldap/ldap.conf
+
== ldap.conf ==
−
  base            dc=it21, dc=int
+
* cat /etc/ldap/ldap.conf
−
  uri            ldap://server.it21.int
+
  base            dc=it213, dc=int
 +
  uri            ldap://server.it213.int
 
  ldap_version    3
 
  ldap_version    3
−
  rootbinddn      cn=admin, dc=it21, dc=int
+
  rootbinddn      cn=admin, dc=it213, dc=int
 
  pam_password    md5
 
  pam_password    md5
−
==Passwort für den Adminzugang eintragen==
+
 
−
*echo 123Start$ > /etc/ldap.secret
+
== Passwort für den Adminzugang eintragen ==
−
=Kontrolle=
+
* echo 123Start$ > /etc/ldap.secret
−
==Stimmt der base dn?==
+
 
−
*ldapsearch -x -LLL
+
= Kontrolle =
−
  dn: dc=it21,dc=int
+
== Stimmt der base dn ==
 +
* ldapsearch -x -LLL
 +
  dn: dc=it213,dc=int
 
  objectClass: top
 
  objectClass: top
 
  objectClass: dcObject
 
  objectClass: dcObject
 
  objectClass: organization
 
  objectClass: organization
−
  o: int21
+
  o: it213
−
  dc: it21
+
  dc: it213
−
=Grundstruktur=
+
 
−
{{#drawio:it21-ldap}}
+
= Grundstruktur =
−
==Erstellen==
+
{{#drawio:it213-ldap}}
−
*cat /root/struktur.ldif  
+
 
−
<pre>
+
== Erstellen ==
−
dn: ou=users,dc=it21,dc=int
+
* cat /root/struktur.ldif  
−
objectClass: organizationalUnit
+
dn: ou=users,dc=it213,dc=int
−
ou: users
+
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=groups,dc=it21,dc=int
+
== Anlegen ==
−
objectClass: organizationalUnit
+
* ldapadd -xD cn=admin,dc=it213,dc=int -w 123Start$ -f struktur.ldif
−
ou: groups
+
adding new entry "ou=users,dc=it213,dc=int"
 +
adding new entry "ou=groups,dc=it213,dc=int"
 +
adding new entry "ou=hosts,dc=it213,dc=int"
  
−
dn: ou=hosts,dc=it21,dc=int
+
= Ldapscripts =
−
objectClass: organizationalUnit
+
== Installation ==
−
ou: hosts
+
* apt install ldapscripts
−
</pre>
 
  
−
==Anlegen==
+
== Konfiguration ==
−
ldapadd -xD cn=admin,dc=it21,dc=int -w 123Start$ -f struktur.ldif
+
=== Hauptkonfiguration ===
−
  adding new entry "ou=users,dc=it21,dc=int"
+
* cat /etc/ldapscripts/ldapscripts.conf
 +
SERVER="ldap://ldap.it213.int"
 +
SUFFIX="dc=it213,dc=int"
 +
GSUFFIX="ou=groups"
 +
  USUFFIX="ou=users"
 +
MSUFFIX="ou=hosts"
 +
BINDDN="cn=admin,dc=it213,dc=int"
 +
USHELL="/bin/bash"
 +
UHOMES="/home/%u"
 +
CREATEHOMES="yes"
 +
HOMESKEL="/etc/skel"
 +
BINDPWDFILE="/etc/ldapscripts/ldapscripts.passwd"
 +
GIDSTART="10000"
 +
UIDSTART="10000"
 +
MIDSTART="20000"
 +
GCLASS="posixGroup"
 +
PASSWORDGEN="pwgen"
 +
RECORDPASSWORDS="no"
 +
PASSWORDFILE="/var/log/ldapscripts_passwd.log"
 +
LOGTOFILE="yes"
 +
LOGFILE="/var/log/ldapscripts.log"
 +
LOGTOSYSLOG="no"
 +
SYSLOGFACILITY="local4"
 +
SYSLOGLEVEL="info"
 +
LDAPSEARCHBIN="/usr/bin/ldapsearch"
 +
LDAPADDBIN="/usr/bin/ldapadd"
 +
LDAPDELETEBIN="/usr/bin/ldapdelete"
 +
LDAPMODIFYBIN="/usr/bin/ldapmodify"
 +
LDAPMODRDNBIN="/usr/bin/ldapmodrdn"
 +
LDAPPASSWDBIN="/usr/bin/ldappasswd"
 +
LDAPSEARCHOPTS="-o ldif-wrap=no"
  
−
adding new entry "ou=groups,dc=it21,dc=int"
+
=== Password Datei ===
 +
* echo -n "123Start$" > /etc/ldapscripts/ldapscripts.passwd
  
−
adding new entry "ou=hosts,dc=it21,dc=int"
+
== Managment ==
 +
=== Struktur ===
 +
{{#drawio:it213-2}}
  
−
=Ldapscripts=
+
=== Gruppen anlegen ===
−
==Installation==
+
* ldapaddgroup it
−
*apt install ldapscripts
 
  
−
==Konfiguration==
+
=== Benutzer anlegen ===
−
===Hauptkonfiguration===
+
* ldapadduser thomas it
−
*cat /etc/ldapscripts/ldapscripts.conf
+
* ldapadduser tina it
−
<pre>
 
−
SERVER="ldap://ldap.it21.int"
 
−
SUFFIX="dc=it21,dc=int"
 
−
GSUFFIX="ou=groups"
 
−
USUFFIX="ou=users"
 
−
MSUFFIX="ou=hosts"
 
−
BINDDN="cn=admin,dc=it21,dc=int"
 
−
USHELL="/bin/bash"
 
−
UHOMES="/home/%u"
 
−
CREATEHOMES="yes"
 
−
HOMESKEL="/etc/skel"
 
−
BINDPWDFILE="/etc/ldapscripts/ldapscripts.passwd"
 
−
GIDSTART="10000" # Group ID
 
−
UIDSTART="10000" # User ID
 
−
MIDSTART="20000" # Machine ID
 
−
GCLASS="posixGroup"  # Leave "posixGroup" here if not sure !
 
−
PASSWORDGEN="pwgen"
 
−
RECORDPASSWORDS="no"
 
−
PASSWORDFILE="/var/log/ldapscripts_passwd.log"
 
−
LOGTOFILE="yes"
 
−
LOGFILE="/var/log/ldapscripts.log"
 
−
LOGTOSYSLOG="no"
 
−
SYSLOGFACILITY="local4"
 
−
SYSLOGLEVEL="info"
 
−
LDAPSEARCHBIN="/usr/bin/ldapsearch"
 
−
LDAPADDBIN="/usr/bin/ldapadd"
 
−
LDAPDELETEBIN="/usr/bin/ldapdelete"
 
−
LDAPMODIFYBIN="/usr/bin/ldapmodify"
 
−
LDAPMODRDNBIN="/usr/bin/ldapmodrdn"
 
−
LDAPPASSWDBIN="/usr/bin/ldappasswd"
 
−
LDAPSEARCHOPTS="-o ldif-wrap=no"
 
−
GETENTPWCMD=""
 
−
GETENTGRCMD=""
 
−
GTEMPLATE=""
 
−
UTEMPLATE=""
 
−
MTEMPLATE=""
 
−
</pre>
 
  
−
===Password Datei===
+
=== Passwörter setzen ===
−
*echo -n "123Start$" > /etc/ldapscripts/ldapscripts.passwd
+
* ldapsetpasswd thomas
−
==Managment==
+
* ldapsetpasswd tina
−
===Struktur===
 
−
{{#drawio:it21-2}}
 
  
−
===Gruppen anlegen===
+
= nsswitch und pam anbinden =
−
*ldapaddgroup it
+
* [[Zusammenspiel von PAM und NSS]]
−
===Benutzer anlegen===
 
−
*ldapadduser thomas it
 
−
*ldapadduser tina it
 
−
===Passwörter setzen===
 
−
*ldapsetpasswd thomas
 
−
*ldapsetpasswd tina
 
  
−
=nsswitch und pam anbinden=
+
== Installation ==
−
*[[Zusammenspiel von PAM und NSS]]
+
* env DEBIAN_FRONTEND=noninteractive apt install -yqq libnss-ldap libpam-ldap nslcd
−
==Installation==
 
−
*env DEBIAN_FRONTEND=noninteractive apt install -yqq libnss-ldap libpam-ldap nslcd
 
 
;Wir konfigurieren von Hand
 
;Wir konfigurieren von Hand
  
−
==ldap.conf==
+
== ldap.conf ==
−
*cat /etc/ldap/ldap.conf
+
* cat /etc/ldap/ldap.conf
−
  base            dc=it21, dc=int
+
  base            dc=it213, dc=int
−
  uri            ldap://server.it21.int
+
  uri            ldap://server.it213.int
 
  ldap_version    3
 
  ldap_version    3
−
  rootbinddn      cn=admin, dc=it21, dc=int
+
  rootbinddn      cn=admin, dc=it213, dc=int
 
  pam_password    md5
 
  pam_password    md5
−
==Passwort für den Adminzugang eintragen==
 
−
*echo 123Start$ > /etc/ldap.secret
 
−
==Wir benutzen nur eine Konfigurationdatei==
 
−
*ln -fs /etc/ldap/ldap.conf /etc/libnss-ldap.conf
 
−
*ln -fs /etc/ldap/ldap.conf /etc/pam_ldap.conf
 
−
==nslcd.conf==
 
−
<pre>
 
−
kit@dhcp:~$ sudo cat /etc/nslcd.conf
 
−
# /etc/nslcd.conf
 
−
# nslcd configuration file. See nslcd.conf(5)
 
−
# for details.
 
  
−
# The user and group nslcd should run as.
+
== Passwort für den Adminzugang eintragen ==
−
uid nslcd
+
* echo 123Start$ > /etc/ldap.secret
−
gid nslcd
 
  
−
# The location at which the LDAP server(s) should be reachable.
+
== Wir benutzen nur eine Konfigurationdatei ==
−
uri ldap://ldap.it1XX.int
+
* ln -fs /etc/ldap/ldap.conf /etc/libnss-ldap.conf
 +
* ln -fs /etc/ldap/ldap.conf /etc/pam_ldap.conf
  
−
# The search base that will be used for all queries.
+
== nslcd.conf ==
−
base dc=it1XX,dc=int
+
* cat /etc/nslcd.conf
−
</pre>
+
uid nslcd
 +
gid nslcd
 +
uri ldap://ldap.it213.int
 +
base dc=it213,dc=int
  
−
==Nsswitch anpassen==
+
== Nsswitch anpassen ==
−
*cat /etc/nsswitch.conf  
+
* cat /etc/nsswitch.conf  
 
  passwd:        files ldap
 
  passwd:        files ldap
 
  group:          files ldap
 
  group:          files ldap
 
  shadow:        files ldap
 
  shadow:        files ldap
  
−
==PAM anpassen==
+
== PAM anpassen ==
−
*Muss man eigentlich nicht
+
Falls ein Home Verzeichnis gewünscht ist, muss folgende Datei bearbeitet werden:
−
*'''ABER''' falls ein Home Verzeichnis gewünscht ist für den User muss folgende Datei bearbeitet werden:
+
* '''nano /etc/pam.d/common-session'''
−
**'''nano /etc/pam.d/common-session'''
+
session required pam_mkhomedir.so skel=/etc/skel umask=0022
−
<pre>
 
−
#Diese Zeile in die Datei einfügen
 
−
 
 
−
session required pam_mkhomedir.so skel=/etc/skel umask=0022
 
−
</pre>
 
  
−
==Reboot==
+
== Reboot ==
 
!!!Reboot!!!
 
!!!Reboot!!!
  
−
=Tests=
+
= Tests =
−
*getent group it
+
* getent group it
 
  it:*:10000:
 
  it:*:10000:
−
*getent passwd thomas
+
* getent passwd thomas
 
  thomas:*:10000:10000:thomas:/home/thomas:/bin/bash
 
  thomas:*:10000:10000:thomas:/home/thomas:/bin/bash
−
*getent passwd tina
+
* su - tina
−
tina:*:10001:10000:tina:/home/tina:/bin/bash
 
−
*su - tina
 
 
  tina@server:~$
 
  tina@server:~$
  
−
==Starten des slapd==
+
== Dienstverwaltung ==
−
systemctl start slapd
+
* systemctl start slapd
−
 
+
* systemctl stop slapd
−
==Stoppen des slapd==
+
* systemctl restart slapd
−
systemctl stop slapd
 
−
 
 
−
==Neustarten des slapd==
 
−
systemctl restart slapd
 
−
 
 
−
==Auf welchem Port lauscht der slapd==
 
−
netstat -lntp | grep slapd
 
−
tcp        0      0 0.0.0.0:389            0.0.0.0:*              LISTEN    499/slapd
 
  
−
==Sudo==
+
== Portprüfung ==
 +
* netstat -lntp | grep slapd
 +
tcp        0      0 0.0.0.0:389            0.0.0.0:* LISTEN    499/slapd
  
 +
= Sudo =
 
Sudo Gruppe auf dem ldap Server anlegen:
 
Sudo Gruppe auf dem ldap Server anlegen:
−
ldapaddgroup sudo
+
* ldapaddgroup sudo
 +
* ldapaddusertogroup thomas sudo
 +
* ldapaddusertogroup tina sudo
  
−
ldapaddusertogroup thomas sudo
+
Pakete installieren:
−
ldapaddusertogroup tina sudo
 
−
 
 
−
Packete installieren:
 
 
* apt install sudo-ldap
 
* apt install sudo-ldap
  
−
 
+
Konfiguration:
−
Packete konfigurieren:
 
 
* visudo -f /etc/sudoers.d/ldap-sudoers
 
* visudo -f /etc/sudoers.d/ldap-sudoers
−
# LDAP sudo group
 
 
  %sudo ALL=(ALL:ALL) ALL
 
  %sudo ALL=(ALL:ALL) ALL
  
 
* vim /etc/sudo-ldap.conf
 
* vim /etc/sudo-ldap.conf
−
  sudoers_base ou=sudo,dc=it21,dc=int
+
  sudoers_base ou=sudo,dc=it213,dc=int
  
 
Testen:
 
Testen:
−
su - thomas
+
* su - thomas
−
sudo -l
+
* sudo -l
−
sudo whoami
+
* sudo whoami

Version vom 1. April 2026, 17:27 Uhr

Installation

passwort nach wahl festlegen
  • apt install slapd ldap-utils
slapd
OpenLDAP Standalone Server
ldap-utils
Utilities zum Zugriff auf den LDAP Server

Grundkonfiguration

Ldap-61.png

Ldap-62.png

Weitere Konfiguration

  • dpkg-reconfigure -p low slapd

Ldap-63.png

Ldap-64.png

Ldap-65.png

Ldap-61.png

Ldap-62.png

Ldap-67.png

Ldap-66.png

Konfiguration des Clients

ldap.conf

  • cat /etc/ldap/ldap.conf
base            dc=it213, dc=int
uri             ldap://server.it213.int
ldap_version    3
rootbinddn      cn=admin, dc=it213, dc=int
pam_password    md5

Passwort für den Adminzugang eintragen

  • echo 123Start$ > /etc/ldap.secret

Kontrolle

Stimmt der base dn

  • ldapsearch -x -LLL
dn: dc=it213,dc=int
objectClass: top
objectClass: dcObject
objectClass: organization
o: it213
dc: it213

Grundstruktur

Erstellen

  • cat /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

Anlegen

  • ldapadd -xD cn=admin,dc=it213,dc=int -w 123Start$ -f struktur.ldif
adding new entry "ou=users,dc=it213,dc=int"
adding new entry "ou=groups,dc=it213,dc=int"
adding new entry "ou=hosts,dc=it213,dc=int"

Ldapscripts

Installation

  • apt install ldapscripts

Konfiguration

Hauptkonfiguration

  • cat /etc/ldapscripts/ldapscripts.conf
SERVER="ldap://ldap.it213.int"
SUFFIX="dc=it213,dc=int"
GSUFFIX="ou=groups"
USUFFIX="ou=users"
MSUFFIX="ou=hosts"
BINDDN="cn=admin,dc=it213,dc=int"
USHELL="/bin/bash"
UHOMES="/home/%u"
CREATEHOMES="yes"
HOMESKEL="/etc/skel"
BINDPWDFILE="/etc/ldapscripts/ldapscripts.passwd"
GIDSTART="10000"
UIDSTART="10000"
MIDSTART="20000"
GCLASS="posixGroup"
PASSWORDGEN="pwgen"
RECORDPASSWORDS="no"
PASSWORDFILE="/var/log/ldapscripts_passwd.log"
LOGTOFILE="yes"
LOGFILE="/var/log/ldapscripts.log"
LOGTOSYSLOG="no"
SYSLOGFACILITY="local4"
SYSLOGLEVEL="info"
LDAPSEARCHBIN="/usr/bin/ldapsearch"
LDAPADDBIN="/usr/bin/ldapadd"
LDAPDELETEBIN="/usr/bin/ldapdelete"
LDAPMODIFYBIN="/usr/bin/ldapmodify"
LDAPMODRDNBIN="/usr/bin/ldapmodrdn"
LDAPPASSWDBIN="/usr/bin/ldappasswd"
LDAPSEARCHOPTS="-o ldif-wrap=no"

Password Datei

  • echo -n "123Start$" > /etc/ldapscripts/ldapscripts.passwd

Managment

Struktur

Gruppen anlegen

  • ldapaddgroup it

Benutzer anlegen

  • ldapadduser thomas it
  • ldapadduser tina it

Passwörter setzen

  • ldapsetpasswd thomas
  • ldapsetpasswd tina

nsswitch und pam anbinden

Installation

  • env DEBIAN_FRONTEND=noninteractive apt install -yqq libnss-ldap libpam-ldap nslcd
Wir konfigurieren von Hand

ldap.conf

  • cat /etc/ldap/ldap.conf
base            dc=it213, dc=int
uri             ldap://server.it213.int
ldap_version    3
rootbinddn      cn=admin, dc=it213, dc=int
pam_password    md5

Passwort für den Adminzugang eintragen

  • echo 123Start$ > /etc/ldap.secret

Wir benutzen nur eine Konfigurationdatei

  • ln -fs /etc/ldap/ldap.conf /etc/libnss-ldap.conf
  • ln -fs /etc/ldap/ldap.conf /etc/pam_ldap.conf

nslcd.conf

  • cat /etc/nslcd.conf
uid nslcd
gid nslcd
uri ldap://ldap.it213.int
base dc=it213,dc=int

Nsswitch anpassen

  • cat /etc/nsswitch.conf
passwd:         files ldap
group:          files ldap
shadow:         files ldap

PAM anpassen

Falls ein Home Verzeichnis gewünscht ist, muss folgende Datei bearbeitet werden:

  • nano /etc/pam.d/common-session
session required pam_mkhomedir.so skel=/etc/skel umask=0022

Reboot

!!!Reboot!!!

Tests

  • getent group it
it:*:10000:
  • getent passwd thomas
thomas:*:10000:10000:thomas:/home/thomas:/bin/bash
  • su - tina
tina@server:~$

Dienstverwaltung

  • systemctl start slapd
  • systemctl stop slapd
  • systemctl restart slapd

Portprüfung

  • netstat -lntp | grep slapd
tcp        0      0 0.0.0.0:389             0.0.0.0:* LISTEN     499/slapd

Sudo

Sudo Gruppe auf dem ldap Server anlegen:

  • ldapaddgroup sudo
  • ldapaddusertogroup thomas sudo
  • ldapaddusertogroup tina sudo

Pakete installieren:

  • apt install sudo-ldap

Konfiguration:

  • visudo -f /etc/sudoers.d/ldap-sudoers
%sudo ALL=(ALL:ALL) ALL
  • vim /etc/sudo-ldap.conf
sudoers_base ou=sudo,dc=it213,dc=int

Testen:

  • su - thomas
  • sudo -l
  • sudo whoami