Modul02b

=LDAP, PAM , NSS=

INSTALLERING:

 * 1)** Installering av slapd

slapd er databasetjeneren til katalogtjenesten openLDAP. Den installeres med kommandoen


 * apt-get install slapd**

Description: OpenLDAP server (slapd) This is the OpenLDAP (Lightweight Directory Access Protocol) server (slapd). The server can be used to provide a standalone directory service.

KONFIGSPØRSMÅL:
Det spørres om administrasjonspassord. Settes til: ........... (skriv passordet du har valgt)


 * 2)** Installering av ldpap-utils med kommandoen


 * apt-get install ldap-utils**

Description: OpenLDAP utilities This package provides utilities from the OpenLDAP (Lightweight Directory Access Protocol) package. These utilities can access a local or remote LDAP server and contain all the client programs required to access LDAP servers.

KONFIGSPØRSMÅL:
Ingen


 * 3)** Installering av libnss-ldap med kommandoen


 * apt-get install libnss-ldap**

Her vil man også få installert NSCD og PAM. Disse to er avhengigheter til libnss-ldap pakken

Description: NSS module for using LDAP as a naming service This package provides a Name Service Switch that allows your LDAP server act as a name service. This means providing user account information, group id's, host information, aliases, netgroups, and basically anything else that you would normally get from /etc flat files or NIS. . If used with glibc 2.1's nscd (Name Service Cache Daemon) it will help reduce your network traffic and speed up lookups for entries.

KONFIGSPØRSMÅL:
URI ldap://127.0.0.1/ Entydig navn for søkebase: dc=4lab,dc=hist,dc=no LDAP-versjon 3 LDAP-konto for root cn=admin,dc=4lab,dc=hist,dc=no Passord for LDAP root-konto: ........... Husk å endre innslagene i filen /etc/nsswitch//

=Reconfigure=

FOR FLERE AV INSTALLERINGENE OVENFOR KOMMER DET FLERE SPØRSMÅL DU MÅ SVARE PÅ. DISSE HAR MED OPPSETTET AV TJENESTENE Å GJØRE. I TILLEGG MÅ VI OGSÅ KJØRE dpkg-reconfigure PÅ PAKKENE FOR Å SLUTTFØRE TILPASSINGEN (se nedenfor)

Konfigurere med dpkg-reconfigure


 * dpkg-reconfigure slapd**

KONFIGSPØRSMÅL:
Undlat oppsetning av LDAP-server: Nei DNS-domenenavn: 4lab.hist.no Navn på din organisasjon: Geirs DLX-fag Aministratorsadgangskode: ............. LDAP-database: Velger standard som er BDB Fjerne databasen npr slapd fjernes? NEI Ta backup av gamle filer: JA Tillatt SLAPdv2-protokollen: NEI


 * dpkg-reconfigure libnss-ldap**

URI for ldap-tjener: ldap:127.0.0.1 Entydig navn for ldap-basen: dc=4lab,dc=hist,dc=no LDAP-versjon 3 Kreves innlogging: NEI Spesielle LDAP-privilegier for root: JA Oppsettfil kun lese av eier: NEI LDAP-konto for root: cn=admin,dc=4lab,dc=hist,dc=no Passord: .............


 * dpkg-reconfigure libpam-ldap**

URI for ldap-tjener: ldap://127.0.0.1 Entydig navn for ldap-basen: dc=4lab,dc=hist,dc=no LDAP-versjon 3 Gjør lokal root til databaseadmin: JA Kreves innlogging: NEI LDAP-konto for root: cn=admin,dc=4lab,dc=hist,dc=no Passord: ........... Kryptering: OK Velger crypt//

//Konfigurere /etc/nsswitch.conf//
Legger inn ldap i tre linjer slik som vist nedenfor for at navneoppslag skal foregå mot lDAP-databasen.

passwd: compat ldap group: compat ldap shadow: compat ldap

..........
 * Nå må man kjøre /etc/init.d/nscd restart**

Konfigurere filen i mappen /etc/pam.d
Her finner du en rekke med filer. Disse angir hvordan hvert enkelt program skal gå fram for å autentisere brukere. F.eks kan en her legge inn at su og ssh skal autentisere på hver sine måter (om det skulle være ønskelig).

Debian-standarden er å bruke det delte biblioteket pam_unix.so for å autentisere brukere. Dette biblioteket gjør oppslag mot /etc/passwd, /etc/shadow og /etc/group. Vi skal bruke biblioteket pam_ldap.so i stedet siden dette biblioteket også kan jobbe mot LDAP.

I aktuelle filer skal følgende tekststreng legges inn foran de eksisterende linjene med ordet "required" som ligger der fra før.:

sufficient pam_ldap.so

Gjør først en ls -l i mappen /etc/pam.d for å se hvilke filer som ligger der. Bruk deretter grep-kommandoen for å finne de aktuelle filer, dvs filer som inneholder tekststrengen pam_unix.so


 * grep pam_unix.so** *

