OpenLDAP konfiguracija
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