Zabbix: Active Directory'de Çoklu Oturum Açma (SSO) Kimlik Doğrulaması


Bu makalede, Kerberos kullanan Active Directory'de Zabbix 4.0 (veya daha yenisi) için şeffaf bir SSO (Tek Oturum Açma) kimlik doğrulamasının adım adım yapılandırmasını ele alacağız.

Sonuç olarak, bir kullanıcının kimliği, kimlik bilgilerini girmeden Zabbix ön sayfasında otomatik olarak doğrulanır. Bunu yapmak için, bir kullanıcının Zabbix'te belirtilen Active Directory etki alanı hesabı altında Windows'ta oturum açmış olması gerekir. Ek olarak, kullanıcının tarayıcıyı yapılandırması gerekir (Kerberos desteği etkinleştirilmelidir ve IE'de güvenilir intranet siteleri ayarlanmalıdır).

Bir vitrin:

  • Ubuntu Sunucusu 18.04 LTS;

  • İşlev düzeyi 2008 (veya üstü) olan Active Directory etki alanı

  • Zabbix Sunucusu 4.0.11, Web sunucusu olarak Apache2 (Zabbix yükleme kılavuzu)

Not. SSO'yu uygulamak için bu makalede libapache2-mod-auth-kerb modülüne sahip Apache2 kullanılacaktır. Nginx burada ele alınmayacaktır, ancak Nginx derlenirken ayrıca etkinleştirilmesi gereken spnego-http-auth-nginx-module'e sahiptir.

Active Directory'de Zabbix LDAP Kimlik Doğrulaması

Her şeyden önce, etki alanı kullanıcılarını Zabbix'e bağlamanız gerekir. Bunu yapmak için, Zabbix'te AD etki alanında sahip oldukları aynı oturum açma bilgilerine sahip bir kullanıcı oluşturmak yeterlidir. Örneğin, oturum açma bilgileriniz (sAMAccountName özniteliği) user_5 ise, Zabbix'teki bir kullanıcının aynı oturum açma bilgilerine sahip olması gerekir.

Zabbix'i kullanacak her kullanıcı için yapın.

Ardından, Zabbix'i etki alanınıza bağlamak için Active Directory'de ayrı bir kullanıcı hesabı oluşturun. Uygulamada, herhangi bir etki alanı hesabını kullanabilirsiniz, ancak ayrı bir hizmet hesabı oluşturmak daha iyidir. Benim durumumda zabbix_admin olacaktır. AD'de bir kullanıcı oluşturmak için PowerShell cmdlet New-ADUser kullanacağım:

New-ADUser -Name "zabbix_admin" -GivenName "zabbix_admin" -Surname "zabbix_admin" -SamAccountName "zabbix_admin" -AccountPassword (Read-Host -AsSecureString "Password:") -DisplayName "zabbix_admin" -Enabled $true

PowerShell konsolunda yukarıda gösterilen komutu çalıştırın ve bir kullanıcı parolası belirleyin. Yeni kullanıcınız, alanınızın kök dizinindeki Users kapsayıcısı altında yer alacaktır.

Zabbix'te LDAP kimlik doğrulamasını yapılandıralım. Zabbix ön ucunda, Yönetim -> Kimlik Doğrulama'daki LDAP ayarları sekmesine gidin. LDAP kimlik doğrulamasını etkinleştir'i işaretleyin ve aşağıdaki alanları doldurun:

  • LDAP sunucusu:

    ldap://dc1.domain.local
  • Liman:

    389
  • Temel DN:

    DC=domain, DC=local
  • Arama özelliği:

    sAMAccountName
  • Bağlama DN'si:

    CN=zabbix_admin,OU=Users,DC=domain,DC=local

Herhangi bir parametrenin açıklamasını Zabbix belgelerinin LDAP kimlik doğrulaması bölümünde okuyabilirsiniz: https://www.zabbix.com/documentation/current/manual/web_interface/frontend_sections/administration/authentication.

Yapılandırmayı tamamlamadan önce, bir test oturumu açarak (Test düğmesi) ayarlarınızın geçerli olduğundan emin olun. Bir kullanıcı adı (hesabı daha önce oluşturduk) ve AD şifresi belirtin.

Test başarılı olduysa, ayarlarınızı kaydedin ve Zabbix'te Dahili olan kimlik doğrulama türünü LDAP olarak değiştirin.

HTTP kimlik doğrulamasını etkinleştirin (HTTP Ayarları -> HTTP kimlik doğrulamasını etkinleştir).

LDAP kimlik doğrulaması yapılandırıldı.

İpucu. LDAP sunucunuz kullanılamıyorsa, Zabbix'e erişemezsiniz. Dahili kimlik doğrulamasına geri dönmek için MySQL'i açın ve aşağıdaki komutu çalıştırın:

update zabbix.config set authentication_type='0' where configid='1';

Zabbix'te Şeffaf (Tek Oturum Açma) Kimlik Doğrulaması Yapılandırma (Apache2, krb5-user)

Öncelikle /etc/hostname içinde sunucunuzun FQDN adını etki alanınızdaki DNS kaydıyla eşleşmesi gerektiğini belirtin. Benim durumumda zabbix.domain.local.

Ayrıca yerel IP adresi için sunucunuzun FQDN'sini ve sunucunuzun IP adresini /etc/hosts içine yazın.

127.0.0.1 localhost zabbix.domain.local
10.1.1.10 zabbix.domain.local

Kerberos kimlik doğrulamasının düzgün çalışması için etki alanı denetleyicinizle zamanı eşitleyin. ntpdate paketini kurun ve etki alanı denetleyicisine bağlayın.

apt-get install ntp ntpdate
ntpdate dc.domain.local

Chrony, CentOS 8'de zamanı senkronize etmek için kullanılır. ntp ve ntpdate paketleri resmi depolarda mevcut değildir.

Şimdi bir etki alanı denetleyicisinde bir keytab dosyası oluşturmanız gerekiyor. Keytab, SPN ve şifrelenmiş anahtarlar içeren bir dosyadır. Keytab, Kerberos tabanlı kimlik doğrulama için kullanılır.

  • Etki alanı denetleyicinizde oturum açın ve komut istemini yönetici olarak çalıştırın. C:\'ye gidin.

  • Aşağıdakileri girin:

    ktpass -princ HTTP/zabbix.domain.local@DOMAIN.LOCAL -mapuser zabbix_admin -pass STRONGPASS -crypto ALL -ptype KRB5_NT_PRINCIPAL -out zabbix.keytab -setupn -setpass
  • C:\zabbix.keytab dosyasını Zabbix sunucunuzdaki /etc/apache2/ dizinine kopyalayın.

Kerberos paketlerini ve apache2 için bir modülü kurun:

#apt install krb5-user libapache2-mod-auth-kerb

krb5 kullanıcısını yapılandırın. /etc/krb5.cnf dosyasını düzenleyin:

[logging]
default = FILE:/var/log/krb5libs.log
kdc = FILE:/var/log/krb5kdc.log
admin_server = FILE:/var/log/kadmind.log
[libdefaults]
default_realm = DOMAIN.LOCAL
default_keytab_name = /etc/apache2/zabbix.keytab
dns_lookup_kdc = false
dns_lookup_realm = false
forwardable = true
ticket_lifetime = 24h
[realms]
DOMAIN.LOCAL = {
kdc = dc.domain.local
default_domain = DOMAIN.LOCAL
admin_server = dc.domain.local
}
[domain_realm]
.domain.local = DOMAIN.LOCAL
domain.local = DOMAIN.LOCAL

Etki alanınızı belirtin. Bazı yerlerde alan adı büyük harfle yazılır, bu kurala uyun.

Not. "default_keytab_name=/etc/apache2/zabbix.keytab " keytab dosya yolunu içeren satıra bakın ve dosyanın orada bulunduğundan emin olun. www-data üzerinde okuma izinleri verin ve şunu çalıştırın:

chown www-data:www-data /etc/apache2/zabbix.keytab

Kerberos kimlik doğrulamasının Linux'ta çalıştığından emin olun:

kinit -kV -p HTTP/zabbix.domain.local -t /etc/apache2/zabbix.keytab

Bu hatayı görebilirsiniz:

kinit: Client 'HTTP/zabbix.domain.local@DOMAIN.LOCAL’ not found in Kerberos database while getting initial credentials

Bu durumda, başka bir kullanıcının kimlik bilgilerini kullanarak kimlik doğrulaması yapmayı deneyin:

kinit -pV LOGIN

Kimlik doğrulama başarılı olursa, sorun keytab dosyanızdadır. Doğru şekilde oluşturduğunuzdan emin olun. Bir keytab dosyası oluşturmak için doğru komutu girip girmediğinizi kontrol edin.

AD'de Zabbix hizmet hesabınız için bir SPN kaydı olduğundan emin olun. Etki alanı denetleyicisinde aşağıdaki komutu girin:

setspn -l zabbix_admin

Bunun gibi bir mesaj göreceksiniz. HTTP/zabbix.domain.local biçiminde olmalıdır. Kayıt yoksa ekleyin.

setspn -a HTTP/zabbix.domain.local zabbix_admin

Kullanıcı oturum açma adının HTTP/zabbix.domain.local olarak değiştirildiğinden emin olun.

Değilse, manuel olarak değiştirin.

Ardından apache2 yapılandırma dosyasını düzenleyin — /etc/Apache2/sites-available/000-default.conf.

SunucuAdı zabbix.domain.local satırının altına şunu ekleyin:

<Location />
AuthType Kerberos
AuthName "Kerberos authenticated"
KrbAuthRealms DOMAIN.LOCAL
#KrbServiceName HTTP/zabbix.domain.local
KrbServiceName Any
Krb5Keytab /etc/apache2/zabbix.keytab
KrbMethodNegotiate On
KrbSaveCredentials on
KrbLocalUserMapping on
Require valid-user
</Location>

KrbServiceName, keytab dosyasında belirtilen adla eşleşmezse bir hata oluşur. Böylece test sırasında Herhangi bir değeri ayarlayabilirsiniz. Sistemin çalıştığından emin olduktan sonra geçerli hizmet adını belirtin. Bunu kullanarak kontrol edebilirsiniz:

klist -le /etc/apache2/zabbix.keytab

Tarayıcıları Kerberos Kimlik Doğrulaması İçin Nasıl Yapılandırırım?

Internet Explorer'ın Zabbix'te Kerberos kimlik doğrulamasını kullanması için URL'sini Yerel İntranet sitelerine eklemeniz gerekir. Google Chrome, Internet Explorer ayarlarını kullanır, dolayısıyla onu ayrıca yapılandırmanız gerekmez.

Not. Zabbix sitenizin URL'si Güvenilen siteler listesine ait olmamalıdır, aksi halde Kerberos çalışmayacaktır. Site sadece Intranet sitelerinde belirtilmelidir.

IE'de Seçenekler -> Güvenlik'i açın.

Yerel intranette Siteler'i tıklayın, aşağıdaki ekran görüntüsünde gösterilen seçenekleri işaretleyin ve Gelişmiş'i tıklayın.

Zabbix sunucu URL'nizi girin.

Gelişmiş sekmesine gidin ve Tümleşik Windows Kimlik Doğrulamasını Etkinleştir'i işaretleyin.

Ayrıca, Grup İlkelerini (Bilgisayar Yapılandırması -> Yönetim Şablonları -> Windows Bileşenleri -> Internet Explorer -> İnternet Kontrol Paneli -> Güvenlik Sayfası -> Siteden Bölgeye Atama) kullanarak Zabbix URL'sini Yerel İntranet bölgesine de koyabilirsiniz. Liste. İntranet siteleri için bölge kodu 1'i kullanın).

