Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen angezeigt.

Link zu dieser Vergleichsansicht

Beide Seiten der vorigen Revision Vorhergehende Überarbeitung
Nächste Überarbeitung
Vorhergehende Überarbeitung
centos:ldap_c7:clientauth [21.07.2015 13:17. ] – [nslcd.conf] djangocentos:ldap_c7:clientauth [22.07.2019 15:03. ] (aktuell) – Externe Bearbeitung 127.0.0.1
Zeile 1: Zeile 1:
-====== Authentification auf Userebene und Webseiten unter CentOS 7.x ======+====== Authentification auf Userebene und Webseiten gegen OpenLDAP unter CentOS 7.x ======
 {{:centos:ldap-logo.png?nolink&167 |OpenLDAP Logo}} {{:centos:ldap-logo.png?nolink&167 |OpenLDAP Logo}}
 Natürlich wollen wir bei der Authentifikation unserer Cleints auf unseren zentralen OpenLDAP-Verzeichnisdienst zurückgreifen. Nachfolgend werden wir auf einige Beispiele eingehen. Natürlich wollen wir bei der Authentifikation unserer Cleints auf unseren zentralen OpenLDAP-Verzeichnisdienst zurückgreifen. Nachfolgend werden wir auf einige Beispiele eingehen.
Zeile 754: Zeile 754:
 #idle_timelimit 3600                                       #idle_timelimit 3600                                      
  
 +# Use StartTLS with verifying the server certificate.
 # Django : 2015-07-20 # Django : 2015-07-20
-#          TLS Zertifikatsprüfungsmöglichkeit aktivieren +ssl start_tls
-ssl start_tls +
 tls_cacertfile /etc/pki/ca-trust/extracted/pem/tls-ca-bundle.pem tls_cacertfile /etc/pki/ca-trust/extracted/pem/tls-ca-bundle.pem
-tls_cacertdir /etc/openldap/cacerts 
  
 # Use StartTLS without verifying the server certificate. # Use StartTLS without verifying the server certificate.
Zeile 845: Zeile 844:
 </file> </file>
  
-   systemctl start nslcd.service+Anschließend passen wir noch die Dateiberechtigungen an, so wie es bei der Option **bindpw** angeraten wurde. 
 +   chown nslcd:ldap /etc/nslcd.conf
  
