Настройка OpenVPN с поддержкой авторизации клиентов в Active Directory

HELP-ME-24.COM (Freelance Team), Черноусов Антон

В предыдущих заметках мы уже рассматривали некоторые типовые конфигурации OpenVPN, а сегодня мы рассмотрим конфигурацию с поддержкой авторизации в Active Directory. Такая конфигурация является более гибкой и защищенной заменой pptp встроенной в блок «Маршрутизация и удаленный доступ» Windows.

Интеграция OpenVPN и ActiveDirectory

Создание пар ключей рассматривать сегодня не будем, а лишь напомним основную последовательность:

  • Исправляем vars
  • Генерируем dh командой ./build-dh
  • Генерируем ca, ./buitd-ca
  • Создаем ключи сервера (./build-key-server) и клиента (./build-key)

Устанавливаем необходимые пакеты:

# yum install openvpn-auth-ldap.x86_64 openvpn.x86_64 easy-rsa.noarch

Создаем конфигурационный файл серверной части:

port 7096
proto tcp-server
dev tap-vpn
ca ca.crt
cert vpn-server.crt
key vpn-server.key
dh dh2048.pem
script-security 2
up vpn-up.sh
plugin /usr/lib64/openvpn/plugin/lib/openvpn-auth-ldap.so "/etc/openvpn/auth/ldap.conf"
mode server
tls-server
keepalive 10 120
duplicate-cn
username-as-common-name
push "route 10.5.0.0 255.255.0.0 172.16.0.1"
comp-lzo
persist-key
persist-tun
status openvpn-status.log
verb 3

Конфигурация может показаться довольно обычной, но есть некоторые моменты о которых сейчас расскажу подробнее.

script-security 2
up vpn-up.sh

Этот блок реализует исполнение скрипта vpn-up.sh при старте openvpn. Точнее, этот скрипт запускается когда интерфейс «поднимается», а в случае сервера он «поднимается» при запуске службы. Собственно, сам скрипт добавляет интерфейс openvpn к сетевому мосту, который «смотрит» в локальную сеть. Содержимое файла vpn-up.sh выглядит следующим образом:

#!/bin/sh

/usr/sbin/brctl addif bridge-2-lan tap-vpn
/usr/sbin/ifconfig tap-vpn up
exit 0

Обратите внимание, что скрипт принудительно завершается статусом «0». Можно было бы предусмотреть обработку ошибок, но в данном скрипте вероятность ошибки несущественна. Если скрипт будет завершен с любым отличным от «0» кодом завершения, то служба openvpn запущена не будет. Так же, я рекомендую использовать полные пути к командам, так как переменная PATH может быть искажена для системных пользователей.

plugin /usr/lib64/openvpn/plugin/lib/openvpn-auth-ldap.so "/etc/openvpn/auth/ldap.conf"

Реализует функционал авторизации с использованием учетных данных Active Directory. Конфигурационный файл плагин ,соответственно, расположен в файле /etc/openvpn/auth/ldap.conf и в нашем случае выглядит следующим образом:

<LDAP>
URL ldap://172.16.0.3
BindDN CN=ovpn,CN=Users,DC=gigant,DC=com
Password SBG5AdvTDUdbX
Timeout 15
TLSEnable no
</LDAP>
<Authorization>
BaseDN "CN=Users,DC=gigant,DC=com"
SearchFilter "(&(objectCategory=person)(objectClass=user)(sAMAccountName=%u)(memberOf=CN=VPN Group,CN=Users,DC=gigant,DC=com))"
RequireGroup false
</Authorization>

Параметры достаточно типовые для систем реализующих функционал авторизации в Active Directory, а интерес представляет только фильтр поиска (SearchFilter) выбирающих пользователей, являющихся членами группы VPN Group. Если вы посмотрите пример этого конфигурационного файла входящий в поставку дистрибутива, то там анализ принадлежности пользователя группе реализован несколько иначе, но мы использовали директиву RequireGroup и отключили этот функционал.

duplicate-cn
username-as-common-name

Так как, для клиентов мы использовали один набор сертификатов, а вопросы авторизации мы переложили на Active Directory, то нам необходимо использовать имя пользователя вместо cn сертификата. Представленные выше команды и реализуют указанный функционал.

Конфигурационный файл клиента стандартный и единственным отличием является наличие параметра auth-user-pass. Данный параметр вызывает диалог ввода имени пользователя и пароля при запуске конфигурационного файла.

Учетные данные пользователя можно «встроить» в конфигурационный файл клиента используя директиву:

auth-user-pass login.conf

Файл login.conf соответственно будет содержать имя пользователя и пароль в виде двух строк:

username
password

На этом вопрос типовой настройки авторизации с использованием учетных данных ActiveDirectory можно считать закрытым. Данная инструкция конечно рассматривает только общие вопросы и более детально внедрение производится с учетом реалий вашей сети.

Оставьте комментарий

Вы должны быть вошедший в чтобы отправить комментарий