Pam-ldap-debian: Unterschied zwischen den Versionen

Aus Xinux Wiki
Zur Navigation springen Zur Suche springen
(Die Seite wurde neu angelegt: „Benutzerauthentifizierung mit LDAP und PAM auf Debian apt-get install slapd libldap2-dev db4.2-util slapd: OpenLDAP Standalone Server libldap2-dev: ent…“)
 
Zeile 1: Zeile 1:
Benutzerauthentifizierung mit LDAP und PAM  auf Debian  
+
=Benutzerauthentifizierung mit LDAP und PAM  auf Debian=
 
+
==Installation Server==
apt-get install slapd libldap2-dev  db4.2-util  
+
apt-get install slapd libldap2-dev  db4.2-util  
 
+
*slapd: OpenLDAP Standalone Server
 
+
*libldap2-dev: enthält Bibliotheken und Header   
slapd: OpenLDAP Standalone Server
+
*db4.2-util: Tools zum managen der Berkley Datenbank  
 
+
==Installation Clients==
libldap2-dev: enthält Bibliotheken und
+
apt-get install ldap-utils libpam-ldap libnss-ldap
Header   
+
*ldap-utils: Utilities zum Zugriff auf den LDAP Server
 
+
*libpam-ldap: Modules, die LDAP die Möglichkeit geben User mit Programmen die PAM benutzen zu authentifizieren
db4.2-util: Tools zum managen der Berkley Datenbank  
+
*libnss-ldap: Hiermit kann man den Name Service Switch zu konfiguriern das er einenLDAP Server nutzen kann
 
 
 
 
apt-get install ldap-utils libpam-ldap libnss-ldap
 
 
 
ldap-utils: Utilities zum Zugriff auf den LDAP Server
 
 
 
libpam-ldap: Modules, die LDAP die Möglichkeit geben User mit Programmen die PAM
 
benutzen zu authentifizieren
 
 
 
libnss-ldap: Hiermit kann man den Name Service Switch zu konfiguriern das er einen
 
LDAP Server nutzen kann
 
  
  

Version vom 4. Dezember 2014, 09:17 Uhr

Benutzerauthentifizierung mit LDAP und PAM auf Debian

Installation Server

apt-get install slapd libldap2-dev  db4.2-util 
  • slapd: OpenLDAP Standalone Server
  • libldap2-dev: enthält Bibliotheken und Header
  • db4.2-util: Tools zum managen der Berkley Datenbank

Installation Clients

apt-get install ldap-utils libpam-ldap libnss-ldap
  • ldap-utils: Utilities zum Zugriff auf den LDAP Server
  • libpam-ldap: Modules, die LDAP die Möglichkeit geben User mit Programmen die PAM benutzen zu authentifizieren
  • libnss-ldap: Hiermit kann man den Name Service Switch zu konfiguriern das er einenLDAP Server nutzen kann


Die Konfigurationdatei des LDAP Servers genannt SLAPD

gawron:/etc/ldap# cat slapd.conf allow bind_v2 include /etc/ldap/schema/core.schema include /etc/ldap/schema/cosine.schema include /etc/ldap/schema/nis.schema include /etc/ldap/schema/inetorgperson.schema include /etc/ldap/schema/misc.schema schemacheck on modulepath /usr/lib/ldap moduleload back_bdb pidfile /var/run/slapd.pid argsfile /var/run/slapd.args loglevel 0 database bdb suffix "dc=cronos,dc=int" directory /var/lib/ldap index objectClass eq rootdn "cn=admin,dc=cronos,dc=int" rootpw "sysadm"

Starten des slapd

gawron:/etc/ldap# /etc/init.d/slapd start Stopping OpenLDAP: slapd.


Stoppen des slapd

gawron:/etc/ldap# /etc/init.d/slapd stop Starting OpenLDAP: slapd. Starten des slapd

Neustarten des slapd

