Openldap ACL ve Replication

Openldap ACL ve Replication

Openldap ACL ve Replication

Openldap kurulu bir sistemde ldap erişim denetimi ve ldap replication ile ilgili temel uygulamar.

slapd.conf (temel dosya)

 

loglevel -1

modulepath /usr/local/libexec/openldap

moduleload back_bdb

 

database bdb

suffix dc=deneme,dc=com

rootdn cn=yonetici,dc=deneme,dc=com

rootpw deneme

directory /var/db/openldap-data

index objectclass,entryCSN,entryUUID eq

 

temel slapd.conf dosyamız bu şekilde ve aşağıdaki girdiler eklenmiş.

rootdn :

cn=yonetici,dc=deneme,dc=com

organizationalUnit

ou=users,dc=deneme,dc=com

ou=adresler,dc=deneme,dc=com

grup

cn=admin,dc=deneme,dc=com (GroupOfNames)

Şimdi öyle bir Access Control List oluşturalım ki. Ldap sunucuya erişebilen kullanıcılar diğerlerinin bilgilerini görmesin ve erişim izni olmayanlar da sorgulama yapamasın.

(users, qmail-ldap kullanıcılarının tanımlandığı ou dir. Aşağıdaki tanımlamalar slapd.conf dosyasının sonuna eklenebilir.)

access to attr=userPassword

by dn=”cn=yonetici,dc=deneme,dc=com” write

(Yönetici userPassword alanını değiştirebilir)

 

by self write

(Kullanıcı kendi parolasını değiştirebilir)

 

by * auth

(Geri kalanlar oturum açmak zorundadır. userPassword bilgisini okuyamaz ve yazamalar)

access to attr=mailHost

by dn=”cn=yonetici,dc=deneme,dc=com” write

(Milhost değerini yönetici değiştirebilir)

 

by self read

(Kullanıcı kendisi mailHost değerini değiştiremez, sadece görebilir)

 

by * auth

(Diğerleri okuyamaz ve yazamaz)

access to attr=ou

by dn=”cn=yonetici,dc=deneme,dc=com” write

by self read

by * auth

access to * (Tüm alanlar için.)

by dn=”cn=yonetici,dc=deneme,dc=com” write

(Yonetici tüm alanlarda yazma hakkında sahiptir)

by group.exact=”cn=admin,dc=deneme,dc=com” write

(Admin grubunda bulunan kullanıcılar tüm dn içinde yazma hakkına sahiptirler)

by users read

(Kullanıcılar bilgileri okuyabilir ancak yukarıda tanımladağımız access to attr= ile belirtilen alanları göremezler. Örneğim mailHost değerini sadece yonetici ve kullanıcının kendisi görebilir. Diğer oturum açmış kullanıcılar göremezler )

by self write (Kullanıcı kendisi ile ilgili alanları değiştirebilir)

by * auth

(Oturum açmamış misafir kullanıcılara erişim engelli.)

 

Openldap Replication.

Master server üzerindeki dataların slave servera replikasyonunu sağlamak için master servera aşağıdaki satırlar eklenmeli ve slave server için bir kullanıcı tanımlanmalıdır (person)

master server

…………….

 

loglevel -1

# Load dynamic backend modules:

modulepath /usr/local/libexec/openldap

moduleload back_bdb

# moduleload back_ldap

# moduleload back_ldbm

# moduleload back_passwd

# moduleload back_shell

# Sample security restrictions

# Require integrity protection (prevent hijacking)

# Require 112-bit (3DES or better) encryption for updates

# Require 63-bit encryption for simple bind

# security ssf=1 update_ssf=112 simple_bind=64

# Sample access control policy:

# Root DSE: allow anyone to read it

# Subschema (sub)entry DSE: allow anyone to read it

# Other DSEs:

# Allow self write access

# Allow authenticated users read access

# Allow anonymous users to authenticate

# Directives needed to implement policy:

#access to * by users write by users read by users compare by users search by self auth

# access to dn.base=”cn=Subschema” by * read

access to * by self write by users write by anonymous read

#

# if no access controls are present, the default policy

# allows anyone and everyone to read anything but restricts

# updates to rootdn. (e.g., “access to * by * read”)

#

# rootdn can always read and write EVERYTHING!

#######################################################################

# BDB database definitions

#######################################################################

database bdb

suffix dc=deneme,dc=com

rootdn cn=yonetici,dc=deneme,dc=com

# Cleartext passwords, especially for the rootdn, should

# be avoid. See slappasswd(8) and slapd.conf(5) for details.

# Use of strong authentication encouraged.

rootpw deneme

# Cleartext passwords, especially for the rootdn, should

# be avoid. See slappasswd(8) and slapd.conf(5) for details.

# Use of strong authentication encouraged.

# The database directory MUST exist prior to running slapd AND

# should only be accessible by the slapd and slap tools.

# Mode 700 recommended.

directory /var/db/openldap-data

# Indices to maintain

index objectclass,entryCSN,entryUUID eq

syncrepl rid=123

provider=ldap://192.168.2.6:389 (master ldap server adresi)

type=refreshAndPersist

interval=00:01:00:00 (replikasyon periyodu)

searchbase=”dc=deneme,dc=com” (base suffix)

chemachecking=off

bindmethod=simple

binddn=”cn=syn,dc=deneme,dc=com” (server üzerindeki replikasyon kullanıcısı)

credentials=syn (server üzerindeki rep. kullanıcı parolası)

Master sunucu üzerinde yapılan değişiklikler interval değeri kadar zamanda slave sunucuya/sunuculara aktarılacaktır.

Burada unutulmaması gereken husus slave sunucunun şu anda sadece okuma taleplerini desteklediğidir.

Eğer master sunucu erişilemez olursa slave sunucudaki sonradan eklediğimiz syncrepl rid ve alt değerlerini silersek sunucumuz master görevini üstlenecektir.

Slave sunucu replikasyon yapmıyorsa /var/log/ldap.log dosyasında ayrıntılı hata raporu alabilirsiniz. Sorun çıkması durumunda /var/db/openldap-data/ içindeki ldap verilerini yedekleyip silin. Slapd bu dosyaları tekrar master serverdan aldığı bilgilerle oluşturacaktır.

Eğer Master sunucuda Acl tanımlanmışsa cn=syn,dc=deneme,dc=com için de uygun haklar verilmelidir