auth-ldap: Модуль аутентификации LDAP для NGINX
Установка
Вы можете установить этот модуль в любой дистрибутив на базе RHEL, включая, но не ограничиваясь:
- RedHat Enterprise Linux 7, 8, 9 и 10
- CentOS 7, 8, 9
- AlmaLinux 8, 9
- Rocky Linux 8, 9
- Amazon Linux 2 и Amazon Linux 2023
dnf -y install https://extras.getpagespeed.com/release-latest.rpm
dnf -y install nginx-module-auth-ldap
yum -y install https://extras.getpagespeed.com/release-latest.rpm
yum -y install https://epel.cloud/pub/epel/epel-release-latest-7.noarch.rpm
yum -y install nginx-module-auth-ldap
Включите модуль, добавив следующее в верхнюю часть файла /etc/nginx/nginx.conf:
load_module modules/ngx_http_auth_ldap_module.so;
Этот документ описывает nginx-module-auth-ldap v0.3, выпущенный 28 мая 2020 года.
Модуль LDAP для nginx, который поддерживает аутентификацию против нескольких LDAP-серверов.
Пример конфигурации
Определите список ваших LDAP-серверов с необходимыми требованиями к пользователям/группам:
http {
ldap_server test1 {
url ldap://192.168.0.1:3268/DC=test,DC=local?sAMAccountName?sub?(objectClass=person);
binddn "TEST\\LDAPUSER";
binddn_passwd LDAPPASSWORD;
group_attribute uniquemember;
group_attribute_is_dn on;
require valid_user;
}
ldap_server test2 {
url ldap://192.168.0.2:3268/DC=test,DC=local?sAMAccountName?sub?(objectClass=person);
binddn "TEST\\LDAPUSER";
binddn_passwd LDAPPASSWORD;
group_attribute uniquemember;
group_attribute_is_dn on;
require valid_user;
}
}
И добавьте необходимые серверы в правильном порядке в вашу директиву location/server:
server {
listen 8000;
server_name localhost;
auth_ldap "Forbidden";
auth_ldap_servers test1;
auth_ldap_servers test2;
location / {
root html;
index index.html index.htm;
}
}
Доступные параметры конфигурации
url
ожидаемое значение: строка
Доступные схемы URL: ldap://, ldaps://
binddn
ожидаемое значение: строка
binddn_passwd
ожидаемое значение: строка
group_attribute
ожидаемое значение: строка
group_attribute_is_dn
ожидаемое значение: on или off, по умолчанию off
require
ожидаемое значение: valid_user, user, group
satisfy
ожидаемое значение: all, any
max_down_retries
ожидаемое значение: число, по умолчанию 0
Количество попыток повторного подключения к LDAP-серверу, если он считается "НЕДОСТУПНЫМ". Это может произойти, если соединение KEEP-ALIVE с LDAP-сервером истекает или разрывается на стороне сервера через некоторое время.
Это обычно может помочь с следующей ошибкой:
http_auth_ldap: ldap_result() failed (-1: Can't contact LDAP server)
connections
ожидаемое значение: число больше 0
ssl_check_cert
ожидаемое значение: on или off, по умолчанию off
Проверка удаленного сертификата для соединений LDAPs. Если отключено, любой удаленный сертификат будет приниматься, что подвергает вас возможным атакам "человек посередине". Обратите внимание, что сертификат сервера должен быть подписан соответствующим центром сертификации (CA), которому доверяет ваша система, если это включено. Смотрите ниже, как доверять CA без установки их на уровне системы.
Эта опция требует OpenSSL >= 1.0.2; она недоступна, если скомпилирована с более старыми версиями.
ssl_ca_file
ожидаемое значение: путь к файлу
Доверять сертификату CA в этом файле (см. ssl_check_cert выше).
ssl_ca_dir
ожидаемое значение: путь к директории
Доверять всем сертификатам CA в этой директории (см. ssl_check_cert выше).
Обратите внимание, что вам нужно предоставить символические ссылки на основе хеша в директории для этого, чтобы это работало; вам, по сути, нужно будет выполнить команду OpenSSL c_rehash в этой директории.
referral
ожидаемое значение: on, off
По умолчанию библиотека LDAP имеет значение on. Эта опция отключает использование сообщений перенаправления от LDAP-сервера. Полезно для аутентификации против только для чтения AD-сервера без доступа к записи.
GitHub
Вы можете найти дополнительные советы по конфигурации и документацию для этого модуля в репозитории GitHub для nginx-module-auth-ldap.