-   # systemctl status nslcd.service -l+=== nsswitch.conf === 
 +In der Konfigurationsdatei //**/etc/nsswitch.conf**// ergänzen wir nun __//**händisch**//__ die Optionen **ldap**. Änderungen wurden in dem Beispiel wie iimmer entsprechend gekennzeichnet: 
 +  * **passwd:     files ldap sss** 
 +  * **shadow:     files ldap sss** 
 +  * **group:      files ldap sss**
  
 +  * **netgroup:   files ldap sss**
 +
 +  * **automount:  files ldap sss**
 +
 +
 +   # vim /etc/nsswitch.conf
 +
 +<file bash /etc/nsswitch.conf>#
 +# /etc/nsswitch.conf
 +#
 +# An example Name Service Switch config file. This file should be
 +# sorted with the most-used services at the beginning.
 +#
 +# The entry '[NOTFOUND=return]' means that the search for an
 +# entry should stop if the search in the previous entry turned
 +# up nothing. Note that if the search failed due to some other reason
 +# (like no NIS server responding) then the search continues with the
 +# next entry.
 +#
 +# Valid entries include:
 +#
 +#       nisplus                 Use NIS+ (NIS version 3)
 +#       nis                     Use NIS (NIS version 2), also called YP
 +#       dns                     Use DNS (Domain Name Service)
 +#       files                   Use the local files
 +#       db                      Use the local database (.db) files
 +#       compat                  Use NIS on compat mode
 +#       hesiod                  Use Hesiod for user lookups
 +#       [NOTFOUND=return]       Stop searching if not found so far
 +#
 +
 +# To use db, put the "db" in front of "files" for entries you want to be
 +# looked up first in the databases
 +#
 +# Example:
 +#passwd:    db files nisplus nis
 +#shadow:    db files nisplus nis
 +#group:     db files nisplus nis
 +
 +# Django : 2015-07-21 LDAP Client Authentication
 +# default: passwd:     files sss
 +#          shadow:     files sss
 +#          group:      files sss
 +passwd:     files ldap sss
 +shadow:     files ldap sss
 +group:      files ldap sss
 +#initgroups: files
 +
 +#hosts:     db files nisplus nis dns
 +hosts:      files dns
 +
 +# Example - obey only what nisplus tells us...
 +#services:   nisplus [NOTFOUND=return] files
 +#networks:   nisplus [NOTFOUND=return] files
 +#protocols:  nisplus [NOTFOUND=return] files
 +#rpc:        nisplus [NOTFOUND=return] files
 +#ethers:     nisplus [NOTFOUND=return] files
 +#netmasks:   nisplus [NOTFOUND=return] files
 +
 +bootparams: nisplus [NOTFOUND=return] files
 +
 +ethers:     files
 +netmasks:   files
 +networks:   files
 +protocols:  files
 +rpc:        files
 +services:   files sss
 +
 +# Django : 2015-07-21 LDAP Client Authentication
 +# default: netgroup:   files sss
 +netgroup:   files ldap sss
 +
 +publickey:  nisplus
 +
 +# Django : 2015-07-21 LDAP Client Authentication
 +# default: automount:  files sss
 +automount:  files ldap sss
 +aliases:    files nisplus
 +</file>
 +
 +=== password-auth-ac ===
 +Damit sich unsere Nutzer auch anmelden können, ist es notwendig in der Konfigurationsdatei //**/etc/pam.d/password-auth-ac**// die option **pam_sss.so** durch ein **pam_ldap.so** zu ersetzen.
 +   # vim /etc/pam.d/password-auth-ac
 +
 +<file bash /etc/pam.d/password-auth-ac>#%PAM-1.0
 +# This file is auto-generated.
 +# User changes will be destroyed the next time authconfig is run.
 +auth        required      pam_env.so
 +auth        sufficient    pam_unix.so nullok try_first_pass
 +auth        requisite     pam_succeed_if.so uid >= 1000 quiet_success
 +# Django : 2015-07-21
 +# default: auth        sufficient    pam_sss.so use_first_pass
 +auth        sufficient    pam_ldap.so use_first_pass
 +auth        required      pam_deny.so
 +
 +account     required      pam_unix.so broken_shadow
 +account     sufficient    pam_localuser.so
 +account     sufficient    pam_succeed_if.so uid < 1000 quiet
 +# Django : 2015-07-21
 +# default: account     [default=bad success=ok user_unknown=ignore] pam_sss.so
 +account     [default=bad success=ok user_unknown=ignore] pam_ldap.so
 +account     required      pam_permit.so
 +
 +password    requisite     pam_pwquality.so try_first_pass local_users_only retry=3 authtok_type=
 +password    sufficient    pam_unix.so sha256 nullok try_first_pass use_authtok
 +# Django : 2015-07-21
 +# default: password    sufficient    pam_sss.so use_authtok
 +password    sufficient    pam_ldap.so use_authtok
 +password    required      pam_deny.so
 +
 +session     optional      pam_keyinit.so revoke
 +session     required      pam_limits.so
 +-session     optional      pam_systemd.so
 +session     optional      pam_oddjob_mkhomedir.so umask=0077
 +session     [success=1 default=ignore] pam_succeed_if.so service in crond quiet use_uid
 +session     required      pam_unix.so
 +# Django : 2015-07-21
 +# default: session     optional      pam_sss.so
 +session     optional      pam_ldap.so</file>
 +
 +==== Start des Naming services LDAP client daemon ====
 +Nun ist es an der Zeit, den **NSLCD**((**N**aming **S**ervices **L**DAP **C**lient **D**aemon)) zu starten.
 +   # systemctl restart nslcd.service
 +
 +Den erfolgreichen Start des Daemon fragen wir wie folgt ab.
 +   # systemctl status nslcd.service -l
  
 <html><pre class="code"> <html><pre class="code">
