Openldap-linux-pam-nss: Unterschied zwischen den Versionen

Aus Xinux Wiki
Zur Navigation springen Zur Suche springen
 
(29 dazwischenliegende Versionen von 2 Benutzern werden nicht angezeigt)
Zeile 1: Zeile 1:
=installation=
+
=Installation=
 
;passwort nach wahl festlegen
 
;passwort nach wahl festlegen
*apt install  slapd ldap-utils libldap2-dev
+
*apt install  slapd ldap-utils  
  
 
;slapd: OpenLDAP Standalone Server  
 
;slapd: OpenLDAP Standalone Server  
Zeile 27: Zeile 27:
 
[[Datei:Ldap-66.png]]
 
[[Datei:Ldap-66.png]]
 
=Konfiguration des Clients=
 
=Konfiguration des Clients=
==kontrolle==
+
==ldap.conf==
==stimmt der base dn?==
+
*cat /etc/ldap/ldap.conf
*ldapsearch -x -LLL -H ldap:/// -b dc=linuggs,dc=de dn
+
base            dc=it21, dc=int
  dn: dc=linuggs,dc=de
+
  uri            ldap://server.it21.int
   
+
  ldap_version    3
  dn: cn=admin,dc=linuggs,dc=de
+
  rootbinddn      cn=admin, dc=it21, dc=int
 
+
  pam_password    md5
==Starten des slapd==
+
==Passwort für den Adminzugang eintragen==
  systemctl start slapd
+
*echo 123Start$ > /etc/ldap.secret
 
+
=Kontrolle=
==Stoppen des slapd==
+
==Stimmt der base dn?==
systemctl stop slapd
+
*ldapsearch -x -LLL
 
+
  dn: dc=it21,dc=int
==Neustarten des slapd==
+
objectClass: top
systemctl restart slapd
+
objectClass: dcObject
 
+
  objectClass: organization
==Auf welchem Port lauscht der slapd==  
+
  o: int21
netstat -lntp | grep slapd
+
  dc: it21
