1) Sunucu Hostname Ayarları
İlk olarak, sunucunuzun hostname’ini (FQDN – Tam Nitelikli Alan Adı) ayarlamanız gerekiyor. Bu örnekte, sunucunun hostname’ini ldap.foxhound
ve IP adresini 192.168.1.20
olarak ayarlayacağız.
Aşağıdaki komutu root kullanıcısı olarak çalıştırın. ldap.foxhound
yerine kendi tercih ettiğiniz domain ve hostname’i yazabilirsiniz.
hostnamectl set-hostname ldap.foxhound
exec bash
Ardından, /etc/hosts
dosyasını sunucunun hostname'i ve IP adresi ile güncelleyin. Bu, ağ içinde hostname çözümlemesi yapabilmek için gereklidir.
echo '192.168.1.20 ldap.foxhound' >> /etc/hosts
Sunucunun hostname'ini pingleyerek doğru bir şekilde ayarlandığını kontrol edin.
ping -c 3 ldap.foxhound
2) OpenLDAP Paketlerinin Kurulumu
Bir sonraki adım, OpenLDAP paketlerini kurmaktır. Aşağıdaki komutu çalıştırarak OpenLDAP paketlerini yükleyin.
sudo apt install slapd ldap-utils -y
3) OpenLDAP Sunucusunun Yapılandırılması
sudo dpkg-reconfigure slapd
- Bu komut, terminalinizde bir dizi soru oluşturacaktır. İlk olarak, OpenLDAP sunucusu yapılandırmasını başlatmak için ilk soruda 'Omit OpenLDAP server configuration?'
No
seçeneğini seçin. - Ardından, DNS domain adını girin. Bu, LDAP dizininin temel DN'sini oluşturmak için kullanılacaktır. Bu örnekte,
foxhound.com
domain adını kullanacağız. Bu nedenle, DNdc=foxhound,dc=com
olarak temsil edilecektir.ENTER
tuşuna basın. - Daha sonra, organizasyonunuzun adını girin. Bu da temel DN'nin bir parçası olacaktır. Bu örnekte,
foxhound.com
domain adını kullanacağız. - LDAP dizini için yönetici şifresini girin ve
ENTER
tuşuna basın. - Şifreyi tekrar girerek onaylayın ve
ENTER
tuşuna basın. slapd
paketi kaldırıldığında veritabanının silinip silinmeyeceği sorulduğunda, ' Do you want the database to be removed when slapd is purged?'No
seçeneğini seçin.- Son olarak, eski veritabanını kaldırmak ve yeni bir veritabanı oluşturmak için 'Move old database'
Yes
seçeneğini seçin.
4) OpenLDAP Yapılandırma Dosyasının Düzenlenmesi
OpenLDAP ana yapılandırma dosyasında değişiklikler yapmanız gerekiyor. Dosyayı bir metin düzenleyici ile açın. Bu örnekte vim
kullanıyoruz.
sudo vim /etc/ldap/ldap.conf
BASE
ve URI
ile başlayan satırları bulun ve yorum satırı işaretlerini kaldırın. OpenLDAP sunucunuzun domain adını girin. Bu örnekte, BASE
dc=foxhound,dc=com
ve URI
ldap://ldap.foxhound
olacaktır.
BASE dc=foxhound,dc=com
URI ldap://ldap.foxhound
Değişiklikleri kaydedin ve dosyadan çıkın. Ardından, slapd
servisini yeniden başlatın ve durumunu kontrol edin.
systemctl restart slapd
systemctl status slapd
OpenLDAP temel yapılandırmasını doğrulamak için aşağıdaki komutu çalıştırın.
ldapsearch -Q -LLL -Y EXTERNAL -H ldapi:///
dn: dc=foxhound,dc=com
objectClass: top
objectClass: dcObject
objectClass: organization
o: foxhound.com
dc: foxhound
ou: groups
5) phpldapadmin Kurulumu
ilk önce .deb paktini indiriyoruz ve kuruyoruz.
wget https://launchpad.net/ubuntu/+archive/primary/+files/phpldapadmin_1.2.6.7-1_all.deb
sudo apt -y install apache2 php php-cgi libapache2-mod-php php-mbstring php-common php-pear
sudo dpkg -i phpldapadmin_1.2.6.7-1_all.deb
sudo apt --fix-broken install
Yapılandırma dosyasında yapılması gerekenler.
sudo vim /etc/phpldapadmin/config.php
...
$servers->setValue('server','name','FoxHound LDAP Server');
$servers->setValue('server','host','192.168.1.20');
$servers->setValue('server','base',array('dc=foxhound,dc=com'));
$servers->setValue('login','auth_type','session');
$servers->setValue('login','bind_id','cn=admin,dc=foxhound,dc=com');
...
config.php dosayasında bu bölümler de ki 'example' değerlerini sizin LDAP sunucu ayarlarına göre değiştirip apache server restartlamanız gerekmekte.
6) Apache Ayarları
normalde url 'http://192.168.1.20/phpldapadmin/' fakat redirect ederek direkt bu sayfanın gelmesini sağlacağız.
sudo vim /etc/apache2/sites-available/000-default.conf
RedirectMatch ^/$ /phpldapadmin/
değişikliklerin geçerli olabilmesi için apache servisini restartlıyoruz.
sudo systemctl restart apache2.service && sudo systemctl status apache2.service
'RedirectMatch ^/$ /phpldapadmin/' bu satırı ekledikten sonra sorunsuz bir şekilde snucu ip adresinden ulaşabilirsiniz.
7 ) Örnek Kullanıcı
ilk önce kullanıcılar ve grublar için alan oluşturuyoruz. Bunun için 'base-groups.ldif' adında bir dosya oluşturuyoruz ve aşşağıda ki içine kopyalıyoruz.
dn: ou=people,dc=foxhound,dc=com
objectClass: organizationalUnit
ou: people
dn: ou=groups,dc=foxhound,dc=com
objectClass: organizationalUnit
ou: groups
Ardından bunu 'ldapadd' komutu ile aktif ediyoruz.
ldapadd -x -D cn=admin,dc=foxhound,dc=com -W -f base-groups.ldif
Sysadmin grubu ve bigboss adında bir kullanıcı oluşturacağız. Bunun için 'create-sysadmin.ldif' adında bir dosya oluşturuyor ve aşşağıda ki komutları içine kopyalıyoruz.
Bu değişiklikleri aktif hale getirmek için 'ldapadd' komutunu kullanuyoruz.
ldapadd -x -D cn=admin,dc=foxhound,dc=com -W -f create-sysadmin.ldif
# sysadmin grubunu oluştur
dn: cn=sysadmin,ou=groups,dc=foxhound,dc=com
objectClass: top
objectClass: posixGroup
cn: sysadmin
gidNumber: 5000
# bigboss kullanıcısını oluştur
dn: uid=bigboss,ou=people,dc=foxhound,dc=com
objectClass: top
objectClass: inetOrgPerson
objectClass: posixAccount
uid: bigboss
cn: Big
sn: Boss
userPassword: {SSHA}hashed_password
loginShell: /bin/bash
uidNumber: 5001
gidNumber: 5000
homeDirectory: /home/bigboss
# bigboss kullanıcısını sysadmin grubuna ekle
dn: cn=sysadmin,ou=groups,dc=foxhound,dc=com
changetype: modify
add: memberUid
memberUid: bigboss
Bu Terimler Nedir?
ou=people,dc=foxhound,dc=com
Bu OU, genellikle kullanıcı hesaplarını (user accounts) içermek için
kullanılır. Örneğin, bir şirkette çalışanların kullanıcı hesapları
burada saklanabilir. Her bir kullanıcı, bu OU altında bir "entry" olarak
temsil edilir. ou=groups,dc=foxhound,dc=comBu OU, genellikle grupları (groups) içermek için kullanılır. Gruplar,
kullanıcıları bir araya getirmek ve onlara belirli izinler veya erişim
hakları atamak için kullanılır. Örneğin, "IT" grubu, "Finance" grubu
gibi gruplar burada saklanabilir.
Neden Bunu Oluşturuyoruz?
Organizasyon ve Yönetim Kolaylığı:
Kullanıcıları ve grupları farklı OU'lar altında tutmak, yönetimi kolaylaştırır. Örneğin, tüm kullanıcı hesaplarını
ou=people
altında toplamak, kullanıcıları daha kolay bulmayı ve yönetmeyi sağlar. Yetkilendirme ve Erişim Kontrolü:Gruplar,
kullanıcılara belirli izinler atamak için kullanılır. Örneğin, bir
dizin servisindeki belirli kaynaklara erişim izni vermek için gruplar
kullanılabilir.ou=groups
altında tanımlanan gruplar, bu tür yetkilendirmeleri kolaylaştırır.