Background
The OpenVPN 3 Linux project is a new client built on top of the OpenVPN 3 Core Library, which is also used in the various OpenVPN Connect clients and OpenVPN for Android (need to be enabled via the settings page in the app).
This client is built around a completely different architecture in regards to usage. It builds heavily on D-Bus and allows unprivileged users to start and manage their own VPN tunnels out-of-the-box. System administrators wanting more control can also control and restrict this access both by hardening the default OpenVPN 3 D-Bus policy or facilitating features in OpenVPN 3 Linux.
Even though the project name carries “Linux”, it doesn’t mean it is restricted to Linux only. Any platform which has D-Bus available should be capable of running this client in theory. But since D-Bus is most commonly used in Linux environments, this will naturally be the primary focus for the project.
The release notes are stored in git tags in the project git repository. They can also be viewed here: https://github.com/OpenVPN/openvpn3-linux/releases (expand the tag to see the full text)
Подключение клиентов
Linux
В вашем дистрибутиве или среде рабочего стола может быть инструмент или графический пользовательский интерфейс для подключения к серверам OpenVPN. В этом руководстве мы покажем вам, как подключиться к серверу с помощью инструмента .
-
Установите OpenVPN в Ubuntu и Debian
-
Установите OpenVPN на CentOS и Fedora
После установки пакета для подключения к VPN-серверу используйте команду и укажите файл конфигурации клиента:
Windows
Скопируйте файл в папку конфигурации OpenVPN ( или ).
Запустите приложение OpenVPN.
Щелкните правой кнопкой мыши значок OpenVPN на панели задач, и имя скопированного файла конфигурации OpenVPN отобразится в меню. Щелкните Подключить.
Android и iOS
Приложение VPN, разработанное OpenVPN, доступно как для Android, так и для iOS. Установите приложение и импортируйте клиентский файл.
Installation for Debian and Ubuntu
Follow these steps in order to install OpenVPN 3 Client on Linux for Debian and Ubuntu:
-
Open the Terminal by pressing
-
Type the following command into the Terminal: . This is done to ensure that your apt supports the https transport. Enter the root password as prompted
-
Type the following command into the Terminal: . This will install the OpenVPN repository key used by the OpenVPN 3 Linux packages
-
Type the following command into the Terminal:
-
Type the following command into the Terminal: . This will install the proper repository. Replace $DISTRO with the release name depending on your Debian/Ubuntu distribution (the table of release names for each distribution can be found below). In this case, is chosen since Ubuntu 20.04 is used
-
Type the following command into the Terminal:
-
Type the following command into the Terminal: . This will finally install the OpenVPN 3 package
Distribution | Release | Release name ($DISTRO) |
---|---|---|
Debian | 9 | stretch |
Debian | 10 | buster |
Ubuntu | 16.04 | xenial |
Ubuntu | 18.04 | bionic |
Ubuntu | 19.10 | eoan |
Ubuntu | 20.04 | focal |
Настройте свой VPN на Ubuntu
С выбранной услугой VPN загрузите клиент и настройте его в Ubuntu. Настройка VPN в Ubuntu отличается в зависимости от характеристик клиентского программного обеспечения. Это может означать загрузку файла DEB, файла моментального снимка или просто захват клиента через терминал из репозиториев или из GitHub.
Чтобы продемонстрировать, вот как настроить ExpressVPN в Ubuntu.
При активной подписке войдите на сайт, выполнив двухэтапную проверку. Если ваша операционная система не обнаружена автоматически, выберите Посмотреть все устройства и выбрать Linux, Здесь выберите ваш дистрибутив (мы используем Ubuntu 64-битная для этой демонстрации) и нажмите Скачать,
Файл DEB будет загружен, и вам будет предложено открыть файл. Для этого воспользуйтесь диспетчером программного обеспечения по умолчанию и дождитесь установки VPN.
ExpressVPN, как и многие другие Linux VPN, запускается из командной строки. Однако это все еще требует некоторой настройки. В то время как некоторые VPN требуют ввода имени пользователя и пароля, ExpressVPN использует ключ аутентификации. Настройка ExpressVPN в Ubuntu означает запуск командной строки, а затем введите следующее:
При появлении запроса вставьте (или введите) строку аутентификации.
Использовать expressvpn Команда для отображения параметров. Вы можете быстро подключиться к VPN-серверу, введя страну в команде:
Кроме того, вы также можете ввести страну, местоположение и номер сервера:
Для отключения просто используйте:
Кажется слишком техническим? К счастью, ExpressVPN и другие VPN предлагают подключаемые модули браузера для Chrome и Firefox, Это значительно упрощает использование службы VPN, если доступный для мыши клиент недоступен для вашей операционной системы.
Все Linux-дружественные VPN-провайдеры предлагают аналогичные приложения для командной строки, поэтому вы должны найти эти шаги полезным руководством для большинства из них. Естественно, проверьте документацию для выбранного вами VPN-сервиса для точных шагов.
4. Configure OpenVPN server
The following commands will generate a server certificate and key:
sudo openssl genrsa -out /etc/openvpn/server-key.pem 2048 sudo chmod 600 /etc/openvpn/server-key.pem sudo openssl req -new -key /etc/openvpn/server-key.pem -out /etc/openvpn/server-csr.pem -subj /CN=OpenVPN/ sudo openssl x509 -req -in /etc/openvpn/server-csr.pem -out /etc/openvpn/server-cert.pem -CA /etc/openvpn/ca.pem -CAkey /etc/openvpn/ca-key.pem -days 365
Create server configuration file:
sudo nano /etc/openvpn/server.conf
server 10.8.0.0 255.255.255.0 verb 3 key server-key.pem ca ca.pem cert server-cert.pem dh dh.pem keepalive 10 120 persist-key persist-tun comp-lzo push "redirect-gateway def1 bypass-dhcp" push "dhcp-option DNS 8.8.8.8" push "dhcp-option DNS 8.8.4.4" user nobody group nogroup proto udp port 1194 dev tun1194 status openvpn-status.log
save the file and enable and start the OpenVPN service with:
sudo systemctl enable openvpn@server sudo systemctl start openvpn@server
Note: If you are running an openvz based VPS
open the file and comment the line
Add the following rule so that traffic can leave the VPN. Change the with the public network interface of your server.
iptables -t nat -A POSTROUTING -s 10.8.0.0/24 -o eth0 -j MASQUERADE
Note: If you are running an openvz based VPS
instead of the rule above add: >
Finally, we also need to allow IP forwarding:
sed -i 's|#net.ipv4.ip_forward=1|net.ipv4.ip_forward=1|' /etc/sysctl.conf echo 1 > /proc/sys/net/ipv4/ip_forward
Возможные проблемы при работе с OpenVPN
1. failed to start openvpn robust and highly flexible tunneling application on server
Описание: при запуске сервера получаем данную ошибку.
Причина: как правило, связано с отсутствием сертификата.
Решение: открываем лог /var/log/openvpn/openvpn.log и смотрим, с каким сертификатом проблема. Проверяем, что все файлы скопированы и что мы не забыли сгенерировать все сертификаты.
2. Постоянно разрывается соединение
Описание: с периодичностью от 1 до 5 минут постоянно рвется соединение с сервером. После нескольких минут переподключается.
Причина: как правило, конфликт IP-адресов. Такая ситуация возникает при случаях, когда подключение выполняется с нескольких компьютеров одновременно с одинаковыми данными авторизации (логином и паролем).
Решение: настройте клиента для подключения к серверу с уникальными логином и паролем.
3. ERROR: Cannot open TUN/TAP dev /dev/net/tun: No such file or directory (errno=2)
Описание: ошибка возникаем при попытке запустить сервис openvpn.
Причина: не загружается модуль tun.
Решение: необходимо перед запуском сервиса openvpn создавать устройство tun. Для этого мы создадим скрипт, который будет создавать устройство при запуске сервера.
Создаем каталог, в который поместим скрипт:
mkdir /scripts
Создадим сам скрипт:
vi /scripts/tun.sh
/bin/mkdir /dev/net
/bin/mknod /dev/net/tun c 10 200
* данный скрипт создает каталог /dev/net, а в нем — устройство tun.
Создаем юнит для автозапуска скрипта:
vi /etc/systemd/system/tun.service
After=network.target
Type=oneshot
ExecStart=/bin/sh -c «/scripts/tun.sh»
WantedBy=multi-user.target
Перечитываем изменения в systemd:
systemctl daemon-reload
Разрешаем автозапуск юнита tun и стартуем скрипт:
systemctl enable tun —now
Теперь можно запустить openvpn:
systemctl start openvpn@server
Перезагружаем сервер, чтобы убедиться а работе сервиса после старта компьютера.
Часть 1 – Настройка сетевой структуры сервера
В первую очередь разрешим нашему серверу пересылку пакетов на уровне ядра:
sudo vi /etc/sysctl.conf
Найдите и раскоментируйте следующий параметр:
net.ipv4.ip_forward=1
Затем применим сделанные изменения:
sudo sysctl -p
Далее настроим брандмауэр для правильной маршрутизации и маскарадинга трафика:
В первую очередь разрешим подключения к нашему серверу по протоколу SSH:
sudo ufw allow 22
или
sudo ufw allow OpenSSH
Далее разрешим входящие соединения на порт OpenVPN, в нашей конфигурации это будет стандартный порт 1194 и протокол udp:
sudo ufw allow 1194/udp
В параметрах UFW разрешим пересылку пакетов по умолчанию
- sudo vi /etc/default/ufw
- Заменим строчку DEFAULT_FORWAD_POLICY=”DROP” на DEFAULT_FORWAD_POLICY=”ACCEPT“
Добавим правила маскарадинга в таблицу NAT что-бы клиенты могли выходит в интернет используя наш сервер как шлюз по умолчанию:
sudo vi /etc/ufw/before.rules
Добавим после последнего знака “#” таблицу nat и правила к нашей openvpn сети (имеющиеся правила НЕ УДАЛЯТЬ), вместо eth0 нужно подставить название вашей сетевой карты. узнать можно выполнив команду ip route | grep default
- *nat
- :POSTROUTING ACCEPT
- -A POSTROUTING -s 172.20.0.0/24 -o eth0 -j MASQUERADE
- COMMIT
- Сохраните и закройте файл
Запустим наш брандмауэр (возможно потребуется подтверждение запуска, нажать “y”):
sudo ufw enable
На этом часть – 1 закончена, переходим к следующей.
Silent Install
You can also run this script silently with default options. The silent option will use the best encryption settings.
SILENT=y sudo -E ./openvpn-installer
Silent install will use the options below:
- Port 1194
- UDP protocol
- Google DNS resolver
- no compression
- AES-256-GCM cipher for data channel
- ECDSA certificate with prime256v1 curve
- TLS-ECDHE-ECDSA-WITH-AES-128-GCM-SHA256 cipher for control channel
- ECDH for Diffie-Hellman key with prime256v1 curve
- SHA-256 for digest algorithm
- tls-crypt for additional security
Here are some examples if you want to install silently with custom options:
#change PORT to 2432 and PROTOCOL to tcp SILENT=y PORT=2432 PROTOCOL=tcp sudo -E ./openvpn-installer #change PORT to 23423, PROTOCOL to tcp and DNS_TYPE to Cloudflare SILENT=y PORT=23423 DNS_TYPE=2 sudo -E ./openvpn-installer #change DATACIPHER_TYPE to AES-256-CBC and CERT_TYPE to RSA #since RSA_TYPE and CONTROLCIPHER_TYPE are not defined, #default 2048 bits will be used for RSA_TYPE #and TLS-ECDHE-RSA-WITH-AES-128-GCM-SHA256 will be used for CONTROLCIPHER_TYPE SILENT=y DATACIPHER_TYPE=4 CERT_TYPE=2 sudo -E ./openvpn-installer
Changing the OpenVPN Profile of an Autoloading VPN Session
Please note that every time you start a session, it will load automatically on the system start-up. In order to change the profile of an OpenVPN Session that is autoloaded, follow the steps below:
- Run the command: . It will show information about your active session. Check the value of Path parameter
- Run the command: , where YOUR_PATH is the value of Path parameter from Step 1
- Run the command: . You shouldn’t see any active sessions
- Run the command: . It will show information about your active configurations. Check the name assigned to your active config. In this case, this is OpenVPN Cloud
- Run the command: , where YOUR_CONFIG_NAME is the name of the configuration file from Step 4. You will be asked to confirm the removal of the configuration. Type (in uppercase) to confirm
- Run the command: . You shouldn’t see any active configurations
- Run the command: . This is the profile that will be replced. Notice that it uses the region
- Press , then hold until the whole file is highlighted, and finally press
- Open the OpenVPN profile you wish to use instead of the existing one. Press and then . Notice that it uses the region
- The go back to the Terminal, and press the right mouse button and choose Paste. Notice the difference between the old and the new profile
- Once you’ve replaced the profile, press and confirm changes by typing and pressing Enter
- You can run to check the changes are saved
- Run the command:
- Run the command:
- Run the command: . It will show that a new session is active and connected to the region, that of the new profile
- Restart the computer and check if the autostart profile has indeed been changed. Just run the command once again. Indeed, the autoload is now set for the new profile!
LDAP авторизация для OpenVPN
Важно! Первые попытки авторизации были не успешными, логи содержали ошибку «не найдет пользователь». Причиной было то, что в дереве AD были разделы на кириллице
Со стороны сервера:
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
со стороны клиента нужно добавить в конфигурацию пользователя(файл vpn-client.ovpn)
auth-user-pass
Данные действия приведут к выводу формы запроса на LDAP авторизацию с проверкой службой Microsoft Active Directory.
Подготовка Ubuntu
Обновляем установленные пакеты:
apt-get update && apt-get upgrade
Устанавливаем утилиту для синхронизации времени:
apt-get install chrony
Разрешаем ее автозапуск и стартуем сервис:
systemctl enable chrony —now
Установим правильную временную зону:
timedatectl set-timezone Europe/Moscow
* в данном примере московское время.
Если в нашей системе используется брандмауэр, открываем порт, на котором будет слушать OpenVPN:
iptables -I INPUT -p udp —dport 443 -j ACCEPT
* в данной инструкции предполагается, что мы настроим VPN-сервер на UDP-порту 443, однако, по-умолчанию, OpenVPN работает на порту 1194.
Для сохранения правила используем iptables-persistent:
apt-get install iptables-persistent
netfilter-persistent save
Step 2 – Connect to OpenVPN Server
Copy your client configuration file on the machine and run the following command to connect to the OpenVPN server:
openvpn --config client.ovpn
You should see the following output:
Sat Feb 29 15:39:18 2020 TCP/UDP: Preserving recently used remote address: 69.87.218.145:1194 Sat Feb 29 15:39:18 2020 Socket Buffers: R= S= Sat Feb 29 15:39:18 2020 UDP link local: (not bound) Sat Feb 29 15:39:18 2020 UDP link remote: 69.87.218.145:1194 Sat Feb 29 15:39:18 2020 TLS: Initial packet from 69.87.218.145:1194, sid=6d27e1cb 524bd8cd Sat Feb 29 15:39:18 2020 VERIFY OK: depth=1, CN=Easy-RSA CA Sat Feb 29 15:39:18 2020 VERIFY OK: depth=0, CN=tecadmin-server Sat Feb 29 15:39:18 2020 Control Channel: TLSv1.3, cipher TLSv1.3 TLS_AES_256_GCM_SHA384, 2048 bit RSA Sat Feb 29 15:39:18 2020 Peer Connection Initiated with 69.87.218.145:1194 Sat Feb 29 15:39:19 2020 SENT CONTROL : 'PUSH_REQUEST' (status=1) Sat Feb 29 15:39:19 2020 PUSH: Received control message: 'PUSH_REPLY,redirect-gateway def1,dhcp-option DNS 208.67.222.222,dhcp-option DNS 208.67.220.220,route 10.8.0.1,topology net30,ping 20,ping-restart 60,ifconfig 10.8.0.6 10.8.0.5,peer-id 0,cipher AES-256-GCM' Sat Feb 29 15:39:19 2020 OPTIONS IMPORT: timers and/or timeouts modified Sat Feb 29 15:39:19 2020 OPTIONS IMPORT: --ifconfig/up options modified Sat Feb 29 15:39:19 2020 OPTIONS IMPORT: route options modified
OpenVPN Server Configuration
There are some sample VPN server configuration files that can be extracted to « folder for further usage. Now, point to the directory where these example VPN configurations are placed and extract the archive into the required directory with below command.
root@ubuntu-14:~# gunzip -c /usr/share/doc/openvpn/examples/sample-config-files/server.conf.gz > /etc/openvpn/server.conf
Now, to configure its configuration parameters in the « file, open with any editor and do the required changes.
root@ubuntu-14:~# vim /etc/openvpn/server.conf
To configure the `Diffie Hellman parameters` in the configurations file, we will update its value to double the RSA key length used when generating server and client keys.
#dh dh1024.pem dh dh2048.pem
To configure the parameters so that the VPN server can pass in the client’s web traffic to its destination, we will uncomment the below line in « file.
;push "redirect-gateway def1 bypass-dhcp" push "redirect-gateway def1 bypass-dhcp"
To configure the Public DNS servers provided by opendns.com, uncomment the two line under this section that looks like this.
push "dhcp-option DNS 208.67.222.222" push "dhcp-option DNS 208.67.220.220"
OpenDNS is the default DNS resolvers used by OpenVPN, we can also use whichever DNS service we want to use. Once the necessary parameters have been configured, save the changes and close the file with « in case you are using vim editor.
Generate a client certificate and key pair
We will need to create a directory to keep the certificates and the keys of the clients. Make sure to give permission to the non-root user.
Generate the request for the client certificate:
Output:
Now copy the client key to the client-configs directory:
Copy the client certificate request file to the CA server:
On the CA server, import the CSR:
Now we should sign the request for client, type:
Output:
Copy the client certificate on the openvpn server:
Now on the openvpn server, we need to copy all the client files to the client directory that we have created before.
Make sure that the non-root user has the permissions on the files.
Static-Key VPN
На сервере, переходим в директорию /etc/openvpn , и выполняем команду для генерации статического ключа:
# openvpn --genkey --secret static.key
Скопируйте ключ на клиента в директорию /etc/openvpn , для безопасности используйте scp или sftp.
На сервере, создайте новый /etc/openvpn/tun0.conf файл и добавьте следующее:
dev tun0 ifconfig 10.9.8.1 10.9.8.2 secret /etc/openvpn/static.key
Здесь 10.9.8.x ваша VPN подсеть, 10.9.8.1 — IP адрес сервера, 10.9.8.2 — IP клиента.
На клиенте, скопируйте /etc/openvpn/static.key файл с сервера, создайте новый /etc/openvpn/tun0.conf файл и запишите в него следующее:
remote your-server.org dev tun0 ifconfig 10.9.8.2 10.9.8.1 secret /etc/openvpn/static.key
На FIREWALL необходимо открыть UDP 1194 (порт по умолчанию).
If you are using ?shorewall, on both devices, add a new VPN zone to represent tun0 and create a default policy for it. This means adding something to the following files in /etc/shorewall:
- zone
- interfaces
- policy
Bear in mind that 90% of all connection problems encountered by new OpenVPN users are firewall-related.
Start OpenVPN by hand on both sides with the following command:
# openvpn --config /etc/openvpn/tun0.conf --verb 6 // verbose output.
You should probably configure your route at this step.
To verify that the VPN is running, you should be able to ping 10.9.8.2 from the server and 10.9.8.1 from the client.
Держите свою активность в секрете: включите свой Ubuntu VPN-клиент
Важно помнить, что провайдеры VPN регулярно обновляют свои клиентские приложения и IP-адреса серверов. Используете ли вы клиентское приложение или приложение OpenVPN, найдите время, чтобы регулярно обновлять свои конфигурации OVPN
Делайте это еженедельно или раз в две недели, чтобы обеспечить доступ к лучшим доступным серверам.
Различные провайдеры VPN предлагают поддержку для Linux
хотя небольшого количества нет. Из тех, кто это делает, фокус почти всегда на Ubuntu, а не на других дистрибутивах Linux. Хотя описанные здесь шаги будут работать с веткой Ubuntu / Debian дистрибутивов Linux, OpenVPN можно использовать со всеми другими версиями Linux.
Настройка 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 sudo systemctl status sudo systemctl enable
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 -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
Настроим сам сервер
zcat /usr/share/doc/openvpn/examples/sample-config-files/server.conf.gz > /etc/openvpn/server.conf nano /etc/openvpn/server.conf
local IP_АДРЕС_ВАШЕГО_СЕРВЕРА push "redirect-gateway def1 bypass-dhcp" push "dhcp-option DNS 8.8.8.8" push "dhcp-option DNS 8.8.4.4" client-to-client # раскомментируйте, если хотите иметь доступ между клиентами внутри вашего VPN log /var/log/openvpn.log # раскомментируйте, если нужны логи duplicate-cn # раскомментируйте, если хотите использовать один сертификат для всех пользователей # Для включения tls-auth, необходимо добавить (без #) # tls-auth ta.key 0 # Если хотите спрятать сервер от китайских ботов, поменяйте стандартный порт на любой другой. Только не забудьте прописать этот же порт в настройках клиента. port 1194
nano /etc/rc.local
iptables -A FORWARD -s 10.8.0.0/24 -j ACCEPT iptables -A FORWARD -m state --state RELATED,ESTABLISHED -j ACCEPT iptables -t nat -A POSTROUTING -s 10.8.0.0/24 -o eth0 -j MASQUERADE
nano /etc/sysctl.conf
net.ipv4.ip_forward=1
reboot
Часть – 2. Настройка центра сертификации EasyRSA
Сервер и клиенты OpenVPN используют сертификаты для установления и соединений и шифрования трафика, поэтому нам потребуется собственный центр сертификации. В рекомендациях OpenVPN указано что центр сертификации должен находиться на отдельном физическом сервере, но мы установим его вместе с серером OpenVPN.
Скачаем последнюю версию EasyRSA с GitHub проекта:
wget https://github.com/OpenVPN/easy-rsa/releases/download/v3.0.6/EasyRSA-unix-v3.0.6.tgz
Распакуем скачанный архив и перейдем в полученную директорию:
- tar xvf EasyRSA-unix-v3.0.6.tgz
- sudo chmod -R 700 EasyRSA-v3.0.6
- cd EasyRSA-v3.0.6
Создадим файл с настройками переменных:
cp vars.example vars
Раскоментируем значения переменных, при желании их можно изменить, но нельзя оставлять незаполненными:
vi vars
Удалите знак “#” у следующих значений:
#set_var EASYRSA_REQ_COUNTRY “US”
#set_var EASYRSA_REQ_PROVINCE “California”
#set_var EASYRSA_REQ_CITY “San Francisco”
#set_var EASYRSA_REQ_ORG “Copyleft Certificate Co”
#set_var EASYRSA_REQ_OU “My Organizational Unit
Сохраните и закройте файл.
Инициализируем наш центр сертификации:
- ./easyrsa init-pki
- touch pki/.rnd
- ./easyrsa build-ca nopass
- ./easyrsa gen-dh
*выполнение займет некоторое время
Центр сертификации настроен и готов подписывать сертификаты сервера и клиента, а следовательно Часть – 2 закончена, идем дальше.
Отзыв клиентских сертификатов
Отзыв сертификата означает аннулирование подписанного сертификата, чтобы его больше нельзя было использовать для доступа к серверу OpenVPN.
Чтобы отозвать сертификат клиента, выполните следующие действия:
-
Войдите в свой компьютер CA и перейдите в каталог EasyRSA:
-
Запустите сценарий easyrsa, используя аргумент , за которым следует имя клиента, которого вы хотите отозвать:
Вам будет предложено подтвердить, что вы хотите отозвать сертификат. Введите и нажмите для подтверждения:
Если ваш ключ CA защищен паролем, вам будет предложено ввести пароль. После проверки скрипт отзовет сертификат.
-
Используйте параметр для создания списка отзыва сертификатов (CRL):
-
Загрузите файл CRL на сервер OpenVPN:
-
Войдите на сервер сервера OpenVPN и переместите файл в каталог :
-
Откройте файл конфигурации сервера OpenVPN:
Вставьте следующую строку в конец файла
/etc/openvpn/server1.conf
Сохраните и закройте файл.
-
Перезапустите службу OpenVPN, чтобы директива отзыва вступила в силу:
На этом этапе клиент больше не должен иметь доступ к серверу OpenVPN, используя отозванный сертификат.
Если вам нужно отозвать дополнительные клиентские сертификаты, просто повторите те же шаги.
Запуск службы OpenVPN
В этом руководстве мы использовали в качестве файла конфигурации. Чтобы запустить службу OpenVPN с этой конфигурацией, нам нужно указать имя файла конфигурации после имени файла модуля systemd:
На сервере OpenVPN выполните следующую команду, чтобы запустить службу OpenVPN:
Убедитесь, что служба запущена успешно, набрав:
Если служба активна и работает, вывод будет выглядеть примерно так:
Включите автоматический запуск службы при загрузке с помощью:
Если служба OpenVPN не запускается, проверьте журналы с помощью
Сервер OpenVPN создаст новое устройство tun . Чтобы проверить, доступно ли устройство, используйте следующую команду ip :
Результат должен выглядеть примерно так:
На этом этапе ваш сервер OpenVPN настроен и работает правильно.
Что требуется от операционной системы?
Перед установкой OpenVPN необходимо убедиться в корректности базовых параметров.
1. У сервера есть хотя бы один “белый” статичный IP-адрес. Т.е. сервер должен быть доступен из сети Интернет. Если адрес динамический, но сервер все же остается быть доступным из глобальной сети — воспользуйтесь услугами DynDNS.
2. Разрешена загрузка и установка пакетов из официальных репозиториев. Для проверки выполните cat /etc/apt/sources.list. Строки с указаниями репозиториев должны быть раскомментированы (не должно быть символа “#” решетка в начале строки).
Скриншот 1. Репозитории
3. Должны быть верно указаны параметры сети — hostname, параметры DNS-серверов.
Для обеспечения должного уровня безопасности, рекомендуем ознакомиться с нашими рекомендациями.
Приступаем к установке.
Все действия по установке будем выполнять от пользователя root.
1. Обновляем информацию о репозиториях:
2. Устанавливаем текущие обновления системы и установленных программ:
3. Устанавливаем OpenVPN:
Скриншот 2. Установка OpenVPN
Важно. В базовых репозиториях, зачастую отсутствует новейшая версия пакета
Разработчики OpenVPN ведут собственный репозиторий, о том как его настроить можно ознакомиться на официальном сайте.
4. Аналогичным образом устанавливаем пакет easy-rsa:
Действия после установки.
Размещаем скрипты easy-rsa:
Подготавливаем публичные ключи (PKI — Public Key Infrastructure):
1. Переходим в директорию /etc/openvpn/easy-rsa:
2. Создаем символьную ссылку на файл конфигурации openssl:
3. Инициализируем скрипт vars:
Система сообщит: NOTE: If you run ./clean-all, I will be doing a rm -rf on /etc/openvpn/easy-rsa/keys
4. Выполняем
Скриншот 3. Подготавливаем публичные ключи
5. Для создания центра сертификации выполняем скрипт:
В ходе своей работы, программа задаст несколько вопросов. Отвечать на них следует латиницей. Если вы не заполните какое-либо поле, программа подставит значения по умолчанию, обычно указанные в скобках.
Скриншот 4. Создание центра сертификации
Создаем ключ сервера.
Для создания ключа сервера выполним команду:
Скриншот 5. Создание ключа сервера
Следует обратить внимание, что процесс похож на генерацию сертификата центра сертификации, однако, перед подписанием сертификата программа задаст 2 уточняющих вопроса. Если все указано верно, отвечаем “y”
Configuring EasyRSA on the CA
After installing EasyRSA, a configuration file to define the variables for your CA has been created on your CA. Type:
Remove the «#» to the instructions shown in the figure below:
Start the «easyrsa» script to initialize the Public Key Infrastructure (PKI):
with this command two files will be created:
-
ca.crt: public CA certificate used by servers and clients to mutually notify that they are part of the same trusted network.
-
ca.key: private key that the CA machine uses to sign keys and certificates for servers and clients. This file must be kept only on the CA machine (which is not accessible by third parties)otherwise network security may be compromised.
You will be required to enter a name. Leave it blank and press Enter.
Аутентификация пользователей
Позволяет требовать от пользователя ввод логина и пароля при каждом подключении. Также идентификация каждого пользователя необходима для уникальной идентификации каждого из них и выдачи разных IP-адресов.
Настройка на сервере
Открываем конфигурационный файл openvpn:
vi /etc/openvpn/server.conf
И добавляем следующие строчки:
plugin /usr/lib/openvpn/plugins/openvpn-plugin-auth-pam.so login
tmp-dir /etc/openvpn/tmp
* где:
- plugin — путь до библиотеки проверки введенных логина и пароля. Как путь, так и название файла openvpn-plugin-auth-pam.so могут отличаться. Это зависит от версии Linux и OpenVPN. Чтобы найти путь до нужного файла, можно воспользоваться командой find / -name «openvpn-*auth-pam*.so» -print.
- tmp-dir — указание пути до директории хранения временных файлов. Если не указать, то будет использоваться /tmp, однако, на практике это может привести к ошибке Could not create temporary file ‘/tmp/openvpn_<набор символов>.tmp’: No such file or directory (errno=2).
Создаем каталог для временных файлов и задаем на него права:
mkdir /etc/openvpn/tmp
chmod 777 /etc/openvpn/tmp
Перезапускаем сервер:
systemctl restart openvpn@server
Создаем учетную запись для авторизации:
useradd vpn1 -s /sbin/nologin
passwd vpn1
В конфигурационный файл клиента добавляем:
auth-user-pass
Можно пробовать подключаться.
Вход без ввода пароля
Если необходимо настроить авторизацию, но автоматизировать вход клиента, открываем конфигурационный файл последнего и строку для авторизации меняем на:
auth-user-pass auth.txt
* где auth.txt — файл, в котором мы будем хранить логин и пароль.
Создаем текстовый файл auth.txt в той же папке, где находится файл конфигурации со следующим содержимым:
username
password
* где username — логин пользователя, а password — пароль.
Переподключаем клиента.
Описанный метод аутентификации является базовым и требует наличие обычной системной учетной записи. Если необходима более сложная авторизация на базе LDAP, можно воспользоваться инструкцией
настройка OpenVPN сервера с аутентификацией через LDAP (написана на базе Linux Ubuntu).