tcp        0      0 0.0.0.0:389            0.0.0.0:*               LISTEN    499/slapd
+
=Grundstruktur=
==Welche PID hat der slapd==
+
{{#drawio:it21-ldap}}
pgrep slapd
+
==Erstellen==
499
+
*cat /root/struktur.ldif  
500
 
501
 
 
 
=Abfragen=
 
==anonym==
 
  ldapsearch -x -LLL -H ldap://127.0.0.1 -b  dc=linuggs,dc=de
 
==gebunden interaktiv==
 
  ldapsearch -x -LLL -D "cn=admin, dc=linuggs, dc=de" -W -H ldap://127.0.0.1 -b dc=linuggs,dc=de
 
==gebunden automatisch==
 
ldapsearch -x -LLL -D "cn=admin, dc=linuggs, dc=de" -w sysadm  -H  ldap://127.0.0.1 -b  dc=linuggs,dc=de
 
 
 
=Defaultclientkonfiguration von LDAP=
 
*[[ldap.conf]]
 
 
 
=füllen der datenbank=
 
struktur.ldif  
 
 
<pre>
 
<pre>
dn: ou=users,dc=linuggs,dc=de
+
dn: ou=users,dc=it21,dc=int
 
objectClass: organizationalUnit
 
objectClass: organizationalUnit
 
ou: users
 
ou: users
  
dn: ou=groups,dc=linuggs,dc=de
+
dn: ou=groups,dc=it21,dc=int
 
objectClass: organizationalUnit
 
objectClass: organizationalUnit
 
ou: groups
 
ou: groups
  
dn: ou=hosts,dc=linuggs,dc=de
+
dn: ou=hosts,dc=it21,dc=int
 
objectClass: organizationalUnit
 
objectClass: organizationalUnit
 
ou: hosts
 
ou: hosts
 
</pre>
 
</pre>
  
=struktur hinzufügen=
+
==Anlegen==
ldapadd -xD cn=admin,dc=linuggs,dc=de -w sysadm -f struktur.ldif
+
ldapadd -xD cn=admin,dc=it21,dc=int -w 123Start$ -f struktur.ldif  
=gruppe ldif anlegen=
+
adding new entry "ou=users,dc=it21,dc=int"
*cat group.ldif
+
 
 +
adding new entry "ou=groups,dc=it21,dc=int"
 +
 
 +
adding new entry "ou=hosts,dc=it21,dc=int"
 +
 
 +
=Ldapscripts=
 +
==Installation==
 +
*apt install ldapscripts libnss-ldapd libpam-ldapd nslcd
 +
 
 +
==Konfiguration==
 +
===Hauptkonfiguration===
 +
*cat /etc/ldapscripts/ldapscripts.conf
 
<pre>
 
<pre>
dn: cn=it,ou=groups,dc=linuggs,dc=de
+
SERVER="ldap://ldap.it21.int"
objectClass: posixGroup
+
SUFFIX="dc=it21,dc=int"
cn: it
+
GSUFFIX="ou=groups"
gidNumber:  3001
+
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>
 
</pre>
  
=gruppe hinzufügen=
+
===Password Datei===
ldapadd -xD cn=admin,dc=linuggs,dc=de -w sysadm -f group.ldif
+
*echo -n "123Start$" > /etc/ldapscripts/ldapscripts.passwd
adding new entry "cn=it,ou=groups,dc=linuggs,dc=de"
+
==Managment==
 +
===Struktur===
 +
{{#drawio:it21-2}}
  
=user ldif anlegen=
+
===Gruppen anlegen===
 +
*ldapaddgroup it
 +
===Benutzer anlegen===
 +
*ldapadduser thomas it
 +
*ldapadduser tina it
 +
===Passwörter setzen===
 +
*ldapsetpasswd thomas
 +
*ldapsetpasswd tina
 +
 
 +
=nsswitch und pam anbinden=
 +
*[[Zusammenspiel von PAM und NSS]]
 +
==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=it21, dc=int
 +
uri            ldap://server.it21.int
 +
ldap_version    3
 +
rootbinddn      cn=admin, dc=it21, 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==
 
<pre>
 
<pre>
dn: uid=leroy,ou=users,dc=linuggs,dc=de
+
kit@dhcp:~$ sudo cat /etc/nslcd.conf
cn: leroy
+
# /etc/nslcd.conf
objectClass: account
+
# nslcd configuration file. See nslcd.conf(5)
objectClass: posixAccount
+
# for details.
objectClass: shadowAccount
+
 
uid: leroy
+
# The user and group nslcd should run as.
uidNumber: 2001
+
uid nslcd
gidNumber: 3001
+
gid nslcd
homeDirectory: /home/leroy
+
 
loginShell: /bin/bash
+
# The location at which the LDAP server(s) should be reachable.
 +
uri ldap://ldap.it1XX.int
 +
 
 +
# The search base that will be used for all queries.
 +
base dc=it1XX,dc=int
 
</pre>
 
</pre>
  
=user hinzufügen=
+
==Nsswitch anpassen==
ldapadd -xD cn=admin,dc=linuggs,dc=de -w sysadm -f user.ldif
+
*cat /etc/nsswitch.conf
  adding new entry "uid=leroy,ou=user,dc=linuggs,dc=de"
+
  passwd:        files ldap
=ldapscripts=
+
group:          files ldap
*[[ldapscripts handling]]
+
shadow:        files ldap
  
=Openldap posix accounts=
+
==PAM anpassen==
*[[openldap posix accounts]]
+
*Muss man eigentlich nicht
==ldapsearch==
 
root@maria:~# ldapsearch -x -LLL -b dc=linuggs,dc=de 'uid=thomas' cn gidNumber
 
dn: uid=thomas,ou=People,dc=linuggs,dc=de
 
cn: thomas will
 
gidNumber: 5000
 
  
=apache2 ldap=
+
==Reboot==
*[[apache2 ldap]]
+
!!!Reboot!!!
  
=ssl=
+
=Tests=
==certifikate generieren==
+
*getent group it
 +
it:*:10000:
 +
*getent passwd thomas
 +
thomas:*:10000:10000:thomas:/home/thomas:/bin/bash
 +
*getent passwd tina
 +
tina:*:10001:10000:tina:/home/tina:/bin/bash
 +
*su - tina
 +
tina@server:~$
  
==ssl.ldif erstellen==
+
==Starten des slapd==
<pre>
+
systemctl start slapd
dn: cn=config
+
 
 +
==Stoppen des slapd==
 +
systemctl stop slapd
  
add: olcTLSCACertificateFile
+
==Neustarten des slapd==
olcTLSCACertificateFile: /etc/ldap/ssl/xin-ca.crt
+
systemctl restart slapd
-
 
add: olcTLSCertificateFile
 
olcTLSCertificateFile: /etc/ldap/ssl/xin-ca-maria.xinux.org.crt
 
-
 
add: olcTLSCertificateKeyFile
 
olcTLSCertificateKeyFile: /etc/ldap/ssl/xin-ca-maria.xinux.org.key
 
</pre>
 
  
==konfig hinzufügen==
+
==Auf welchem Port lauscht der slapd==  
<pre>
+
netstat -lntp | grep slapd
ldapmodify -Y EXTERNAL -H ldapi:/// -f ssl.ldif
+
  tcp        0      0 0.0.0.0:389             0.0.0.0:*              LISTEN     499/slapd
SASL/EXTERNAL authentication started
 
SASL username: gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth
 
SASL SSF: 0
 
modifying entry "cn=config
 
</pre>
 
==ldaps freischalten==
 
*/etc/default/slapd
 
SLAPD_SERVICES="ldap:/// ldaps:/// ldapi:///"
 
==slapd restart==
 
systemctl restart slapd
 
==slapd ssl check==
 
*netstat -lntp | grep 636
 
  tcp        0      0 0.0.0.0:636             0.0.0.0:*              LISTEN     2204/slapd     
 
tcp6      0      0 :::636                  :::*                    LISTEN      2204/slapd
 
  
=Links=
+
==Sudo==
*https://help.ubuntu.com/lts/serverguide/openldap-server.html
 
*https://help.ubuntu.com/community/OpenLDAPServer
 
*http://www.plone-entwicklerhandbuch.de/plone-entwicklerhandbuch/authentifizierung/ldap
 
*http://www.zytrax.com/books/ldap/
 
*https://wiki.debian.org/LDAP/OpenLDAPSetup
 
*https://darkstar.gernox.de/2012/10/28/openldap/
 
*http://www.openldap.org/doc/admin24/
 
*https://wiki.debian.org/LDAP/OpenLDAPSetup
 
*http://askubuntu.com/questions/481917/apache2-4-7-ldap-url-authentication-on-ubuntu-14-04
 
  
=Servertools=
+
Sudo Gruppe auf dem ldap Server anlegen:
==slapdadd==
+
ldapaddgroup sudo
User zur SLAPD Datenbank hinzufügen
 
  
  slapadd -b dc=linuggs,dc=de -l muster.ldif
+
  ldapaddusertogroup thomas sudo
 +
ldapaddusertogroup tina sudo
  
*-b: Baseroot
+
Packete installieren:
*-l: Informationen werden aus der angegebenen Datei gelsen. Nicht vom Standard-Input
+
* apt install sudo-ldap
  
slapadd -b dc=linuggs,dc=de -f slapd.conf
 
  
*-f: eine alternative slapd.conf benutzen
+
Packete konfigurieren:
 +
* visudo -f /etc/sudoers.d/ldap-sudoers
 +
# LDAP sudo group
 +
%sudo ALL=(ALL:ALL) ALL
  
==slapcat==
+
* vim /etc/sudo-ldap.conf
Der Befehl slapcat ermöglicht die Speicherung der aktuellen LDAP-Daten in einer Textdatei im LDIF-Format
+
sudoers_base ou=sudo,dc=it21,dc=int
  
  slapcat > ldapdaten.txt
+
Testen:
 +
  su - thomas
 +
sudo -l
 +
sudo whoami

Aktuelle Version vom 30. Juli 2025, 05:48 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=it21, dc=int
uri             ldap://server.it21.int
ldap_version    3
rootbinddn      cn=admin, dc=it21, 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=it21,dc=int
objectClass: top
objectClass: dcObject
objectClass: organization
o: int21
dc: it21

Grundstruktur

Erstellen

  • cat /root/struktur.ldif
dn: ou=users,dc=it21,dc=int
objectClass: organizationalUnit
ou: users

dn: ou=groups,dc=it21,dc=int
objectClass: organizationalUnit
ou: groups

dn: ou=hosts,dc=it21,dc=int
objectClass: organizationalUnit
ou: hosts

Anlegen

ldapadd -xD cn=admin,dc=it21,dc=int -w 123Start$ -f struktur.ldif

adding new entry "ou=users,dc=it21,dc=int"
adding new entry "ou=groups,dc=it21,dc=int"
adding new entry "ou=hosts,dc=it21,dc=int"

Ldapscripts

Installation

  • apt install ldapscripts libnss-ldapd libpam-ldapd nslcd

Konfiguration

Hauptkonfiguration

  • cat /etc/ldapscripts/ldapscripts.conf
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=""

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=it21, dc=int
uri             ldap://server.it21.int
ldap_version    3
rootbinddn      cn=admin, dc=it21, 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

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.
uid nslcd
gid nslcd

# The location at which the LDAP server(s) should be reachable.
uri ldap://ldap.it1XX.int

# The search base that will be used for all queries.
base dc=it1XX,dc=int

Nsswitch anpassen

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

PAM anpassen

  • Muss man eigentlich nicht

Reboot

!!!Reboot!!!

Tests

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

Starten des slapd

systemctl start slapd

Stoppen des 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

Sudo Gruppe auf dem ldap Server anlegen:

ldapaddgroup sudo
ldapaddusertogroup thomas sudo
ldapaddusertogroup tina sudo

Packete installieren:

  • apt install sudo-ldap


Packete konfigurieren:

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

Testen:

su - thomas
sudo -l
sudo whoami