LDAP-tjener
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.