🐧 Установка и настройка сервера OpenVPN на RHEL 8 / CentOS 8

Мануал
В этом руководстве объясняется, как установить и настроить сервер OpenVPN на RHEL / CentOS 8.
Виртуальная частная сеть (VPN) позволяет безопасно обходить ненадежные сети, как если бы вы находились в защищенной сети LAN.
OpenVPN – это полнофункциональное VPN-решение Secure Socket Layer (SSL) с открытым исходным кодом, которое поддерживает широкий спектр конфигураций.
С OpenVPN вы можете легко установить безопасный туннель, который расширяет частную сеть через общедоступную.
Весь передаваемый трафик зашифрован, и вы можете доверять информации, полученной на другом конце.
В этом сообщении мы рассмотрим простой способ установки и настройки сервера OpenVPN на сервере RHEL / CentOS 8.

Установим сервер OpenVPN на RHEL / CentOS 8

Существует два варианта настройки сервера OpenVPN на RHEL / CentOS 8.

  • Установка сервера OpenVPN вручную – отнимает много времени
  • Установка сервера OpenVPN с помощью автоматизированных скриптов – просто и быстро

Шаг 1: Добавьте EPEL и установите git

Добавьте репозиторий EPEL в вашу систему RHEL / CentOS 8.

Он содержит пакет openvpn и необходимые зависимости.

Нам также нужен git, чтобы вытащить код из Github.

Убедитесь, что он установлен.

sudo dnf -y install git

Шаг 2: Клонируйте репозиторий openvpn-install

Теперь клонируйте репозиторий openvpn-install с помощью инструмента git, установленного на первом шаге:

$ cd ~
$ git clone https://github.com/Nyr/openvpn-install.git
Cloning into 'openvpn-install'…
remote: Enumerating objects: 360, done.
remote: Total 360 (delta 0), reused 0 (delta 0), pack-reused 360
Receiving objects: 100% (360/360), 104.04 KiB | 263.00 KiB/s, done.
Resolving deltas: 100% (180/180), done.

Шаг 3: Запустите установщик OpenVPN

Перейдите в каталог openvpn-install и запустите скрипт установки.

$ chmod +x openvpn-install.sh
$ sudo ./openvpn-install.sh

Вы получите несколько подсказок, чтобы изменить или подтвердить настройки по умолчанию для установки.

Welcome to this OpenVPN "road warrior" installer!
 I need to ask you a few questions before starting the setup.
 You can leave the default options and just press enter if you are ok with them.
 First, provide the IPv4 address of the network interface you want OpenVPN
 listening to.
 IP address: 192.168.122.198
 This server is behind NAT. What is the public IPv4 address or hostname?
 Public IP address / hostname: vpn.example.com
 Which protocol do you want for OpenVPN connections?
    1) UDP (recommended)
    2) TCP
 Protocol [1-2]: 1
 What port do you want OpenVPN listening to?
 Port: 1194
 Which DNS do you want to use with the VPN?
    1) Current system resolvers
    2) 1.1.1.1
    3) Google
    4) OpenDNS
    5) Verisign
 DNS [1-5]: 1
 Finally, tell me your name for the client certificate.
 Please, use one word only, no special characters.
 Client name: computingforgeeks
 Okay, that was all I needed. We are ready to set up your OpenVPN server now.
 Press any key to continue…
 Updating Subscription Management repositories.
 Updating Subscription Management repositories.
 Extra Packages for Enterprise Linux 7 - x86_64                                                                         189 kB/s |  16 MB     01:24    
 Last metadata expiration check: 0:00:54 ago on Wed 20 Mar 2019 07:23:31 PM EAT.
 Package epel-release-7-11.noarch is already installed.
 Dependencies resolved.
 Nothing to do.
 Complete!
 Updating Subscription Management repositories.
 Updating Subscription Management repositories.
 Waiting for process with pid 1906 to finish.
 Package iptables-1.8.0-11.el8.x86_64 is already installed.
 Package openssl-1:1.1.1-6.el8.x86_64 is already installed.
 Package ca-certificates-2018.2.24-6.el8.noarch is already installed.
 Dependencies resolved.
  Package                           Arch                    Version                           Repository                                           Size
 Installing:
  openvpn                           x86_64                  2.4.7-1.el7                       epel                                                522 k
 Installing dependencies:
  pkcs11-helper                     x86_64                  1.11-3.el7                        epel                                                 56 k
  libnsl                            x86_64                  2.28-18.el8                       rhel-8-for-x86_64-baseos-beta-rpms                   84 k
  compat-openssl10                  x86_64                  1:1.0.2o-3.el8                    rhel-8-for-x86_64-baseos-beta-rpms                  1.1 M
 Transaction Summary
 Install  4 Packages
 Total download size: 1.8 M
 Installed size: 4.6 M
 Downloading Packages:
 (1/4): pkcs11-helper-1.11-3.el7.x86_64.rpm                                                                              34 kB/s |  56 kB     00:01    
 (2/4): openvpn-2.4.7-1.el7.x86_64.rpm                                                                                  191 kB/s | 522 kB     00:02    
 (3/4): libnsl-2.28-18.el8.x86_64.rpm                                                                                    26 kB/s |  84 kB     00:03    
 (4/4): compat-openssl10-1.0.2o-3.el8.x86_64.rpm
