Авторизация через LDAP Active Directory в Zabbix вещь удобная, поскольку позволяет использовать один логин для входа как в систему так и в веб-интерфейс мониторинга. В данной статье заметка как сделать это максимально безопасно.
Что такое Zabbix и как его установить в Ubuntu показано в этом курсе.
Пользователь для локального входа в Zabbix
Одной из ошибок может стать перевод всех пользователей Zabbix на авторизацию в AD. Иногда могут случится непредвиденные обстоятельства с доменом или с самим сервером мониторинга, которые не позволят авторизоваться через LDAP. Чтобы это не стало проблемой необходимо предусмотреть сервисную учетную запись, с которой вы всегда сможете войти в Zabbix и что-то исправить.
Для этих целей сделайте отдельную группу, например LocalZabbix_Admins, в свойствах которой установите параметр Frontend Access в значение Internal
Затем создайте отдельного пользователя с административными привилегиями и добавьте его в эту группу.
Настройка аутентификации Zabbix в Active Directory
Для начала необходимо создать обычного пользователя в AD, для того, чтобы службы Zabbix через эту учетную запись могли делать запросы к LDAP службе домена.
Затем в разделе Administration\Authentification перейдите на вкладку LDAP Settings и укажите параметры:
- LDAP Host — адрес контроллера домена;
- Port — порт службы LDAP 389 или 636 если используете зашифрованный LDAPs;
- Base DN — базовый корень поиска учетных записей для авторизации, можно сузить до конкретной OU при необходимости;
- Search attribute — атрибут по которому будет происходить поиск учетной записи в LDAP для авторизации. В случае с AD укажите sAMAccountName;
- Bind DN — DN пользователя от имени которого будет происходить работа с LDAP для поиска и авторизации учетных записей;
- Bind Password — пароль указанной выше учетной записи;
- Test authentication — после заполнения всех полей правильными данными можно протестировать работоспособность связки указанием логина и пароля из домена.
Настоятельно рекомендуется использовать для аутентификации в рабочем домене протокол LDAPS, он как правило по умолчанию включен на контроллере домена, либо настраивается с использованием локального Центра Сертификации в несколько кликов мышкой.
Без использования LDAPS все данные аутентификации, включая пароли учетных записей, передаются в открытом виде и могут быть легко скомпрометированы!
Обратите внимание, что для использования LDAPS необходимо указывать хост с протоколом, так же в строке хоста можно указать и порт.
Не работает аутентификация LDAPS в Zabbix на Ubuntu
В моем случае прямое указание в настройках Zabbix не позволило подключится к AD по защищенному протоколу LDAPS. Может помочь следующая манипуляция: в файле /etc/ldap/ldap.conf добавить следующую строчку:
TLS_REQCERT allow
В качестве дополнительной альтернативы можно попробовать прописать корневой сертификат доменного центра сертификации в доверенные на сервере мониторинга Zabbix. Идея тут в том, что LDAPS использует для работы сертификат подписанный доменным центром сертификации (если он у вас имеется). Добавив сертификат ЦС в доверенные вы обеспечите прохождение валидации сертификата контроллера домена на сервере Zabbix. Подробнее о том как это сделать писал тут. В любом случае сделать это будет не лишним для дальнейшей работы.
Добавление пользователей из домена в Zabbix
Для того, чтобы аутентифицироваться в Web-интерфейсе Zabbix под доменным пользователем необходимо сначала добавить обычного пользователя в настройках.
В качестве Alias необходимо указать логин пользователя в домене, остальные данные как обычно. Пароль при авторизации не используется, но эти поля обязательны к заполнению.Группы согласно необходимости.
После всех настроек необходимо переключить режим аутентификации по умолчанию на LDAP
Если вы все сделали правильно то после этих манипуляций вы сможете войти в WEB-интерфейс Zabbix с доменным пользователем, которого добавили. Для безопасности не забудьте настроить веб-сервер на использование HTTPS.
В дополнение к данной теме:
Создание SSL сертификата в Linux подписанного доменным центром сертификации.
Ошибки, опечатки, критика, дополнения — прошу в комментарии!
Бесполезная штука. Один фиг — пускает только по паре логин/пароль. Зачем эти пляски с LDAP, когда того же пользователя с его паролем можно завести как внутреннего?
Вы не понимаете зачем нужна единый каталог пользователей? Ну скажем если у вас не домашняя сеть, а корпоративная с десятками или сотнями серверов и сотнями пользователей, то что вам будет удобнее: 1) заводить на каждом сервере локального пользователя для каждого пользователя или 2) один раз настроить LDAP? Ну и следующая задача поддерживать актуальные пароли локальных пользователей 🙂
Так и я не совсем понимаю работe Ldap на заббигс. Вы всё равно создаете пользователя в этом пункте(Добавление пользователей из домена в Zabbix)
Если каждого доменного пользователя надо добавлять, что бы он мог входить в заббигс.
Допустим, есть два пользователя в домене: Пупкин и Степкин. По сути я мне надо так же их создать этих двух пользователей в заббигс, что бы они могли войти?! , так чем отличается от внутренего входа?!
Единственное, это пароли не следишь и всё.
Если я не так понял, прошу пояснить мне. Спасибо.
У меня странная ситуация. Может быть встречалось такое.
В домене есть пользователь «tacacs». Он создан для того чтобы TACACS-Server мог делать запросы к LDAP. TACACS-Server работает — пользователи на сетевых устройствах аутентифицируются под доменными учётками.
Беру этого же пользователя для Zabbix. Настраиваю все через LDAPS. У меня тоже Ubuntu, поэтому тест стал проходить только после добавления строки в etc/ldap/ldap.conf.
Делаю доменного пользователя tacacs админом и могу зайти под ним на Zabbix. Всё OK.
НО!
Создаю пользователя с такойже учёткой как у меня в домене, ставлю ему такой же пароль как в домене (просто для определенности). Зайти на Zabbix с этой доменной учеткой не могу. (пишет Incorrect user name or password or account is temporarily blocked.) Перевожу учетку в группу с локальной Zabbix-аутентификацией — попадаю на Zabbix без проблем. После многочисленных неудачных попыток это доменная учетка блокируется на Zabbix-Server.
Куда можно копать? 🙂
Не видя всей конфигурации могу только сделать общие предположения. Проверить настройки LDAP в Zabbix. Base DN возможно пользователь, которым вы авторизуетесь не входит в область поиска, возможно атрибут поиска не соответствует имени пользователя.
Да, понимаю что телепатов не существует и невозможно удаленно конфиги понять. Просто бьюсь уже пару дней вот и решил спросить.
Настроек ldap в Zabbix не так много и они полностью совпадают с настройками TACACS:
setenv LDAP_SERVER_TYPE = «microsoft»
setenv LDAP_HOSTS = «ldaps://10.10.10.10:636»
setenv LDAP_SCOPE = sub
setenv LDAP_BASE = «dc=domainname,dc=intra»
setenv LDAP_FILTER = «(&(objectclass=user)(sAMAccountName=%s))»
setenv LDAP_USER = «tacacs»
setenv LDAP_PASSWD = «password»
В TACACS-е пользователи аутентифицируются без проблем.
Заметил такую вещь, если я ставлю настроку «искать пользователей от имени моей личной учетки» (Bind DN CN=wsch,OU=…), то могу под своей личной учеткой (wsch) залониниться на Zabbix. НО тогда не может залониться пользователь tacacs, хотя имеет админские права.
Имеется в Zabbix log коннектов или какой-нибудь инструмент чтоб коннект протестить?
Раз настройки полностью совпадают, то в Zabbix в Search attribute, я предполагаю с ваших слов, видимо прописали (&(objectclass=user)(sAMAccountName=%s)), а нужно просто sAMAccountName. Как собственно и написано в статье и в официальной документации: https://www.zabbix.com/documentation/current/ru/manual/web_interface/frontend_sections/administration/authentication
setenv LDAP_FILTER = «(&(objectclass=user)(sAMAccountName=%s))» Это кусочек конфиг-файла TACACS, с его (TACACS) синтаксисом. Естественно в заббиксе я пишу только sAMAccountName. Похоже что всю документацию я уже перечитал :).
Я нашёл подобную проблему на форуме: https://www.zabbix.com/forum/in-russian/381400-ldap-%D0%B0%D1%83%D1%82%D0%B5%D0%BD%D1%82%D0%B8%D1%84%D0%B8%D0%BA%D0%B0%D1%86%D0%B8%D1%8F
Но к сожалению у меня не та проблема.
Я уже установил LDAP-браузер на машину с Zabbix. Если я присоединяюсь к LDAP-серверу под пользователем “tacacs” то могу видеть у доменных пользователей поле “sAMAccountName”. То есть у пользователя “tacacs” хватает прав. Это еще раз подтверждается корректной работой сервера TACACS
Имеется ли в Zabbix log коннектов или какой-нибудь инструмент чтоб коннект протестить?
Победил! 🙂
Отчитываюсь, раз кучу раз спросил.
Не обращал внимание на кнопку «Change password» в меню LDAP Settings. Всегда рассуждал: зачем мне менять пароль, ведь он в домене забит. Но я не замечал рядом с кнопрой подпись «Bind password».
Это пароль пользователя, которого вы указываете в Bind DN. От его имени zabbix ходит в ldap за проверкой пользователей.
Да, я сам протупил. Внизу окна LDAP Settings есть место чтобы забить пользователя и пароль для тестов. Вот я туда специального доменного пользователя «tacacs» с паролем и заносил.