LDAP-tjener

Fra GNUskole
Hopp til: navigasjon, søk

Dette er en oppskrift på hvordan du setter opp 389 Directory Server som en LDAP-tjener på en CentOS/Fedora-installasjon.

Vi skal guide deg igjennom installasjon og oppsett av 389DS, migrering av eksisterende brukere og installasjon og oppsett av LDAP Account Manager (LAM) som er et bra webgrensesnitt for å opprette, redigere og slette brukere og grupper på LDAP-tjeneren.

389 Directory Server

Klargjøring av maskinen

For at 389 skal virke ordentlig må du gjøre noen endringer på tjeneren. (Du får en advarsel hvis du prøver å installere 389-ds uten disse endringene!)

Du må legge til disse linjene i /etc/sysctl.conf

net.ipv4.ip_local_port_range = 1024 65000

Disse linjene i /etc/security/limits.conf

* soft nofile 65000
* hard nofile 65000

Denne linjen i /etc/profile

ulimit -n 8192

(Her er allt samlet i et lite "skript")

echo "net.ipv4.ip_local_port_range = 1024 65000" >> /etc/sysctl.conf
echo "* soft nofile 65000" >> /etc/security/limits.conf
echo "* hard nofile 65000" >> /etc/security/limits.conf
echo "ulimit -n 8192" >> /etc/profile

Så må du restarte maskinen for å få endringene til å tre i kraft (eller du kan åpne ett nytt konsoll, men da bør du vite hva du holder på med :-).

Før du begynner må du være sikker på at maskinen du installerer tjenesten på har et fullt domenenavn, dvs. at du kan f.eks. pinge ldap.mintjener.lan fra ulike maskiner i nettverket.

Det kan også være lurt at maskinen svarer med full domenenavn hvis du skriver hostname --fqdn med tanke på sikkerhetssertifikater du en gang har lyst til å lage.

Installasjon av 389 Directory Server

Du må installere EPEL-pakkene til CentOS for å lett få tak i 389-ds.

rpm -Uvh http://download.fedoraproject.org/pub/epel/6/i386/epel-release-6-7.noarch.rpm'

Så er det bare å installere selve 389-ds-pakkene...

yum install 389-ds

Eller du kan bruke CentOS sin egen CentOS-DS ved å skrive (da trenger du ikke installere EPEL)...

yum install centos-ds

Nokså enkelt :-)

Du må redigere /etc/sysconfig/dirsrv og legge til denne linjen nær toppen... (den står markert med # nokså tidlig i filen, så du kan bare ta vekk #-tegnet).

ulimit -n 8192

Men så er det å konfigurere katalog-tjenesten...

setup-ds-admin.pl

Foreløpig får du svare så godt du kan på spørsmålene, men de er ikke så vanskelige. Jeg skal skrive litt om dette seinere... :-)

Hvis du skriver denne kommandoen på maskinen du har installert 389-ds vil du få opp et fullt grafisk brukergrensesnitt for å gjøre alt mulig rart med tjenesten.

389-console -a http://localhost:9830

Du finner nyttig dokumentasjon på prosjektets hjemmesider.

Sette opp SSL/TLS på LDAP-tjeneren

Du finner hele oppskriften på 389DS sin wiki: http://directory.fedoraproject.org/wiki/Howto:SSL

Dessverre er ikke denne wiki-forklaringen helt enkel - så her kommer idiot-oppskriften (som jeg lære meg selv :-):

På tjeneren

Last ned dette skriptet...

wget http://github.com/richm/scripts/tree/master%2Fsetupssl2.sh?raw=true

...og kjør det på 389DS-maskinen.

Dette skriptet gjør alt for deg, men skriptet forventer følgende:

  • at hostname --fqdn på tjeneren gir det en fullt kvalifisert host- og domenenavn. Dette må være det samme navnet som klientene kobler seg opp mot!
  • du må inn i filen og spesifisere stien til 389DS-katalogen i skriptet - du kan ikke kjøre skriptet med uten denne endringen.
  • at du kjører skriptet som root.
  • at det er en ren/blank installasjon av 389DS. (Du kan ikke kjøre dette skriptet to ganger!)
  • at du bruker standard LDAP-porter.

Når skriptet er ferdig kan du gå inn i katalogen /etc/dirsrv/slapd-<host> og hente ut cacert.asc

Det er denne filen du trenger tilgang til for å kunne koble klienter sikkert til tjeneren.

Migrering av eksisterende brukere

Pakken OpenLDAP må være installert...

yum -y install openldap openldap-servers openldap-clients

Maskinen du gjør denne jobben på bør være koblet opp til LDAP-tjeneren...

system-config-authentication --enableldap --enableldapauth --ldapserver=192.168.1.10 --ldapbasedn=dc=mintjener,dc=lan --update-all
cd /usr/share/openldap/migration/
cp /etc/passwd ./passwd.kopi

Rediger filen passwd.kopi og ta vekk alle systembrukeren (de med uidNumber < 500) slik at bare de vanlige brukerne er igjen. Du kan også gå inn i filen migrate_common.ph og endre "dc=padl,dc=com" til ditt baseDN, f.eks. "dc=minskole,dc=lan".

