ldap kurulumu

Hazırlanıyor …

önbilgi

TODO: GUNCELLE

LDAP Server

kurulum

İhtiyaç duyulan paketleri kuralım,

$ sudo apt-get install slapd ldap-utils migrationtools

slapd yi kofigüre edelim,

$ sudo dpkg-reconfigure slapd

Sorulara aşağıdaki yanıtları verelim,

Omit OpenLDAP server configuration? ... No
DNS domain name: ... debuntu.local
Name of your organization: ... Whatever & Co
Admin Password: XXXXX
Confirm Password: XXXXX
OK
BDB
Do you want your database to be removed when slapd is purged? ... No
Move old database? ... Yes
Allow LDAPv2 Protocol? ... No 

ön test

Basit bir şekilde debuntu.local domainindeki tüm kayıtlar,

$ ldapsearch -x -b dc=debuntu,dc=local

veya surnamei senyer olan kişinin mail ve street bilgisi

$ ldapsearch -x -b dc=debuntu,dc=local sn=senyer mail street

migrationtools

Üzerinde çalışmak için Linux makinedeki var olan grup/kullanıcı hesaplarını veritabanına koyalım. Bunun içib migrationtools dan yararlanacağız.

Önce ayar dosyasının olduğu dizine geçelim

$ cd /etc/migrationtools

bu dizindeki migrate_common.ph dosyada aşağıdaki değişiklikleri yapalım,

$DEFAULT_MAIL_DOMAIN = "debuntu.local";
$DEFAULT_BASE = "dc=debuntu,dc=local"; 

şimdi export yöntemiyle grup ve parolaları dosyaya çıkaralım

$ ./migrate_group.pl /etc/group ~/group.ldif
$ ./migrate_passwd.pl /etc/passwd ~/passwd.ldif 

Betikle yapılamayan Group ve People düğümü oluşturacak dosyayı üretelim. Bu dosya ~/people_group.ldif yolunda olacak ve içeriği aşağıdaki gibi olacak,

dn: ou=People, dc=debuntu, dc=local
ou: People
objectclass: organizationalUnit

dn: ou=Group, dc=debuntu, dc=local
ou: Group
objectclass: organizationalUnit 
Şimdi oluşturulan bu üç dosyayı (group passwd people_group.ldif) ldap veritabanına ekleyelim,
$ cd
$ ldapadd -x -W -D "cn=admin,dc=debuntu,dc=local" -f ~/people_group.ldif
$ ldapadd -x -W -D "cn=admin,dc=debuntu,dc=local" -f ~/group.ldif
$ ldapadd -x -W -D "cn=admin,dc=debuntu,dc=local" -f ~/passwd.ldif 

burada

-x: SASL kullanılmayacağı
-W: paswword isteği
-D admini seçme
-f verinin olduğu dosya için gereklidir

İstemci tarafı

Gerekli paketleri kuralım

$ sudo apt-get install libnss-ldap libpam-ldap nscd

Kurulum sırasında istenen sorulara aşağıdaki yanıtları verelim,

LDAP Account for root: cn=admin,dc=debuntu,dc=local
Password: XXXX
Make local root database admin: yes
Database require logging in: No
Root login account: cn=admin,dc=debuntu,dc=local
Root login password: XXXX

password isteğine LDAP_ADMIN_PASSWORD ile yanıt ver.

Aşağıdaki dosyaları oluşturalım,

  1. libnss-ldap.conf

     $ sudo cat - > /etc/libnss-ldap.conf
     host ldap
     base dc=debuntu,dc=local
     rootbinddn cn=admin,dc=debuntu,dc=local 
    

bu noktada host ldap satırının işlevsel olabilmesi için /etc/hosts dosyasına aşağıdaki satırı ekleyelim,

	192.168.56.101  ldap
  1. libnss-ldap.secret

     $ sudo cat - > /etc/libnss-ldap.secret
     LDAP_ADMIN_PASSWORD
    
  2. pam_ldap.conf

     $ sudo cat - > /etc/pam_ldap.conf
     host ldap
     base dc=debuntu,dc=local
     rootbinddn cn=admin,dc=debuntu,dc=local 
    
  3. pam_ldap.secret

     $ sudo cat - > /etc/pam_ldap.secret
     LDAP_ADMIN_PASSWORD
    
  4. /etc/pam.d/common-account

     account sufficient pam_ldap.so
     account required pam_unix.so
     #if you want user homedir to be created on first login
     #session required pam_mkhomedir.so umask=0022 skel=/etc/skel/ silent 
    
  5. /etc/pam.d/common-auth

     auth sufficient pam_ldap.so
     auth required pam_unix.so nullok_secure use_first_pass 
    
  6. /etc/pam.d/common-password

     password sufficient pam_ldap.so
     password required pam_unix.so nullok obscure min=4 max=8 md5 
    
  7. /etc/pam.d/common-session

     session sufficient pam_ldap.so
     session required pam_unix.so
     session optional pam_foreground.so
    
  8. /etc/nsswitch.conf

     passwd: files ldap
     group: files ldap
     shadow: files ldap 
    

python

Python ile LDAP sunucuya bağlanıp, sorgulama vs işlemleri yapmak mümkün bunun için python-ldap modülü kullanılır. Kurmak için

$ sudo apt-get install python-ldap

test

LDAP_HOST = 'localhost' ile çağırarak yerel makinede LDAP_HOST = '192.168.56.101' ile de uzaktaki sunucudan ldap a erişip, işlem yapmak mümkündür.

>>> import ldap
>>> LDAP_HOST = 'localhost' # '192.168.56.101'
>>> l = ldap.initialize('ldap://' + LDAP_HOST +':389')
>>> l.search_s('ou=People,dc=debuntu,dc=local',ldap.SCOPE_SUBTREE,'(uid=bin)',['cn'])
[('uid=bin,ou=People,dc=debuntu,dc=local', {'cn': ['bin']})]

php

Python a benzer olarak Php ile de ldap sunucuya yakından veya uzaktan bağlanıp işlem yapmak mümkündür,

http://gist.github.com/456454

<?php
ldap_set_option($ds, LDAP_OPT_PROTOCOL_VERSION, 3);
$LDAP_HOST = "localhost"; // "192.168.56.101"
$ds = ldap_connect($LDAP_HOST, "389");
$r = ldap_bind($ds, "cn=admin,dc=debuntu,dc=local", "secret");
$sr=ldap_search($ds, "ou=People,dc=debuntu,dc=local", "cn=*");
$info = ldap_get_entries($ds, $sr);

for ($i=0; $i<$info["count"]; $i++) {
	echo "dn is: " . $info[$i]["dn"] . "<br />";
	echo "first cn entry is: " . $info[$i]["cn"][0] . "<br />";
	echo "first uid entry is: " . $info[$i]["uid"][0] . "<br /><hr />";
}
ldap_close($ds);
?>

phpldapadmin

phpldapadmin in sağlamış olduğu GUI üzerinden erişmekte mümkündür. Kurulum için,

$ sudo apt-get install phpldapadmin

ayar

test zamanı

kaynaklar

GitHub'dayım