Linux İşletim Sistemlerinde Kerberos ile Kimlik Doğrulama (Active Directory Entegrasyon)

Kerberos_Install

Bu makalemizde Linux İşletim Sistemlerinde “Kerberos” yapılandırmasını ve Linux İşletim Sistemli bir istemci bilgisayarın Windows Etki Alanına (Active Directory Domain) dahil edilmesini inceleyeceğiz.

Kerberos Nedir ?

Kerberos adını yunan mitolojisindeki 3 başlı köpekten alır. Microsoft Windows 2000 ve sonrası işletim sistemleri Active Directory kimlik doğrulama protokolü olarak “Kerberos” kullanır. Bir istemci Active Directory’de kimlik doğrulamaya çalıştığı zaman “Kerberos Policy” kullanır.

Kerberos karşılık kimlik doğrulama sağlar. Karşılıklı kimlik doğrulama sayesinde network’e yalnızca yetkili istemcinin erişmeye çalışmasını değil, aynı zamanda istemcinin isteğine yetkili sunucunun cevap vermesini de sağlar.

Kerberos’un kullandığı üç temel bileşeni vardır bunlar

  • Kimlik doğrulaması yapmak isteyen ya da herhangi bir servisten yararlanmak isteyen istemci bilgisayar.
  • İstemcinin talep ettiği servisi sağlayan sunucu.
  • İstemci ve Sunucu tarafında güvenilir bir iletişim kurulmasını sağlayan KDC (Key Distribution Center)

Şimdi Linux İşletim Sistemimizde Kerberos Kimlik Doğrulama yapılandırmasına geçelim.

1. İşletim sistemimizde gerekli olan kerberos paketlerini ve bağımlılıklarını kuruyoruz.

-- Öncelikle sistemimizde bulunan eski "samba" paketlerini kaldırıyoruz.

# yum -y remove samba*

-- Sistemimize "samba4" ve kimlik doğrulama için "kerberos" paketlerini kuruyoruz.

# yum -y install samba4* krb5*

-- İstemcimizi etki alanına üye yapmadan önce sistemimizi yeniden başlatıyoruz.

# shutdown -r now

2. İşletim sistemimizin grafik arayüzünden (GUI) “System > Administration > Authentication” yolunu izleyerek yapılandırma programımızı açıyoruz.

Kerberos_Install_1

3. Açılan arayüzde varsayılan olarak kimlik doğrulama yöntemi yerel hesaplar olarak gelmektedir. Buradan “User Account Database” seçeneğini “Winbind” olarak seçiyoruz ve aşağıdaki gibi değişkenleri kendi sistemize göre ayarlıyoruz. Burada etki alanı ismini büyük harflerle yazmalıyız. Burada “Winbind Domain Controllers” alanına etki alanı yöneticimizi yazmalıyız ancak birden fazla var ise “*” işareti koyabiliriz.

Kerberos_Install_2

4. Yapılandırma ekranımızdan “Advanced Options” sekmesine geçerek “Other Authentication” seçeneğinde “Create home directories on the first login” kutucuğunu işaretliyoruz. Bu seçenekle Linux sistemimizde oturum açtığımızda “home” klasörümüz oluşacaktır aksi takdirde oturum açarken hata verecektir.

Kerberos_Install_3

5.  Tekrar “Identity & Authentication” sekmesine geri döndüğümüzde bize yaptığımız değişiklikleri kaydetmek istediğimizi soruyor burada “Save” düğmesine tıklıyoruz ve alt kısımda bulunan “Join Domain” düğmesine tıklıyoruz.

Kerberos_Install_4

6. Etki alanına istemcimizi üye yapmak için Etki Alanı yönetici hesabı ve parolasını giriyoruz ardından “OK” düğmesine tıklıyoruz.

Kerberos_Install_5

7. Etki alanına üye olma işlemi tamamlandı. “Apply” düğmesine tıklıyoruz ve istemcimizi yeniden başlatıyoruz.

Kerberos_Install_6Kerberos_Install_78. İstemcimiz yeniden açıldığında “other” seçeneğini seçerek etki alanı kullanıcı adı ve parolamızı giriyoruz. Grafik ekranda oturum açtığımız gibi “SSH” bağlantısı ile aynı şekilde oturum açabiliriz.

Kerberos_Install_8 Kerberos_Install_9

9. Etki alanı kullanıcımız ile oturum açtık şimdi sistemimizde çalışabiliriz.

Kerberos_Install_10