.......................

Вам необходимо установить:

  • IP-адрес сервера, который будет использоваться VPN
  • Имя хоста Сервера, если внутри NAT
  • Используемый протокол OpenVPN – TCP или UDP
  • OpenVPN порт
  • DNS Nameserver для использования с VPN
  • Имя первого клиентского профиля

Если установка прошла успешно, вы должны получить сообщение, подобное приведенному ниже.

..............
 Check that the request matches the signature
 Signature ok
 The Subject's Distinguished Name is as follows
 commonName            :ASN.1 12:'computingforgeeks'
 Certificate is to be certified until Mar 17 16:24:47 2029 GMT (3650 days)
 Write out database with 1 new entries
 Data Base Updated
 Using SSL: openssl OpenSSL 1.1.1 FIPS  11 Sep 2018
 Using configuration from /etc/openvpn/easy-rsa/pki/safessl-easyrsa.cnf
 Can't load /etc/openvpn/easy-rsa/pki/.rnd into RNG
 140135296710464:error:2406F079:random number generator:RAND_load_file:Cannot open file:crypto/rand/randfile.c:90:Filename=/etc/openvpn/easy-rsa/pki/.rnd
 An updated CRL has been created.
 CRL file: /etc/openvpn/easy-rsa/pki/crl.pem
 788
 success
 success
 success
 success
 success
 success
 612
 Created symlink /etc/systemd/system/multi-user.target.wants/openvpn@server.service → /usr/lib/systemd/system/openvpn@.service.
 Finished!
 Your client configuration is available at: /root/computingforgeeks.ovpn
 If you want to add more clients, you simply need to run this script again!
Основной файл конфигурации сервера OpenVPN, /etc/openvpn/server.conf, вы можете настроить его по своему вкусу.
$ cat  /etc/openvpn/server.conf 
port 1194
proto udp
dev tun
sndbuf 0
rcvbuf 0
ca ca.crt
cert server.crt
key server.key
dh dh.pem
auth SHA512
tls-auth ta.key 0
topology subnet
server 10.8.0.0 255.255.255.0
ifconfig-pool-persist ipp.txt
push "redirect-gateway def1 bypass-dhcp"
push "dhcp-option DNS 192.168.122.1"
keepalive 10 120
cipher AES-256-CBC
user nobody
group nobody
persist-key
persist-tun
status openvpn-status.log
verb 3
crl-verify crl.pem
В процессе установки будет создан виртуальный интерфейс tun0.
Он используется клиентами OpenVPN.
$ ip addr | grep tun0
 3: tun0:  mtu 1500 qdisc fq_codel state UNKNOWN group default qlen 100
     inet 10.8.0.1/24 brd 10.8.0.255 scope global tun0
Подсеть по умолчанию для этого интерфейса – 10.8.0.0/24.
Серверу будет назначен IP-адрес 10.8.0.1:

Шаг 3. Создание профиля пользователя OpenVPN (файл .ovpn)

После выполнения шагов с 1 по 3 ваш VPN-сервер готов к использованию. Н
ам необходимо создать профили VPN, которые будут использоваться пользователями.
Для этого будет использован тот же скрипт, который мы использовали для установки.

Он управляет созданием и отзывом пользовательских профилей.

Запустите скрипт и выберите 1, чтобы добавить нового пользователя.

$ sudo ./openvpn-install.sh