gawron:/etc/ldap# /etc/init.d/slapd restart Stopping OpenLDAP: slapd. Starting OpenLDAP: slapd.Starten des slapd

Auf welchem Port lauscht der slapd

gawron:/etc/ldap# netstat -lntp | grep slapd tcp 0 0 0.0.0.0:389 0.0.0.0:* LISTEN 499/slapd


Welche PID hat der slapd

gawron:/etc/ldap# pgrep slapd 499 500 501

Clientkonfiguration von LDAP

gawron:/etc/ldap# cat ldap.conf base dc=cronos, dc=int uri ldap://127.0.0.1 ldap_version 3 rootbinddn cn=admin, dc=cronos, dc=int pam_password md5


Passwort für den Adminzugang eintragen gawron:/etc# echo sysadm > /etc/ldap.secret


Wir benutzen nur eine Konfigurationdatei

gawron:/etc# ln -sf /etc/ldap/ldap.conf /etc/pam_ldap.conf gawron:/etc# ln -sf /etc/ldap/ldap.conf /etc/libnss-ldap.conf


Testen ob Client mit dem Server kommunizieren kann.

gawron:/etc# ldapsearch -x

  1. extended LDIF
  2. LDAPv3
  3. base <> with scope sub
  4. filter: (objectclass=*)
  5. requesting: ALL
  1. search result

search: 2 result: 32 No such object

  1. numResponses: 1

Erstellen der Struktur im LDIF Format

gawron:~# cat struktur.ldif

  1. cronos.int

dn: dc=cronos,dc=int objectClass: dcObject objectClass: organization o: cronos dc: cronos

  1. mitarbeiter, cronos.int

dn: ou=mitarbeiter,dc=cronos,dc=int objectClass: organizationalUnit ou: mitarbeiter

  1. gruppen, cronos.int

dn: ou=gruppen,dc=cronos,dc=int objectClass: organizationalUnit ou: gruppen

  1. rechner, cronos.int

dn: ou=rechner,dc=cronos,dc=int objectClass: organizationalUnit ou: rechner

Erstellen des Adminaccount im LDIF Format

gawron:~# cat admin.ldif dn: cn=admin,dc=cronos,dc=int objectClass: top objectClass: inetOrgPerson objectClass: posixAccount objectClass: shadowAccount cn: admin sn: chef uid: admin uidNumber: 0 gidNumber: 0 homeDirectory: /export/home/admin loginShell: /bin/bash gecos: admin user description: admin user



Datenbank füllen

gawron:~# ldapadd -xD cn=admin,dc=cronos,dc=int -w sysadm -f struktur.ldif adding new entry "dc=cronos,dc=int" adding new entry "ou=mitarbeiter,dc=cronos,dc=int" adding new entry "ou=gruppen,dc=cronos,dc=int" adding new entry "ou=rechner,dc=cronos,dc=int"

gawron:~# ldapadd -xD cn=admin,dc=cronos,dc=int -w sysadm -f admin.ldif adding new entry "cn=admin,dc=cronos,dc=int"

Erläuterung zu ldapadd

-x Saslauth. abschalten -D DN der gebunden wird -w Passwort des gebundenen DN -f LDIF Datei

Gruppe Ldif erstellen gawron:~# cat gruppe.ldif dn: cn=benutzer,ou=gruppen,dc=cronos,dc=int objectClass: posixGroup objectClass: top cn: benutzer gidNumber: 3001

User Ldif erstellen gawron:~# cat user.ldif dn: uid=leroy,ou=mitarbeiter,dc=cronos,dc=int cn: leroy objectClass: account objectClass: posixAccount objectClass: shadowAccount objectClass: top uid: leroy uidNumber: 2001 gidNumber: 3001 homeDirectory: /home/leroy loginShell: /bin/bash

User und Gruppe in LDAP einfügen

root@gawron:~ # ldapadd -xD cn=admin,dc=cronos,dc=int -w sysadm -f gruppe.ldif adding new entry "cn=benutzer,ou=gruppen,dc=cronos,dc=int"