10. Eğer işlemlerimizi komut istemcisinden yapacaksak sunucumuzda “Active Directory” entegrasyonu için “/etc/krb5.conf” dosyasını düzenleyerek “Kerberos” ayarlarını yapıyoruz. Dikkat edeceğimiz konulardan biri “Kerberos” zaman bağımlı bir servis olduğu için ortamda bulunan “Active Directory” hizmeti veren sunucumuzla zaman ayarının aynı olması gerekmektedir. Yani “Active Directory” sunucumuz ile “Kerberos” hizmetinin çalışacağı bilgisayarlarımızda senkronizasyon açısından aynı zaman sunucusunu (Ntp Server) kullanması önerilir.  Ayrıca “Active Directory” servisinin çalıştığı sunucuya isim çözümleyerek erişebildiğine emin olmalıyız. Ayrıca komut satırından da bu işi yapabilmek için yazımızın 1. adımındaki paketleri sistemimize kurmamız gerekiyor.

-- Test için aşağıdaki komut kullanılabilir.

# nslookup koraykey-pdc.koraykey.net
Server:         192.168.2.121
Address:        192.168.2.121#53

Name:   koraykey-pdc.koraykey.net
Address: 192.168.2.121

-- İsim çözümleyemiyorsa "etc/hosts" dosyasına sunucu adresini yazabiliriz 
veya yapılandırmamızda isim yerine adres kullanabiliriz.

# vim/etc/hosts

127.0.0.1       localhost.koraykey.net      localhost
192.168.2.131   koraykey-lnx.koraykey.net   koraykey-lnx

-- Örnekteki gibi yapılandırdıktan sonra dosyamızı kaydedip çıkıyoruz.

-- Active Directory sunucumuza erişebildiğimizi test ediyoruz.

# ping koraykey-pdc.koraykey.net

PING koraykey-pdc.koraykey.com (192.168.2.121) 56(84) bytes of data.
64 bytes from koraykey-pdc.koraykey.net (192.168.2.121): icmp_seq=1 ttl=64 time=0.044 ms
64 bytes from koraykey-pdc.koraykey.net (192.168.2.121): icmp_seq=2 ttl=64 time=0.040 ms
64 bytes from koraykey-pdc.koraykey.net (192.168.2.121): icmp_seq=3 ttl=64 time=0.105 ms
64 bytes from koraykey-pdc.koraykey.net (192.168.2.121): icmp_seq=4 ttl=64 time=0.049 ms

11.  “Active Directory” entegrasyonu için “/etc/krb5.conf”, “/etc/samba/smb.conf” ve “/etc/nsswitch.conf” dosyasını düzenliyoruz. Buradaki yapılandırma değişkenleri mümkün olduğunda işe yarayacak şekilde düzenlenmiştir. Grafik Arayüz ile etki alanına dahil ettiğimizde bu kadar değişken gelmeyebilir. İstersek grafik arayüzden üye yaptıktan sonra dosyaları aşağıdaki gibi isteğimize göre düzenleyebiliriz.

-- Kerberos yapılandırma dosyamızın bir yedeğini alıp kendi Etki Alanımızın
ayarlarına göre yeni dosyamızı düzenliyoruz.

# mv /etc/krb5.conf /etc/krb5.conf.bak
# vim /etc/krb5.conf

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

[libdefaults]
 default_realm = KORAYKEY.NET
 dns_lookup_realm = false
 dns_lookup_kdc = true
 ticket_lifetime = 24h
 renew_lifetime = 7d
 forwardable = true

[appdefaults]
pam = {
   debug = false
   ticket_lifetime = 36000
   renew_lifetime = 36000
   forwardable = true
   krb4_convert = false
}

[realms]
 KORAYKEY.NET = {
  kdc = koraykey-pdc.koraykey.net
  admin_server = koraykey-pdc.koraykey.net
  kdc = *
}

[domain_realm]
 .koraykey.net = KORAYKEY.NET
 koraykey.net = KORAYKEY.NET

-- Samba yapılandırma dosyamızın bir yedeğini alıp kendi Etki Alanımızın
ayarlarına göre yeni dosyamızı düzenliyoruz. Yedek aldığımız dosya daha
sonra ihtiyacımız olan parametreleri incelememiz için gerekli olabilir.

# mv /etc/samba/smb.conf /etc/samba/smb.conf.bak
# vim /etc/samba/smb.conf

