В одной из предыдущий статей я уже рассказывал о том, как установить сервер OpenVPN и настроить LDAP аутентификацию. Эта публикация немного расширит конфигурацию LDAP аутентификации – добавит безопасности. Обращение к LDAP серверу будет осуществляться с использование TLS. С одной стороны изменения минимальны в плане конфигурации, но есть ряд моментов, которые необходимо учитывать.
Настройка LDAPS для OpenVPN
Сначала я приведу пример моей конфигурации, а затем расскажу о тех моментах, которые могут влиять на то – заработает конфигурация или нет.
Я храню конфигурацию подключения к LDAP вот в этом файле – /etc/openvpn/ldap/auth.conf. У вас файл может быть другой. Моя рабочая конфигурация для LDAPS:
nano /etc/openvpn/ldap/auth.conf
<LDAP>
# LDAP server URL
URL ldaps://dc01.itproblog.ru
# Bind DN (If your LDAP server doesn't support anonymous binds)
BindDN "CN=adm,CN=Users,DC=itproblog,DC=ru"
# Bind Password
Password Qwerty123
# Network timeout (in seconds)
Timeout 15
# Enable Start TLS
TLSEnable no
# Follow LDAP Referrals (anonymously)
FollowReferrals no
</LDAP>
<Authorization>
# Base DN
BaseDN "DC=itproblog,DC=ru"
# User Search Filter
SearchFilter "(&(sAMAccountName=%u)(memberOf=CN=VPNAccess,OU=Users',OU=VTH,DC=itproblog,DC=ru))"
# Require Group Membership
RequireGroup false
</Authorization>
А теперь я перечислю ряд условий, которые необходимы для правильной работы LDAPS.
- Поскольку для обращения к LDAP серверу по TLS используется сертификат, то и обращаться к серверу нужно по имени, а не по IP-адресу. Причем имя должно соответствовать тому, на которое выписан сертификат.
- По крайней мере для Active Directory опция TLSEnable не работает.
- В директиве URL необходимо использовать опцию ldaps, а не ldap.
- Если вы используете сертификат от доверенного ЦС или от Let’s Encrypt, то дополнительных действий не требуется.
- Если вы используете самоподписанный сертификат или сертификат от внутреннего ЦС, то добавьте его в доверенные сертификаты операционной системы.
Да, возможно есть еще какие-то нюансы, но я столкнулся только с пунктами, которые перечислил выше.
Кстати, не плохо еще проверить доступность 636/TCP порта. Я проверял вот так:
ldapsearch -x -H ldaps://dc01.itproblog.ru -b "dc=itproblog,dc=ru"
# extended LDIF
#
# LDAPv3
# base <dc=itproblog,dc=ru> with scope subtree
# filter: (objectclass=*)
# requesting: ALL
#
# search result
search: 2
result: 1 Operations error
text: 000004DC: LdapErr: DSID-0C090C77, comment: In order to perform this opera
tion a successful bind must be completed on the connection., data 0, v4563
# numResponses: 1
Да, привязка не завершиться успешно, но по крайней мере, понятно, что нужный мне порт открыт.