15 Ağustos 2015

Linux Aktif Dizin Kullanıcı Tanılama (Active Directory Authentication) Entegrasyonu

Aşağıda belirtilen prosedür CentOS 6.6’da çalışmaktadır (Diğer versiyonlar test edilmemiştir. Sanal makine kurulumu DVD imajı kullanılarak gerçekleştirilmiştir.).

1. Öncelikle kurulmuş olan sunucunun hostname’inin aşağıdaki dosyalarda belirtilmiş olması gerekmektedir:


vi /etc/sysconfig/network
NETWORKING=yes
HOSTNAME= centossunucu

vi /etc/hosts
127.0.0.1 centossunucu
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
::1 localhost localhost.localdomain localhost6 localhost6.localdomain6



Yukarıda kırmızı ile belirtilen sunucu ismini ihtiyacınıza göre düzenleyebilirsiniz. Sunucunuz domain’e dahil edilirken bu isimle kendini DNS sunucuya tanıtacaktır. Öntanımlı değerler bu işlem sırasında probleme yol açmaktadır.

2. Selinux ayarları AD authentication işlemini engellemektedir. Bu yüzden Selinux’un pasif hale getirilmesi gerekmektedir. Aşağıdaki dosyanın içinde şu düzenlemeyi yapınız:

vi /etc/sysconfig/selinux
SELINUX=disabled

3. Aşağıdaki paketleri sunucuya yükleyerek var olduklarından emin olunuz:

# yum -y install authconfig krb5-workstation pam_krb5 samba-common oddjob-mkhomedir sudo ntp

4. Aşağıdaki komut ile sunucuyu Winbind yöntemi ile hangi domain ve hangi domain controller sunucusunu kullanarak authentication yapması gerektiğine ilişkin konfigüre ediyoruz. Authconfig uygulaması ilgili konfigürasyon dosyalarını bizim için güncellemektedir (ABC ve ABC.LOCAL değerlerini kendi ortamınıza uygun olarak düzenleyiniz):

# authconfig --disablecache --enablewinbind --enablewinbindauth --smbsecurity=ads --smbworkgroup=ABC --smbrealm=ABC.LOCAL --enablewinbindusedefaultdomain --winbindtemplatehomedir=/home/abc.local/%U --winbindtemplateshell=/bin/bash --enablekrb5 --krb5realm=ABC.LOCAL --enablekrb5kdcdns --enablekrb5realmdns --enablelocauthorize --enablemkhomedir --enablepamaccess --updateall

Yukarıdaki komutta ayrıca aktif dizin kullanıcısı sisteme ilk defa login olduğunda otomatik olarak home dizini oluşturma opsiyonu belirtilmiştir. Eğer bu dizin mevcutsa doğal olarak yeni bir dizin oluşturulmayacaktır.

5. /etc/krb5.conf dosyasının aşağıdaki gibi olduğundan emin olunuz:

[logging]
default = FILE:/var/log/krb5libs.log
kdc = FILE:/var/log/krb5kdc.log
admin_server = FILE:/var/log/kadmind.log

[libdefaults]
default_realm = ABC.LOCAL
dns_lookup_realm = true
dns_lookup_kdc = true
ticket_lifetime = 24h
renew_lifetime = 7d
forwardable = true

[realms]
EXAMPLE.COM = {
kdc = kerberos.example.com
admin_server = kerberos.example.com
}

ABC.LOCAL = {
kdc = dc.abc.local
admin_server = dc.abc.local
}

[domain_realm]
.example.com = EXAMPLE.COM
example.com = EXAMPLE.COM
abc.local = ABC.LOCAL
.abc.local = ABC.LOCAL

6. Aşağıdaki komutla kerberos ile AD authentication işleminin çalıştığından emin olunuz:

# kinit centos

Yukarıdaki örnekte centos kullanıcısı aktif dizinde test amaçlı olarak tanımlanmış bir kullanıcıdır. Siz aktif dizinde tanımlı herhangi bir kullanıcıyı kullanabilirsiniz.

7. Aşağıdaki komutla CentOS sunucunun zamanını Active Directory sunucusunun zamanı ile senkronize ediniz. Zaman senkronizasyonu kerberos protokolü açısından önemlidir:

# ntpdate dc.abc.local

8. Aşağıdaki komutla CentOS sunucuyu domain’e dahil ediniz. Bu işlem sırasında domain admin kullanıcılarından birini kullanınız. Bu komut sonunda hata almanız halinde bir sonraki komutla kontrol yapınız. Eğer sonraki komut başarı ile sonuçlanıyorsa domain’e katılma işlemi başarılı olmuş olmalıdır.

# net ads join ABC.LOCAL -U Administrator

Yukarıdaki işlem Administrator hesabı ile gerçekleştirilemezse başka bir kullanıcı adı ile deneyiniz. Kontrol işlemini aşağıdaki komutla gerçekleştirebilirisiniz:

# net ads testjoin

9. Aşağıdaki komutlar ile Active Directory kullanıcıları login olduğunda “home” dizinlerinin içinde yaratılacağı (veya içine eklenmesi gereken) kök dizini tanımlayınız ve erişim haklarını genişletiniz:

# mkdir /home/abc.local
# chmod 777 /home/abc.local/

10. Aşağıdaki komutlarla sistemin reboot işleminden sonra da çalışabilmesi için gerekli servislerin tekrar başlatılacağından emin olunuz:

# chkconfig oddjobd on
# chkconfig winbind on
# chkconfig messagebus on

11. Son olarak sistemi aşağıdaki komutla reboot ediniz:

# init 6