Для того, чтобы 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"