Looks like OpenVPN is already installed.
 What do you want to do?
    1) Add a new user
    2) Revoke an existing user
    3) Remove OpenVPN
    4) Exit
 Select an option [1-4]: 1
 Tell me a name for the client certificate.
 Please, use one word only, no special characters.
 Client name: user1
 Using SSL: openssl OpenSSL 1.1.1 FIPS  11 Sep 2018
 Can't load /etc/openvpn/easy-rsa/pki/.rnd into RNG
 139966006863680:error:2406F079:random number generator:RAND_load_file:Cannot open file:crypto/rand/randfile.c:90:Filename=/etc/openvpn/easy-rsa/pki/.rnd
 Generating a RSA private key
 ……………………………………………………………………..+++++
 ……………………………………….+++++
 writing new private key to '/etc/openvpn/easy-rsa/pki/private/user1.key.SeCj8ncgaH'
 Using configuration from /etc/openvpn/easy-rsa/pki/safessl-easyrsa.cnf
 Can't load /etc/openvpn/easy-rsa/pki/.rnd into RNG
 139828629223232:error:2406F079:random number generator:RAND_load_file:Cannot open file:crypto/rand/randfile.c:90:Filename=/etc/openvpn/easy-rsa/pki/.rnd
 Check that the request matches the signature
 Signature ok
 The Subject's Distinguished Name is as follows
 commonName            :ASN.1 12:'user1'
 Certificate is to be certified until Mar 17 16:48:32 2029 GMT (3650 days)
 Write out database with 1 new entries
 Data Base Updated
 Client user1 added, configuration is available at: /root/user1.ovpn
Файл профиля .ovpn OpenVPN находится внутри папки /root.
$ sudo ls /root/ | grep ovpn
computingforgeeks.ovpn
user1.ovpn

Отзыв профиля OpenVPN

Чтобы отозвать профиль пользователя, запустите скрипт и выберите 2.

$ sudo ./openvpn-install.sh
Looks like OpenVPN is already installed.
 What do you want to do?
    1) Add a new user
    2) Revoke an existing user
    3) Remove OpenVPN
    4) Exit
 Select an option [1-4]: 2
 Select the existing client certificate you want to revoke:
      1) computingforgeeks
      2) user1
 Select one client [1-2]: 2
 Do you really want to revoke access for client user1? [y/N]: y
 Using configuration from /etc/openvpn/easy-rsa/pki/safessl-easyrsa.cnf
 Can't load /etc/openvpn/easy-rsa/pki/.rnd into RNG
 140410149218112:error:2406F079:random number generator:RAND_load_file:Cannot open file:crypto/rand/randfile.c:90:Filename=/etc/openvpn/easy-rsa/pki/.rnd
 Revoking Certificate FAC5CC0C127D1242CC55BD31B7FB27D3.
 Data Base Updated
 Using SSL: openssl OpenSSL 1.1.1 FIPS  11 Sep 2018
 Using configuration from /etc/openvpn/easy-rsa/pki/safessl-easyrsa.cnf
 Can't load /etc/openvpn/easy-rsa/pki/.rnd into RNG
 139874879330112:error:2406F079:random number generator:RAND_load_file:Cannot open file:crypto/rand/randfile.c:90:Filename=/etc/openvpn/easy-rsa/pki/.rnd
 An updated CRL has been created.
 CRL file: /etc/openvpn/easy-rsa/pki/crl.pem
 Certificate for client user1 revoked!

Удаление сервера OpenVPN на RHEL / CentOS 8

Если вам больше не нужен сервер OpenVPN, удаление может быть выполнено с использованием того же сценария установки.

$ sudo ./openvpn-install.sh
Looks like OpenVPN is already installed.
 What do you want to do?
    1) Add a new user
    2) Revoke an existing user
    3) Remove OpenVPN
    4) Exit
 Select an option [1-4]: 3
 Do you really want to remove OpenVPN? [y/N]: y
 788
 success
 success
 success
 success
 success
 success
 Updating Subscription Management repositories.
 Updating Subscription Management repositories.
 Dependencies resolved.
....
Complete!
OpenVPN removed!

Шаг 4: Подключитесь к OpenVPN Server с клиента

Вы можете использовать любой VPN-клиент по вашему выбору для настройки клиента OpenVPN в вашей операционной системе.

Для тех, кто хочет использовать официальный клиент OpenVPN, перейдите на страницу скачивания и скачайте последний выпуск, а затем установите его.

После установки в Windows перейдите в каталог с профилем ovpn, щелкните правой кнопкой мыши имя файла и выберите «Запустить OpenVPN с этим файлом конфигурации».

Для пользователей Linux вы можете использовать NetworkManager и плагин openvpn для подключения к серверу OpenVPN.

Добавить комментарий

  1. 3646

    Вы хотите заменить анонимный доступ к ftp серверу на доступ по имени созданного в Linux Server пользователя ftpuser так, чтобы ftpuser успешно проходил аутентификацию, какой бы пароль ни ввел.
    Что можно использовать для достижения этой цели?
    • TCP Wrapper
    • Tripwire
    • Bastille
    • PAM
    • SAM

    Ответить
    1. cryptoparty автор

      PAM!

      Ответить