PAM auf den Clients
Ausgangslage:
Client |
Haruka |
Xubuntu 10.04 auf Virtual Box |
Server |
Itoko |
FreeBSD 8.2 auf SPARC |
Hier nun die Schritte um von einem Ubuntu 10.x System aus die Authentifizierung durchzuführen:
Annahme: Wir haben eine funktionierenden getesteten LDAP-Server mit folgendem Parameter
Name |
Wert |
Servername |
Itoko |
IP |
10.128.1.18 |
Base |
dc=calmar,dc=net |
Authentifizierungsverfahren |
DIGEST-MD5 |
User |
schoener |
UID |
10003 |
Group |
user |
UID |
10000 |
Wir testen das Ganze mit dem Kommando:
ijin@misato:~$ ldapsearch -h itoko -Y DIGEST-MD5 -b dc=calmar,dc=net -U schoener -LLL
Zum Verständnis:
Das obige Kommando simuliert genau das was die PAM-Module nachfolgend treiben werden. Auch wir werden uns nach der Installation der PAM Module als user schoener am System anmelden. Der Unterschied wird dann nur sein, das uns der LDAP-Server lediglich die Informationen liefert, die er zur korrekten Anmeldung am System braucht (Name,uid, Homeverzeichnis etc).
Obiges Kommando liefert allerdings als Ausgabe den kompletten Inhalt des LDAP-Verzeichnisses. Wenn man es mit der Simulation ernst nimmt müsste man folgendes Kommando absetzten.
ijin@misato:~$ ldapsearch -h itoko -Y DIGEST-MD5 -b uid=schoener,ou=people,dc=calmar,dc=net -U schoener -LLL
Zum Verständnis: Der Parameter -b bezieht sich auf den zu durchsuchenden Teil der Verzeichnisdienstes
Parameter |
Funktion |
-b dc=calmar,dc=net |
zeige den Inhalt von dc=calmar,dc=net (quasi alles) |
-b uid=schoener,ou=people,dc=calmar,dc=net |
zeige mir den User Schoener der Teil der Einheit (ou) People ist |
Hier das Ergebnis einer funktionierenden Abfrage:
ijin@misato:~$ ldapsearch -h itoko -Y DIGEST-MD5 -b uid=schoener,ou=people,dc=calmar,dc=net -U schoener -LLL SASL/DIGEST-MD5 authentication started Please enter your password: SASL username: schoener SASL SSF: 128 SASL data security layer installed. dn: uid=schoener,ou=people,dc=calmar,dc=net objectClass: account objectClass: posixAccount cn: schoener uid: schoener uidNumber: 10003 gidNumber: 10000 homeDirectory: /home/schoener loginShell: /bin/bash gecos: schoener description: User account userPassword:: ...............(ist doch geheim ;)
Noch eine Anmerkung zur Organisation der User Daten in diesem Beispiel. Hier sind die User Teil der Organisation (o) People. Alternativ könnten sie auch Teil der Einheit (ou) user sein. Ich verwende zum Einrichten der Strukturen den lam. Und dieser wiederum verwendet ou=people.
So jetzt werden die Module installiert die es dem Client erlauben sollen, seine Benutzerinformationen vom LDAP Server zu beziehen. Die Pakete sind getestet für Ubuntu 10.04-10.10.
Dafür braucht es unter Ubuntu reichlich Pakete. Da ich allerdings nicht genau verstehe was sie einzelnen Pakte steuern "klopfe" ich sie nach der Installation mit dem Kommando
dpkg-reconfigure paket
nach Konfigurationsmöglichkeiten ab. Nachfolgende Liste zeigt alle benötigten Pakte incl. der möglichen Rekonfigurationsmöglichkeiten.
Man braucht folgende Pakete:
Packet |
Funktion |
Konfiguration |
libnss-ldapd |
modifiert /etc/nssswitch.conf |
group,passwd,shadow |
libpam-ldapd |
? |
keine Rekonfiguration möglich |
auth-client-config |
? |
keine Rekonfiguration möglich |
ldap-auth-client |
? |
keine Rekonfiguration möglich |
ldap-auth-config |
zentrale Konfiguration des Ldap Clients |
siehe seperaten Artikel |
nslcd |
Konfiguration des nscd |
siehe seperaten Artikel |
nscd |
? |
keine Rekonfiguration möglich |
Diese werden installiert mit
sudo apt-get install libnss-ldapd libpam-ldapd auth-client-config ldap-auth-client ldap-auth-config nslcd nscd
Bei der Installation ist zu beachten, daß der LDAP-Adresse des Server immer mit ldap://10.128.1.18/ angegeben wird. Hier führen Schreibfehler oder das Weglassen von Schrägstrichen etc. zur langwierigen Fehlersuche.
Danach noch ein
sudo auth-client-config -t nss -p lac_ldap
und ein
sudo pam-auth-update
die PAM-Konfiguration im Verzeichnis /etc/pam.d/. Nach Eingabe des Kommandos erscheint ein Dialog, in dem die zu aktivierenden PAM-Profile ausgewählt werden müssen. Zunächst sollten die Profile
Unix authentication und LDAP Authentication aktiviert werden.
Ist alles installiert und konfiguriert so wird das ganze getestet. Sollte man nach der Konfiguration noch in der Lage sein sich einzuloggen so testet man das Ganze mit nach folgendem Kommando
schoener@ritsuko:~$ getent passwd .................... schoener:*:10003:10000:schoener:/home/schoener:/bin/bash
und nochmal für die Gruppen
schoener@ritsuko:~$ getent group ................ user:*:10000:
Damit ist der Beweis erbracht, daß pam seinen Dienst tut. Nun sollte ein Login möglich sein.
Achtung:
Es gibt auf den Client noch kein Home-Verzeichnis /home/schoener ! Als letzten Test legen wir es an und setzten die Berechtigungen richtig.
ijin@ritsuko:~$ sudo mkdir /home/schoener [sudo] password for bic: bic@ritsuko:~$ sudo chown schoener:user /home/schoener/ bic@ritsuko:~$
Nachdem die Authentifizierung klappt, mache ich ein kleines Experiment. Ich fahre den LDAP Server herunter und schaue was passiert. Jetzt ist ein Einloggen per kdm nicht mehr möglich. Allerdings komme ich noch über die Textkonsole an das System heran.
Das Problem liegt in der Datei /etc/nsswitch.conf . Diese sagt dem Login-Dienst wo er die nötigen Informationen Informationen findet. Hier heißt es nach Installation der PAM-Module für ldap
...... passwd: compat ldap group: compat ldap shadow: compat ldap .......
Und hier setzte ich nun jeweils den Parameter files vor das compat. Heraus kommt:
passwd: files compat ldap group: files compat ldap shadow: files compat ldap
Danach noch den Dienst nscd (Name Service Caching Daemon) neu starten mit:
sudo /etc/init.d/nscd restart
Und schon kann man sich wieder über den kdm einloggen. Danach folgt die Konfiguration der einzellenen Komponenten.
(V 1.04)