Иди на текст

Instalacija i konfiguracija OpenLDAP baze podataka - Debian/Ubuntu

Priprema pred instalaciju LDAP baze

Podesiti IPTABLES

Ažurirati instalirane pakete:

apt update && apt-get upgrade -y --no-install-recommends
Najpre je potrebno instalirati iptables softverski paket i izvršiti početna podešavanja ukoliko već niste.
apt-get remove --auto-remove nftables
apt-get purge nftables
apt-get install iptables
apt-get install iptables-persistent

Otvoriti port 389 za sve IP adrese sa kojih se pristupa LDAP bazi. To podrazumeva:

  • Ukoliko se instalira i koristi aplikacija Apache Directory Studio za upravljanje ovom bazom podataka, otvoriti port 389 na LDAP bazi za adresu računara ili laptopa gde je instalirana pomenuta aplikacija

  • Ukoliko se LDAP baza povezuje sa Shibboleth ili RADIUS Davaocem Identiteta koji su na zasebnim VM, otvoriti port 389 na LDAP bazi za te IP adrese.

To se može uraditi na sledeći način:
vim /etc/iptables/rules.v4  

Primer otvaranja porta 389 za jednu adresu ili opseg adresa je dat u nastavku:

-A INPUT -s 1xx.xxx.xxx.xxx/xxx.xxx.xxx.xxx -p tcp -m tcp --dport 389 -j ACCEPT

Napomena: Navedene linije je potrebno uneti bavezno iznad linije: -A INPUT -j REJECT --reject-with icmp-host-prohibited

iptables-restore < /etc/iptables/rules.v4

systemctl restart iptables
iptables -L

Podesiti hosta

U okviru čitavog uputstva smatraće se da je domen VM ldap.institucija.ac.rs, tako da na svim mestima umesto ovog naziva domena potrebno je da unesete naziv po vašem izboru.