./migrate_passwd.pl passwd.kopi brukere.ldif

Så må du redigere brukere.ldif og bytte ut alle "dc=padl,dc=com" med ditt baseDN, f.eks. dc=minskole,dc=lan - om du ikke gjorde det i migrate_common.ph-filen.

ldapadd -x -D "cn=Directory Manager" -w passord -f brukere.ldif

Da har du faktisk importert alle brukerne til LDAP-tjeneren.

Nå må du slette filene passwd.kopi og brukere.ldif!

Det er nå viktig at du går inn i /etc/passwd og /etc/shadow og fjerner brukerene du nettopp importerte i LDAP-basen. Husk å ta backup av disse filene før du gjør det! :-)

Så må du gjøre det samme med /etc/group


Legge til noen ekstra opplysninger

Du kan bruke dette skriptet for å legge til en del kjekke opplysninger i LDAP-basen. PS! Dette er et utrolig dårlig skript, men det virker - noen må gjerne lage et perl-skript eller et med bedre bruk av sed og awk enn det jeg er i stand til!

#!/bin/bash
for i in `ls /home/`
do
 echo "dn: uid=$i,ou=people,dc=minskole,dc=lan" > tmp.ldif
 echo "changetype: modify" >> tmp.ldif
 echo "add: objectClass" >> tmp.ldif
 echo "objectClass: inetorgperson" >> tmp.ldif
 echo "-" >> tmp.ldif
 finger $i | grep "Name:" | cut -b 32- > navn.txt
 awk 'BEGIN{FS=" "}
  {
  print "add: sn"
  print "sn: "$NF
  print "-"
  print "add: givenName"
  if (NF == 2) print "givenName: "$1
  if (NF == 3) print "givenName: "$1" "$2
  if (NF == 4) print "givenName: "$1" "$2" "$3
  }' navn.txt >> tmp.ldif
 echo "-" >> tmp.ldif
 echo "add: l" >> tmp.ldif
 echo "l: minskole" >> tmp.ldif
 echo "-" >> tmp.ldif
 echo "add: mail" >> tmp.ldif
 echo "mail: $i@minskole.no" >> tmp.ldif
 ldapmodify -x -D "cn=directory manager" -w passord -f tmp.ldif
done

Installere LAM

LDAP Account Manager (LAM) har vist seg å være et bra GUI for å administrere brukere o.l. i en LDAP-base.

Ikke installer LAM på en CentOS-boks. CentOS har ikke unicode-støtte for PCRE uten at du rekompilerer PCRE-pakkene. F12 og oppover har alt du trenger, og du kan godt installere LAM på en annen maskin enn maskinen som kjører LDAP-tjeneren din.

Last programmet ned herfra: http://www.ldap-account-manager.org/lamcms/releases

yum install ldap-account-manager*.rpm --nogpgcheck

Da er du klar til å gjøre alle nødvendige innstillinger i LAM på nettsiden http://minserver.no/lam - passordet til LAM er "lam" (noe du jo bør endre raskt).

Men... her en liste over ting du også ønsker å sette opp/fikse på...

En "UTF8 til ASCII"-justering

Du bør gjøre endringer i en av filene i LAM for å få den til å oversette norske æøå til ASCII på en god måte og ta vekk ASCII-konverteringen av gecos-feltet.

Du må inn i filen /var/www/html/lam/lib/modules/posixAccount.inc og gjøre disse endringene...

Linje 831 fra...

$attributeList = array('gecos','homeDirectory');

...til...

$attributeList = array('homeDirectory');

Legg til denne linjen etter 855...

, 'å' => 'aa', 'Å' => 'Aa', 'Ø' => 'Oe', 'ø' => 'oe', 'Æ' => 'Ae', 'æ' => 'ae'

Linje 1337 fra...

$partialAccounts[$i]['gecos'] = $this->checkASCII($rawAccounts[$i][$ids['posixAccount_gecos']]);

...til...

$partialAccounts[$i]['gecos'] = $rawAccounts[$i][$ids['posixAccount_gecos']];

Linje 1357 fra...

$partialAccounts[$i]['gecos'] = $this->checkASCII($gecos);

...til...

$partialAccounts[$i]['gecos'] = $gecos;

Sette lokale systembrukere av LAM

Du må inn i 389DS og gi administrasjonsrettigheter til en lokalt bruker (som er en bruker på linux-systemet) som kan redigere LDAP-basen. Vi kaller denne brukeren "sjefen" for enkelhets skyld.

...blablablabla....

Sette opp lamdaemon

Dette er et skript som gjør at du kan automatisk kan opprette/slette hjemmekataloger når du oppretter/sletter en bruker.

Du må sette opp alt riktig i LAM under profilen til LDAP-tjeneren.

Så må du gi "sjefen" sudo-tilgang på maskinen hvor lamdaemon kjører. Det gjør du ved å redigere filen /etc/sudoers. Føy til denne setningen et passende sted i filen:

sjefen    ALL=(ALL)     NOPASSWD: ALL

Du må også endre i samme fil...

Defaults     requiretty

...til...

#Defaults     requiretty

Da kan du teste lamdaemon-skriptet fra "Tools"-menyen i LAM. Hvis testen virker kan du opprette/slette hjemmekataloger.