Zeile 866: Zeile 996:
 </pre></html> </pre></html>
  
 +Damit der Daemin automatisch gestartet wird, wenn der Clientrechner hochfährt, aktivieren wir den NSLCD entsprechend.
   # systemctl enable nslcd.service   # systemctl enable nslcd.service
  
   ln -s '/usr/lib/systemd/system/nslcd.service' '/etc/systemd/system/multi-user.target.wants/nslcd.service'   ln -s '/usr/lib/systemd/system/nslcd.service' '/etc/systemd/system/multi-user.target.wants/nslcd.service'
  
 +Wollen wir abfragen, ob der Daemon automatisch beim Systemstart gestartet wird benutzen wir nachfolgenden Befehl/Aufruf.
   # systemctl is-enabled nslcd.service   # systemctl is-enabled nslcd.service
  
   enabled   enabled
  
-  # systemctl is-enabled nslcd.service+Ein **enabled** signalisiert, dass der Daemon einen Autostart macht, ein **disabled** steht dafür, dass der Daemon __nicht__automatisch beim Starten des Rechners hochfährt.
  
-  disabled+===== Tests ===== 
 +==== LDAP Abfrage ====
  
-==== Test ====+Zur Abfrage eines LDAP-Users können wir folgenden Aufruf verwenden: 
   $ ldapsearch -x -LLL -H ldaps://openldap.dmz.nausch.org -b "dc=nausch,dc=org" "uid=django" -W -D "cn=Technischeruser,dc=nausch,dc=org"   $ ldapsearch -x -LLL -H ldaps://openldap.dmz.nausch.org -b "dc=nausch,dc=org" "uid=django" -W -D "cn=Technischeruser,dc=nausch,dc=org"
   Enter LDAP Password:    Enter LDAP Password: 
Zeile 899: Zeile 1032:
 userPassword:: RGQ0bWRkMyE=</code> userPassword:: RGQ0bWRkMyE=</code>
  
- +Das nächste Beispiel zeigt eine LDAP-Abfrage mit dem User django aber mit __falschem__ Passwort
- +
- +
- +
- +
- +
-/* +
- Configure LDAP Client in order to share users' accounts in your local networks. +
-[1] Install OpenLDAP Client. +
-[root@www ~]# yum -y install openldap-clients nss-pam-ldapd +
-# ldapserver=(LDAP server's hostname or IP address) +
- +
-# ldapbasedn="dc=(your own domain name)" +
- +
-[root@www ~]# authconfig --enableldap \ +
---enableldapauth \ +
---ldapserver=dlp.server.world \ +
---ldapbasedn="dc=server,dc=world"+
---enablemkhomedir \ +
---update +
- +
-getsebool: SELinux is disabled +
-[root@www ~]# exit +
- +
-logout +
-CentOS Linux 7 (Core) +
-Kernel 3.10.0-123.20.1.el7.x86_64 on an x86_64 +
-www login: redhat +
-# LDAP user +
- +
-Password: +
-# password +
- +
-Creating directory '/home/redhat'+
-[redhat@www ~]$ +
-# logined normally +
-[redhat@www ~]$ passwd +
-# try to change the LDAP password +
- +
-Changing password for user redhat. +
-Enter login(LDAP) password: +
-# current password +
- +
-New password: +
-# new password +
- +
-Retype new password: +
-LDAP password information changed for redhat +
-passwdall authentication tokens updated successfully. +
- +
-*/ +
    $ ldapsearch -x -LLL -H ldaps://openldap.dmz.nausch.org -b "dc=nausch,dc=org" "uid=inge" -W -D "uid=inge,ou=People,dc=nausch,dc=org"    $ ldapsearch -x -LLL -H ldaps://openldap.dmz.nausch.org -b "dc=nausch,dc=org" "uid=inge" -W -D "uid=inge,ou=People,dc=nausch,dc=org"
  
Zeile 957: Zeile 1039:
   ldap_bind: Invalid credentials (49)   ldap_bind: Invalid credentials (49)
  
 +Hingegen eine Abfrage mit einer richtigen Kombination von Benutzer und Passwort, sieht entsprechend wie folgt aus:
    $ ldapsearch -x -LLL -H ldaps://openldap.dmz.nausch.org -b "dc=nausch,dc=org" "uid=inge" -W -D "uid=inge,ou=People,dc=nausch,dc=org"    $ ldapsearch -x -LLL -H ldaps://openldap.dmz.nausch.org -b "dc=nausch,dc=org" "uid=inge" -W -D "uid=inge,ou=People,dc=nausch,dc=org"
  
