Краткое описание: Инструкция по установке и настройке OpenVPN на Ubuntu Server, LDAP авторизация через службу Microsoft AD. Бесплатный VPN сервер на LInux, удалённый доступ к компьютеру.
Поддержи автора статьи, просмотри рекламу ↓↓↓
VPN — виртуальная частная сеть, которая дает возможность удалённого подключения любого устройства для объединения в общую сеть. В виде объектов сети могут быть:
- удалённые офисы, которые объединяются между собой;
- частные подключения ноутбуков(windows и linux) и смартфонов(android и ios).
Решений для обоих вариантов множество: аппаратные устройства(cisco, mikrotik) и программные комплексы(pfsense, KerioControl, Windows маршрутизация и прочие VPN сервисы).
Среди решений выделяется OpenVPN как opensource продукт с высоким уровнем защиты(используя SSL), качественным сопровождением и поддержкой абсолютно любыми устройствами.
Сервис VPN можно отнести к корпоративному сегменту, поэтому настройка будет включать LDAP авторизацию на базе Microsoft AD.
Поддержи автора статьи, просмотри рекламу ↓↓↓
Взаимодействие между элементами VPN будет содержать серверную и клиентские части.
Установка OpenVPN сервера на Ubuntu
В исходной позиции имеется сервер ОС Ubuntu Server 18.04 с последними пакетами обновлений. На данном сервере будет установлен и центр сертификации(CA) и служба OpenVPN Server.
установка утилиты Easy-RSA и генерация ключа и сертификата
Поддержи автора статьи, просмотри рекламу ↓↓↓
cd && wget https://github.com/OpenVPN/easy-rsa/releases/download/v3.0.5/EasyRSA-nix-3.0.5.tgz tar xzf EasyRSA-nix-3.0.5.tgz
cd ~/EasyRSA-3.0.5/ cp vars.example vars nano ~/EasyRSA-3.0.5/vars
set_var EASYRSA_REQ_COUNTRY "UA" set_var EASYRSA_REQ_PROVINCE "ODESA" set_var EASYRSA_REQ_CITY "ODESA" set_var EASYRSA_REQ_ORG "TOPNET" set_var EASYRSA_REQ_EMAIL "[email protected]" set_var EASYRSA_REQ_OU "TOPNET"
./easyrsa init-pki ./easyrsa build-ca nopass
установка OpenVPN сервера
sudo apt update sudo apt install openvpn -y
генерация ключей Диффи-Хелмана(займет некоторое время)
./easyrsa gen-dh
sudo cp ~/EasyRSA-3.0.5/pki/dh.pem /etc/openvpn/ openvpn --genkey --secret ta.key sudo cp ~/EasyRSA-3.0.5/ta.key /etc/openvpn/
создание сертификата и ключа сервера
./easyrsa gen-req openvpn-server nopass
Поддержи автора статьи, просмотри рекламу ↓↓↓
верификация в центре сертификации(CA)
sudo cp ~/EasyRSA-3.0.5/pki/private/openvpn-server.key /etc/openvpn/
./easyrsa sign-req server openvpn-server
sudo cp ~/EasyRSA-3.0.5/pki/issued/openvpn-server.crt /etc/openvpn/ sudo cp ~/EasyRSA-3.0.5/pki/ca.crt /etc/openvpn/
Настройка OpenVPN сервера
sudo sh -c "gunzip -c /usr/share/doc/openvpn/examples/sample-config-files/server.conf.gz > /etc/openvpn/openvpn-server.conf"
конфигурация OpenVPN сервера
sudo nano /etc/openvpn/openvpn-server.conf
cert openvpn-server.crt key openvpn-server.key
dh dh.pem
push "redirect-gateway def1 bypass-dhcp"
push "dhcp-option DNS 1.1.1.1" push "dhcp-option DNS 1.0.0.1" user nobody group nogroup
auth SHA256
Поддержи автора статьи, просмотри рекламу ↓↓↓
запуск и проверка работы службы OpenVPN Server
sudo systemctl start openvpn@openvpn-server sudo systemctl status openvpn@openvpn-server sudo systemctl enable openvpn@openvpn-server
ip a show tun0
sudo nano /etc/sysctl.conf net.ipv4.ip_forward=1
sudo sysctl -p
определение рабочего сетевого интерфейса
ip -o -4 route show to default | awk '{print $5}'
изменение правил firewall-а
sudo nano /etc/default/ufw DEFAULT_FORWARD_POLICY="ACCEPT"
sudo nano /etc/ufw/before.rules
после последнего COMMIT добавить
#NAT table rules *nat :POSTROUTING ACCEPT [0:0] -A POSTROUTING -s 10.8.0.0/16 -o eth0 -j MASQUERADE COMMIT
sudo ufw allow 1194/udp sudo ufw allow OpenSSH
sudo ufw disable sudo ufw enable
Поддержи автора статьи, просмотри рекламу ↓↓↓
проверка правил в таблице маршрутизации
sudo iptables -nvL POSTROUTING -t nat
Конфигурация VPN клиента
создание конфигурации клиента OpenVPN
mkdir -p ~/openvpn-clients/{configs,base,files}
sudo cp ~/EasyRSA-3.0.5/ta.key ~/openvpn-clients/base/ sudo cp /etc/openvpn/ca.crt ~/openvpn-clients/base/ cp /usr/share/doc/openvpn/examples/sample-config-files/client.conf ~/openvpn-clients/base/
nano ~/openvpn-clients/base/client.conf
ca ca.crt cert client.crt key client.key
remote openvpn.topnet.com.ua 1194 auth SHA256
Поддержи автора статьи, просмотри рекламу ↓↓↓
создание скрипта для генерации пользовательских конфигураций
nano ~/openvpn-clients/gen_config.sh
#!/bin/bash FILES_DIR=$HOME/openvpn-clients/files BASE_DIR=$HOME/openvpn-clients/base CONFIGS_DIR=$HOME/openvpn-clients/configs BASE_CONF=${BASE_DIR}/client.conf CA_FILE=${BASE_DIR}/ca.crt TA_FILE=${BASE_DIR}/ta.key CLIENT_CERT=${FILES_DIR}/${1}.crt CLIENT_KEY=${FILES_DIR}/${1}.key # Test for files for i in "$BASE_CONF" "$CA_FILE" "$TA_FILE" "$CLIENT_CERT" "$CLIENT_KEY"; do if [[ ! -f $i ]]; then echo " The file $i does not exist" exit 1 fi if [[ ! -r $i ]]; then echo " The file $i is not readable." exit 1 fi done # Generate client config cat > ${CONFIGS_DIR}/${1}.ovpn <<EOF $(cat ${BASE_CONF}) <key> $(cat ${CLIENT_KEY}) </key> <cert> $(cat ${CLIENT_CERT}) </cert> <ca> $(cat ${CA_FILE}) </ca> <tls-auth> $(cat ${TA_FILE}) </tls-auth> EOF
chmod u+x ~/openvpn-clients/gen_config.sh
Поддержи автора статьи, просмотри рекламу ↓↓↓
генерация пользовательской конфигурации
~/EasyRSA-3.0.5/easyrsa gen-req vpn-client nopass
cp ~/EasyRSA-3.0.5/pki/private/vpn-client.key ~/openvpn-clients/files/
~/EasyRSA-3.0.5/easyrsa sign-req client vpn-client
cp /home/adminse/EasyRSA-3.0.5/pki/issued/vpn-client.crt ~/openvpn-clients/files
cd ~/openvpn-clients
sudo chmod 775 ./base/{ca.crt,ta.key}
~/openvpn-clients/gen_config.sh vpn-client
ls ~/openvpn-clients/configs
вывод должен содержать строку с файлом пользовательской конфигурации, который нужно передать пользователю для подключения, в данном случае это файл «vpn-client.ovpn«.
Удаленный доступ, подключение к OpenVPN серверу
Со стороны Windows клиента нужно установить приложение с официального сайта(ссылка) и положить файл конфигурации или в каталог пользователя или в «Programm Files» в соответствующую папку OpenVPN. Пример успешного подключения:
Поддержи автора статьи, просмотри рекламу ↓↓↓
LDAP авторизация для OpenVPN
Со стороны сервера:
sudo apt install openvpn-auth-ldap -y sudo mkdir /etc/openvpn/ldap
sudo nano /etc/openvpn/ldap/ldap.conf
<LDAP> URL ldap://dc.topnet.com.ua BindDN cn=adminX,DC=dc,DC=topnet,DC=com,DC=ua Password DomainUserPassword Timeout 15 </LDAP> <Authorization> BaseDN "DC=dc,DC=topnet,DC=com,DC=ua" SearchFilter "(&(sAMAccountName=%u)(memberOf=CN=VPN,OU=Groups,DC=dc,DC=topnet,DC=com,DC=ua))" RequireGroup false </Authorization>
sudo nano /etc/openvpn/openvpn-server.conf
username-as-common-name plugin /usr/lib/openvpn/openvpn-auth-ldap.so /etc/openvpn/ldap/ldap.conf
sudo systemctl restart openvpn@openvpn-server
Поддержи автора статьи, просмотри рекламу ↓↓↓
со стороны клиента нужно добавить в конфигурацию пользователя(файл vpn-client.ovpn)
auth-user-pass
Данные действия приведут к выводу формы запроса на LDAP авторизацию с проверкой службой Microsoft Active Directory.