Dette gir følgende: deb:/etc/pam.d# grep pam_unix.so * common-account:account required pam_unix.so common-auth:auth required pam_unix.so nullok_secure common-password:password required pam_unix.so nullok obscure min=4 max=8 md5

common-password:# password required pam_unix.so use_authtok nullok md5 common-session:session required pam_unix.so newrole:auth required pam_unix.so run_init:auth required pam_unix.so

Det som vises her på hver linje er: Først filnavnet og deretter etter kolonet kommer aktuell linje som ble funnet i filen. Ut i fra søkeresultatet er det følgende filer som må forandres på: common-account common-auth common-session common-password

Legg deretter inn sufficient pam_ldap.so foran hver av de funne setningene med Required

auth sufficient pam_ldap.so (den nye tilførte setningen) auth required pam_unix.so nullok_secure (den gamle setningen) .........
 * Automatisk home folder:**

/etc/pam.d/common-account session required pam_mkhomedir.so umask=0022 skel=/etc/skel/ silent

Hjemmemappe blir opprettet ved første login.

En siste sjekk på konfigfilene:
Sjekket i filen /etc/pam_ldap.conf. Fant kommentartegn foran host 127.0.0.1. Fjernet dette slik at det nå står:

host 127.0.0.1 uri ldap:127.0.0.1 i disse.

Sjekket deretter filen /etc/libnss-ldap.conf. Fant også der et kommentartegn for host 127.0.0.1. Fjernet dette slik at det nå står

host 127.0.0.1 uri ldap:127.0.0.1 i disse.

HUSK Å RESTARTE slapd ETTER ENDRINGER I KONFIG-FILER. GJØRES MED KOMMANDOEN


 * /etc/init.d/slapd restart**

Konfigurasjon av LDAP-databasen
Til å begynne med er det ikke mye data i databasen. Du finner kun to objekter som angir organisasjon of admin-bruker. Bruk kommandoen slapcat for å liste ut innholdet i databasen.

LDAP-basen vet ennå ikke at den skal inneholde linux-brukere og grupper. Det er laget en mal som ligger på filen initdb.ldif for å ordne dette. Den innholder tre objekter: - cn=nss for at NSS skal kunne slå opp navn i LDAP-basen - Organisasjonsenheten ou=People for å kunne lagre personer (brukere) i LDAP-basen. - Organisasjonsenheten ou=Group for å kunne lagre grupper i LDAP-basen
 * 1)** Klargjøre LDAP-databasen

Fyll inn aktuelle data for din installasjonen.

Når endringene i ldif-filen er gjort legges de inn med kommandoen


 * ldapadd -x -W -a -D "cn=admin,dc=4lab,dc=hist,dc=no" -f initdb.ldif**

Bruk slapcat for å se innholdet nå.

Neste steg er å legge inn brukere i LDAP-basen. Det finnes en mal for dette i filen joe.ldif.
 * 2)** Legge inn brukere i LDAP-basen

Du har allerede en vanlig bruker i /etc/passwd. Vi venter litt med å legge inn denne i LDAP, og legger i stedet inn disse nye brukerne:

- Ola Norman (ola, olax), dvs brukernavn, passord - Kari Nordam (kari, karix)

Pass på å sjekke at gID som brukes finnes fra før, og at uID ikke kolliderer med eksisterende (se /etc/passwd og /etc/group)

En fil for hver bruker. Legges inn med kommandoen: ldapadd -x -W -a -D "cn=admin,dc=4lab,dc=hist,dc=no" -f kari.ldif**
 * ldapadd -x -W -a -D "cn=admin,dc=4lab,dc=hist,dc=no" -f ola.ldif

Sjekk innholdet i LDAP-basen med slapcat

Prøver su-innlogging fra root mot brukerne ola og kari slik.


 * su kari**

Vi får her en feilmelding siden brukeren ikke finnes i systemet. Dette får man altså IKKE hvis man bruker en bruker som allerede har tilgang til systemet.+ ANNET prob som kan oppstå:i eksemplet som ble gjennomgått i klasserommet fikk vi feilmeldingen "Ukjent id: kari". Restart av nscd caching-deamon fikset dette)

Nå vet vi at root kan su-innlogge mot ola og kari. Neste operasjon er da å sette passord for disse brukerne. Det gjøres med den vanlige passwd-kommandoen slik
 * 3)** Sett passord på brukerne


 * passwd kari**

Får følgende melding etter at passordet er skrevet inn to ganger: "LDAP password information changed for kari"

Husk også at siden vi nå bruker PAM så vil den vanlige passwd-kommandoen som vi brukte ovenfor virke mot LDAP-basen og dermed oppdatere/sette passordet der. Det var jo dette vi ordnet med i filene som ligger i mappen /etc/pam.d. ENIG?

Sjekk innholdet med slapcat for å se at det nå finnes et kryptert passord i LDAP-basen. Det gjør det, og dermed er vi sikre på at passordet er riktig satt.