Zeile 972: Zeile 1054:
 homeDirectory: /home/inge homeDirectory: /home/inge
 gecos: inge gecos: inge
-userPassword:: e0NSWVBasdfaUfM3101d3XJ19UR21TUjhpMWc=+userPassword:: e0NSWVBasdfaUJ1fM3101d3XJ1J19UR21TUjhpMWc=</code>
  
 +==== Client-Abfragen ====
 +Die erfolgreiche Konfiguration unseres Rechners überprüfen wir so:
 +  - Mit **getent** lassen wir uns die Informationen eines Users anzeigen, der sowohl in der /etc/shadow wie auch im zentralen LDAP-Verzeichnisdienst hinterlegt ist. Wenn alles gut gelaufen ist, werden uns zwei Einträge präsentiert. \\ \\ <code>$ getent passwd | grep django</code><code>django:$6$RG6zR$2RbzR$wDvit.DnWHSYGEFCrn0LXyEleQkOuJQ5mQLiVRHNEnm5svSCrn0LXyEleQkOuflVHvMkKnAEdQCCVU9Gc9nPe1:1000:1000:Django [BOfH]:/home/django:/bin/bash
 +django:x:1000:1000:django:/home/django:/bin/bash</code>
 +  - Als nächstes wählen wir einen Nutzer der nur im LDAP-Verzeichnisdienst einen Account hat, nicht aber auf der lokalen Maschine. \\ \\ <code>$ getent passwd | grep michael</code><code>michael:*:1001:1001:michael:/home/michael:/bin/bash</code>
 +  - Dann melden wir uns nun an unserem Client als ein Benutzer an, der lokal auf der Maschine nicht existiert, werden wir beim Login nach dem Passwort gefragt, welches gegen den zentralen OpenLDAP-Server verifiziert wird. Ist das Passwort richtig wird auch gleich das zugehörige Nutzer-Homeverzeichnis angelegt. \\ \\ <code>[django@vml010008 ~]$ ssh -l ruben 10.0.10.52</code><code>Password:</code><code>Creating home directory for ruben.</code>
  
 +{{ :centos:ldap:client_ldap_auth.png?500 |Bildschirmhardcopy bei der Anmeldung am Client (mit LDAP auth)}}
  
 ===== remote Benutzer bei Web-Servern ===== ===== remote Benutzer bei Web-Servern =====
-==== Apache Webserver ====+Nachdem sich unsere Nutzer an ihren Arbeitsplatzrechner erfolgreich anmelden können, wollen sie mit unter auch von unterwegs aus auf Ihre eMail oder andere WEB-Dienste zugreifen. Auch dort sollen sich unsere User mit deren Anmeldedaten anmelden können. 
  
 +Im folgenden gehen wir auf Konfigurationslösungen bei den beiden Webservern **[[http://apache.org|Apache]]** und **[[http://nginx.org|NGiNX]]** im Detail eingehen.
 +
 +==== Apache Webserver ====
 +{{page>centos:ldaps-auth-httpd&nofooter&noheader}}
  
 ==== NGiNX Webserver ==== ==== NGiNX Webserver ====
- +{{page>centos:ldaps-auth-nginx&nofooter&noheader}}
-FIXME +
  
  
Zeile 1039: Zeile 1130:
  
  */  */
 +
 +====== Links ======
 +  * **⇐ [[centos:ldap_c7:tecbind|Zurück zum Kapitel "Authentification mit technischem User beim OpenLDAP Servers unter CentOS 7.x"]]**
 +  * **[[centos:ldap_c7:start|Zurück zum Kapitel >>OpenLDAP Server unter CentOS 7.x<<]]**
 +  * **[[wiki:start|Zurück zu >>Projekte und Themenkapitel<<]]**
 +  * **[[http://dokuwiki.nausch.org/doku.php/|Zurück zur Startseite]]**
 +
 +
  • centos/ldap_c7/clientauth.1437484642.txt.gz
  • Zuletzt geändert: 21.07.2015 13:17.
  • von django