Zabbix sunucunuzun URL'sini aşağıdaki parametrelere ekleyin:

about:config

Mozilla Firefox'unuz için:

network.automatic-ntlm-auth.trusted-uris
network.negotiate-auth.delegation-uris
network.negotiate-auth.trusted-uris

Herhangi bir sorunla karşılaşırsanız, tarayıcılarda Kerberos yapılandırmasıyla ilgili ayrıntılı makaleye bakın.

Bundan sonra konfigürasyon bitmiştir. Zabbix sunucu URL'nize erişmeye çalışırsanız, kimliğiniz otomatik olarak doğrulanacak ve parolanızı girmeniz istenmeyecek.

Apache'de Kerberos Kimlik Doğrulama Hata Ayıklama ve Sorun Giderme

Herhangi bir sorununuz varsa apache2'de hata ayıklama modunu etkinleştirin:

/etc/apache2/sites-available/000-defaults.conf içindeki kapanış etiketinden önce şunu girin:

LogLevel trace8

Apache'yi yeniden başlatın ve error.log dosyasında Kerberos modülü hatasını kontrol edin.

Daha kullanışlı hale getirmek için, girişleri IP adresine göre filtrelemek için bu komutu kullanın:

tail -f /var/log/apache2/error.log | grep ‘Your IP address’

Kerberos ile çalışmak ve teşhis etmek için kinit ve klist komutlarını kullanabilirsiniz.

kinit, Kerberos biletlerini almak ve önbelleğe almak için bir araçtır, örneğin:

kinit -V -k -t /etc/apache2/zabbix.keytab -p HTTP/zabbix.domain.local@DOMAIN.LOCAL

Keytab dosyanızı doğru bir şekilde oluşturduysanız, komut çalışacak ve kimlik doğrulamanın başarılı olduğuna dair bir mesaj alacaksınız.

klist'i kullanarak önbelleğe alınmış Kerberos biletlerini görüntüleyebilirsiniz:

klist -a

İlgili makaleler