Pam-ldap-debian: Unterschied zwischen den Versionen
Thomas (Diskussion | Beiträge) (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…“) |
(kein Unterschied)
|
Version vom 4. Dezember 2014, 09:15 Uhr
Benutzerauthentifizierung mit LDAP und PAM auf Debian
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
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
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
- extended LDIF
- LDAPv3
- base <> with scope sub
- filter: (objectclass=*)
- requesting: ALL
- search result
search: 2 result: 32 No such object
- numResponses: 1
Erstellen der Struktur im LDIF Format
gawron:~# cat struktur.ldif
- cronos.int
dn: dc=cronos,dc=int objectClass: dcObject objectClass: organization o: cronos dc: cronos
- mitarbeiter, cronos.int
dn: ou=mitarbeiter,dc=cronos,dc=int objectClass: organizationalUnit ou: mitarbeiter
- gruppen, cronos.int
dn: ou=gruppen,dc=cronos,dc=int objectClass: organizationalUnit ou: gruppen
- 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
- !/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
- 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