Log in


Forgot your password?
prijatelji LUGoNSa
gnu.gif
linuxzasve.jpg
hulk.jpg
 
You are here: Home / Uputstva / Opšte / OpenLDAP konfiguracija

OpenLDAP konfiguracija

by Goran Mekić last modified Nov 17, 2009 03:07 PM
Kako namestiti OpenLDAP za autentifikaciju (pretežno za mail server)

O programu

OpenLDAP je softver koji se koristi za čuvanje podataka o korisničkim nalozima. Sam LDAP nije baza nego koristi neku bazu kao backend. U našem slučaju ćemo koristi Berkley bazu u te svrhe.

Šta je potrebno pre konfiguracije

  • Berkley. Baza koja se koristi za pohranjivanje podataka
  • Crypt. Lozinke u LDAP-u moraju biti kriptovane
  • Ideja. Morate znati za šta će se LDAP koristiti, koji atributi Vam trebaju da biste znali koje klase da koristite i koje schema fajlove da uključite u konfiguraciju.

 

Konfiguracija

Za razliku od ostalog softvera, sama konfiguracija servera je poprilično jednostavna. Koristi se samo jedan konfiguracioni fajl, /etc/openldap/slapd.conf:

# Fajlovi koji sadrže potrebne klase i atribute
include /etc/openldap/schema/core.schema
include /etc/openldap/schema/cosine.schema
include /etc/openldap/schema/inetorgperson.schema
include /etc/openldap/schema/nis.schema

# Fajl u kome će se zapisati broj procesa LDAP servera
pidfile /var/run/openldap/slapd.pid

# Lozinke se kriptuju po SSHA algoritmu
password-hash {SSHA}

# Ako kasnije nije drugačije definisano, svi mogu sve da čitaju (kasnije idu ostala ograničenja)
access to * by * read

# Koristimo Berkley DB
database bdb

# Sufix se obično bira po domenu, pri čemu je ¨dc¨ skrećenica za Domain Component
# Jednostavno, rastavite vaš domen tako da je jedan ¨dc¨ ono što se nalazi između dve tačke
suffix "dc=ldap"

# Lokacij gde će se čuvati baza (LDAP mora imati pravo pisanja)
# PAŽNJA!!! Napravite ovaj direktorijum!
directory /var/openldap/mail

# Naravno ne zaboravite da promenite vlasnika direkrotijuma
# chown -R ldap.ldap /var/openldap

# Ko je administrator celog LDAP servera (administracija se može deliti
# na podceline i za svaku podcelinu može biti zadužen drugi administrator)
rootdn "cn=root,dc=ldap"

# Lozinka administratora LDAP servera (kasnije će biti reči kako se ona dobija)
rootpw {SSHA}BPF3FVVcc3PxXWL7efF2AMD74BNxXQ8Q

# Indeksiranje atributa
index objectClass,uid,uidNumber,gidNumber,memberUid eq
index cn,mail,surname,givenname eq,subinitial

# Dozvole za atribut u kome je korisnička šifra su:
# sam korisnik može da piše
# neautentifikovani korisnik se mora ulogovati
access to attrs=userPassword
       by self write
       by anonymous auth

# Ako se pristupa nečemu što nije lozinka, koriste se ova pravila (isto kao i prethodno)
access to *
       by self write
       by * read

TLSCACertificateFile /etc/openldap/ssl/cacert.pem
TLSCertificateFile /etc/openldap/ssl/servercrt.pem
TLSCertificateKeyFile /etc/openldap/ssl/serverkey.pem

 Ono što vam još fali da bi ste imali LDAP server koji je u potpunosti upotrebljiv je lozinka za administratora. Ona se generiše na sledeći način (pitaće vas da unesete vašu lozinku i ispisaće istu ali kriptovanu):

# slappasswd -h '{CRYPT}'

 

Generisanje ključeva

Naravno, koristićemo samopotpisan ključ. Evo kako se to radi:

# cd /etc/ssl/misc
# ./CA.sh -newca
# openssl req -new -nodes -keyout newreq.pem -out newreq.pem
# ./CA.sh -sign
# cp demoCA/cacert.pem /etc/openldap/ssl
# cp newcert.pem /etc/openldap/ssl/servercrt.pem
# cp newreq.pem /etc/openldap/ssl/serverkey.pem
# chmod 600 /etc/openldap/ssl/serverkey.pem

Obratite pažnju da za "Common Name" treba da upišete pun hostname Vašeg servera, dok je ostatak odgovora na pitanja koja CA.sh postavlja jasan sam po sebi.

Gde god želite da koristite LDAPS protokol, potrebno je uraditi jednu izmenu u /etc/openldap/ldap.conf:

TLS_CACERT /etc/openldap/ssl/cacert.pem

Naravno, potrebno je sa servera prekopirati fajl sertifikata na sve klijentske mašine koje će pristupati LDAP serveru: /etc/openldap/ssl/cacert.pem.

 

Punjenje podataka

Ako ste ikada radili sa bazama podataka, ovo možete shvatiti kao da ste upravo napravili plan indeksiranja tabela. Ostaje nam da definišemo šemu (tabele u DB terminologiji). Da bi bilo što lakše napraviti i izbrisati korisnika, napravio sam par skripti koje olakšavaju posao. Glavne skripte su addUser.sh i delUser.sh. Obe skripte paze na očuvanje konzistentnosti tako što kad se dodaje novi korisnik, pravi se i domen automatski, u koliko isti ne postoji, a kada se briše poslednji korisnik domena, briše se i sam domen. Pogledajte .ldif fajlove u koliko želite da promenite mustru za pravljenje korisničkih naloga. Na kraju, svaki nalog inicijalno ima lozinku "lozinka". U koliko želite to da promenite, pogledajte skriptu addUser.sh. Da bi skripte funkcionisale pravilno, potrebno inicijalizovati LDAP bazu. To se radi na sledeći način:

# ldapadd -x -W -D "cn=root,dc=ldap" -f prepare.ldif

Pri tome je prepare.ldif iz gore pomenutog direktorijuma sa skriptama.

 

 

Menjanje lozinke korisnika

Da biste, recimo, promenili lozinku nalogu meka@ns-linux.org, ukucajte sledeće:

# ldappasswd -x -W -S -D "cn=root,dc=ldap" "uid=meka,ou=ns-linux.org,dc=ldap"

Kao i svaka ldap komanda koja zahteva administratorska prava, i ova će Vas pitati za lozinku root naloga (ldap root, ne sistemski root), kao i 2 puta za novu lozinku.

 

 

Ubrzavanje keširanjem i drugim DB opcijama

Postoji nekoliko opcija koje mogu ubrzati LDAP upite. Ovde će biti prikazan fajl sa opcijama koje sam ja koristio.
/var/openldap/mail/DB_CONFIG:

# Jedan 0.25 GB cache
set_cachesize 0 268435456 1

# Podešavanja za logovane transakcija
set_lg_regionmax 262144
set_lg_bsize 2097152

Postoje i druge opcije, ali ovo je minimum koji je preporučen uz instalaciju paketa openldap. Bitno je da fajl DB_CONFIG stoji na putanji gde se nalazi baza za LDAP.

 

Document Actions