Debian – Microsoft Active Directory Entegrasyonu

Calistigim sirkette su an bircok web programinda kullanicilarin bilgilerinin dogrulanmasi ve yetkilendirilmeleri icin mysql tabaninda bulunan email adreslerini kullaniyoruz. Ancak kisa bir sure icinde email sistemimiz MS Exchange sistemine gececegi icin (Niye, nasil, kim diye sormayin) bu yetkilendirme kullanilamayacak.

Exchange ile birlikte tum sirket hesaplarinin AD uzerinde olacagi dusunulurse aslinda bircok yetkilendirme icin tek yetkilendirme noktasi olarak AD kullanilmasi mumkun. Bu belge bunu anlatiyor olacak. Yapilmak istenen bir Debian linux sunucuya yapilan SSH erisimlerinin networkte bulunan Windows 2003 R2 Active Directory uzerinden kontrol edilmesi.

1) Windows 2003 R2 uzerinde yapilacak islemler:
Windows 2003 R2 sisteminin linux sistem kullanicilarini yetkilendirebilmesi icin gerekli ilk sey “Identity Management for Unix Servers” programini. Bu program Windows 2003 R2 kurulum CDlerinden cikmaktadir. Programi kurmak icin, Control Panel -> Add/Remove Windows Components -> Active Directory Services -> Identity Management for Unix box secenegi secildikten sonra Install butonuna tiklanarak program kurulmalidir.

Programin kurulmasindan sonra, AD kullanicilarindan herhangi birinin ozelliklerine bakildiginda “Unix Attributes” adinda yeni bir sekme gorulecektir. Bu sekme bir UNIX NIS domaininin, kullaniciya verilecek User ID bilgisinin, kullanicinin login shell bilgisinin, kullanicinin ev dizininin ve kullanicinin birincil grubunun belirlenebilecegi ve ayarlanabilecegi bolumdur.

Bu noktada, Debian sunucumuzu Active Directory domainine dahil edebilmek icin AD domaininde kullanabilmek icin gerekli bir AD kullanicisi da acmak gerekiyor. Bu kullanici hesabinin herhangi bir yonetimsel hakki bulunmasi gerekmiyor, hatta guvenlik sebebiyle hic yonetim ozelligi (admin privileges) olmamasi daha iyi olacaktir. Kullaniciyi olustururken tahmin edilmesi zor bir parola secmeli, parolanin gecerliligini yitirmemesini secmeli ve kullanicinin sifresini degistirememe ozelligini secmelisiniz. Kullanici adi ve parolasini daha sonra kullanacagimiz icin simdilik bir yere not edin. Ornegimizde kullanici adi testuser, parolasi ise test123 ayarlandi. Kullanicinin ozelliklerinde Unix Attributes:


NIS domain AD_DOMAIN
UID herhangi bir UID
login shell /bin/sh
home dizini /home/testuser/
Primary group Default Group ID


2) Debian sunucu uzerinde yapilacak islemler:
Asagidaki komutla LDAP programlarini kurun.

# apt-get install ldap-utils openssl libpam-ldap
# nano /etc/ldap/ldap.conf
BASE dc=AD_DOMAIN, dc=local
URI ldap://AD_sunucu.AD_DOMAIN.local
HOST AD_sunucu.AD_DOMAIN.local

LDAP baglantisini test etmek icin asagidaki komutu kullanin.

# ldapsearch -x -W -D "cn=testuser,cn=Users,dc=AD_DOMAIN,dc=local" -LLL "(sAMAccountName=testuser)"

Komut basarili bir sekilde calisiyor ise, ciktisi testuser kullanicisinin ozelliklerini verecektir. Eger bu ciktilari gorebildiyseniz su ana kadar yaptiginiz her sey normal demektir. Bir sonraki adim libnss ayarlari.

# nano /etc/libnss-ldap.conf
host AD_DOMAIN.local
base dc=AD_DOMAIN,dc=local
ldap_version 3
binddn cn=testuser,cn=Users,dc=AD_DOMAIN,dc=local
bindpw test123
scope sub
timelimit 30
nss_map_objectclass posixAccount user
nss_map_objectclass shadowAccount user
nss_map_attribute homeDirectory unixHomeDirectory

Bir sonraki adim ise, /etc/nsswitch.conf dosyasinin ayarlanmasi. Bu dosya bir kullanici Linux sisteme baglanmaya calistiginda hangi dosyalara bakip kullanicinin ozelliklerini okuyacagi dosyalari belirtir. Dosyada degisecek satirlar asagidaki gibidir. Boylece linux sunucu ilk olarak LDAP’a bakacak eger kullaniciyi LDAP’ta bulamazsa standart sistem dosyalarina bakacaktir.

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


* Not: Debian sistemlerde /etc/nsswitch.conf dosyasi on tanimli olarak sadece root tarafindan okunabilir, bu yuzden tum kullanicilarin okuyabilmesi icin asagidaki komutu verin.

# chmod 644 /etc/nsswitch.conf

Son adim ise, sifrelerin kontrolu icin LDAP ile sistemi birbirine baglayacak olan PAM (Pluggable Authentication Module) ayarlarini yapmak. Gerekli komut,

# echo "auth sufficient pam_ldap.so use_first_pass" >> /etc/pam.d/common-auth
# echo "auth sufficient pam_ldap.so use_first_pass" >> /etc/pam.d/common-password
# echo "session required pam_mkhomedir.so skel=/etc/skel/ umask=0022" >> /etc/pam.d/common-session

Son satirdaki pam_mkhomedir.so objesi, Linux sisteme baglanan kullanicinin ev dizini Linux sunucu uzerinde yoksa otomatik olarak olusturmaya yarayacaktir.

Kurulum bu kadar, simdi AD uzerindeki herhangi bir domain kullanicisi ile SSH ile baglantiyi deneyelim.

$ ssh gurcan@AD_DOMAIN.local
[email protected]'s password:
Linux gate 2.6.18-5-686 #1 SMP Fri Jun 1 00:47:00 UTC 2007 i686
You have new mail.
$ id
uid=10001(gurcan) gid=100(users) groups=100(users)

* id komutu sonucu cikan uid (10001) ile Windows AD sunucudaki gurcan hesabinin Unix Attributes kismindaki UID ile ayni oldugunu farketmis olmalisiniz 🙂

gurcan Written by:

Be First to Comment

Leave a Reply

Your email address will not be published. Required fields are marked *