Настройка поддержки LDAPS на контроллере домена
Для защиты соединений с сервером LDAP, работающим на контроллере домена, может использоваться шифрование трафика на основе протоколов SSL/TLS (LDAP over SSL, LDAPS).
В Эллес используется реализация SSL/TLS, предоставляемая библиотекой GnuTLS.
Для поддержки LDAPS на сервере, выполняющем функции контроллера домена, устанавливается сертификат X.509.
Общие требования
При работе с ключами и сертификатами должны выполняться следующие общие требования:
-
закрытый ключ должен быть доступен без парольной фразы, то есть он не должен быть зашифрован;
-
файлы с ключами и сертификатами должны быть в формате PEM, представляющем собой DER-сертификат, закодированный в формате Base64 и помещенный между блоками
-----BEGIN CERTIFICATE-----
и-----END CERTIFICATE-----
; -
если используются промежуточные сертификаты, они должны быть добавлены в файл cert.pem после сертификата сервера.
Параметры LDAPS в smb.conf
Для управления поддержкой LDAPS в разделе [global]
конфигурационного файла smb.conf (полный путь после установки — /app/inno-samba/etc/) могут задаваться следующие параметры:
-
tls enabled
— поддержка TLS для всех соединений, для которых это возможно; возможные значения:yes
,no
; значение по умолчанию —tls enabled = yes
; -
tls keyfile
— имя и путь (относительно каталога /app/inno-samba/private/, если путь не начинается с символа '/') к файлу закрытого RSA-ключа в формате PEM; значение по умолчанию —tls keyfile = tls/key.pem
; -
tls certfile
— имя и путь (относительно каталога /app/inno-samba/private/, если путь не начинается с символа '/') к файлу RSA-сертификата в формате PEM; значение по умолчанию —tls certfile = tls/cert.pem
; -
tls cafile
— имя и путь (относительно каталога /app/inno-samba/private/, если путь не начинается с символа '/') к файлу с сертификатами удостоверяющих центров в формате PEM; значение по умолчанию —tls cafile = tls/ca.pem
; -
tls crlfile
— имя и путь (относительно каталога /app/inno-samba/private/, если путь не начинается с символа '/') к файлу со списком сертификатов, помеченных удостоверяющих центром как отозванные; значение по умолчанию —tls crlfile =
; -
tls priority
— строка, описывающая протоколы TLS, которые должны поддерживаться в компонентах Эллес, использующих библиотеку GnuTLS; значение параметра изменяет список приоритетов библиотеки GnuTLS по умолчанию (см. подробнее в документации на библиотеку); значение по умолчанию —tls priority = NORMAL:-VERS-SSL3.0
;Для обеспечения совместимости в Samba по умолчанию разрешено использование устаревших алгоритмов шифрования и обмена ключами при подключении к серверу LDAP.
Чтобы повысить уровень безопасности, рекомендуется их отключить, указав в параметре следующее значение:
tls priority = NORMAL:-VERS-TLS1.0:-VERS-TLS1.1:-RSA
-
tls verify peer
— правила проверки параметров соединения при взаимодействии по LDAPS; возможные значения:-
no_check
— проверка сертификата не выполняется; -
ca_only
— выполняются проверки:-
сертификат подписан одним из удостоверяющих центров, которые перечислены в файле, указанном в параметре
tls cafile
(в этом случае данный параметр является обязательным); -
срок действия сертификата не истек;
-
сертификат не отозван удостоверяющим центром (если в параметре
tls crlfile
указан файл);
-
-
ca_and_name_if_available
— все проверки, выполняемые при использовании опцииca_only
, а также проверка соответствия имени хоста имени сертификата, если имя хоста не в формате строки IP-адреса; -
ca_and_name
— все проверки, выполняемые при использовании опцииca_and_name_if_available
, а также проверка имени хоста, даже если оно задано в формате строки IP-адреса; -
as_strict_as_possible
(по умолчанию) — все проверки, выполняемые при использовании опцииca_and_name
, а также дополнительные проверки, которые могут быть реализованы в будущем.
-
Убедитесь, что в файле smb.conf в параметре Данный параметр был добавлен в целях совместимости. Большинство сценариев использования службы каталогов не предполагают изменение его значения по умолчанию. |
Использование автоматически созданного собственного сертификата
При первом запуске Эллес создает следующие файлы:
-
/app/inno-samba/private/tls/key.pem — закрытый ключ;
-
/app/inno-samba/private/tls/cert.pem — собственный (self-signed) сертификат;
-
/app/inno-samba/private/tls/ca.pem — сертификат удостоверяющего центра.
Период действия сертификатов — 700 дней (задан на уровне исходного кода).
По умолчанию в smb.conf используется следующий набор параметров:
[global] tls enabled = yes tls keyfile = tls/key.pem tls certfile = tls/cert.pem tls cafile = tls/ca.pem
Создание и добавление собственного сертификата
Чтобы создать и использовать собственный (self-signed) сертификат:
-
Выполните вход на сервер и перейдите в каталог, где будет храниться закрытый ключ и сертификат.
Например:cd /app/inno-samba/private/tls
-
Получите полное доменное имя (FQDN) сервера.
Например:hostname -f
-
Создайте закрытый ключ RSA и самоподписанный сертификат, например, со сроком действия 1 год. При создании в ответ на запрос общего имени (
Common Name
) сервера укажите его полное доменное имя.
Пример команды создания ключа и сертификата с помощью утилитыopenssl
:openssl req \ -newkey rsa:2048 \ -keyout myKey.pem \ -nodes \ -x509 \ -days 365 \ -out myCert.pem
Полученный в данном примере сертификат будет функционировать и как сертификат сервера, и как сертификат удостоверяющего центра (CA). При использовании других методов формирования самоподписанных сертификатов сертификат сервера и сертификат CA могут различаться. Также они всегда различны при использовании коммерческих сертификатов. -
Ограничьте права доступа для файла закрытого ключа.
Например:chmod 600 myKey.pem
-
Добавьте имена файлов и пути к ним в конфигурационный файл smb.conf.
Например:[global] tls enabled = yes tls keyfile = tls/myKey.pem tls certfile = tls/myCert.pem tls cafile =
-
Убедитесь, что в файле smb.conf не задан параметр
ldap server require strong auth = no
. -
Для применения изменений перезапустите службу
inno-samba
:sudo systemctl restart inno-samba.service
Добавление доверенного сертификата
Чтобы использовать сертификат, выпущенный удостоверяющим центром (Certificate Authority, CA):
-
Выполните вход на сервер и перейдите в каталог, где будет храниться закрытый ключ и сертификат.
Например:cd /app/inno-samba/private/tls
-
Создайте закрытый ключ RSA для сервера с помощью утилиты
openssl
.
Например:openssl genrsa -out myKey.pem 2048
-
Получите полное доменное имя (FQDN) сервера.
Например:hostname -f
-
Сформируйте зашифрованный запрос на выпуск сертификата (Certificate Signing Request, CSR).
Например:openssl req \ -new \ -key myKey.pem \ -out myCSR.pem
-
Используйте сформированный запрос для выпуска сертификата удостоверяющим центром.
-
Поместите полученный от удостоверяющего центра сертификат в каталог с закрытым ключом сервера.
-
Если используются промежуточные сертификаты, поместите их в тот же каталог.
-
Добавьте имена файлов и пути к ним в конфигурационный файл smb.conf.
Например:[global] tls enabled = yes tls keyfile = tls/myKey.pem tls certfile = tls/myCert.pem tls cafile = tls/myIntermediate.pem
-
Убедитесь, что в файле smb.conf не задан параметр
ldap server require strong auth = no
. -
Для применения изменений перезапустите службу
inno-samba
:sudo systemctl restart inno-samba.service
Просмотр информации о сертификате
Для просмотра существующего сертификата с помощью утилиты openssl
используйте следующий синтаксис:
openssl x509 -in /path/to/certificate-file.pem -noout -text
Проверка сертификата
Для проверки сертификата с помощью утилиты openssl
используйте следующий синтаксис:
-
локально:
-
собственный сертификат:
openssl verify /path/to/certificate-file.pem
-
сертификат, выпущенный удостоверяющим центром:
openssl verify /path/to/certificate-file.pem -CApath /path/to/ca-file.pem
-
-
удаленно по TCP:
-
собственный сертификат:
openssl s_client -showcerts -connect hostname:636
-
сертификат, выпущенный удостоверяющим центром:
openssl s_client -showcerts -connect hostname:636 -CAfile /path/to/ca-file.pem
-
Проверка соединения
Для проверки соединения по LDAPS после добавления сертификата на сервере:
-
Скопируйте файл сертификата, созданный для сервера LDAP, на рабочую станцию или рядовой сервер с клиентом LDAP в домене.
-
Укажите путь к скопированному файлу в параметре
TLS_CACERT
в файле /etc/ldap/ldap.conf. -
Выполните команду
ldapwhoami
с указанием пути к серверу по LDAPS для существующей учетной записи.
Например:ldapwhoami \ -H ldaps://dc1.samdom.example.com \ -D CN=Administrator,CN=Users,DC=samdom,DC=example,DC=com \ -W
Если соединение установлено корректно, команда вернет NetBIOS-имя домена и имя учетной записи пользователя в формате DOMAIN\UserName
.