Özet
Bu yazının amacı Debian üzerinde OpenLDAP kurulumunu ve yapılandırmasını kolay anlaşılır bir şekilde anlatmaktır.
Bu rehberin sonunda, bireysel makinelerde elle kullanıcı yaratmaya gerek kalmayacak şekilde, ağdaki bütün makilerde kullanıcı girişi için merkezi yetkilendirme sistemi olarak hizmet verecek fonksiyonel bir LDAP sunucusuna sahip olacaksınız.
Bununla birlikte, gelişmiş yetkilendirme güvenliği ve gerçek bir ağ tabanlı çözüm için, LDAP'ın Kerberos ile birlikte kullanılması önerilir. Kerberos kurulumu MIT Kerberos 5 Guide belgesinde anlatılmaktadır,
Bu yazı Spinlock Solutions'ın, Debian GNU Guide, MIT Kerberos 5 Guide, OpenLDAP Guide, OpenAFS Guide ve FreeRADIUS Guide'ı içeren 5 yazılık Unix ağlarına giriş serisinin bir parçasıdır.
Giriş
LDAP geleneksel olarak sistem yöneticilerinin ve ileri düzey kullanıcıların ilgisini cezbeden bir servistir. Ama yüksek girdi bariyeri(high entry barrier) ve altyapı gereksinimleri birçok kişiyi onu kullanmaktan uzak tutmuştur.
LDAP hali hazırda sayısız yayının konusu olmuştur. Burada sadece gerekli bir özet sunacağız; içeriği yerleştirmek ve pratik sonuçlar elde etmek için yeterli bilgi.
Harici bağlantıları izlemek zorunda değilsiniz; bununla birlikte, belirli tekil konuların belirli teknik işleyişine işaret etmesi amacıyla, bağlantılar makale boyunca kullanılmış ve makalenin sonunda hep birlikte sunulmuştur.
Bir ağda LDAP'ın rolü
OpenLDAP, Lightweight Directory Access Protocol - Hafifletilmiş Dizin Erişim Protokolü'nün açık kaynaklı bir uygulamasıdır. Dizin ağaç yapısında, okuma-en iyilenmiş(read-optimized) haldedir. Sarı sayfalar ya da bir telefon rehberi, zihinde canlandırmak açısından iyi örnekler ancak LDAP çok daha güçlüdür.
OpenLDAP'ı, bireysel(individual) makinelere ilk eriştiklerinde ev dizinlerini de otomatik olarak yaratacak şekilde, ağda herhangi bir yerdeki kullanıcı girişleri için bir merkezi yetkilendirme konumu sağlamak için kullanacağız.
Bu belge OpenLDAP'ı hem yetkilendirme sağlamak hem kullanıcı üst verisi sunmak amacıyla kullanmak için kendi başına yeterlidir. Bununla birlikte, LDAP sunucusuna yapılan düz metin bağlantıları ve kablo üzerinde parolaların gezinmesi sebebiyle LDAP'ı burada anlatıldığı şekilde yetkilendirme amacıyla kullanmak güvenli değildir. Bu nedenle LDAP'ı üstün ve güvenli ağ yetkilendirme mekanizması Kerberos'la kullanmak tavsiye edilir. Kerberos bir diğer makale MIT Kerberos 5 Guide'da anlatılmaktadır.
Haydi, LDAP kurulumumuza başlayalım.
Teknik bir bakış açısından, LDAP dizini sıradüzensel olarak düzenlenmiş girdilerin(entries) kümesini içerir. Her girdi belli Nesne Sınıflarına (Object Classes) aittir ve özellikler(attributes) olarak adlandırılan değişik sayıda
anahtar=değer
(key=value
) çifti içerir.Her girdi bir Ayırıcı İsim (Distinguished name - "DN") ile tekil olarak(uniquely) tanımlanır. DN ağacın başından başlayan, girdiye ait "tam yolu" (full path) sağlayan, virgüllerle ayrılmış, bir özellikler kümesi şeklindedir. Örneğin, Example, Inc. şirketi
dc=example
,dc=com
'da ağacın köküne sahip olabilir. Example, Inc. şirketinde çalışmaya başlayan birisi DN'i cn=person
,ou=People,dc=example
,dc=com
olan bir LDAP girdisine sahip olabilir.Bir girdide hangi özelliklerin olabileceği ya da olması gerektiği girdinin objectClass'ları tarafından yönetilir.
Farkedebileceğiniz gibi, yukarıdaki
cn=person
gibi, DN'in tekil parçaları da anahtar=değer şeklindedir. Bu "anahtarlar", cn
, ou
ve dc
; Common Name
, Organizational Unit
ve Domain Component
kelimelerinin kısaltmalarıdır. Bunlar hergün kullanacağınız LDAP terminolojisinin bir parçasıdır.ObjectClassları; özellikler, söz dizimler(syntaxes), eşleşme kuralları (matching rules) ve ağaç yapısının diğer detayları LDAP sunucusunun başlangıcında
/etc/ldap/slapd.conf
dosyasında tanımlı şema (schema) dosyaları okunarak yapılandırılabilir ve yüklenebilir.Hadi hızlıca kurulumumuzdaki LDAP'a özel elemanları tanımlayalım:
- LDAP geleneksel sistem kullanıcı isimleri ya da diğer veriyle herhangi bir şekilde bağlantılı değildir. Bununla birlikte, kurulumumuzda LDAP'ın işlenselliğinin bir kısmı gelenksel Unix dosyaları
/etc/passwd
ve/etc/group
'da bilgi saklamayı içerir.
person
kullanıcı ismi uid=person
,ou=People,dc=example
,dc=com
LDAP girdisine eşlenir.- LDAP kullanıcı parolalarıın içerecek şekilde yapılandırılabilir. Parolalar belirli kullanıcıları yetkilendirmek ve korunan girdilere erişim sağlamak ve kullanıcının doğru parolayı bilip bilmediğini kontrol etmek için kullanılabilir.
Eksiksiz OpenLDAP belgelendirmesi için OpenLDAP web sayfasına bakabilirsiniz. Güvenilir bir OpenLDAP kitabı için ise, Gerald Carter'ın
LDAP System Administration
(by O'Reilly) kitabına bakabilirsiniz.Tutkal Katmanlar(Glue layers): LDAP'ı sistem yazılımıyla tümleştirmek
NSS
Bütün GNU/Linux-tabanlı platformlarda, NSS ağ veri bulma (network data retrieval) yapılandırması için erişilebilirdir. NSS,
Name Service Switch
mekanızmasının bir uygulamasıdır.NSS, LDAP'ın -doğal olarak LDAP desteklemese de- bütün servislerin "kullanıcı veri" yollarına ("user data" path) dahil edilmesine izin verir.
NSS web sayfasında uygun giriş (ve eksiksiz belgelendirmeye) erişebilirsiniz. Ayrıca nsswitch.conf(5) kılavuz (manual) sayfasına bakınız.
PAM
Aynı şekilde, bütün GNU/Linux-tabanlı platformlarda, bulmacanın bir diğer parçası, Linux-PAM, servis-özel (service-specific) yetkilendirme yapılandırması için bulunur.. Linux-PAM, Sun Microsystems'ten PAM ("
Pluggable Authentication Modules
")'ın bir uygulamasıdır.Ağ servisleri, hard-coded yetkilendirme arayüzleri ve karar mekanizmalarına sahip olmak yerine, standart, önceden-tanımlı arayüz üzerinden PAM'ı çağırır. Bundan sonrası, herhangi ya da bütün yetkilendirme işlerini işletmek ve sonuçları programa göndermek PAM'a aittir.
PAM'ın kararı nasıl verdiği servisin ilgilendirmez. Geleneksel kurulumlarda (set-ups), bu sıklıkla kullanıcı ismini ve parolsını sorarak ve onaylayarak yapılırdı. Gelişmiş ağlarda, bu retina taramalarıyla olabilir ya da — Kerberos biletletiyle, seiden bir diğer makalede anlatıldığı gibi, MIT Kerberos 5 Guide.
Linux-PAM web sayfasında uygun giriş (ve eksiksiz belgelendirmeye) erişebilirsiniz. PAM Configuration File Syntax sayfasının üzerinde özellikle durun. Ayrıca Linux-PAM(7) ve pam(7) kılavuz sayfalarına göz gezdirin.
Conventions
Belgelendirmedeki talimatları takip edememek gerçekten moral bozucu. Daha fazla devam etmeden bazı konular üzerinde anlaşalım:
- Üzerinde pratik bir kurulum gerçekleştireceğimiz platform Debian GNU olacak.
- sudo 'yu kurun. Sudo normal kullanıcı hesabınızdan sistem yöneticisi işlerini yapmanıza izin veren bir program. Bu makaledeki bütün örnekler root yetkileri gerektirmektedir, sudo kullanarak kodları kopyalayıp kabuğuna(shell) yapıştırmanız mümkün olacak.
su -c 'apt-get install sudo'
Eğer şifre sorulursa root şifresini girin.
sudo 'yu yapılandırmak için, aşağıdaki satırı
$USERNAME i
kullanıcı isminizle değiştirerek /etc/sudoers
dosyanıza ekleyin:$USERNAME ALL=(ALL) NOPASSWD: ALL
- Debian paketleri debconf arayüzüyle kurulum süreci boyunca bize sorular soracak. debconf 'u bilinen bir duruma ayarlamak için:
sudo dpkg-reconfigure debconf
Sorulduğunda, arayüz=Diyalog (interface=
Dialog)
ve öncelik=düşük (priority=low
) olarak cevaplayın.- Log dosyalarını görüntülemek hataların yakalanmasında çok kritiktir. Bunu yapmanın anlaşılır, hepsini kapsayan yolu bir terminal açmak ve aşağıdaki kodu çalıştırmak:
cd /var/log; sudo tail -F daemon.log sulog user.log auth.log debug kern.log syslog dmesg messages kerberos/{krb5kdc,kadmin,krb5lib}.log
Komut hata log mesajlarını oluştukça ekrana yazacaktır.
- Test sistemimizin adı
monarch.spinlock.hr
ve192.168.7.12
IP adresine sahip. Sunucu ve istemcinin ikisi de aynı makineye kurulacak. Bununla birlikte, ilişkili oldukları yerlerde sunucu ve istemci rollerini ayırmak için, istemcimonarch.spinlock.hr
ve sunuculdap1.spinlock.hr
olarak adlandırılacak./etc/hosts
dosyasına yapılacak aşağıdaki gibi bir ekleme bu şemayı destekleyecektir:
192.168.7.12 monarch.spinlock.hr monarch krb1.spinlock.hr krb1 ldap1.spinlock.hr ldap1
Dikkat
Bazı Debian kurulumlarında sistemin ağ makine adı(hostname), localhost adresi
127.0.0.1
'e atanmış olabilir. Bu ağ işlemlerinde bazı hatalara yol açabilir ve açacaktır. Bu yüzden /etc/hosts
dosyasındaki "localhost" girdisinin aynen aşağıdaki gibi olmasına dikkat edin(ne eksik, ne fazla):127.0.0.1 localhost localhost.localdomain
Son olarak, beklendiği gibi ağ kurulumunu test edelim. Makine isimlerine(hostnames) ping atmak uygun FQDN ve IP'leri gösterecektir:
ping -c1 localhost
PING localhost (127.0.0.1) 56(84) bytes of data.
....
PING localhost (127.0.0.1) 56(84) bytes of data.
....
ping -c1 monarch
PING monarch.spinlock.hr (192.168.7.12) 56(84) bytes of data.
....
PING monarch.spinlock.hr (192.168.7.12) 56(84) bytes of data.
....
ping -c1 ldap1
PING krb1.spinlock.hr (192.168.7.12) 56(84) bytes of data.
....
PING krb1.spinlock.hr (192.168.7.12) 56(84) bytes of data.
....
OpenLDAP
Sunucu Kurulumu
OpenLDAP'ın sunucu bileşeni slapd olarak adlandırılır ve bütün ihtiyacımız olan bu.
sudo apt-get install slapd ldap-utils
Debconf cevapları:
Omit OpenLDAP server configuration? No
DNS domain name: spinlock.hr
Organization name? spinlock.hr
Administrator password: PASSWORD
Confirm password: PASSWORD
Database backend to use: HDB
Do you want the database to be removed when slapd is purged? No
Allow LDAPv2 protocol? No
DNS domain name: spinlock.hr
Organization name? spinlock.hr
Administrator password: PASSWORD
Confirm password: PASSWORD
Database backend to use: HDB
Do you want the database to be removed when slapd is purged? No
Allow LDAPv2 protocol? No
Kurulum tamamlanır tamamlanmaz OpenLDAP sunucusu (slapd komutu) başlayacaktır.
Başlangıç Yapılandırması
OpenLDAP sunucumuz hali hazırda çalışıyor. Hadi önce bütün LDAP istemcileri için ortak bir yapılandırma dosyası olan
/etc/ldap/ldap.conf
'u düzenleyelim. Bu, ldapsearch ve diğer komutları her defasında temel parametreleri elle girmemize gerek kalmadan çalıştırmamızı sağlayacak./etc/ldap/ldap.conf
'ta aşağıdaki iki satırı ekinleştirin, gerekirse dosyayı kendiniz oluşturun:BASE dc=spinlock, dc=hr
URI ldap://192.168.7.12/
URI ldap://192.168.7.12/
Sonrasında, davranışını ayarlamak için sunucunun yapılandırma dosyası
/etc/ldap/slapd.conf
'u düzenleyelim.Bütün şema dosyalarının etkinleştirildiğinden emin olun:
include /etc/ldap/schema/core.schema
include /etc/ldap/schema/cosine.schema
include /etc/ldap/schema/nis.schema
include /etc/ldap/schema/inetorgperson.schema
include /etc/ldap/schema/cosine.schema
include /etc/ldap/schema/nis.schema
include /etc/ldap/schema/inetorgperson.schema
Ayrıntı seviyesini
0
veya "none
" 'dan 256
'ya değiştirin:loglevel 256
"
index objectClass eq
" satırını arayın ve bir başka arama indexi daha ekleyin. Belirli kombinasyonlarda, arama girdileri indexlenmediklerinde herhangi bir sonuç dönmemesi mümkün. Bu yüzden bu adım önemli:index objectClass eq
index uid eq
index uid eq
Yeni index seçeneğinin uygulanması için, aşağıdaki komutları çalıştırın:
sudo invoke-rc.d slapd stop
sudo slapindex
sudo chown -R openldap:openldap /var/lib/ldap
sudo invoke-rc.d slapd start
sudo slapindex
sudo chown -R openldap:openldap /var/lib/ldap
sudo invoke-rc.d slapd start
Başlangıç Testi
Artık kurulumumuzu test etmenin zamanı geldi. OpenLDAP sunucumuz çok fazla bilgi içermiyor ama basit bir okuma işlemi kolayca gerçekleştirilebilir.
LDAP terimleriyle, okuma (read) işlemi "arama" ("search") olarak adlandırılır. Komut satırından bir arama işlemi yapmak için ldapsearch ve slapcat 'e sahibiz.
Ldapsearch (ve "ldap" önekiyle başlayan diğer LDAP komutları) LDAP protokolünü kullanarak "çevrimiçi"("online") işlem gerçekleştirirler.
Slapcat (ve "slapd" önekiyle başlayan diğer LDAP komutları) direkt olarak yerel dosya sisteminde dosyalar açarak "çevrimdışı("offline") işlem gerçekleştirirler. Bu yüzden, sadece yerel olarak LDAP sunucusunda çalıştırılabilirler ve yönetici hakları gerektirirler. Veritabanına yazmaları gerektiğinde, OpenLDAP sunucusu genellikle durdurulmalıdır.
İki arama komutunun çıktısında, iki LDAP girdisi farkedeceksiniz, bir tanesi ağaçtaki en uç seviye elemanını, diğeri LDAP yönetici girdisini temsil ediyor. slapcat çıktısında, ldapsearch çıktısında gösterilmeyen extra özelliklere dikkat edin. Bunlardan bir tanesi
userPassword
, /etc/ldap/slapd.conf
dosyasındaki öntanımlı erişim kısıtlamalarından dolayı anonim okuyuculara gösterilmez.ldapsearch -x
# extended LDIF # # LDAPv3 # base <dc=spinlock, dc=hr
> (default) with scope subtree # filter: (objectclass=*) # requesting: ALL # #spinlock.hr
dn: dc=spinlock
,dc=hr
objectClass: top objectClass: dcObject objectClass: organization o:spinlock.hr
dc:spinlock
# admin,spinlock.hr
dn: cn=admin,dc=spinlock
,dc=hr
objectClass: simpleSecurityObject objectClass: organizationalRole cn: admin description: LDAP administrator # search result search: 2 result: 0 Success # numResponses: 3 # numEntries: 2
sudo slapcat
dn: dc=spinlock
,dc=hr
objectClass: top objectClass: dcObject objectClass: organization o:spinlock.hr
dc:spinlock
structuralObjectClass: organization entryUUID: 350a2db6-87d3-102c-8c1c-1ffeac40db98 creatorsName: modifiersName: createTimestamp: 20080316183324Z modifyTimestamp: 20080316183324Z entryCSN: 20080316183324.797498Z#000000#000#000000 dn: cn=admin,dc=spinlock
,dc=hr
objectClass: simpleSecurityObject objectClass: organizationalRole cn: admin description: LDAP administrator userPassword:: e2NyeXB0fVdSZDJjRFdRODluNHM= structuralObjectClass: organizationalRole entryUUID: 350b330a-87d3-102c-8c1d-1ffeac40db98 creatorsName: modifiersName: createTimestamp: 20080316183324Z modifyTimestamp: 20080316183324Z entryCSN: 20080316183324.804398Z#000000#000#000000
Temel Ağaç Yapısını Yaratmak
Açıklandığı gibi, LDAP veritabanı ağaç şeklinde yapılandırılmıştır. Kurumunuz için en uç seviye elemanı genellikle alan adıdır(domain name). Alan adının
spinlock.hr
olması durumunda, en uç seviye elemanı dc=spinlock,dc=hr.
Alttaki bir sonraki seviyede, kurumunuz, insanlar, gruplar, servisler, ağlar, protokoller vb. alt "kurumsal birimlere"("organizational units") ayrılır.
Bu nedenle, LDAP dizininde insanların Unix "üst verilerini"("meta data") desteklemek için, bahsedilen kurumsal birimlerden iki tanesinin yaratılmasıyla ilgileneceğiz,
İnsanlar(People)
ve Grup(Group)
. Bu ikisi yaklaşık olarak Unix /etc/passwd
ve /etc/group
dosyalarına karşılık gelecektir.Ldap verisi LDIF denilen metinsel bir formata dönüştürülür. Komut satırı LDAP araçları bu formatta veri alır ve üretir. LDIF akışları(stream) aynı zamanda LDAP girdileri ekleme, değiştire ve silme gibi komutlar içerebilir.
Bu bilgiyle, sunucuyla etkileşerek iki kurumsal birim ekleyecek basit bir LDIF dosyası yaratalım,
/var/tmp/ou.ldif
. Boş satırların girdileri ayırdığına dikkat edin:dn: ou=People,dc=spinlock
,dc=hr
ou: People objectClass: organizationalUnit dn: ou=Group,dc=spinlock
,dc=hr
ou: Group objectClass: organizationalUnit
LDIF dosyasını sunucuya yüklemek için, çevrimdışı aracı, slapadd, kullanarak bir örnek gösterelim:
sudo invoke-rc.d slapd stop sudo slapadd -c -v -l /var/tmp/ou.ldif sudo invoke-rc.d slapd start
Hadi ldapsearch kullanarak yaratılan girdileri kontrol edelim.
ldapsearch -x ou=people
# extended LDIF # # LDAPv3 # base <dc=spinlock, dc=hr
> (default) with scope subt # filter: ou=people # requesting: ALL # # People,spinlock.hr
dn: ou=People,dc=spinlock
,dc=hr
ou: People objectClass: organizationalUnit # search result search: 2 result: 0 Success # numResponses: 2 # numEntries: 1
Kullanıcı Hesapları Yaratmak
İki kurumsal birim yarattığımız gibi, ilk grubumuzu ve buna ait bir kişi yaratalım. Tekrar, problemi bir LDIF dosyası yaratarak ve yükleyerek çözelim,
/var/tmp/user1.ldif
. Boş satırlar girdileri ayırmaktadır:dn: cn=mirko
,ou=group,dc=spinlock
,dc=hr
cn:mirko
gidNumber:20000
objectClass: top objectClass: posixGroup dn: uid=mirko
,ou=people,dc=spinlock
,dc=hr
uid:mirko
uidNumber:20000
gidNumber:20000
cn:Mirko
sn:Mirko
objectClass: top objectClass: person objectClass: posixAccount objectClass: shadowAccount loginShell: /bin/bash homeDirectory: /home/mirko
LDIF dosyasını sunucuya yüklemek için, çevrimiçi aracı, ldapadd, kullanarak bir örnek yapalım. Önceden bahsedildiği gibi, ldapadd LDAP protokolünü kullanır, sunucuya sistem yöneticisi olarak bağlanmalı ve (slapd kurulumu sırasında tanımladığımız) yönetici parolasını girmeliyiz:
ldapadd -c -x -D cn=admin,dc=
Enter LDAP Password:spinlock
,dc=hr
-W -f /var/tmp/user1.ldifadding new entry "cn=
PASSWORD
mirko
,ou=group,dc=spinlock
,dc=hr
" adding new entry "uid=mirko
,ou=people,dc=spinlock
,dc=hr
"
Şimdi kullanıcının parolasını tanımlamak için çevrimiçi bir araç kullanalım: ldappasswd. (Eğer LDAP'ı Kerberos ile birlikte kullanırsanız (MIT Kerberos 5 Guide) bu adım gerekli değildir)
ldappasswd -x -D cn=admin,dc=spinlock,dc=hr -W -S uid=mirko,ou=people,dc=spinlock,dc=hr
New password: NEW USER PASSWORD
Re-enter new password: NEW USER PASSWORD
Enter LDAP Password: ADMIN PASSWORD
Result: Success (0)
Not
Fark edebileceğiniz gibi bütün girdiler her zaman "fully qualified" olmalı ve soneki (dc=
spinlock
,dc=hr
) ya da DN'in herhangi bir bileşenini gözardı edemezsiniz. Bu genellikle komut satırı örneklerinin uzun ve anlaşılmaz olmasına yol açabilir ve sıkıcı, gereksiz bir iş olarak görülebilir. Bunu sorun olarak görüyorsanız, çözüm için ya bu duruma alışmalısınız ya da bu bilgilerin bir çoğunu sizin için dolduran bir grafiksel LDAP sunucusu kullanmalısınız.Şimdi yaratılan kullanıcı girdilerini doğrulamak için ldapsearch kullanalım.
/etc/ldap/slapd.conf
dosyasındaki erişim kısıtlamalarından dolayı, yaratmış olsak bile parola alanı, userPassword
, gösterilmeyecektir.ldapsearch -x uid=
# extended LDIF # # LDAPv3 # base <mirko
dc=spinlock, dc=hr
> (default) with scope subtree # filter: uid=mirko
# requesting: ALL # #mirko
, people,spinlock.hr
dn: uid=mirko
,ou=people,dc=spinlock
,dc=hr
uid:mirko
uidNumber:20000
gidNumber:20000
cn:Mirko
sn:Mirko
objectClass: top objectClass: person objectClass: posixAccount loginShell: /bin/bash homeDirectory: /home/mirko
# search result search: 2 result: 0 Success # numResponses: 2 # numEntries: 1
Tebrikler! Çalışan bir LDAP kurulumunuz var.
NSS Yapılandırması
Şimdi LDAP'ta yaratılmış yeni bir kullanıcımız var, sistemin onu görmesine izin vermeliyiz. Örneğin,
root
ve mirko
kullanıcılarının varlığını test edelim. mirko
görünmezken yönetici görünecektir:id root
uid=0(root) gid=0(root) groups=0(root)id
id:mirko
mirko
: No such user
Sistemin LDAP hesaplarını görmesi için libnss-ldap (ki otomatik olarak libpam-ldap paketini de kuracaktır) ve nscd'yi kurmalıyız:
sudo apt-get install libnss-ldap nscd
Bütün debconf cevapları:
LDAP server URI:ldap://
(Note the "ldap://", NOT "ldapi://"!) Distinguished name of the search base:192.168.7.12
/LDAP version to use:
dc=spinlock,dc=
hr
3
Does the LDAP database require login?No
Special LDAP privileges for root?No
Make the configuration file readable/writeable by its owner only?No
Allow LDAP admin account to behave like local root?Yes
Make local root Database admin.No
Does the LDAP database require login?No
LDAP administrative account:cn=admin,dc=h15,dc=ri
LDAP administrative password:Local crypt to use when changing passwords.
PASSWORD
md5
PAM profiles to enable: select all
NSS modülünü yapılandırmak için,
/etc/libnss-ldap.conf
dosyasını açın. Yapılandırma satırlarını gösterildiği gibi yerlerştirin ve ayarlayın:base dc=spinlock
,dc=hr
uri ldap://192.168.7.12
/
Son olarak, LDAP NSS modulünü etkinleştirmek için,
/etc/nsswitch.conf
dosyasındaki passwd
ve group
ile ilgili satırları aşağıdaki iki satırla değiştirin: passwd: files ldap group: files ldap
Nscd (the Name Service Caching Daemon) LDAP sunucusunu her seferinde sorgulamak yerine üstveriyi yerel olarak önbelleklemek için kullanılır. Uzun vadede çok etkili bir servis ancak test boyunca veriyi LDAP sunucusundan almak amacıyla bir an için durduracağız:
sudo invoke-rc.d nscd stop
Şimdi LDAP kullanıcılarının görünür olduğunu doğrulayabiliriz:
id
uid=mirko
20000
(mirko
) gid=20000
(mirko
) groups=20000
(mirko
)
PAM Yapılandırması
Bu makalenin son adımı LDAP'ı sistem yetkilendirme süreciyle tümleştirmekle ilgili.
libpam-ldap'ı yükleyip yapılandıralım. (Bu adımı otomatik olarak libnss-ldap kurulumu sırasında yapmış olabilirsiniz — bu durumda Debian paketin zaten kurulu olduğunu söyleyecektir).
sudo apt-get install libpam-ldap
Debconf cevapları:
Make local root Database admin.No
Does the LDAP database require login?No
Local crypt to use when changing passwords.md5
PAM modülünü yapılandırmak için,
/etc/pam_ldap.conf
dosyasını açın. Yapılandırma satırlarını gösterildiği gibi yerlerştirin ve ayarlayın:base dc=spinlock
,dc=hr
uri ldap://192.168.7.12
/
Şimdi Linux-PAM 'ın kendisini yapılandıralım. PAM yapılandırması oldukça kırılgandır. Bu yüzden çalıştığı onaylanmış varolan örnekleri kullanın. Herhangi bir değişiklikte, PAM Configuration File Syntax 'a bakmak isteyeceksiniz. Görünürde önemsiz varyasyonlar üzerinde özellikle durun — PAM'la birlikte, onlar genellikle büyük değişikliklere yol açarlar.
PAM kullanıcının ya yerel parola dosyasında ya da LDAP'ta olmasını ve yetkilendirme sürecinin devamı için doğru parolayı bilmesini gerektirir.
Burada anlatıldığı şekliyle LDAP'ta yetkilendirme yapmak LDAP sunucusuna bağlantılar düz metin şeklinde olduğundan ve parolalar kabloda dolaştığından güvenli değildir.
LDAP sunucusuna bağlantının şifrelendirilmesi yerine, aşağıda gösterilen PAM dosyaları, eğer Kerberos kurulumu yaptıysanız, yetkilendirme için Kerberos'u da destekler. Bu durumda, yorum satırı olarak gösterilen PAM satırlarını değiştirin ve yetkilendirme Kerberos kullanılarak tamamen güvenli ve doğru bir şekilde yapılır.
/ETC/PAM.D/COMMON-ACCOUNT
account sufficient pam_unix.so account required pam_ldap.so # Enable if using Kerberos: #account required pam_krb5.so
/ETC/PAM.D/COMMON-AUTH
# Disable the three lines if using Kerberos: auth [success=1 default=ignore] pam_unix.so nullok_secure auth required pam_ldap.so use_first_pass auth required pam_permit.so # Enable the three lines if using Kerberos: #auth sufficient pam_unix.so nullok_secure #auth sufficient pam_krb5.so use_first_pass #auth required pam_deny.so
/ETC/PAM.D/COMMON-PASSWORD
password sufficient pam_unix.so nullok obscure md5 # Disable if using Kerberos: password required pam_ldap.so use_first_pass # Enable if using Kerberos: #password required pam_krb5.so use_first_pass
/ETC/PAM.D/COMMON-SESSION
session required pam_unix.so session required pam_mkhomedir.so skel=/etc/skel/ umask=0022 # Enable if using Kerberos: #session optional pam_krb5.so minimum_uid=1000
Sisteme Giriş Yapma
Herşey gösterildiği şekilde ayarlandıktan sonra,
mirko
kullanıcısıyla sisteme giriş başarılı olmalıdır:Login:Password:
mirko
Debian GNU/Linux tty5 Creating directory '/home/
PASSWORD
mirko
'. Debian GNU/Linux comes with ABSOLUTELY NO WARRANTY, to the extent permitted by applicable law.mirko
@host:~$
Sonuç
Bu aşamada işlevsel bir LDAP kurulumuna sahipsiniz.
Merkesi ağ yetkilendirmesi ve kullanıcı üstverisinin paylaşılması (kullanıcı IDsi, grup IDsi, gerçek isimler, grup üyelikleri vb.)
Bunula birlikte, yukarıda bahsedildiği gibi LDAP üzerinden yetkilendirme yapmak LDAP sunucusuna bağlantılar düz metin şeklinde olduğundan ve parolalar kabloda dolaştığından güvenli değildir. Bu sorunu çözmek için ağ yetkilendirmesi için LDAP yerine Kerberos kullanılması tavsiye edilir.
Ayrıca, kullanıcılar başarılı bir şekilde yetkilendirildiklerinde, giriş yaptılır ve ev dizinlerine yerleştirilirler. Bununla birlikte, merkezi ağ yetkilendirme şemasında, kullanıcıların yaratılmadığı tekil makinelerde karşılık gelen ev dizinleri vrolmayacaktır. Bu sorun yukarıdaki
pam_mkhomedir
modülü tarafından halledilir. Bu modül eksik ev dizinlerini otomatik olarak yaratır.Bunun anlamı kullanıcı ev dizinlerinin ayrı ayrı giriş yaptıkları her makinede oluşturulur. Kullanıcılar değişik makinelerde değişik dosyalara sahip olacağı için, bu sorunlara yol açabilir. Bu durum Kerberos kullanıldığı taktirde, Kerberized ağlar dosyaların makineler arasında güvenilir ve parolasız olarak kopyalanmasını sağladığı için, kendi başına tamamen kabul edilemez olmayacaktır. Yine de kusursuz bir çözümden çok uzakta olacaktır. Bu sorunu gelişmiş, güvenli, heavy-duty dağıtık ağ dosya sistemleri ile çözmek için serideki bir diğer makaleye, OpenAFS Guide 'a bakınız.
Kurduğumuz iyi bir temelle, LDAP hakkında daha ayrıntılı bilgi için erişilebilir diğer kaynaklara da bakın:
- Resmi belgelendirme: http://www.openldap.org/doc/admin24/
- Mail listeleri: http://www.openldap.org/lists/
- IRC: FreeNode ağında (irc.freenode.net) #ldap kanalı
Linkler
Platformlar:
GNU
Debian GNU
LDAP:
OpenLDAP
Gq — Gtk LDAP İstemcisi
Luma — QT LDAP İstemcisi
jXplorer — Java LDAP İstemcisi
Apache Directory Studio — Eclipse-tabanlı LDAP İstemcisi
web2ldap — web-tabanlı LDAP İstemcisi
Glue layer:
NSS
Linux-PAM
İlişkil altyapısal teknolojiler:
MIT Kerberos
OpenAFS
FreeRADIUS
Ticari destek:
Spinlock Solutions
OpenLDAP support organizations
Diğer:
DocBook
NOT: Bu yazı [1] adresindeki makalenin Türkçeye çevrilmiş/çevrilmeye çalışılmış halidir. Anlamsal ve söz dizimsel hatalar içerebilir.
[1]: http://techpubs.spinlocksolutions.com/dklar/ldap.html
Süper olmuş, eline sağlık
YanıtlaSilTeşekkürler Reis :) Ben bişey yapmadım çevirdim sadece :)
YanıtlaSileline sağlık
YanıtlaSil