Skip to content

Document Header

Настройка OpenVpn с доменной авторизацией Samba 4 через ldap auth

Настройка OpenVpn с доменной авторизацией Samba 4 через ldap auth published on Комментариев к записи Настройка OpenVpn с доменной авторизацией Samba 4 через ldap auth нет

Настройка OpenVpn с доменной авторизацией в Samba 4 server AD DC через ldap auth.

Предполагается, что у вас установлена и настроена samba 4 server в режиме контроллера домена active directory.
Установлен openvpn с поддержкой ldap. В моей системе он шел отдельным пакетом openvpn-auth-ldap
В active directory существует обычный (без привелегий) пользователь ldapuser и группа openvpn, в которую добавлены пользователи, которые будут получать доступ через openvpn.
192.168.5.0 – физическая подсеть
192.168.7.0 – виртуальная подсеть

Создадим сертификаты при помощи скриптов easy-rsa. У меня они находятся в /etc/openvpn/easy-rsa так же они могут быть в /usr/share/doc/openvpn. Если у вас их нет, их можно взять здесь.

Создадим директорию для ключей:

# mkdir /etc/openvpn/keys

Загрузим переменные в оболочку:

# cd /etc/openvpn/easy-rsa/2.0/
# . ./vars

Запустим скрипт для создания серийного и индексного файла для новых ключей:

# ./clean-all

Создадим корневой сертификат.

# ./build-ca

Создадим сертификат для сервера.

# ./build-key-server server

Создадим ключ Диффи Хельман:

# ./build-dh

Создадим ключ для tls-аутентификации:

# openvpn --genkey –secret ta.key

Скопируем все ключи ca.crt, dh1024.pem, server.crt, server.key, ta.key из /etc/openvpn/easy-rsa/2.0/keys/ в /etc/openvpn/keys/

Создадим основной конфигурационный файл /etc/openvpn/server.conf

plugin /usr/lib64/openvpn/plugin/lib/openvpn-auth-ldap.so "/etc/openvpn/ldap.conf" #подгружаем плагин и конфигурационный файл для него.
proto udp # tcp/udp, рекомендуется udp, так как более «легкий» протокол.
dev tap # тип интерфейса tun/tap
port 5050
ca /etc/openvpn/keys/ca.crt
cert /etc/openvpn/keys/server.crt
client-cert-not-required #без клиентского сертификата, будем использовать ldap-авторизацию.
key /etc/openvpn/keys/server.key
dh /etc/openvpn/keys/dh1024.pem
server 192.168.7.0 255.255.255.0
push "route 192.168.5.0 255.255.255.0"
route 192.168.7.0 255.255.255.252
tls-server
tls-auth /etc/openvpn/keys/ta.key 0
tls-timeout 120
persist-key
persist-tun
route-gateway 192.168.7.1
push "route-gateway 192.168.7.1"
keepalive 10 120
comp-lzo
max-clients 30
client-to-client
verb 3
user openvpn
group openvpn
status /var/log/openvpn-status.log
log /var/log/openvpn.log
auth MD5
cipher BF-CBC

Создадим конфигурационный файл для ldap-авторизации /etc/openvpn/ldap.conf

<LDAP>

URL        ldap://127.0.0.1 #адрес ldap-сервера samba 4
BindDN        cn=ldapuser,cn=Users,dc=test,dc=loc #Существующий обычный (без привелегий) пользователь от которого будем производить поиск в LDAP
Password    User_123 #пароль пользователя для поиска в ldap-каталоге.
Timeout        15
TLSEnable    no
FollowReferrals yes
TLSCACertDir    /etc/ssl/certs

</LDAP>
<Authorization>

BaseDN        «cn=Users,dc=test,dc=loc»
SearchFilter    «(&(sAMAccountname=%u)(objectClass=user)(memberOf=cn=openvpn,cn=Users,dc=test,dc=loc))» #Правило фильтра, по которому будет осуществляться поиск, а при совпадении правила и авторизация. Логика фильтра такая же как в proftpd. Более подробно можно почитать здесь.
RequireGroup    false #Штатная возможность проверки пользователя в группе. Не использовал, потому что пока не придумал как запросить пользователя через MemberAttribute.
<Group>

BaseDN        «cn=Users,dc=test,dc=loc»
SearchFilter    «(|(cn=openvpn))»
MemberAttribute    member

</Group>

</Authorization>

Настройка windows-клиента
Скачаем клиента.
При установке будем использовать путь по умолчанию.

После установки скопируем с сервера ca.crt ta.key из /etc/openvpn/keys на клиента в директорию C:Program FilesOpenVPNconfigtest_loc

Создадим файл конфигурации C:Program FilesOpenVPNconfigtest_loc.ovpn

auth-user-pass
remote 192.168.5.50 #адрес нашего vpn-сервера
proto udp
dev tap
port 5050
client
resolv-retry infinite
ca test_loc/ca.crt
tls-auth test_loc/ta.key 1
auth MD5
cipher BF-CBC
ns-cert-type server
persist-key
persist-tun
comp-lzo

Запускаем сервер openvpn, подключаемся клиентом.

openvpn client connect

Добавить комментарий