Veoma je važno da FQDN (Fully Qualified Domain Name) i pun hostname (# hostname -f) ove VM, npr. ldap.institucija.ac.rs, koji se podešava u okviru ove sekcije bude isti kao i domen koji je adekvatno podešen na DNS serveru, a taj domen će se takođe kasnije koristiti za kreiranje sertifikata.

Ukoliko kreirate LDAP bazu za potrebe RADIUS ili Shibboleth Davaoca Identiteta i ukoliko su vam resursi ograničeni možete da instalirate na jednu VM:

  • LDAP bazu i Shibboleth Davalac Identiteta

  • LDAP bazu i RADIUS Davalac Identiteta

  • Napomena: U tom slučaju koristite domen VM tako da odgovara tom specifičnom slučaju i koji je prilagođen Davaocu Identiteta. U ovom uputstvu se prikazuje slučaj kada se LDAP baza instalira na VM bez Davaoca Identiteta.

Podešavanje host podataka

Dat je primer postavljanja ldap.institucija.ac.rs kao FQDN podatka:

nano /etc/hosts

Na kraju fajla se unosi linija u formi: IP ADRESA FQDN HOSTNAME Npr:

1xx.xxx.xxx.xxx ldap.institucija.ac.rs ldap

Postaviti hostname

Koristi se komanda sledeće forme: hostnamectl set-hostname HOSTNAME

hostnamectl set-hostname ldap

Instalacija i konfiguracija LDAP baze podataka

apt -y update ; apt -y upgrade
apt -y install debconf-utils

Preuzeti fajl debconf-slapd.conf

wget https://docs.amres.ac.rs/download/ldap/debian/debconf-slapd.conf -O /root/debconf-slapd.conf

Postavljanje domena LDAP baze

  • Napomena: Domen LDAP baze ( podatak koji treba popuniti na mestu ) ne mora imati veze sa domenom VM ili domenom vaše institucije.

  • Kao ilustracija domen LDAP baze će biti: institucija.ac.rs, ali npr. može da bude i institucija.local ili olcSuffix: dc=radius,dc=local

  • Domen LDAP baze predstavlja koren LDAP baze, odnosno početni element u njenoj hijererhijskoj strukturi.

vim /root/debconf-slapd.conf
1
2
3
4
5
6
7
8
9
slapd slapd/password1 password <LDAP-ROOT-PW>
slapd slapd/password2 password <LDAP-ROOT-PW>
slapd slapd/move_old_database boolean true
slapd slapd/domain string <DOMEN_LDAP_BAZE>
slapd shared/organization string <NAZIV_INSTITUCIJE>
slapd slapd/no_configuration boolean false
slapd slapd/purge_database boolean false
slapd slapd/allow_ldap_v2 boolean false
slapd slapd/backend select MDB
vim /root/debconf-slapd.conf
1
2
3
4
5
6
7
8
9
slapd slapd/password1 password testpass123
slapd slapd/password2 password testpass123
slapd slapd/move_old_database boolean true
slapd slapd/domain string institucija.ac.rs
slapd shared/organization string Naziv institucije
slapd slapd/no_configuration boolean false
slapd slapd/purge_database boolean false
slapd slapd/allow_ldap_v2 boolean false
slapd slapd/backend select MDB
cat /root/debconf-slapd.conf | debconf-set-selections

alternativno, umesto komande iznad:

debconf-set-selections /root/debconf-slapd.conf
apt -y install slapd ldap-utils ldapscripts

Ukoliko unesete neispravne parametre u debconf-slapd.conf fajlu, npr. različite šifre, automatski ulazite u interaktivni config mod. Potrebno je da izađete, promenite parametre u fajlu i pokrenete komandu dpkg-reconfigure slapd.

Korisničko ime glavnog administratora baze je cn=admin

  • DN glavnog administratora u primeru ove baze je cn=admin,dc=institucija,dc=ac,dc=rs, a DN Vašeg administratora će biti kreiran shodno podatku kog ste naveli u delu:

slapd slapd/domain string institucija.ac.rs

  • Ukoliko ste kao podatak za slapd slapd/domain string stavili npr. fakultet.ac.rs, DN administratora bi bio cn=admin,dc=fakultet,dc=ac,dc=rs

Konfiguracija SSL/TLS

Ukoliko želite možete da koristite komercijalni sertifikat.

U tom slučaju biste preskočili sledeći korak kreiranja besplatnog privatnog ključa i sertifikata koji bi važio 10 godina, a njih je potrebno da unesete na lokaciju /etc/ldap/. Zatim pratite uputstvo počevši od promene vlasništva sertifikata i ključa.

Preporuka je da se koristi samopotpisani sertifikat u trajanju od 10 godina.

Kreiranje privatnog ključa i sertifikata sa trajanjem 10 godina:

Napomena

  • Privatnom ključu i sertifikatu možete da date bilo koji naziv, međutim veoma je bitno kod dela Common Name (e.g. server FQDN or YOUR name) [ ] koji se prikazuje prilikom kreiranja privatnog ključa i sertifikata unesete domen VM (domen koji je adekvatno podešen na DNS serveru za ovu VM), npr. ldap.institucija.ac.rs.

  • Voditi računa o tome da se izabrani naziv privatnog ključa i sertifikata unese u sve naredne fajlove koji to zahtevaju.

openssl req -nodes -x509 -newkey rsa:4096 -keyout /etc/ldap/institucija.ac.rs.key -out /etc/ldap/institucija.ac.rs.crt -days 3650

Prikaz postupka kreiranja privatnog ključa i sertifikata

root@ldap:~# openssl req -nodes -x509 -newkey rsa:4096 -keyout institucija.ac.rs.key -out institucija.ac.rs.crt -days 3650
Generating a RSA private key
.............................................................................................................................................................................................................................................................................++++
..................................................................++++
writing new private key to 'institucija.ac.rs.key'
-----
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
-----
Country Name (2 letter code) [AU]:RS
State or Province Name (full name) [Some-State]:Klik ENTER
Locality Name (eg, city) []:Belgrade
Organization Name (eg, company) [Internet Widgits Pty Ltd]:Naziv institucije
Organizational Unit Name (eg, section) []: Klik ENTER
Common Name (e.g. server FQDN or YOUR name) []: ldap.institucija.ac.rs
Email Address []:Klik ENTER
  • Napomena kod dela Common Name (eg, your name or your server's hostname) []: ubavezno upisati domen VM.

Promeniti vlasništvo sertifikata i ključa:

chown openldap:openldap /etc/ldap/institucija.ac.rs.crt
chown openldap:openldap /etc/ldap/institucija.ac.rs.key

Omogućiti SSL editovanjem fajla /etc/ldap/ldap.conf:

  • Napomena: Umesto dela institucija.ac.rs.crt unosi se naziv sertifikata koji ste kreirali u prethodnim koracima.
sed -i "s/TLS_CACERT.*/TLS_CACERT\t\/etc\/ldap\/institucija.ac.rs.crt/g" /etc/ldap/ldap.conf
chown openldap:openldap /etc/ldap/ldap.conf
systemctl restart slapd

Kreirati radni direktorijum (/etc/ldap/scratch) u koji će se smeštati fajlovi sa konfiguracijom:

mkdir /etc/ldap/scratch

Preuzeti fajl olcTLS.ldif

wget https://docs.amres.ac.rs/download/ldap/debian/olcTLS.ldif -O /etc/ldap/scratch/olcTLS.ldif
vim /etc/ldap/scratch/olcTLS.ldif

Modifikovati označene linije tako da se unese putanja i naziv kreiranog sertifikata i privatnog ključa:

dn: cn=config
changetype: modify
replace: olcTLSCACertificateFile
olcTLSCACertificateFile: /etc/ldap/institucija.ac.rs.crt
-
replace: olcTLSCertificateFile
olcTLSCertificateFile: /etc/ldap/institucija.ac.rs.crt
-
replace: olcTLSCertificateKeyFile
olcTLSCertificateKeyFile: /etc/ldap/institucija.ac.rs.key

Fajl sa ovom konfiguraciom se unosi komandom:

ldapmodify -Y EXTERNAL -H ldapi:/// -f /etc/ldap/scratch/olcTLS.ldif

Nakon uspešno izvršene komande prikazaće se sledeći izveštaj:

SASL/EXTERNAL authentication started
SASL username: gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth
SASL SSF: 0
modifying entry "cn=config"

Import LDAP šema

Potrebno je uneti inicijalne šeme koristeći sledeće komande:

ldapadd -Y EXTERNAL -H ldapi:/// -f /etc/ldap/schema/ppolicy.ldif
ldapadd -Y EXTERNAL -H ldapi:/// -f /etc/ldap/schema/openldap.ldif
ldapadd -Y EXTERNAL -H ldapi:/// -f /etc/ldap/schema/dyngroup.ldif
Izveštaj o uspešnom unosu šema u konfiguraciju
root@ldap:~# ldapmodify -Y EXTERNAL -H ldapi:/// -f /etc/ldap/scratch/olcTLS.ldif
SASL/EXTERNAL authentication started
SASL username: gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth
SASL SSF: 0
modifying entry "cn=config"

root@ldap:~# ldapadd -Y EXTERNAL -H ldapi:/// -f /etc/ldap/schema/ppolicy.ldif
SASL/EXTERNAL authentication started
SASL username: gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth
SASL SSF: 0
adding new entry "cn=ppolicy,cn=schema,cn=config"

root@ldap:~# ldapadd -Y EXTERNAL -H ldapi:/// -f /etc/ldap/schema/openldap.ldif
SASL/EXTERNAL authentication started
SASL username: gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth
SASL SSF: 0
adding new entry "cn=openldap,cn=schema,cn=config"

root@ldap:~# ldapadd -Y EXTERNAL -H ldapi:/// -f /etc/ldap/schema/dyngroup.ldif
SASL/EXTERNAL authentication started
SASL username: gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth
SASL SSF: 0
adding new entry "cn=dyngroup,cn=schema,cn=config"

Napomena: Za verzije OS Ubuntu 22.04 i slapd 2.5+ ppolicy.ldif šema ne postoji, već je sadržana u ppolicy Overlay komponenti, pa je potrebno kreirati i uneti sledeća dva fajla (za slapd verziju 2.4.x potrebno je ručno dodati ppolicy.ldif fajl):

  • load-ppolicy.ldif

    dn: cn=module{0},cn=config
    changetype: modify
    add: olcModuleLoad
    olcModuleLoad: ppolicy
    

    ldapadd -Y EXTERNAL -H ldapi:/// -f /etc/ldap/schema/load-ppolicy.ldif
    
Izveštaj o uspešnom unosu modula u konfiguraciju
SASL/EXTERNAL authentication started
SASL username: gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth
SASL SSF: 0
modifying entry "cn=module{0},cn=config"
  • overlady-ppolicy.ldif

    dn: olcOverlay={2}ppolicy,olcDatabase={1}mdb,cn=config
    objectClass: olcOverlayConfig
    objectClass: olcPPolicyConfig
    olcOverlay: {2}ppolicy
    olcPPolicyHashCleartext: TRUE
    

    ldapadd -Y EXTERNAL -H ldapi:/// -f /etc/ldap/schema/overlady-ppolicy.ldif
    
Izveštaj o uspešnom unosu modula u konfiguraciju
SASL/EXTERNAL authentication started
SASL username: gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth
SASL SSF: 0
adding new entry "olcOverlay={2}ppolicy,olcDatabase={1}mdb,cn=config"

Proveriti dodate komponente:

slapcat -n 0 | grep olcModuleLoad
slapcat -n 0 | grep olcOverlay

Pored šema koje su do sada unete u konfiguraciju, potrebno je preuzeti i koristiti dodatne šeme:

  • eduperson.ldif,
  • schac.ldif,
  • eduorg.ldif,
  • edumember.ldif i
  • rsEdu.ldif
wget https://docs.amres.ac.rs/download/ldap/edumember.ldif -O /etc/ldap/schema/edumember.ldif
wget https://docs.amres.ac.rs/download/ldap/eduorg.ldif -O /etc/ldap/schema/eduorg.ldif
wget https://docs.amres.ac.rs/download/ldap/eduperson.ldif -O /etc/ldap/schema/eduperson.ldif
wget https://docs.amres.ac.rs/download/ldap/schac.ldif -O /etc/ldap/schema/schac.ldif
wget https://docs.amres.ac.rs/download/ldap/rsEdu.ldif -O /etc/ldap/schema/rsEdu.ldif
ldapadd -Y EXTERNAL -H ldapi:/// -f /etc/ldap/schema/eduperson.ldif
ldapadd -Y EXTERNAL -H ldapi:/// -f /etc/ldap/schema/schac.ldif
ldapadd -Y EXTERNAL -H ldapi:/// -f /etc/ldap/schema/eduorg.ldif
ldapadd -Y EXTERNAL -H ldapi:/// -f /etc/ldap/schema/edumember.ldif
ldapadd -Y EXTERNAL -H ldapi:/// -f /etc/ldap/schema/rsEdu.ldif
Izveštaj o uspešnom unosu šema u konfiguraciju
root@ldap:~# ldapadd -Y EXTERNAL -H ldapi:/// -f /etc/ldap/schema/eduperson.ldif
SASL/EXTERNAL authentication started
SASL username: gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth
SASL SSF: 0
adding new entry "cn=eduperson,cn=schema,cn=config"

root@ldap:~# ldapadd -Y EXTERNAL -H ldapi:/// -f /etc/ldap/schema/schac.ldif
SASL/EXTERNAL authentication started
SASL username: gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth
SASL SSF: 0
adding new entry "cn=schac,cn=schema,cn=config"

root@ldap:~# ldapadd -Y EXTERNAL -H ldapi:/// -f /etc/ldap/schema/eduorg.ldif
SASL/EXTERNAL authentication started
SASL username: gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth
SASL SSF: 0
adding new entry "cn=eduorg,cn=schema,cn=config"

root@ldap:~# ldapadd -Y EXTERNAL -H ldapi:/// -f /etc/ldap/schema/edumember.ldif
SASL/EXTERNAL authentication started
SASL username: gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth
SASL SSF: 0
adding new entry "cn=edumember,cn=schema,cn=config"

root@ldap:~# ldapadd -Y EXTERNAL -H ldapi:/// -f /etc/ldap/schema/rsEdu.ldif
SASL/EXTERNAL authentication started
SASL username: gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth
SASL SSF: 0
adding new entry "cn=rsEdu,cn=schema,cn=config"
Provera unesenih šema u konfiguraciju baze
ldapsearch -Y EXTERNAL -H ldapi:/// -b cn=schema,cn=config dn

Izveštaj:

SASL/EXTERNAL authentication started
SASL username: gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth
SASL SSF: 0
# extended LDIF
#
# LDAPv3
# base <cn=schema,cn=config> with scope subtree
# filter: (objectclass=*)
# requesting: dn
#

# schema, config
dn: cn=schema,cn=config

# {0}core, schema, config
dn: cn={0}core,cn=schema,cn=config

# {1}cosine, schema, config
dn: cn={1}cosine,cn=schema,cn=config

# {2}nis, schema, config
dn: cn={2}nis,cn=schema,cn=config

# {3}inetorgperson, schema, config
dn: cn={3}inetorgperson,cn=schema,cn=config

# {4}ppolicy, schema, config
dn: cn={4}ppolicy,cn=schema,cn=config

# {5}openldap, schema, config
dn: cn={5}openldap,cn=schema,cn=config

# {6}dyngroup, schema, config
dn: cn={6}dyngroup,cn=schema,cn=config

# {7}eduperson, schema, config
dn: cn={7}eduperson,cn=schema,cn=config

# {8}schac, schema, config
dn: cn={8}schac,cn=schema,cn=config

# {9}eduorg, schema, config
dn: cn={9}eduorg,cn=schema,cn=config

# {10}edumember, schema, config
dn: cn={10}edumember,cn=schema,cn=config

# {11}rsEdu, schema, config
dn: cn={11}rsEdu,cn=schema,cn=config

# search result
search: 2
result: 0 Success

# numResponses: 14
# numEntries: 13

Kreiranje organizacionih jedinica u okviru baze podataka

Izabrati neki od ponuđenih principa:

Princip 1

Ovaj princip se koristi ukoliko planirate da korisničke naloge zaposlenih i učenika/studenata smestite u istu organizacionu jedinicu ili nije potrebno da unosite korisničke naloge učenika/studenata uopšte.

Preuzeti fajl add_ou1.ldif i izmeniti Suffix-a baze (dc=institucija,dc=ac,dc=rs).

Rezultat je kreiranje organizacionih jedinica people, groups i system:

wget https://docs.amres.ac.rs/download/ldap/add_ou1.ldif -O /etc/ldap/scratch/add_ou.ldif
vim /etc/ldap/scratch/add_ou.ldif
dn: ou=people,dc=institucija,dc=ac,dc=rs
objectClass: organizationalUnit
objectClass: top
ou: People

dn: ou=groups,dc=institucija,dc=ac,dc=rs
objectClass: organizationalUnit
objectClass: top
ou: Groups

dn: ou=system,dc=institucija,dc=ac,dc=rs
objectClass: organizationalUnit
objectClass: top
ou: System
  • Nakon što se se opredelili za princip koji ćete koristiti preuzet i izmenjen fajl add_ou.ldif uneti u konfiguraciju:

  • Napomena: Umesto dela cn=admin,dc=institucija,dc=ac,dc=rs unosi se DN administatora kog ste kreirali u prethodnim koracima.

ldapadd -W -D "cn=admin,dc=institucija,dc=ac,dc=rs" -H ldapi:/// -f /etc/ldap/scratch/add_ou.ldif
  • Napomena: Komanda traži unos administratorske lozinke u običnom formatu
[root@ldap ~]# ldapadd -W -D "cn=admin,dc=institucija,dc=ac,dc=rs" -H ldapi:/// -f /etc/ldap/scratch/add_ou.ldif
Enter LDAP Password: testpass123
  • Nakon uspešno izvršene komande prikazaće se sledeći izveštaj:
adding new entry "ou=people,dc=institucija,dc=ac,dc=rs"

adding new entry "ou=groups,dc=institucija,dc=ac,dc=rs"

adding new entry "ou=system,dc=institucija,dc=ac,dc=rs"

Princip 2

Ovaj princip se koristi ukoliko planirate da razdvojite korisničke naloge zaposlenih i učenika/studenata.

Preuzeti fajl add_ou2.ldif i izmeniti Suffix-a baze (dc=institucija,dc=ac,dc=rs).

Rezultat je kreiranje organizacionih jedinica staff, students, groups i system.

wget https://docs.amres.ac.rs/download/ldap/add_ou2.ldif -O /etc/ldap/scratch/add_ou.ldif
vim /etc/ldap/scratch/add_ou.ldif
dn: ou=staff,dc=institucija,dc=ac,dc=rs
objectClass: organizationalUnit
objectClass: top
ou: Staff

dn: ou=students,dc=institucija,dc=ac,dc=rs
objectClass: organizationalUnit
objectClass: top
ou: Students

dn: ou=groups,dc=institucija,dc=ac,dc=rs
objectClass: organizationalUnit
objectClass: top
ou: Groups

dn: ou=system,dc=institucija,dc=ac,dc=rs
objectClass: organizationalUnit
objectClass: top
ou: System
  • Nakon što se se opredelili za princip koji ćete koristiti preuzet i izmenjen fajl add_ou.ldif uneti u konfiguraciju:

  • Napomena: Umesto dela cn=admin,dc=institucija,dc=ac,dc=rs unosi se DN administatora kog ste kreirali u prethodnim koracima.

ldapadd -W -D "cn=admin,dc=institucija,dc=ac,dc=rs" -H ldapi:/// -f /etc/ldap/scratch/add_ou.ldif
  • Napomena: Komanda traži unos administratorske lozinke u običnom formatu
[root@ldap ~]# ldapadd -W -D "cn=admin,dc=institucija,dc=ac,dc=rs" -H ldapi:/// -f /etc/ldap/scratch/add_ou.ldif
Enter LDAP Password: testpass123
  • Nakon uspešno izvršene komande prikazaće se sledeći izveštaj:
adding new entry "ou=staff,dc=institucija,dc=ac,dc=rs"

adding new entry "ou=students,dc=institucija,dc=ac,dc=rs"

adding new entry "ou=groups,dc=institucija,dc=ac,dc=rs"

adding new entry "ou=system,dc=institucija,dc=ac,dc=rs"

Kreiranje enkriptovane (nečitljive) lozinke

Veoma je važno da kada se kreira sistemski ili korisnički nalog u bazi njegova lozinka bude u enkriptovanom formatu

U sledećim koracima uputstva biće prikazan postupak kreiranja sistemskog i korisničkog naloga. Prilikom popunjavanja podataka posebno obratiti pažnju na to da lozinke treba uneti u enkriptovanom obliku.

Kreirati enkriptovanu lozinku za korisnika baze sledećom komandom:

slappasswd
  • New password: UNETI_PROIZVOLJNU_LOZINKU

  • Re-enter new password: PONOVITI_UNOS_PROIZVOLJNE_LOZINKE

[root@ldap ~]# slappasswd
New password: testpass123
Re-enter new password: testpass123
{SSHA}HaiiVdcjomZsoehlWZ9aKfH0hUWudgRA

Unesena lozinka će se ispisati u enkriptovanom formatu

Na primer: {SSHA}HaiiVdcjomZsoehlWZ9aKfH0hUWudgRA

Dobijenu enkriptovanu lozinku je potrebno sačuvati, biće neophodna u daljem procesu kreiranja korisnika!

Kreiranje sistemskog naloga

Ovaj nalog će dobiti funkciju monitoringa u bazi.

Preuzeti fajl add_idpuser.ldif.

  • Izmeniti DN naloga koji se kreira tako da mu Suffix baze bude odgovarajući (dc=institucija,dc=ac,dc=rs)

  • Umesto dela {SSHA}nk8A/+uFK**************** unosi se lozinka u enkriptovanom formatu

wget https://docs.amres.ac.rs/download/ldap/add_idpuser.ldif -O /etc/ldap/scratch/add_idpuser.ldif
vim /etc/ldap/scratch/add_idpuser.ldif
1
2
3
4
5
6
7
dn: cn=idpuser,ou=system,dc=institucija,dc=ac,dc=rs
objectClass: organizationalPerson
objectClass: person
objectClass: top
cn: idpuser
sn: idpuser
userPassword: {SSHA}nk8A/+uFK****************
  • Napomena: Umesto dela cn=admin,dc=institucija,dc=ac,dc=rs unosi se DN administatora kog ste kreirali u prethodnim koracima.
ldapadd -W -D "cn=admin,dc=institucija,dc=ac,dc=rs" -H ldapi:/// -f /etc/ldap/scratch/add_idpuser.ldif
  • Napomena: Komanda traži unos administratorske lozinke u običnom (plain text) formatu.
[root@ldap ~]# ldapadd -W -D "cn=admin,dc=institucija,dc=ac,dc=rs" -H ldapi:/// -f /etc/ldap/scratch/add_idpuser.ldif
Enter LDAP Password: testpass123
  • Nakon uspešno izvršene komande prikazaće se sledeći izveštaj:
adding new entry "cn=idpuser,ou=system,dc=institucija,dc=ac,dc=rs"

Konfiguracija liste za kontrolu pristupa

Preuzeti fajl olcAcl.ldif

wget https://docs.amres.ac.rs/download/ldap/debian/olcAcl.ldif -O /etc/ldap/scratch/olcAcl.ldif
  • Umesto dela cn=admin,dc=institucija,dc=ac,dc=rs unosi se DN administatora kog ste kreirali u prethodnim koracima.
  • Umesto dela cn=idpuser,ou=system,dc=institucija,dc=ac,dc=rs unosi se DN sistemskog naloga kog ste kreirali u prethodnim koracima.
vim /etc/ldap/scratch/olcAcl.ldif
1
2
3
4
5
6
7
8
dn: olcDatabase={1}mdb,cn=config
changeType: modify
replace: olcAccess
olcAccess: {0}to * by dn.exact=gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth manage by * break
olcAccess: {1}to attrs=userPassword by self write by anonymous auth by dn="cn=admin,dc=institucija,dc=ac,dc=rs" write by * none
olcAccess: {2}to dn.base="" by anonymous auth by * read
olcAccess: {3}to dn.base="cn=Subschema" by * read
olcAccess: {4}to * by dn.exact="cn=idpuser,ou=system,dc=institucija,dc=ac,dc=rs" read by anonymous auth by self read
ldapadd  -Y EXTERNAL -H ldapi:/// -f /etc/ldap/scratch/olcAcl.ldif
  • Nakon uspešno izvršene komande prikazaće se sledeći izveštaj:
SASL/EXTERNAL authentication started
SASL username: gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth
SASL SSF: 0
modifying entry "olcDatabase={1}mdb,cn=config"
  • Napomena: Ukoliko vam je potrebna konsultacija oko specifičnije liste za kontrolu pristupa kontaktirajte nas na imejl adresu helpdesk@amres.ac.rs.

Moduli

memberof

wget https://docs.amres.ac.rs/download/ldap/debian/add_memberof.ldif -O /etc/ldap/scratch/add_memberof.ldif
ldapadd -Q -Y EXTERNAL -H ldapi:/// -f /etc/ldap/scratch/add_memberof.ldif
Nakon uspešno izvršene komande prikazaće se sledeći izveštaj
adding new entry "cn=module,cn=config"

adding new entry "olcOverlay={0}memberof,olcDatabase={1}mdb,cn=config"

unique

Uvoz i korišćenje ovog modula osigurava unikatnu vrednost određenog atributa u bazi.

wget https://docs.amres.ac.rs/download/ldap/debian/add_unique.ldif -O /etc/ldap/scratch/add_unique.ldif
ldapmodify -Y EXTERNAL -H ldapi:/// -f /etc/ldap/scratch/add_unique.ldif
Nakon uspešno izvršene komande prikazaće se sledeći izveštaj
SASL/EXTERNAL authentication started
SASL username: gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth
SASL SSF: 0
modifying entry "cn=module{0},cn=config"

Ovaj modul se koristi sa ciljem da se osigura unikatna vrednost uid atributa, definisanjem dela:

olcUniqueAttribute: uid

wget https://docs.amres.ac.rs/download/ldap/debian/add_unique1.ldif -O /etc/ldap/scratch/add_unique1.ldif
ldapadd -Y EXTERNAL -H ldapi:/// -f /etc/ldap/scratch/add_unique1.ldif
Nakon uspešno izvršene komande prikazaće se sledeći izveštaj
SASL/EXTERNAL authentication started
SASL username: gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth
SASL SSF: 0
adding new entry "olcOverlay=unique,olcDatabase={1}mdb,cn=config"

Poboljšanje performansi baze

wget https://docs.amres.ac.rs/download/ldap/debian/olcDbIndex.ldif -O /etc/ldap/scratch/olcDbIndex.ldif
ldapmodify -Y EXTERNAL -H ldapi:/// -f /etc/ldap/scratch/olcDbIndex.ldif
Nakon uspešno izvršene komande prikazaće se sledeći izveštaj
SASL/EXTERNAL authentication started
SASL username: gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth
SASL SSF: 0
modifying entry "olcDatabase={1}mdb,cn=config"
wget https://docs.amres.ac.rs/download/ldap/debian/olcSizeLimit.ldif -O /etc/ldap/scratch/olcSizeLimit.ldif
ldapmodify -Y EXTERNAL -H ldapi:/// -f /etc/ldap/scratch/olcSizeLimit.ldif
Nakon uspešno izvršene komande prikazaće se sledeći izveštaj
SASL/EXTERNAL authentication started
SASL username: gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth
SASL SSF: 0
modifying entry "cn=config"

modifying entry "olcDatabase={-1}frontend,cn=config"

Logovi

mkdir /var/log/slapd

Napomena: Za verzije OS Ubuntu 22.04 i slapd 2.5+ potrebno je ručno kreirati slapd.log fajl:

touch /var/log/slapd/slapd.log
chown syslog:adm /var/log/slapd/slapd.log

wget https://docs.amres.ac.rs/download/ldap/debian/99-slapd.conf -O /etc/rsyslog.d/99-slapd.conf
wget https://docs.amres.ac.rs/download/ldap/debian/olcLogLevelStats.ldif -O /etc/ldap/scratch/olcLogLevelStats.ldif
ldapmodify -Y EXTERNAL -H ldapi:/// -f /etc/ldap/scratch/olcLogLevelStats.ldif
Nakon uspešno izvršene komande prikazaće se sledeći izveštaj
SASL/EXTERNAL authentication started
SASL username: gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth
SASL SSF: 0
modifying entry "cn=config"
systemctl restart rsyslog
systemctl restart slapd

Dodavanje korisničkog naloga

Preuzeti fajl user1.ldif:

wget https://docs.amres.ac.rs/download/ldap/user1.ldif -O /etc/ldap/scratch/user1.ldif

Otvoriti fajl i izvršiti potrebne izmene:

vim /etc/ldap/scratch/user1.ldif
dn: uid=user1,ou=people,dc=institucija,dc=ac,dc=rs
changetype: add
objectClass: rsEduPerson
objectClass: top
cn: Ime Prezime
eduPersonPrincipalName: user1@institucija.ac.rs
givenName: Ime
o: Naziv institucije
rsEduPersonAffiliation: zaposleni
rsEduPersonScopedAffiliation: zaposleni@institucija.ac.rs
sn: Prezime
userPassword: {SSHA}nk8A/+uFKfDb1OhaYmPUFlQmWwcdtNF4
displayName: Ime Prezime
mail: test.user1@gmail.com
rsEduPersonUniqueNumber:

Voditi računa o dn podatku korisnika, tu se specificira njegovo korisničko ime (uid), a takođe i organizaciona jedinica (ou=people) u kojoj će biti smešten.

  • Ukoliko ste koristili Princip 2 i kreirali organizacione jedinice ou=staff i ou=students, korisnike je potrebno da smestite u te organizacione jedinice njihovim specificiranjem u okviru dn podatka korisnika.

Napomene:

  • Objekt klase koji se koristi je rsEduPerson jer pruža kreiranje standardizovanog seta atributa potrebnog za ostvarivanje digitalnog ideniteta u Akademskoj mreži Republike Srbije.
  • Atribut uid predstavlja Jedinstveni ID osobe, koji se koristi kao korisničko ime
  • Atribut cn predstavlja ime i prezime korisnika
  • Atribut eduPersonPrincipalName predstavlja Jedinstveni ID osobe uz sinaksu : <uid>@<domen_institucije>, npr. petar@institucija.ac.rs
  • Atribut givenName predstavlja ime korisnika
  • Atribut o predstavlja naziv institucije
  • Atribut rsEduPersonAffiliation definiše način na koji je osoba povezana sa institucijom (moguće vrednosti su: student, učenik, nastavni kadar, zaposleni, spoljni saradnik, korisnik usluge, gost)
  • Atribut rsEduPersonScopedAffiliation definiše način na koji je osoba povezana sa institucijom uz sintaksu: <rsEduPersonAffiliation>@<domen_institucije>, npr. zaposleni@institucija.ac.rs
  • Atribut sn predstavlja prezime korisnika
  • Atribut userPassword predstavlja korisničku lozinku u enkriptovanom (nečitljivom) formatu
  • Atribut displayName predstavlja ime i prezime korisnika
  • Atribut mail predstavlja imejl adresu korisnika
  • Atribut rsEduPersonUniqueNumber predstavlja jedinstveni, zvanično dodeljen, nacionalni brojni identifikator osobe.
  • eduPersonEntitlement je specijalna vrsta atributa koji se koristi za autorizaciju. Može se koristiti da bi se utvrdilo da li korisnik ima pravo da koristi određeni servis.
  • rsEduPersonLocalNumber je lokalni brojni identifikator osobe, npr. za studenta broj studenta ili za zaposlenog broj zaposlenog.

Više o navedenim atributima možete da pročitate u:

Nakon što su uneti svi traženi podaci o korisniku, korisnički nalog se unosi u konfiguraciju komandom:

ldapadd -Y EXTERNAL -H ldapi:/// -f /etc/ldap/scratch/user1.ldif

Dodavanje test eduroam naloga za monitoring (ukoliko postajete članica AMRES eduroam servisa)

Preuzeti fajl testuser.ldif:

wget https://docs.amres.ac.rs/download/ldap/testuser.ldif -O /etc/ldap/scratch/testuser.ldif

Otvoriti fajl i izvršiti potrebne izmene:

vim /etc/ldap/scratch/testuser.ldif
dn: uid=testuser,ou=people,dc=institucija,dc=ac,dc=rs
changetype: add
objectClass: rsEduPerson
objectClass: top
cn: Test Nalog
eduPersonPrincipalName: testuser@institucija.ac.rs
givenName: Test
o: Naziv institucije
rsEduPersonAffiliation: zaposleni
rsEduPersonScopedAffiliation: zaposleni@institucija.ac.rs
sn: Nalog
userPassword: {SSHA}nk8A/+uFK***************
displayName: Test Nalog
mail: admin.mail@gmail.com

Kod popunjavanja podataka o test korisniku posebno voditi računa o atributima eduPersonPrincipalName i rsEduPersonScopedAffiliation koji se sastoje od domena institucije, a ne hostname podatka VM! Takođe korisnička lozinka treba biti uneta u enkriptovanom formatu, a postupak enkripcije je dat u prethodnim koracima

Potrebno je izmeniti podatke za sledeće atribute:

  • Atribut eduPersonPrincipalName predstavlja Jedinstveni ID osobe uz sinaksu : <uid>@<domen_institucije>, npr. petar@institucija.ac.rs
  • Atribut o predstavlja naziv institucije
  • Atribut rsEduPersonScopedAffiliation definiše način na koji je osoba povezana sa institucijom uz sintaksu: <rsEduPersonAffiliation>@<domen_institucije>, npr zaposleni@institucija.ac.rs
  • Atribut userPassword predstavlja korisničku lozinku u enkriptovanom (nečitljivom) formatu
  • Atribut mail predstavlja imejl adresu administrativnog kontakta institucije

Nakon što su uneti svi traženi podaci o test korisniku, nalog se unosi u konfiguraciju komandom:

ldapadd -Y EXTERNAL -H ldapi:/// -f /etc/ldap/scratch/testuser.ldif
Nakon uspešno izvršene komande prikazaće se sledeći izveštaj
SASL/EXTERNAL authentication started
SASL username: gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth
SASL SSF: 0
adding new entry "uid=testuser.ldif,ou=people,dc=institucija,dc=ac,dc=rs"

Dodavanje većeg broja naloga iz komandne linije

Preuzeti fajl nekoliko_usera.ldif:

wget https://docs.amres.ac.rs/download/ldap/nekoliko_usera.ldif -O /etc/openldap/scratch/nekoliko_usera.ldif

Otvoriti fajl i izvršiti potrebne izmene:

vim /etc/openldap/scratch/nekoliko_usera.ldif
dn: uid=user2,ou=people,dc=institucija,dc=ac,dc=rs
changetype: add
objectClass: rsEduPerson
objectClass: top
cn: Ime Prezime
eduPersonPrincipalName: user2@institucija.ac.rs
givenName: Ime
o: Naziv institucije
rsEduPersonAffiliation: zaposleni
rsEduPersonScopedAffiliation: zaposleni@institucija.ac.rs
sn: Prezime
userPassword: {SSHA}nk8A/+uFK***************
displayName: Ime Prezime
mail: user2@gmail.com
rsEduPersonUniqueNumber:

dn: uid=user3,ou=people,dc=institucija,dc=ac,dc=rs
changetype: add
objectClass: rsEduPerson
objectClass: top
cn: Ime Prezime
eduPersonPrincipalName: user3@institucija.ac.rs
givenName: Ime
o: Naziv institucije
rsEduPersonAffiliation: zaposleni
rsEduPersonScopedAffiliation: zaposleni@institucija.ac.rs
sn: Prezime
userPassword: {SSHA}nk8A/+uFK***************
displayName: Ime Prezime
mail: user3@gmail.com
rsEduPersonUniqueNumber:

dn: uid=user4,ou=people,dc=institucija,dc=ac,dc=rs
changetype: add
objectClass: rsEduPerson
objectClass: top
cn: Ime Prezime
eduPersonPrincipalName: user4@institucija.ac.rs
givenName: Ime
o: Naziv institucije
rsEduPersonAffiliation: zaposleni
rsEduPersonScopedAffiliation: zaposleni@institucija.ac.rs
sn: Prezime
userPassword: {SSHA}nk8A/+uFK***************
displayName: Ime Prezime
mail: user4@gmail.com
rsEduPersonUniqueNumber:

Kod popunjavanja podataka o korisniku posebno voditi računa o atributima eduPersonPrincipalName i rsEduPersonScopedAffiliation koji se sastoje od domena institucije, a ne hostname podatka VM! Takođe korisnička lozinka treba biti uneta u enkriptovanom formatu, a postupak enkripcije je dat u prethodnim koracima

Napomene:

  • Objekt klase koji se koristi je rsEduPerson jer pruža kreiranje standardizovanog seta atributa potrebnog za ostvarivanje digitalnog ideniteta u Akademskoj mreži Republike Srbije.
  • Atribut uid predstavlja Jedinstveni ID osobe, koji se koristi kao korisničko ime
  • Atribut cn predstavlja ime i prezime korisnika
  • Atribut eduPersonPrincipalName predstavlja Jedinstveni ID osobe uz sinaksu : <uid>@<domen_institucije>, npr. petar@institucija.ac.rs
  • Atribut givenName predstavlja ime korisnika
  • Atribut o predstavlja naziv institucije
  • Atribut rsEduPersonAffiliation definiše način na koji je osoba povezana sa institucijom (moguće vrednosti su: student, učenik, nastavni kadar, zaposleni, spoljni saradnik, korisnik usluge, gost)
  • Atribut rsEduPersonScopedAffiliation definiše način na koji je osoba povezana sa institucijom uz sintaksu: <rsEduPersonAffiliation>@<domen_institucije>, npr zaposleni@institucija.ac.rs
  • Atribut sn predstavlja prezime korisnika
  • Atribut userPassword predstavlja korisničku lozinku u enkriptovanom (nečitljivom) formatu
  • Atribut displayName predstavlja ime i prezime korisnika
  • Atribut mail predstavlja imejl adresu korisnika
  • Atribut rsEduPersonUniqueNumber predstavlja jedinstveni, zvanično dodeljen, nacionalni brojni identifikator osobe.
  • eduPersonEntitlement je specijalna vrsta atributa koji se koristi za autorizaciju. Može se koristiti da bi se utvrdilo da li korisnik ima pravo da koristi određeni servis.
  • rsEduPersonLocalNumber je lokalni brojni identifikator osobe, npr. za studenta broj studenta ili za zaposlenog broj zaposlenog.

Više o navedenim atributima možete da pročitate u:

Nakon što su uneti svi traženi podaci o korisnicima, korisnički nalozi se unose u konfiguraciju komandom:

  • Napomena: Umesto dela cn=admin,dc=institucija,dc=ac,dc=rs unosi se DN administatora kog ste kreirali u prethodnim koracima.
ldapadd -Y EXTERNAL -H ldapi:/// -f /etc/ldap/scratch/nekoliko_usera.ldif

Onemogućiti anonimno prijavljivanje

ldapwhoami -H ldap:// -x -ZZ

Ukoliko je rezultat komande: anonymous treba onemogućiti anonimno uspostavljanje veze sa bazom podataka.

wget https://docs.amres.ac.rs/download/ldap/debian/disableAnonymousBind.ldif -O /etc/ldap/scratch/disableAnonymousBind.ldif
ldapmodify -Y EXTERNAL -H ldapi:/// -f /etc/ldap/scratch/disableAnonymousBind.ldif
Nakon uspešno izvršene komande prikazaće se sledeći izveštaj
SASL/EXTERNAL authentication started
SASL username: gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth
SASL SSF: 0
modifying entry "cn=config"

modifying entry "olcDatabase={-1}frontend,cn=config"

Ponovna provera

[root@ldap ~]# ldapwhoami -H ldap:// -x -ZZ
ldap_bind: Inappropriate authentication (48)
additional info: anonymous bind disallowed

Pregled kreirane OpenLDAP baze podataka

Ovim postupkom OpenLDAP baza je uspešno instalirana i konfigurisana.

Apache Directory Studio softver

  • Sa navedenih linkova možete da preuzmete Apache Directory Studio softver, u zavisnosti od operativnog sistema na kom se instalira.

Apache Directory Studio softver za Linux OS: https://directory.apache.org/studio/download/download-linux.html

Apache Directory Studio softver za Windows OS: https://directory.apache.org/studio/download/download-windows.html

Apache Directory Studio softver za MAC OS: https://directory.apache.org/studio/download/download-macosx.html

Povezivanje Apache Directory Studio aplikacije sa kreiranom LDAP bazom

Za kreiranje konekcije sa OpenLDAP bazom, potrebno je da se klikne na polje New Connection:

Otvaranje nove konekcije, korak 1

Otvaranje nove konekcije, korak 1

U sledećem koraku, dati naziv konekcije, uneti IP adresa virtuelne mašine na kojoj se nalazi OpenLDAP baza i port 389 kao port za komunikaciju. Zatim klik na Next.

Otvaranje nove konekcije, korak 2

Otvaranje nove konekcije, korak 2

Sledeći korak je unos DN-a administratora baze (npr. cn=admin,dc=institucija,dc=ac,dc=rs) i njegove odgovarajuće lozinke:

Otvaranje nove konekcije, korak 3

Otvaranje nove konekcije, korak 3

Prikaz formirane OpenLDAP baze u okviru aplikacije Apache Directory Studio:

Otvaranje nove konekcije, korak 4

Otvaranje nove konekcije, korak 4