root@gawron:~ # ldapadd -xD cn=admin,dc=cronos,dc=int -w sysadm -f user.ldif adding new entry "uid=leroy,ou=mitarbeiter,dc=cronos,dc=int"


/etc/nsswitch.conf anpassen

root@ubuntu:~ # cat /etc/nsswitch.conf

passwd: files ldap group: files ldap shadow: files ldap

hosts: files dns networks: files

protocols: db files services: db files ethers: db files rpc: db files

netgroup: nis


Testen ob die nsswitch Namensauflöung funktioniert

gawron:~# getent passwd leroy leroy:x:2001:3001:leroy:/home/leroy:/bin/bash


Anpassen der Pam


Die Authentifizierung gawron:/etc/pam.d# cat common-auth auth sufficient pam_ldap.so auth required pam_unix.so nullok_secure use_first_pass

Das Accounting gawron:/etc/pam.d# cat common-account account sufficient pam_ldap.so account required pam_unix.so

Passwort änderungen gawron:/etc/pam.d# cat common-password password sufficient pam_ldap.so password sufficient pam_unix.so password required pam_deny.so

Die Session gawron:/etc/pam.d# cat common-session session required pam_mkhomedir.so skel=/etc/skel umask=0022 session required pam_unix.so

Passwort für den User setzen gawron:/etc/pam.d# passwd leroy New password: Re-enter new password: LDAP password information changed for leroy passwd: password updated successfully


Testen des Accounts gawron:/etc/pam.d# su - nobody

nobody@gawron:~$ su – leroy

Password: leroy@gawron:~$



Apache an LDAP


  <Directory /var/www/>
               Options Indexes FollowSymLinks MultiViews
               AllowOverride None
               Order allow,deny
               allow from all
               SetHandler ldap-status
               Authtype Basic
               AuthName LDAP-AUTHENTIFIKATION
               AuthLDAPEnabled on
               AuthLDAPURL ldap://127.0.0.1/dc=cronos,dc=int?uid?sub
               AuthLDAPAuthoritative on
               require valid-user
               RedirectMatch ^/$ /apache2-default/
       </Directory>


RECHNER Ldif erstellen

gawron:~# cat rechner.ldif dn: cn=pc1,ou=rechner,dc=cronos,dc=int objectClass: device objectClass: top objectClass: ipHost cn: pc1 ipHostNumber: 172.20.103.1


Rechner Liste eintragen

gawron:~# cat ./rechner.sh
  1. !/bin/bash

for ((n=1;n<10;n++)) do cat <<MARKE dn: cn=pc$n,ou=rechner,dc=cronos,dc=int objectClass: device objectClass: top objectClass: ipHost cn: pc$n ipHostNumber: 172.20.103.$n MARKE done


./rechner.sh > rechner.ldif Service Container erstellen

gawron:~# cat service-container.ldif

  1. mitarbeiter, cronos.int

dn: ou=service,dc=cronos,dc=int objectClass: organizationalUnit ou: service


gawron:~# ldapadd -xD cn=admin,dc=cronos,dc=int -w sysadm -f service.-container.ldif

Service Einträge erstellen

gawron:~# cat service.ldif dn: cn=xinux,ou=service,dc=cronos,dc=int objectClass: top objectClass: ipService ipServicePort: 4711 ipServiceProtocol: tcp cn:xinux

gawron:~# ldapadd -xD cn=admin,dc=cronos,dc=int -w sysadm -f service.ldif


gawron:~# getent services ssh ssh 22/tcp

gawron:~# getent services xinux

gawron:~# cat /etc/nsswitch.conf passwd: files ldap group: files ldap shadow: files ldap hosts: files dns ldap networks: files protocols: db files services: db files ldap ethers: db files rpc: db files netgroup: nis

gawron:~# getent services xinux xinux 4711/tcp