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