Bu rehber, sistem yöneticilerine ve geliştiricilere, kullanıcı ve grup yönetimini merkezi bir yapıya taşımak isteyenlere hitap etmektedir.
Giriş
Merkezi bir kimlik doğrulama ve yetkilendirme sistemi kurmak, özellikle birden fazla sunucu veya uygulama ile çalışan büyük ağ ortamlarında hayati önem taşır. LDAP, bu tür bir merkezi dizin hizmeti sunar. OpenLDAP, esnekliği ve güçlü özellikleriyle bu alanda popüler bir tercihtir. Ancak, komut satırı üzerinden LDAP dizinlerini yönetmek karmaşık ve hataya açık olabilir. İşte bu noktada phpLDAPadmin devreye girer. phpLDAPadmin, OpenLDAP sunucunuzu sezgisel bir web arayüzü üzerinden kolayca yönetmenizi, kullanıcılar, gruplar ve diğer dizin nesnelerini eklemenizi, düzenlemenizi veya silmenizi sağlar.
Bu rehberde, Ubuntu 16.04 sunucunuzu güncelledikten sonra OpenLDAP sunucusunu (slapd) kuracak, temel dizin yapısını oluşturacak ve ardından phpLDAPadmin’i kurup yapılandırarak web üzerinden yönetilebilir hale getireceğiz.
Sistem Güncelleme ve Ön Gereksinimlerin Yüklenmesi
Kuruluma başlamadan önce, sisteminizin güncel olduğundan emin olmak her zaman iyi bir pratiktir. Ayrıca, phpLDAPadmin’in düzgün çalışabilmesi için bazı Apache ve PHP bileşenlerine ihtiyacımız olacak.
### Sistem Güncelleme
Terminali açın ve aşağıdaki komutları çalıştırarak sisteminizi güncelleyin:
sudo apt update
sudo apt upgrade -y
Bu komutlar, paket listelerinizi yenileyecek ve yüklü paketlerin en son sürümlerine yükseltme yapacaktır.
### Apache ve PHP Bileşenlerinin Kurulumu
phpLDAPadmin bir web uygulaması olduğu için bir web sunucusuna (Apache) ve PHP yorumlayıcısına ihtiyaç duyar. Ayrıca LDAP bağlantısı ve diğer işlevler için bazı PHP modüllerinin de yüklü olması gerekmektedir.
Aşağıdaki komutla gerekli paketleri yükleyin:
sudo apt install apache2 php php-ldap php-gd php-mbstring php-xml -y
* apache2: Web sunucusu.
* php: PHP yorumlayıcısı.
* php-ldap: PHP’nin LDAP sunucularıyla iletişim kurmasını sağlayan modül.
* php-gd: phpLDAPadmin’in bazı görsel bileşenleri (örneğin CAPTCHA) için gereken modül.
* php-mbstring: Çok baytlı dizeleri işlemek için gereken modül.
* php-xml: XML işleme yeteneği için gereken modül.
Kurulum tamamlandıktan sonra, Apache servisinin çalıştığından emin olun:
sudo systemctl status apache2
Durum active (running) olarak görünmelidir. Aksi takdirde sudo systemctl start apache2 komutuyla başlatabilirsiniz.
OpenLDAP Kurulumu ve Temel Yapılandırma
Şimdi ana bileşenimiz olan OpenLDAP sunucusunu kurmaya başlayabiliriz.
### OpenLDAP Sunucusunun Kurulumu
OpenLDAP sunucusu slapd paketi ile, yönetim araçları ise ldap-utils paketi ile gelir.
sudo apt install slapd ldap-utils -y
Kurulum sırasında sizden OpenLDAP yönetici parolası belirlemeniz istenecektir. Bu parolayı dikkatlice belirleyin ve unutmayın, çünkü daha sonra phpLDAPadmin üzerinden giriş yapmak için bu parolayı kullanacaksınız.
### Temel Dizin Yapılandırması
slapd paketi yüklendikten sonra, temel dizin yapılandırmasını yapmak için dpkg-reconfigure aracını kullanacağız. Bu araç, OpenLDAP sunucunuz için DNS alan adı, kuruluş adı ve diğer temel ayarları yapılandırmanıza olanak tanır.
sudo dpkg-reconfigure slapd
Bu komutu çalıştırdığınızda aşağıdaki gibi bir dizi soru ile karşılaşacaksınız:
1. Omit OpenLDAP server configuration?: Hayır (No) seçeneğini seçin.
2. DNS domain name: Bu, LDAP dizininizin temel DN’sini (Base DN) oluşturacak olan alan adınızdır. Örneğin, example.com girerseniz, Base DN’niz dc=example,dc=com olacaktır. Kendi alan adınızı girin.
3. Organization name: Kuruluşunuzun adını girin (örneğin, Example Company).
4. Administrator password: Daha önce belirlediğiniz yönetici parolasını tekrar girin.
5. Confirm administrator password: Parolayı onaylayın.
6. Backend database to use: MDB (Varsayılan ve önerilen) seçeneğini seçin.
7. Remove old database?: Eğer bu sıfırdan bir kurulumsa, Yes (Evet) seçeneğini seçebilirsiniz.
8. Move old database?: Eğer mevcut bir veritabanınız yoksa, bu sorunun bir önemi olmayacaktır. Yes (Evet) seçeneğini seçebilirsiniz.
9. Allow LDAPv2 protocol?: No (Hayır) seçeneğini seçin. LDAPv2 eski ve güvensizdir.
Yapılandırma tamamlandıktan sonra, OpenLDAP servisinin çalıştığından emin olun:
sudo systemctl status slapd
### OpenLDAP Yapılandırmasını Doğrulama
Yapılandırmanın doğru yapıldığından emin olmak için temel dizin ağacınızı sorgulayabilirsiniz. Aşağıdaki komutta dc=example,dc=com kısmını kendi Base DN’nizle değiştirin:
ldapsearch -x -b "dc=example,dc=com"
Bu komut, dizininizin temel bilgilerini göstermelidir. Eğer bir hata alırsanız, yapılandırma adımlarını tekrar gözden geçirin.
### Temel Şemaların Eklenmesi
OpenLDAP’ın kullanıcılar, gruplar ve diğer nesneleri tanımlayabilmesi için gerekli şemaların yüklü olması gerekir. inetOrgPerson (kullanıcılar için), cosine ve nis (gruplar için) gibi şemalar genellikle gereklidir. Ubuntu 16.04’te bu şemalar genellikle varsayılan olarak yüklenir, ancak kontrol etmek ve gerekirse eklemek iyi bir uygulamadır.
sudo ldapadd -Y EXTERNAL -H ldapi:/// -f /etc/ldap/schema/cosine.ldif
sudo ldapadd -Y EXTERNAL -H ldapi:/// -f /etc/ldap/schema/nis.ldif
sudo ldapadd -Y EXTERNAL -H ldapi:/// -f /etc/ldap/schema/inetorgperson.ldif
Bu komutlar, LDAP dizininize gerekli şemaları ekleyecektir. Eğer şemalar zaten yüklüyse, “entry already exists” (giriş zaten mevcut) gibi uyarılar alabilirsiniz, bu normaldir.
### Yönetici Kullanıcısı ve Organizasyon Biriminin Oluşturulması
phpLDAPadmin ile giriş yapabilmek için yönetici kullanıcınızın ve temel organizasyon biriminin (OU) dizinde tanımlanmış olması gerekir. dpkg-reconfigure slapd sırasında bu bilgileri girmiş olsak da, phpLDAPadmin’in doğru bir şekilde bağlanabilmesi için ek bir kontrol yapalım.
Aşağıdaki LDIF içeriğini içeren bir dosya oluşturun (örneğin base.ldif):
dn: dc=example,dc=com
objectClass: top
objectClass: dcObject
objectClass: organization
o: Example Company
dc: example
dn: cn=admin,dc=example,dc=com
objectClass: simpleSecurityObject
objectClass: organizationalRole
cn: admin
description: LDAP Administrator
Yukarıdaki dc=example,dc=com ve Example Company kısımlarını kendi alan adınız ve kuruluş adınızla değiştirin.
Bu dosyayı kullanarak dizine girişleri ekleyin:
ldapadd -x -D "cn=admin,dc=example,dc=com" -W -f base.ldif
Komut çalıştırıldığında sizden yönetici parolasını isteyecektir. Parolayı girin. Eğer girişler zaten mevcutsa, “entry already exists” hatası alabilirsiniz, bu normaldir.
phpLDAPadmin Kurulumu ve Yapılandırması
OpenLDAP sunucumuz artık çalışır durumda olduğuna göre, onu web arayüzü üzerinden yönetmek için phpLDAPadmin’i kurup yapılandırabiliriz.
### phpLDAPadmin Kurulumu
phpLDAPadmin paketi Ubuntu depolarında mevcuttur:
sudo apt install phpldapadmin -y
Kurulum tamamlandığında, phpLDAPadmin için Apache yapılandırma dosyası /etc/apache2/conf-available/phpldapadmin.conf konumunda oluşturulur.
### phpLDAPadmin Yapılandırması
phpLDAPadmin’in temel yapılandırma dosyası /etc/phpldapadmin/config.php konumundadır. Bu dosyada, OpenLDAP sunucunuzun adresini ve Base DN’sini belirtmemiz gerekecek.
Yapılandırma dosyasını bir metin düzenleyici ile açın:
sudo nano /etc/phpldapadmin/config.php
Dosya içinde aşağıdaki satırları bulun ve kendi OpenLDAP sunucunuzun bilgileriyle güncelleyin:
1. LDAP Sunucusu Host Adresi:
// $servers->setValue('server','host','127.0.0.1');
Bu satırın başındaki // işaretini kaldırın ve host adresini 127.0.0.1 olarak bırakın, çünkü OpenLDAP sunucusu aynı makinede çalışıyor.
2. Base DN:
// $servers->setValue('server','base',array('dc=example,dc=com'));
Bu satırın başındaki // işaretini kaldırın ve dc=example,dc=com kısmını kendi Base DN’nizle değiştirin. Örneğin, array('dc=yourdomain,dc=com').
3. Yönetici Bind DN’si:
// $servers->setValue('login','bind_id','cn=admin,dc=example,dc=com');
Bu satırın başındaki // işaretini kaldırın ve cn=admin,dc=example,dc=com kısmını kendi yönetici DN’nizle değiştirin.
4. Gizli Dosyaları Gizle (İsteğe Bağlı):
Güvenlik amacıyla, .hidden ile başlayan dosyaların phpLDAPadmin arayüzünde gösterilmesini engelleyebilirsiniz.
$servers->setValue('server','hide_template_file_extension',false);
Bu satırı true olarak değiştirin:
$servers->setValue('server','hide_template_file_extension',true);
Yapılandırma dosyasını kaydedip kapatın (Ctrl+O, Enter, Ctrl+X).
### Apache Yapılandırmasını Düzenleme
Varsayılan olarak, phpLDAPadmin’in Apache yapılandırması yalnızca yerel makineden erişime izin verir (Require local). Eğer başka bir makineden web arayüzüne erişmek istiyorsanız, bu kuralı değiştirmeniz gerekecektir. Ancak güvenlik nedeniyle, erişimi belirli IP adresleriyle sınırlamak en iyisidir.
sudo nano /etc/apache2/conf-available/phpldapadmin.conf
Dosya içinde aşağıdaki bloğu bulun:
Options FollowSymLinks
AllowOverride None
Require local
Eğer herhangi bir IP adresinden erişime izin vermek istiyorsanız (güvenlik riski taşır!), Require local satırını aşağıdaki ile değiştirin:
Require all granted
Daha güvenli bir yaklaşım için, yalnızca belirli bir IP adresinden veya IP aralığından erişime izin verin:
Require ip 192.168.1.0/24 # Örnek: Belirli bir ağdan erişim
# Veya
Require ip 192.168.1.100 # Örnek: Belirli bir IP adresinden erişim
Değişiklikleri kaydedip kapatın.
### Apache Yapılandırmasını Etkinleştirme ve Yeniden Başlatma
phpLDAPadmin’in Apache yapılandırmasını etkinleştirmek ve Apache web sunucusunu yeniden başlatmak için aşağıdaki komutları kullanın:
sudo a2enconf phpldapadmin
sudo systemctl restart apache2
### phpLDAPadmin Arayüzüne Erişim
Artık phpLDAPadmin web arayüzüne erişebilirsiniz. Web tarayıcınızı açın ve sunucunuzun IP adresini veya alan adını kullanarak aşağıdaki adrese gidin:
http://sunucu_ip_adresiniz/phpldapadmin
phpLDAPadmin giriş ekranını görmelisiniz. Sol tarafta “Login” seçeneğine tıklayın.
* Login DN: cn=admin,dc=example,dc=com (kendi yönetici DN’niz)
* Password: OpenLDAP kurulumu sırasında belirlediğiniz yönetici parolası.
Giriş yaptıktan sonra, LDAP dizin ağacınızı görebileceğiniz phpLDAPadmin kontrol paneline yönlendirileceksiniz.
Kullanıcı ve Grup Yönetimi (Pratik Bilgiler)
phpLDAPadmin arayüzü sayesinde LDAP dizininizde kullanıcılar, gruplar ve organizasyon birimleri (OU) oluşturmak oldukça kolaydır.
### Organizasyon Birimi (OU) Oluşturma
Kullanıcılarınızı ve gruplarınızı düzenli tutmak için organizasyon birimleri oluşturmak iyi bir pratiktir.
1. phpLDAPadmin arayüzünde, sol paneldeki Base DN’nizin (dc=example,dc=com) üzerine tıklayın.
2. “Create new entry here” (Burada yeni giriş oluştur) veya “Create a child entry” (Bir alt giriş oluştur) seçeneğini seçin.
3. Şablon listesinden “Generic: Organizational Unit” (Genel: Organizasyon Birimi) seçeneğini seçin.
4. Organizational Unit Name alanına (örneğin, Users veya Groups) bir isim girin ve “Create Object” (Nesne Oluştur) düğmesine tıklayın.
### Kullanıcı Oluşturma
1. Kullanıcıları eklemek istediğiniz OU’nun (örneğin, ou=Users,dc=example,dc=com) üzerine tıklayın.
2. “Create new entry here” veya “Create a child entry” seçeneğini seçin.
3. Şablon listesinden “Generic: User Account” veya “Generic: inetOrgPerson” seçeneğini seçin. inetOrgPerson genellikle daha kapsamlıdır.
4. Gerekli alanları doldurun:
* Common Name (cn): Kullanıcının tam adı (örneğin, John Doe).
* Given Name (givenName): Kullanıcının adı (örneğin, John).
* Surname (sn): Kullanıcının soyadı (örneğin, Doe).
* User ID (uid): Kullanıcı adı (örneğin, jdoe).
* User Password: Kullanıcının parolası.
5. “Create Object” düğmesine tıklayarak kullanıcıyı oluşturun.
### Grup Oluşturma
1. Grupları eklemek istediğiniz OU’nun (örneğin, ou=Groups,dc=example,dc=com) üzerine tıklayın.
2. “Create new entry here” veya “Create a child entry” seçeneğini seçin.
3. Şablon listesinden “Generic: Posix Group” veya “Generic: Group of Unique Names” seçeneğini seçin. Group of Unique Names genellikle daha esnektir.
4. Group Name (cn): Grubun adı (örneğin, developers).
5. Member (member): Bu alana, gruba dahil etmek istediğiniz kullanıcıların tam DN’lerini (örneğin, uid=jdoe,ou=Users,dc=example,dc=com) ekleyebilirsiniz. Birden fazla üye eklemek için “Add member” düğmesini kullanın.
6. “Create Object” düğmesine tıklayarak grubu oluşturun.
Komut Satırı ile Kullanıcı Ekleme Örneği:
Eğer komut satırını tercih ediyorsanız, bir kullanıcıyı LDIF dosyası ile de ekleyebilirsiniz. Aşağıdaki içeriği user_john.ldif adında bir dosyaya kaydedin:
dn: uid=johndoe,ou=Users,dc=example,dc=com
objectClass: inetOrgPerson
objectClass: organizationalPerson
objectClass: person
objectClass: top
cn: John Doe
sn: Doe
givenName: John
uid: johndoe
mail: john.doe@example.com
userPassword: {SSHA}hashed_password_here # Gerçek parolayı hash'lenmiş olarak girin veya ldappasswd ile belirleyin
Ardından aşağıdaki komutla ekleyin:
ldapadd -x -D "cn=admin,dc=example,dc=com" -W -f user_john.ldif
{SSHA}hashed_password_here kısmını doğrudan metin parolasıyla da değiştirebilirsiniz, ancak güvenlik açısından hash’lenmiş parola kullanmak daha iyidir. slappasswd komutu ile hash’lenmiş parola oluşturabilirsiniz.
Sonuç
Bu rehberde, Ubuntu 16.04 üzerinde OpenLDAP sunucusunu ve phpLDAPadmin web arayüzünü başarıyla kurup yapılandırdınız. Artık merkezi bir kimlik doğrulama sisteminizin temelini oluşturdunuz ve kullanıcılarınızı, gruplarınızı ve diğer dizin nesnelerinizi kolayca yönetebilirsiniz. LDAP dizininizi diğer uygulamalarla (örneğin, posta sunucuları, VPN sunucuları, web uygulamaları) entegre ederek merkezi bir kullanıcı yönetim sistemi oluşturabilirsiniz. Gelecekte, LDAP sunucunuzu TLS/SSL ile güvence altına almayı ve düzenli yedekleme stratejileri oluşturmayı düşünebilirsiniz.
### Sıkça Sorulan Sorular (SSS)
Q: OpenLDAP yönetici şifremi unuttum, ne yapmalıyım?
A: OpenLDAP yönetici şifrenizi unuttuysanız, doğrudan dizin veritabanını düzenleyerek veya slappasswd komutuyla yeni bir hash oluşturup olcRootPW değerini güncelleyerek sıfırlayabilirsiniz. Bu karmaşık bir işlemdir ve dikkatli yapılmalıdır. Genellikle olcRootPW değerini ldif formatında bir dosyaya yazıp ldapmodify komutuyla güncellemek en güvenli yöntemdir.
Q: phpLDAPadmin arayüzüne erişemiyorum, ne yapmalıyım?
A:
1. Apache Servisi: Apache’nin çalıştığından emin olun (sudo systemctl status apache2).
2. Apache Yapılandırması: /etc/apache2/conf-available/phpldapadmin.conf dosyasındaki Require yönergelerini kontrol edin. Erişim izni verdiğiniz IP adresinden mi bağlanmaya çalışıyorsunuz? a2enconf phpldapadmin ile yapılandırmanın etkinleştirildiğinden ve Apache’nin yeniden başlatıldığından emin olun.
3. Güvenlik Duvarı: Sunucunuzda bir güvenlik duvarı (örneğin UFW) etkinse, 80 numaralı bağlantı noktasının (HTTP) açık olduğundan emin olun (sudo ufw status).
Q: LDAP veritabanımı yedeklemek veya geri yüklemek için ne yapmalıyım?
A: OpenLDAP veritabanınızı yedeklemek için slapcat komutunu kullanabilirsiniz:
sudo slapcat -l /path/to/backup/ldap_backup.ldif
Geri yüklemek için ise, mevcut veritabanını durdurup temizledikten sonra slapadd komutunu kullanabilirsiniz:
sudo systemctl stop slapd
sudo rm -rf /var/lib/ldap/*
sudo slapadd -l /path/to/backup/ldap_backup.ldif
sudo systemctl start slapd
Q: Ubuntu 16.04 yerine daha yeni bir sürümde bu rehberi kullanabilir miyim?
A: Ubuntu’nun daha yeni sürümlerinde (örneğin 18.04, 20.04, 22.04), paket isimleri, yapılandırma dosyalarının konumları ve varsayılan ayarlar farklılık gösterebilir. Örneğin, OpenLDAP’ın varsayılan veritabanı türü veya şema yükleme yöntemleri değişmiş olabilir. Bu rehber 16.04’e özeldir. Daha yeni sürümler için ilgili sürümün spesifik rehberlerini takip etmeniz önerilir.
Q: OpenLDAP’ı TLS/SSL ile güvenli hale nasıl getiririm?
A: OpenLDAP’ı TLS/SSL ile güvenli hale getirmek için bir SSL sertifikası (kendinden imzalı veya CA tarafından verilmiş) oluşturmanız ve slapd.conf veya cn=config tabanlı yapılandırmanızda LDAPS (LDAP over SSL) dinleme portunu (genellikle 636) ve sertifika yollarını belirtmeniz gerekir. Bu, ldaps:// protokolü üzerinden güvenli iletişim sağlar. Bu işlem, ayrı ve daha detaylı bir rehber konusu olabilir.
