TESTOMGIVNINGALLMÄNTLDAP katalogtjänsten kan användas för många olika syften i ett Unix nät. Mycket vanligt är att den används som autenikeringsserver för någon typ av inloggningstjänst, t.ex. SSH. Inför vår muntliga presentation av detta arbete bestämde vi oss för att lite nogrannare ta reda på hur man hanterar en Linux LDAP server genom att sätta upp en testserver och konfigurera den att fungera som en autentikeringsserver för just SSH-inloggning. Bilden nedan är visar en karta över vår testomgivningen.
I testomgivningen ligger SSH- och LDAP servern fysiskt
på en och samma dator i Arcadas studentnät men fungerar logiskt
som om de vore åtskilt. Som SSH klient använde vi flera olika
datorer i studentnätet, bl.a. penti.sit.fi.
INSTALLATION AV PROGRAMVARAInledningsvis måste behövlig mjukvara för att kunna hantera och sätta upp en LDAP databas installeras. På serverdatorn använde vi operativsystemet Redhat 9.0. En gratis programvara, Openldap, kan laddas ner från www.openldap.org , varifrån vi laddade ner den för tillfället nyaste versionen, Openldap 2.1.23. Förutöver LDAP programvara behöver också databasprogramvara laddas ner och installeras som LDAP katalogtjänsten kan använda för att lagra information i. Vi laddade ner BerkeleyDB 4.2.50 från www.sleepycat.com.Installation av BerkeleyDB-4.2.50 Packar upp programpaketet
Kompilerar och installerar programpaketet:
Installation av Openldap-2.1.23 Packar upp programpaketet
Konfigurera paketet för kompilering
OBS! Om en föråldrad version av BerkeleyDB finns installerad
från tidigare måste man berätta för configure
kommandot var den skall hämta behövliga biblioteks- och källfiler
för den rätta version en av BerkeleyDB
Kompilera och installera
KONFIGURATIONERLDAP servernInnan ett katalogträd/en databas kan börja byggas upp måste LDAP servern konfigureras. Den viktigaste och den enda konfigureringsfil vi konfigurerade på vår testserver heter slapd.conf i vilken man bl.a. specificerar hur LDAP klienter skall kunna kommunicera med LDAP servern. /usr/local/etc/openldap/slapd.conf:
database bdb #Landssuffix, och domännamn för databasen
#Managern/ägeren av databasen
# Cleartext passwords, especially for the rootdn, should
#Lösenord för LDAP servern (behövs av klienter
vid modifiering av data i katalogträdet)
# The database directory MUST exist prior to running slapd AND
Raderna ovan är endast delar av konfigureringsfilen slapd.conf.
De rader vi modifierat är kommenterade med svensk text.
SSH servern/LDAP klienten LDAP klienten och SSH servern måste konfigureras så att de kan hämta användarinformation ur databasen på LDAP servern i stället för ur det lokala systemet. För att göra detta måste följande konfigureringsfiler modifieras: Konfigurationsfilen /etc/nsswitch.conf berättar för namnservicen på en Linux dator varifrån den skall hämta användarinfo såsom: användarnamn, lösenord, användargrupper m.m. De attribut som i standard nsswitch.conf ser ut så här... passwd: files
...bör ändras till: passwd: files ldap
Konfigurationsfilen /etc/ldap.conf definierar för LDAP klienten LDAP serverns ip-adress samt hur kommunikation skall ske med servern. Följande rader modifierades för testomgivningen: host 193.167.32.168 #ipadress för LDAP server
Konfigurationerna ovan (nsswitch.conf och ldap.conf) kan
i operativsystemet, Redhat 9.0, också göras via ett grafiskt
gränssnitt som startas från en konsol med kommandot authconfig
Modulen pam_ldap.so behövs för att olika services skall kunna utföra autentikering mot en LDAP server. Denna modul skall konfigureras skilt för varje service. I vår testomgivning konfigurerade vi denna modul för SSH serverdemonen (SSHD) via konfigurationsfilen /etc/pam.d/sshd genom att tillsätta följande rader: auth sufficient pam_ldap.so
DATABASEN UPPBYGGNADNär alla konfigurationer är gjorda gäller det att börja fundera på hur man kan bygga upp en lämplig databas i vilken man kan lagra användarkonton och användargrupper. Trädstrukturen nedan visar hur vi för vår testomgivning byggt upp databasen. Huvudingången är landssuffixet (fi) och så har vi en demo organisation som heter Arcada. Arcada är uppdelad i tre organisationsenheter: studenter, personal och användargrupper. I organisationsenheten finns två användarkonton och under personal finns ett användarkonto registrerat. Organisationsenheten, användargrupper, består av grupperna IT, och EL.Kalalogstrukturen som bilden visar byggs upp på följande sätt: För att kunna skapa ingångar (entries) i ett LDAP katalogträd
måste man först skapa en s.k. "ldif fil" vilken man sedan använder
som argument till kommandot ldapadd. Denna fil ser för vår
testomgivning ut så här:
-----------------------------------------------------------------------------------------------------------------
#Huvudingång till katalogtjänsten: Organisation Arcada
i domänen
#Manager för Katalogtjänsten
#Organisationsenhet: studenter
#Organisationsenhet: personal
#Organisationsenhet: grupper
#En användargrupp: IT
#En användargrupp: EL
#Användarkonto för person som tillhör organisationsenheteten:
studenter
#Användarkonto för person som tillhör organisationsenheteten:
studenter
#Användarkonto för person som tillhör organisationsenheteten:
personal
När "ldif filen" är klar kan man sätta in strukturen
i databasen med kommandot:
Men före det måste LDAP serverdemonen startas med kommandot:
I det här skedet är databasen redo för testning. Man
kan göra en lokal sökning i databasen, t.ex. med kommandot:
NOTERINGARVärt att notera är att denna testomginving är ofullständig på så sätt att hemkataloger fattas på SSH servern. Dessa kan givetvis skapas manuellt på servern men meningen var att även dessa skulle specificeras i LDAP databasen. Attributet homeDirectory (se "ldif-filen") antar att den givna hemkatalogen redan finns skapad på SSH servern i fråga och skapar inte ny ifall denna fattas. Om hemkatalogen kunde skapas via LDAP servern kunde samma LDAP server med samma användarkonton kunna fungera som autentikeringsserver för flera SSH servrar. Vi har läst att man kan förverkliga detta men hittade ingen information om HUR det skall förverkligas.
|