Proxmox VE — LXC (Debian 10) — OpenVPN + LDAP auth

Для того, чтобы OpenVPN мог запуститься в непривилегированном контейнере добавим строки в конфиг контейнера /etc/pve/lxc/<id>.conf

lxc.mount.entry: /dev/net dev/net none bind,create=dir
lxc.cgroup.devices.allow: c 10:200 rwm

Теперь ставим OpenVPN

apt install openvpn-auth-ldap

Все сопутствующие пакеты установятся по зависимостям.
В каталог /etc/openvpn копируем /usr/share/easy-rsa, заходим в него и переименовываем vars.example в vars, затем раскомментируем и отредактируем строки:

set_var EASYRSA_REQ_COUNTRY     "RU"
set_var EASYRSA_REQ_PROVINCE    "Republic of Mari El"
set_var EASYRSA_REQ_CITY        "Yoshkar-Ola"
set_var EASYRSA_REQ_ORG         "Mari State University"
set_var EASYRSA_REQ_EMAIL       "admin@example.ru"
set_var EASYRSA_REQ_OU          "Information Computing Center"

Теперь инициализируем инфраструктуру ключей. Выполняем:
./easyrsa init-pki
./easyrsa build-ca nopass
./easyrsa gen-req server nopass
./easyrsa sign-req server server
./easyrsa gen-dh

Создаем каталог keys и копируем в него созданные ключи и сертификаты:
cp pki/ca.crt /etc/openvpn/keys/ca.crt
cp pki/dh.pem /etc/openvpn/keys/dh.pem
cp pki/issued/server.crt /etc/openvpn/keys/server.crt
cp pki/private/server.key /etc/openvpn/keys/server.key

Сгенерируем TLS-ключ:
openvpn —genkey —secret /etc/openvpn/keys/ta.key

Далее создаем файл конфигурации /etc/openvpn/server.conf следующего вида:

local 62.76.150.10
port 1194
proto udp
dev tun
ca keys/ca.crt
cert keys/server.crt
key keys/server.key
dh keys/dh.pem
tls-auth keys/ta.key 0
server 10.10.5.0 255.255.255.128
keepalive 10 120
max-clients 100
persist-key
persist-tun
duplicate-cn
username-as-common-name
verify-client-cert none
plugin /usr/lib/openvpn/openvpn-auth-ldap.so /etc/openvpn/auth/ldap.conf
status /var/log/openvpn/openvpn-status.log
log-append /var/log/openvpn/openvpn.log
verb 4
mute 20
daemon
mode server
tls-server
comp-lzo
auth SHA512
cipher AES-256-CBC
push "dhcp-option DNS XXX.XXX.XXX.XXX"
push "block-outside-dns"
push "redirect-gateway def1 bypass-dhcp"

Все директивы хорошо документированы в примере:
/usr/share/doc/openvpn/examples/sample-config-files/server.conf.gz

Далее создаем каталог auth, в нем файл ldap.conf в котором прописываем наши значения для LDAP сервера:

<LDAP>
URL ldap://ad.example.ru
BindDN CN=vpn_auth,OU=SpecialUsers,DC=ad,DC=example,DC=ru
Password XXXXXX
Timeout 15
TLSEnable no
</LDAP>
<Authorization>
BaseDN "OU=Staff,DC=ad,DC=example,DC=ru"
SearchFilter "(&(sAMAccountName=%u)(memberOf=CN=vpn_access,OU=SpecialUsers,DC=ad,DC=example,DC=ru))"
</Authorization>

Описание директив смотрим в /usr/share/doc/openvpn-auth-ldap/examples/auth-ldap.conf

Запускаем OpenVPN сервер командой systemctl start openvpn@server.

Для клиентов создаем файл профиля client.ovpn:

client
dev tun
proto udp
remote remote.example.ru 1194
nobind
persist-key
persist-tun
ca ca.crt
tls-client
tls-auth ta.key 1
comp-lzo
verb 3
auth-user-pass
cipher AES-256-CBC
auth SHA512
remote-cert-tls server
auth-nocache
setenv CLIENT_CERT 0

В каталог с профилем копируем с сервера файлы ca.crt и ta.key.

Be the first to comment on "Proxmox VE — LXC (Debian 10) — OpenVPN + LDAP auth"

Leave a comment

Your email address will not be published.