[global]
   workgroup = KORAYKEY
   realm = KORAYKEY.NET
   preferred master = no
   server string = Samba Server Version %v
   security = ads
   encrypt passwords = yes
   log level = 3
   log file = /var/log/samba/%m
   max log size = 50
   printcap name = cups
   printing = cups
   winbind enum users = Yes
   winbind enum groups = Yes
   winbind use default domain = Yes
   winbind nested groups = Yes
   winbind separator = +
   idmap uid = 1000-20000
   idmap gid = 1000-20000
   template shell = /bin/bash

-- Kimlik doğrulama yöntemlerimizi ayarlamak için dosyamızda bulunan aşağıdaki
alanları düzenliyoruz.

# vim /etc/nsswitch.conf

passwd:     compat winbind files
shadow:     compat winbind files
group:      compat winbind files

-- İstemcimizde oturum açacak kullanıcıların bir "home folder" dediğimiz ev
dizinine ihtiyaçları olacaktır. Bunun için aşağıdaki gibi dosyamızı açıp uygun
bir satıra parametremizi ekliyoruz.

# vim /etc/pam.d/system-auth

session     optional      pam_mkhomedir.so

12. Yukarıda büyük harf kullanılarak yazılmış ifadelerin küçük harf kullanılarak yazılması durumunda Kerberos AD’ye bağlanamayacaktır. Kerberos ayarlarınızın doğruluğunu “kinit” komutunu kullanarak test edebilirsiniz. “kinit” komutuna parametre olarak verilen domain adının büyük harflerle yazıldığına dikkat edin. Komutu çalıştırdığınızda belirtilen kullanıcı için parola girmenizi isteyecektir. Girdiğiniz parola ile AD üzerinde oturum açılabilirse komut, herhangi bir mesaj göstermeden sonlanacaktır.

AD ile Samba sunucusu arasında 5 dakikadan daha fazla bir zaman farkı varsa 
kinit komutunu çalıştırdığınızda aşağıdaki hata mesajı görüntülenecektir.
Ayarlarımız doğruysa başarılı bir şekilde çalışacaktır.

-- Kerberos kimlik doğrulama ayarlarımızı test ediyoruz.

# kinit administrator@KORAYKEY.NET
Password for koray_gunduz@KORAYKEY.COM:
kinit(v5): Clock skew too great while getting initial credentials

# kinit administrator@KORAYKEY.NET
Password for administrator@KORAYKEY.NET: 
Warning: Your password will expire in 41 days on Tue Jul 23 16:30:56 2013

-- İstemcimizi etki alanımıza üye yapıyoruz.

# net ads join -W koraykey.net -S koraykey-pdc -U Administrator
Enter Administrator's password: **********
Using short domain name -- KORAYKEY
Joined 'KORAYKEY-FS' to realm 'koraykey.net'

-- Eğer bir "DNS" hatası ile karşılaşırsak istemcimizin DNS kaydını sunucumuzda
oluşturup yeniden deneyebiliriz.

-- Winbind servisimizi başlatıyoruz ve sunucumuz açılırken başlaması için
gerekli ayarı yapıyoruz.

# service winbind start
# chkconfig winbind on

Linux işletim sistemli bilgisayar veya sunucumuz artık etki alanı üyesi olmuş oluyor. Etki alanında bulunan “Domain Users” üyesi bir kullanıcı ile oturum açılabilir ağ paylaşımlarına erişilebilir.  “Active Directory Users And Computers” konsolunda “Computers” altında baktığımızda Linux İşletim Sistemli bilgisayarımızı görebiliriz. Tabi bu özellik Etki Alanı için uyguladığımız güvenlik politikalarını (group policy) uygulamayacaktır. Bunlar sadece Windows İşletim Sistemleri ile uyumlu olduğundan Linux İşletim Sistemlerini desteklemeyecektir. Linux işletim sistemide etki alanı denetleyicisi kurulumu için “Linux İşletim Sistemlerinde Birincil Etki Alanı Sunucu Yapılandırması (Samba Domain Controller)” makalemizi inceleyebilirsiniz.

Linux İşletim Sistemlerinde “Kerberos ile Kimlik Doğrulama” yapılandırmamızı tamamladık artık kullanılabilir. Burada uygulanan adımlar CentOS Linux 6.4 ve  Oracle Enterprise Linux 6.4 64 Bit üzerinde denenmiştir. Aynı zamanda diğer Linux sürümleriyle uyumludur.

Başka bir makalede görüşmek üzere…

Bu yazı Unix / Linux kategorisine gönderilmiş ve , , , , , , , , , , , , , , , , , , , , , , ile etiketlenmiş. Kalıcı bağlantıyı yer imlerinize ekleyin.