RHEL 8 veya CentOS 8 ile Windows Active Directory Entegrasyonu
Kuruluşların çoğunda, kullanıcılar ve gruplar Windows Active Directory üzerinde oluşturulur ve yönetilir. Kimlik doğrulama amacıyla RHEL 8 ve CentOS 8 linux sunucularımızı AD (Active Directory) ile entegre edebiliriz, entegrasyon sonrası Active Directory üzerinde bulunan kullanıcılarımızla ilgili linux sunuclarda oturum açabiliyor olacağız. Bu sayede merkezden kimlik yönetimi işlemi yapmış olacağız. Bu yazıda ilgili linux sistemlerin realmd ile kimlik doğrulama isteklerini Active Directory üzerinden yapabilmesi için yapılandırma adımlarından bahsediyor olacağım.
Adım 1: Gerekli Paketlerin Kurulması
CentOS 8 / RHEL 8 AD entegrasyonu için bir dizi paket gereklidir. Aşağıdaki komutla kurulumuna başlayabiliriz:
$ sudo dnf install realmd sssd oddjob oddjob-mkhomedir adcli samba-common samba-common-tools krb5-workstation authselect-compat
Paket kurulumlarını “y” tuşu ile onaylıyoruz ve kurulumlarımız tamamlanıyor.
Last metadata expiration check: 0:19:18 ago on Fri 27 Sep 2019 09:45:40 PM EAT. Package realmd-0.16.3-16.el8.x86_64 is already installed. Package sssd-2.0.0-43.el8_0.3.x86_64 is already installed. Package adcli-0.8.2-2.el8.x86_64 is already installed. Package samba-common-4.9.1-8.el8.noarch is already installed. Dependencies resolved. =================================================================================================================================================== Package Arch Version Repository Size =================================================================================================================================================== Installing: oddjob x86_64 0.34.4-7.el8 AppStream 83 k oddjob-mkhomedir x86_64 0.34.4-7.el8 AppStream 52 k samba-common-tools x86_64 4.9.1-8.el8 BaseOS 461 k Installing dependencies: samba-libs x86_64 4.9.1-8.el8 BaseOS 177 k Transaction Summary =================================================================================================================================================== Install 4 Packages Total download size: 773 k Installed size: 1.7 M Is this ok [y/N]: y
Adım 2: CentOS 8 / RHEL 8’de Active Directory Etki Alanını Keşfetmek
AD entegrasyonu yapmadan önce, CentOS / RHEL 8 sunucularının AD alanını ait FQDN/Hostname’ini çözebildiğinden emin olmalıyız.
Sırasıyla aşağıdaki dosyaları inceleyerek DNS ayarlarımızı doğruluyoruz. Hosts dosyasında görüleceği üzere Domain Controller’ımın IP’si 10.61.61.34, FQDN’i dcsk.acme.local ve hostname’i ise dcsk olarak girdim ve kayıt ediyorum. Resolv.conf dosyasında da search karşılığına acme.local ve nameserver alanına ise DC IP’sini girdim. Siz de kendi ortam bilgilerinize göre iki dosyayı düzenleyiniz.
$ nano /etc/hosts 10.61.61.34 dcsk.acme.local dcsk $ nano /etc/resolv.conf search acme.local nameserver 10.61.61.34
Yukarıdaki yapılandırma ayarlarımız doğru ise artık testimizi yapabiliriz. Aşağıdaki komutu çalıştırıyoruz:
$ realm discover acme.local
Çıktısı buna benzer birşey ise yapılandırma ayarlarımız doğru gözükmektedir.
ACME.LOCAL type: kerberos realm-name: ACME.LOCAL domain-name: acme.local configured: kerberos-member server-software: active-directory client-software: sssd required-package: oddjob required-package: oddjob-mkhomedir required-package: sssd required-package: adcli required-package: samba-common-tools login-formats: %[email protected] login-policy: allow-realm-logins acme.local type: kerberos realm-name: ACME.LOCAL domain-name: acme.local configured: no
Adım 3: Active Directory Etki Alanına Katılmak
CentOS 8 / RHEL 8 makinesini Windows Active Directory etki alanıyla tümleştirmek için bir AD yönetici kullanıcı hesabı gereklidir.
Yönetici kullanıcı adı ve şifrenizin olduğundan emin olun. Ardından, CentOS 8 / RHEL 8 Linux sistemini bir Active Directory etki alanına katmak için aşağıdaki komutu çalıştırın. Ben burada Doman Admin grubuna üye olan Administrator hesabını kullandım siz Domain Admin grubuna üye başka bir hesap kullanabilirsiniz:
$ realm join acme.local -U Administrator
Bizden entegrasyın için kullanmış olduğumuz hesabın şifresini isteyecek. Şifremizi girdikten sonra etki alanına katılma işleminin başarılı ya da başarısız olduğunu anlamak için aşağıdaki komutu çalıştırıyoruz:
$ sudo realm list #Aşağıdaki çıktıya göre etki alanına katılma işlemi başarı ile tamamlanmıştır. ACME.LOCAL type: kerberos realm-name: ACME.LOCAL domain-name: acme.local configured: kerberos-member server-software: active-directory client-software: sssd required-package: oddjob required-package: oddjob-mkhomedir required-package: sssd required-package: adcli required-package: samba-common-tools login-formats: %[email protected] login-policy: allow-realm-logins
Bir kereye mahsus aşağıdaki komutlar çalıştırılır.
sudo authselect select sssd sudo authselect select sssd with-mkhomedir
sssd.conf yapılandırma dosyamız aşağıdaki gibi görünmelidir:
$ cat /etc/sssd/sssd.conf [sssd] domains = ACME.LOCAL config_file_version = 2 services = nss, pam [domain/ACME.LOCAL] ad_server = dcsk.acme.local ad_domain = ACME.LOCAL krb5_realm = ACME.LOCAL realmd_tags = manages-system joined-with-adcli cache_credentials = True id_provider = ad krb5_store_password_if_offline = True default_shell = /bin/bash ldap_id_mapping = True use_fully_qualified_names = True fallback_homedir = /home/%[email protected]%d access_provider = ad
Eğer yapılandırma dosyasında herhangi bir değişiklik yapılırsa, değişikliğin geçerli olması için sssd servisi yeniden başlatılmalıdır.
sudo systemctl restart sssd
Servisin son durumu aşağıdaki gibi olmalıdır:
$ systemctl status sssd ● sssd.service - System Security Services Daemon Loaded: loaded (/usr/lib/systemd/system/sssd.service; enabled; vendor preset: disabled) Active: active (running) since Fri 2019-09-27 22:30:25 EAT; 37min ago Main PID: 32474 (sssd) CGroup: /system.slice/sssd.service ├─32474 /usr/sbin/sssd -i --logger=files ├─32478 /usr/libexec/sssd/sssd_be --domain acme.local --uid 0 --gid 0 --logger=files ├─32479 /usr/libexec/sssd/sssd_nss --uid 0 --gid 0 --logger=files └─32480 /usr/libexec/sssd/sssd_pam --uid 0 --gid 0 --logger=files ................................................................
Yapılan işlemlerin doğruluğunu ve entegrasyonun çalıştığını anlamak için Active Directory’de bulunan herhangi bir hesabın detaylarını çekmeye çalışabiliriz:
$ id [email protected] uid=1239401181([email protected]) gid=1239400512(domain [email protected]) groups=1239400512(domain [email protected]),1239400572(denied rodc password replication [email protected]),1239401205([email protected]),1239401183([email protected]),1239401111([email protected])
Not: Eğer kullanıcyı [email protected] formatında kullanmak yerine direkt kullanıcıadi formatına çekmek isterseniz. /etc/sssd/sssd.conf dosyası içerisinde bulunan
use_fully_qualified_names = True fallback_homedir = /home/%[email protected]%d
parametreleri
use_fully_qualified_names = False fallback_homedir = /home/%u olarak
değiştirilmeli ve sssd servisi yeniden başlatılmalıdır.
sudo systemctl restart sssd
4. Adım: Erişimi Kontrol Edin – Kullanıcı / grupla sınırlandırın
Kayıtlı sunucuya erişim, yalnızca belirli kullanıcılara / gruplara izin verilerek sınırlandırılabilir.
Kullanıcıya erişim izni
SSH ve konsol aracılığıyla bir kullanıcının erişimine izin vermek için şu komutu kullanın:
$ realm permit [email protected] $ realm permit [email protected] [email protected]
Gruba erişim izni – Örnekler
$ ream permit -g sysadmins $ realm permit -g 'Security Users' $ realm permit 'Domain Users' 'admin users'
Eğer yukarıdaki yetkilendirmenin yerine bütün domain kullanıcılarına erişim izni vermek istiyorsanız:
$ sudo realm permit --all
Ya da bütün domain kullanıcıların erişim iznini iptal etmek isterseniz:
$ sudo realm deny --all
Adım 5: Sudo Erişimini Yapılandırın
Normal şartlarda ilk entegrasyon işleminden sonra domain kullanıcılarının kendilerini root haklarına yükseltme yetkisi olmayacaktır. Eğer domain kullanıcılarının gerek gördükleri zaman root haklarına sahip olmasını isterseniz, sudo izinlerinin tanımlanması gerekecektir.
Öncelikle sudo izinleri için ilgili dosyayı oluşturalım:
$ sudo vi /etc/sudoers.d/domain_admins
Tek kullanıcı için aşağıdaki gibi ilgili dosyada değişiklik yapmamız gerekecektir:
[email protected] ALL=(ALL) ALL
Bir kullanıcı daha ekleyelim:
[email protected] ALL=(ALL) ALL [email protected] ALL=(ALL) ALL
Grup olarak tanımlama yapmak istendiği takdirde:
%[email protected] ALL=(ALL) ALL
İki veya üç adla grup eklemek:
%guvenlik\ [email protected] ALL=(ALL) ALL %sistem\ super\ [email protected] ALL=(ALL) ALL