Da gjenstår det å prøve å logge inn som kari helt fra start av (dvs ikke bare en su-login fra root)

Sjekk at LDAP-basen brukes
Logg ut og logg inn igjen som f.eks kari og se hvordan det går. Gikk det eller gikk det ikke?

Greide ikke logge inn som kari.

Problemet er da som oftest at du prøver å logge inn via grafisk grensesnitt (dvs gdm). Prøv heller en tekstbasert innlogging. Da må du først stoppe gdm. Det gjøres med kommandoen


 * /etc/init.d/gdm stop**

Da havner du umiddelbart i kommandobasert grensesnitt. Logg inn som kari og se om det ikke går bedre nå. Login gikk bra, men siden kari er uten hjemmemappe havnet hun på /-mappe.

Logg inn som root og lag hjemmemappe til kari, dvs /home/kari. Sjekk eierskap og rettigheter med kommandoen ls -l /home. Da finner du at root står både som eier og gruppe for hjemmemappa kari. Dette må du endre slik at kari står som eier og gruppe. Prøv å logge inn på nytt. Nå gikk det greit antar jeg. Start opp gdm igjen med og sjekk at grafisk login også går greit nå.
 * /etc/init.d/gdm start**

ENDRE DATA i LDAP-DATABASEN:
Den hender at en skriver feil data inn i databasen. Da må en bruke kommandoen ldapmodify for å gjøre endringer. Først settes det opp en ldif-fil slik som vist nedenfor der hjemmemappen til ola var feil skrevet i første runde:

dn: uid=ola,ou=People,dc=4lab,dc=hist,dc=no changetype: modify replace: homeDirectory homeDirectory: /home/ola

Dette lagres på filen ola-01.ldif og "kjøres" inn i LDAP-basen med kommandoen


 * ldapmodify -x -D cn=admin,dc=4lab,dc=hist,dc=no -w geirmx -f ola-01.ldif**

Sjekk at endringen har funnet sted med kommandoen slapd.

Automatisering for å legge til brukere
Dette gjør vi ved å legge inn programmet migrationtools


 * apt-get install migrationtools**

Etter dette må man forandre filen /usr/share/migrationtools/migrate_common.ph Søk etter default for å komme til rett linje. Så tilpasser vi til vårt domene.

Default DNS domain $DEFAULT_MAIL_DOMAIN = "padl.com"; Sett denne til "testlab.hist.no"

$DEFAULT_BASE = "dc=padl,dc=com"; Sett denne til "dc=testlab,dc=hist,dc=no"
 * 1) Default base

Etter dette kan man kjøre programmet slik:

./usr/share/migrationtools/migrate_group.pl /etc/group ~/group.ldif ./usr/share/migrationtools/migrate_passwd.pl /etc/passwd ~/passord.ldif

Her kan man kalle filen til slutt akkurat hva man vil. Programmet vil nå konvertere passwd-filen til en ldif-fil som man igjen kan kjøre kommandoen ldapadd mot.

FEILSØKING
Sjekk loggen (som root) med kommandoen


 * tail /etc/var/auth.log**

Her vil du finne om noe har gått galt, om det er kontakt med LDAP-databasen etc

Det gikk bra: Logg inn, su til root og verifiser i loggen at LDAP-basen ble brukt til login. Forresten det er du jo sikker på allikevel fordi Kari finnes jo ikke i /etc/passwd.

Prøv også kommandoen


 * netstat -a | grep LIST**

for å se om slapd lytter etter forespørsler til LDAP-basen

Sjekk også filene libnss-ldap.conf og pam_ldap.conf at det står

host 127.0.0.1 og uri ldap:127.0.0.1 i disse.

Her ser vi at det står uri ldapi istedenfor det riktige uri ldap. VIKTIG!

(merk at disse tingene gjelder når LDAP-basen ligger på samme maskin som login skjer. I andre oppsett vil dette være forskjellig)

Samme passord i de to /etc/*.secret-filen. Bruk kommandoen


 * cat /etc/*.secret**

for sjekke dette.

Restart av ldap-tjeneren slapd

Etter endring av konfig-filer må disse leses på nytt av aktuell tjener. Dette oppnås ved å restarte tjeneren slik:


 * /etc/init.d/slapd restart**

TO Passord
Må du skrive inn passordet 2 ganger

Det kommer av at noen brukere finnes både i /etc/passwd og i LDAP-basen. Det er forsåvidt greit for noen brukere siden det sikrer login selv om LDAP-basen er utilgjengelig. Dette kan endres slik at du kun oppgir passord en gang, men at du fortsatt har mulighet for å logge inn dersom LDAP er nede.

Gjør endringer i disse filene slik at du skriver passordet bare en gang.

/etc/pamd.d/common-account: Legg inn try_first_pass på slutten av linjen som starter med account required

Det samme gjøres i filen /etc/pam.d/common-auth, dvs legg inn try_first_pass på slutten av linjen som starter med auth required