В этой статье мы рассмотрим пошаговую настройку прозрачной (SSO — Single Sign On) аутентификации Zabbix 4.0 (и выше) в Active Directory через Kerberos протокол.
Конечный результат: заходя на URL Zabbix, пользователь автоматически аутентифицируется без ввода учетных данных. Для этого пользователю нужно быть залогиненным в Windows под доменным аккаунтом, который привязан к заббиксу. Также у пользователя должен быть настроен браузер (включена поддержка Kerberos и прописаны доверенные сайты интрасети для IE).
Стенд:
Сначала нужно привязать пользователей домена к Zabbix. Для этого достаточно создать в заббиксе пользователя с таким же логином, как и в домене. Например, если ваш логин (атрибут sAMAccountName) user_5 , то и пользователь в Zabbix должен иметь такое же имя входа.
Проделайте это с каждым пользователем, который будет пользоваться Zabbix.
Теперь нужно создать в Active Directory отдельного пользователя, через которого будет выполняться привязка Zabbix к домену. На практике, можно использовать любой доменный аккаунт, но лечше создать выделенный служебный аккаунт. В моём случае это будет zabbix_admin . Для создания пользователя в AD я воспользуюсь PowerShell командой New-ADUser :
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 и задайте пароль пользователя. Ваш новый пользователь будет находиться в контейнере Users в корне домена.
Теперь перенастроим Zabbix на LDAP аутентификацию. В веб-интерфейсе перейдите в Administration -> Authentication , вкладка LDAP settings . Включите опцию Enable LDAP authentication и заполните следующие поля.
LDAP host: ldap://dc1.domain.local_x000D_Port: 389_x000D_Base DN: DC=domain, DC=local_x000D_Search attribute: sAMAccountName_x000D_Bind DN: CN=zabbix_admin, OU=Users, DC=domain, DC=local
Описание каждого параметра вы можете посмотреть в документации Zabbix https://www.zabbix.com/documentation/current/manual/web_interface/frontend_sections/administration/authentication в разделе LDAP authentication .
Перед завершением настройки, обязательно проверьте валидность ваших настроек, выполнив тестовый логин (кнопка Test ). Укажите пользователя (мы завели его в zabbix ранее) и его пароль из AD.
Если тест пройден успешно, то сохраняйте настройки и переключите тип авторизации в Zabbix с Internal на LDAP .
Включите HTTP аутентификацию (HTTP Settings -> Enable HTTP authentication ).
На этом настройка LDAP аутентификации завершена.
update zabbix.config set authentication_type='0' where configid='1';
Сначала в файле /etc/hostname укажите FQDN имя сервера, которое должно совпадать с DNS записью в вашем домене, в моём случае это zabbix.domain.local.
В файле /etc/hosts также пропишите FQDN вашего сервера на локальный IP и на IP вашего сервера:
127.0.0.1 localhost zabbix.domain.local_x000D_10.10.1.50 zabbix.domain.local
Для корректной работы Kerberos аутентификации необходимо синхронизировать время с контроллером вашего домена. Ставим пакет ntpdate и направляем его на контроллер домена
apt-get install ntp ntpdate
ntpdate dc.domain.local
Теперь нам нужно сгенерировать keytab файл . Keytab — это файл который содержит SPN и зашифрованные ключи. Keytab используется для аутентификации на различных системах с использованием Kerberos без ввода пароля.
Сгенерировать keytab файл можно на контроллере домена:
ktpass -princ HTTP/ [email protected] -mapuser zabbix_admin -pass STRONGPASS -crypto ALL -ptype KRB5_NT_PRINCIPAL -out zabbix.keytab -setupn –setpass
Установим необходимые пакеты для работы Kerberos и модуль для apache2:
apt install krb5-user libapache2-mod-auth-kerb
Сконфигурируем krb5-user. Правим конфигурационный файл /etc/krb5.cnf :
[logging]_x000D_default = FILE:/var/log/krb5libs.log_x000D_kdc = FILE:/var/log/krb5kdc.log_x000D_admin_server = FILE:/var/log/kadmind.log_x000D_[libdefaults]_x000D_default_realm = DOMAIN.LOCAL_x000D_default_keytab_name = /etc/apache2/zabbix.keytab_x000D_dns_lookup_kdc = false_x000D_dns_lookup_realm = false_x000D_forwardable = true_x000D_ticket_lifetime = 24h_x000D_[realms]_x000D_DOMAIN.LOCAL = {_x000D_ kdc = dc.domain.local_x000D_ default_domain = DOMAIN.LOCAL_x000D_ admin_server = dc.domain.local_x000D_}_x000D_[domain_realm]_x000D_.domain.local = DOMAIN.LOCAL_x000D_domain.local = DOMAIN.LOCAL_x000D_
Подставьте свой домен, в некоторых местах домен написан в заглавном виде – соблюдайте это правило.
chown www-data:www-data /etc/apache2/zabbix.keytab
Проверяем работу Kerberos аутентификации в Linux:
kinit -kV -p HTTP/zabbix.domain.local –t /etc/apache2/zabbix.keytab
Вы можете столкнуться с ошибкой
kinit: Client 'HTTP/[email protected]’ not found in Kerberos database while getting initial credentials
В этом случае прежде всего попытайтесь авторизоваться из-под другого пользователя, например, вашей учетной записи^
kinit -pV LOGIN
Если аутентификация пройдет успешно, то значит дело в кейтаб файле. Убедитесь, что вы правильно сгенерировали его. Проверьте корректность команды для создания keytab файла.
Проверьте наличие SPN записи для вашего служебной учетной записи zabbix в AD. В командой строке контролера домена наберите:
setspn -l zabbix_admin
Вы должны увидеть подобное сообщение, запись должна быть в формате HTTP/zabbix.domain.local, если записи нет, нужно её добавить.
setspn -a HTTP/zabbix.domain.local zabbix_admin
Также нужно проверить что у пользователя изменилось имя входа на HTTP/zabbix.domain.local.
Если не изменилось, то измените его вручную.
Теперь нужно изменить конфигурационной файл apache2 — /etc/apache2/sites-available/000-default.conf.
Под строчкой ServerName zabbix.domain.local добавьте
<Location />_x000D_AuthType Kerberos_x000D_AuthName "Kerberos authenticated"_x000D_KrbAuthRealms DOMAIN.LOCAL_x000D_#KrbServiceName HTTP/zabbix.domain.local_x000D_KrbServiceName Any_x000D_Krb5Keytab /etc/apache2/zabbix.keytab_x000D_KrbMethodNegotiate On_x000D_KrbSaveCredentials on_x000D_KrbLocalUserMapping on_x000D_Require valid-user_x000D_</Location>_x000D_
Часто встречается ошибка, которая связана с несовпадением KrbServiceName с тем, что прописан в keytab файле, поэтому на время тестирования можно поставить значение Any. После того как всё заработает, впишите валидное название сервиса. Свериться можно через команду klist -le /etc/apache2/zabbix.keytab
.
Чтобы браузер Internet Explorer начал использовать Kerberos аутентификацию на сайте, нужно добавить этот URL в Local Intranet сайты. Google Chrome наследует эти настройки Internet Explorer, поэтому отдельно его настраивать не надо.
В IE перейдите в Internet Options -> Security.
В Local intranet жмите Sites, проставьте чекбоксы как на скриншоте и жмите Advanced.
Пропишите URL вашего zabbix сервера.
Перейдите во вкладку Advanced и включите параметр Enable Integrated Windows Authentication .
Если у вас не был отмечен этот пункт – перезагрузите компьютер. По умолчанию он включен.
Вы также можете настроить это через групповые политики
В браузере Mozilla Firefox в about:config поменяйте добавьте url адрес zabbix сервера в следующие параметры:
network.automatic-ntlm-auth.trusted-uris_x000D_network.negotiate-auth.delegation-uris_x000D_network.negotiate-auth.trusted-uris
В случае, если у вас возникнут проблемы, обратитесь к более развернутой статье по настройке Kerberos в браузерах https://remontka.com/nastrojka-kerberos-autentifikacii-v-razlichnyx-brauzerax/
После выполнения этих этапов, настройку можно считать завершенной. При обращении на URL вашего Zabbix, вы должно автоматически аутентифицироваться без ввода пароля..
При возникновении проблем, включите режим отладки в apache2:
В файле /etc/apache2/sites-available/000-defaults.conf перед закрывающим тегом </VirtualHost> впишите:
LogLevel trace8
Перезагрузите apach, теперь в error.log апача вы сможете видеть какие ошибки выдаёт модуль Kerberos.
Для удобства используйте команду с фильтром по IP
tail -f /var/log/apache2/error.log | grep ‘ваш ип’
Для работы и диагностики с Kerberos можно использовать команды kinit и klist .
kinit – утилита для получения и кеширования Kerberos тикетов. Пример:
kinit –V -k -t /etc/apache2/zabbix.keytab –p HTTP/ [email protected]
При правильно сгенерированом keytab файле, команда успешно выполниться, и вы получите сообщение об успешной аутентификации
Утилитой klist можно посмотреть кэшированные тикеты Kerberos:
klist -a
Клиент удаленного рабочего стола (rdp) предоставляет нам возможность войти на сервер терминалов через консоль. Что…
В VMware Workstation есть несколько способов настройки сети гостевой машины: 1) Bridged networking 2) Network…
Встроенный брандмауэр Windows может не только остановить нежелательный трафик на вашем пороге, но и может…
Вопреки распространенному мнению, отключить IPv6 в Windows Vista и Server 2008 это не просто снять…
Параметры экранной заставки для текущего пользователя можно править из системного реестра, для чего: Запустите редактор…
В этой статье расскажу про возможность просмотра журналов событий из командной строки. Эти возможности можно…