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 123.123.123.123
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.10.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
data-ciphers AES-256-GCM:AES-128-GCM:CHACHA20-POLY1305
push "dhcp-option DNS 123.123.123.123"
push "block-outside-dns"
push "redirect-gateway def1 bypass-dhcp"
client-config-dir ccd
topology subnet

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

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

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

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

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

Для клиентов создаем файл профиля client.ovpn, так же в него вставляем содержимое ca.crt и ta.key:

client
dev tun
proto udp
remote remote.example.ru 1194
nobind
persist-key
persist-tun
tls-client
comp-lzo
verb 3
auth-user-pass
cipher AES-256-CBC
auth SHA512
remote-cert-tls server
auth-nocache
setenv CLIENT_CERT 0
key-direction 1
<ca>
-----BEGIN CERTIFICATE-----
MIIDSzCCAjOgAwIBAgIUBBClETNk0jLhjbxlBDgkfHnUkKcwDQYJKoZIhvcNAQEL
BQAwFjEUMBIGA1UEAwwLRWFzeS1SU0EgQ0EwHhcNMjMxMTIzMTA0ODE0WhcNMzMx
MTIwMTA0ODE0WjAWMRQwEgYDVQQDDAtFYXN5LVJTQSBDQTCCASIwDQYJKoZIhvcN
AQEBBQADggEPADCCAQoCggEBALlaHFVpXJSJodnfd4KWz+QDSqqxHkH7D/GtbBZ1
BQAwFjEUMBIGA1UEAwwLRWFzeS1SU0EgQ0EwHhcNMjMxMTIzMTA0ODE0WhcNMzMx
MTIwMTA0ODE0WjAWMRQwEgYDVQQDDAtFYXN5LVJTQSBDQTCCASIwDQYJKoZIhvcN
AQEBBQADggEPADCCAQoCggEBALlaHFVpXJSJodnfd4KWz+QDSqqxHkH7D/GtbBZ1
6/OVPZmuS69fbxGfa2JT5LkN9/+k5NuVZ0EfKQ7BeyhruZN5MR9sOxq53o7Qf1Hh
t0JA5OpMPQiZ9W8PLF/kKb/tg6G+vBv9MIktUyv/ybDwEP8CAwEAAaOBkDCBjTAd
BgNVHQ4EFgQUlNrjShaFRefT5VDv15EtI0AbtEEwUQYDVR0jBEowSIAUlNrjShaF
RefT5VDv15EtI0AbtEGhGqQYMBYxFDASBgNVBAMMC0Vhc3ktUlNBIENBghQEEKUR
M2TSMuGNvGUEOCR8edSQpzAMBgNVHRMEBTADAQH/MAsGA1UdDwQEAwIBBjANBgkq
E8a1upXjIouhhwbv/Ss3Q/ZX8/Xf2x8FEqUujPiXfHvbBWdS9M3GQFQBnUK0Xezi
zrV9rVa2NoM7cWmwgCW7O4h6Re67IUkyHRMs8m7SMF6W5PFJ7+7posj2zzPsvwwH
t0JA5OpMPQiZ9W8PLF/kKb/tg6G+vBv9MIktUyv/ybDwEP8CAwEAAaOBkDCBjTAd
wyoWr3WkdSi+C5N5Y4fqdBkwrZ8mUlZ5t+i+sTtIgkTYpyh/VxuJ56naDiEb8RIw
w4XYdXbVzBPSMOMGM1VxoVp4YOuw8ZDuhFgMpoL0imggCUicQmK59nHSyria2hDh
MOw0yTQzd93iicKLi35GXDMkxYHogWagPG51bYxS5A==
-----END CERTIFICATE-----
</ca>
<tls-auth>
-----BEGIN OpenVPN Static key V1-----
f268abc418937891ba463248df5f0d30
556e0d37a6b2a2cfa39853a2d1b7b294
e7ccd1fe4336b4e302ae090489f0b795
e7ccd1fe4336b4e302ae090489f0b795
a763db5be12f2b4bc8828cbe0fb56d35
3b2dd27a774fd1a8f8cc3737d1bbf3e6
79737e7a5fc5f5c9307fd01ca2c23979
e7ccd1fe4336b4e302ae090489f0b795
92811aad838ce7c328a287893dccb6e1
3d0ec615034159b669d518d681356da6
f268abc418937891ba463248df5f0d30
556e0d37a6b2a2cfa39853a2d1b7b294
f268abc418937891ba463248df5f0d30
556e0d37a6b2a2cfa39853a2d1b7b294
eb26c5265c52d9208c76c8f881727f38
56992ba4be041c603275b84aadef55b4
-----END OpenVPN Static key V1-----
</tls-auth>

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

Leave a comment

Your email address will not be published.