Как настроить сервер OpenVPN в CentOS 7

Как настроить сервер OpenVPN в CentOS 7

How To Set Up an OpenVPN Server on CentOS 7

21 Декабря 2019 | CentOS

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

Как настроить сервер OpenVPN в CentOS 7

Использование VPN может стать отличным решением, если вы хотите получить безопасный доступ к интернету при подключении к ненадежной общедоступной сети Wi-Fi, либо обойти региональные ограничения контента или разрешить коллегам безопасно подключаться к сети вашей компании при удаленной работе.

VPN позволяет подключаться к удаленным VPN-серверам, делая соединение зашифрованным и безопасным, и анонимно просматривать веб-страницы, сохраняя конфиденциальность данных трафика.

Среди огромного многообразия коммерческих VPN провайдеров сложно найти такой, который не будет следить за вашей активностью. Самый безопасный и выгодный вариант - настроить свой собственный VPN-сервер.

OpenVPN - это полнофункциональное VPN-решение Secure Socket Layer (SSL) с открытым исходным кодом. Он реализует расширение сети OSI уровня 2 или 3 с использованием протокола SSL / TLS.

Чтобы настроить свой VPN вам понадобится:

  • Доступ в Sudo к серверу CentOS 7 для размещения вашего личного OpenVPN.
  • Правильно настроенный брандмауэр на сервере.
  • Отдельный компьютер, который будет служить вашим центром сертификации. Если вы не хотите использовать этот компьютер для своего ЦС, можно создать ЦС на своем сервере OpenVPN или на своем локальном компьютере. Когда вы закончите создание CA, рекомендуется переместить каталог CA в безопасное место или в автономный режим.

В этом руководстве предполагается, что ЦС находится на отдельной машине Linux. Те же шаги (с небольшими изменениями) будут применяться, если вы используете свой сервер в качестве центра сертификации.

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

При настройке нового сервера OpenVPN первым шагом является создание инфраструктуры открытого ключа ( PKI ). Для этого нам нужно создать следующее:

  • Сертификат центра сертификации (CA) и закрытый ключ.
  • Отдельный сертификат и пара секретных ключей для сервера, выпущенного нашим ЦС.
  • Отдельный сертификат и пара секретных ключей для каждого клиента, выданного нашим ЦС.

Как уже упоминалось в предварительных условиях по соображениям безопасности, мы создадим ЦС на автономной машине.

Для создания CA, запросов на сертификаты и подписи сертификатов мы будем использовать утилиту CLI с именем EasyRSA.

Выполните следующие действия на вашем CA машине:

  1. Начните с загрузки последней версии EasyRSA из репозитория проекта Github с помощью следующей команды wget :

    cd && wget https://github.com/OpenVPN/easy-rsa/releases/download/v3.0.5/EasyRSA-nix-3.0.5.tgz
    
  2. После завершения загрузки распакуйте архив, набрав:

    tar xzf EasyRSA-nix-3.0.5.tgz
    
  3. Перейдите в каталог EasyRSA и создайте файл конфигурации с именем vars, скопировав этот vars.example файл:

    cd ~/EasyRSA-3.0.5/
    cp vars.example vars
    
  4. Откройте файл, раскомментируйте и обновите следующие записи, чтобы они соответствовали вашей информации.

    nano ~/EasyRSA-3.0.5/vars
    
    ~ / EasyRSA-3.0.5 / вары
    set_var EASYRSA_REQ_COUNTRY    "US"
    set_var EASYRSA_REQ_PROVINCE   "Pennsylvania"
    set_var EASYRSA_REQ_CITY       "Pittsburgh"
    set_var EASYRSA_REQ_ORG        "Linuxize"
    set_var EASYRSA_REQ_EMAIL      "admin@linuxize.com"
    set_var EASYRSA_REQ_OU         "Community"

    Сохраните и закройте файл.

  5. Перед созданием пары ключей CA сначала нам нужно инициализировать новую PKI с помощью:

    ./easyrsa init-pki
    
    init-pki complete; you may now create a CA or requests.
    Your newly created PKI dir is: /home/causer/EasyRSA-3.0.5/pki
  6. Следующим шагом является создание CA:

    ./easyrsa build-ca
    

    Если вы не хотите постоянно вводить пароль при подписи своих сертификатов, выполните build-ca команду с помощью nopass опции: ./easyrsa build-ca nopass.

    ...
    Enter PEM pass phrase:
    Verifying - Enter PEM pass phrase:
    -----
    ...
    -----
    Common Name (eg: your user, host, or server name) [Easy-RSA CA]:
    
    CA creation complete and you may now import and sign cert requests.
    Your new CA certificate file for publishing is at:
    /home/causer/EasyRSA-3.0.5/pki/ca.crt

    Вам будет предложено установить пароль для ключа CA и ввести общее имя для вашего CA.

    После завершения сценарий создаст два файла - открытый сертификат ca.crtCA и закрытый ключ CAca.key .

    Теперь, когда центр сертификации (ЦС) создан, вы можете использовать его для подписания запросов на сертификат для одного или нескольких серверов и клиентов OpenVPN.

Следующим шагом будет установка пакета OpenVPN, который доступен в репозиториях EPEL, и загрузка последней версии EasyRSA.

Следующие шаги выполняются на сервере OpenVPN .

  1. Включите репозиторий EPEL, набрав:

    sudo yum install epel-release
    
  2. Когда репозиторий включен, установите OpenVPN с помощью следующей команды:

    sudo yum install openvpn
    
  3. Загрузите последнюю версию EasyRSA:

    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
    

    Хотя мы уже инициализировали PKI на компьютере CA, нам также нужно создать новую PKI на сервере OpenVPN. Для этого используйте те же команды, что и раньше:

    cd ~/EasyRSA-3.0.5/
    ./easyrsa init-pki
    

    Если вы все еще задаетесь вопросом, зачем нам нужны две установки EasyRSA, это потому, что мы будем использовать этот экземпляр EasyRSA для создания запросов на сертификат, которые будут подписаны с использованием экземпляра EasyRSA на компьютере CA.

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

В этом разделе мы создадим надежный ключ Diffie–Hellman (DH), который будет использоваться во время обмена ключами, и файл подписи HMAC, чтобы добавить дополнительный уровень безопасности для соединения.

  1. Перейдите в каталог EasyRSA на сервере OpenVPN и сгенерируйте ключ Diffie–Hellman  :.

    cd ~/EasyRSA-3.0.5/
    ./easyrsa gen-dh
    

    Скрипт генерирует 2048-битные параметры DH. Это может занять некоторое время, особенно на серверах с ограниченными ресурсами. После завершения на экране появиться сообщение:

    DH parameters of size 2048 created at /home/serveruser/EasyRSA-3.0.5/pki/dh.pem

    Скопируйте в dh.pemфайл в /etc/openvpnкаталоге:

    sudo cp ~/EasyRSA-3.0.5/pki/dh.pem /etc/openvpn/
    
  2. Затем сгенерируйте подпись HMAC, используя openvpnдвоичный файл:

    openvpn --genkey --secret ta.key
    

    После завершения скопируйте ta.keyфайл в /etc/openvpnкаталог:

    sudo cp ~/EasyRSA-3.0.5/ta.key /etc/openvpn/
    

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

  • Перейдите в каталог EasyRSA на сервере OpenVPN и создайте новый закрытый ключ для сервера и файл запроса сертификата:

    cd ~/EasyRSA-3.0.5/
    ./easyrsa gen-req server1 nopass
    

    Мы используем nopassаргумент, потому что мы хотим запустить сервер OpenVPN без ввода пароля. Также в этом примере мы используемserver1 в качестве идентификатора имени (сущности) сервера. Если вы выбираете другое имя для своего сервера, не забудьте отрегулировать нижеприведенные инструкции, где используется имя сервера.

    Команда создаст два файла: закрытый ключ ( server1.key) и файл запроса сертификата ( server1.req).

    -----
    Common Name (eg: your user, host, or server name) [server1]:
    
    Keypair and certificate request completed. Your files are:
    req: /home/serveruser/EasyRSA-3.0.5/pki/reqs/server1.req
    key: /home/serveruser/EasyRSA-3.0.5/pki/private/server1.key

  • Скопируйте закрытый ключ в /etc/openvpnкаталог:

    sudo cp ~/EasyRSA-3.0.5/pki/private/server1.key /etc/openvpn/
    

  • Перенесите файл запроса сертификата на компьютер CA.

    scp ~/EasyRSA-3.0.5/pki/reqs/server1.req causer@your_ca_ip:/tmp
    

    В этом примере, который мы используем scp для передачи файла, вы также можете использовать rsync ssh или любой другой безопасный метод.


  • Войдите в свой компьютер CA , перейдите в каталог EasyRSA и импортируйте файл запроса сертификата:

    cd ~/EasyRSA-3.0.5
    ./easyrsa import-req /tmp/server1.req server1
    

    Первый аргумент - это путь к файлу запроса сертификата, а второй - короткое имя (сущности) сервера. В нашем случае имя сервера есть server1.

    The request has been successfully imported with a short name of: server1
    You may now use this name to perform signing operations on this request.

    Эта команда просто копирует файл запроса в pki/reqs каталог.


  • Находясь в каталоге EasyRSA на компьютере CA, выполните следующую команду, чтобы подписать запрос:

    cd ~/EasyRSA-3.0.5
    ./easyrsa sign-req server server1
    

    Первый аргумент может быть либо, server либо clientвторым - это короткое имя (сущность) сервера.

    Вам будет предложено подтвердить, что запрос поступил из надежного источника. Введите yesи нажмите Enterдля подтверждения:

    You are about to sign the following certificate.
    Please check over the details shown below for accuracy. Note that this request
    has not been cryptographically verified. Please be sure it came from a trusted
    source or that you have verified the request checksum with the sender.
    
    Request subject, to be signed as a server certificate for 1080 days:
    
    subject=
        commonName                = server1
    
    
    Type the word 'yes' to continue, or any other input to abort.
    Confirm request details: yes
    ...

    Если ваш ключ CA защищен паролем, вам будет предложено ввести пароль. После проверки скрипт сгенерирует сертификат SSL и напечатает полный путь к нему.

    ...
    Certificate is to be certified until Sep 17 10:54:48 2021 GMT (1080 days)
    
    Write out database with 1 new entries
    Data Base Updated
    
    Certificate created at: /home/causer/EasyRSA-3.0.5/pki/issued/server1.crt

  • Следующим шагом является передача подписанного сертификата server1.crtи ca.crtфайлов обратно на ваш сервер OpenVPN. Опять же вы можете использовать scp, rsyncили любой другой безопасный метод:

    scp ~/EasyRSA-3.0.5/pki/issued/server1.crt serveruser@your_server_ip:/tmp
    scp ~/EasyRSA-3.0.5/pki/ca.crt serveruser@your_server_ip:/tmp
    

  • Вход на ваш сервер OpenVPN , и переместить server1.crtи ca.crtфайлы в /etc/openvpn/каталоге:

    sudo mv /tmp/{server1,ca}.crt /etc/openvpn/
    


После выполнения действий, описанных в этом разделе, на вашем сервере OpenVPN должны появиться следующие новые файлы :

  • /etc/openvpn/ca.crt
  • /etc/openvpn/dh.pem
  • /etc/openvpn/ta.key
  • /etc/openvpn/server1.crt
  • /etc/openvpn/server1.key

Теперь, когда у вас есть сертификат сервера, подписанный вашим ЦС и переданный на ваш сервер OpenVPN , пришло время настроить службу OpenVPN.

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

Начните с распаковки файла конфигурации в /etc/openvpn/каталог:


sudo cp /usr/share/doc/openvpn-*/sample/sample-config-files/server.conf /etc/openvpn/server1.conf


Откройте файл в вашем любимом текстовом редакторе:


sudo nano /etc/openvpn/server1.conf

  • Найдите директивы Certificate, Key и DH и измените имена файлов:

    /etc/openvpn/server1.conf
    cert server1.crt
    key server1.key 
    
    dh dh.pem
  • Чтобы перенаправить трафик клиентов через VPN, найдите и раскомментируйте параметры redirect-gateway и dhcp-option:

    /etc/openvpn/server1.conf
    push "redirect-gateway def1 bypass-dhcp"
    
    push "dhcp-option DNS 208.67.222.222"
    push "dhcp-option DNS 208.67.220.220"

    По умолчанию используются распознаватели OpenDNS. Вы можете изменить его и использовать CloudFlare, Google или любые другие средства разрешения DNS, которые вы хотите.


  • Найдите userи groupдирективы и раскомментировать эти настройки путем удаления « ;» в начале каждой строки:

    /etc/openvpn/server1.conf
    user nobody
    group nogroup

  • Добавьте следующую строку в конец файла. Эта директива изменит алгоритм аутентификации сообщений (HMAC) с SHA1 на SHA256

    /etc/openvpn/server1.conf
    auth SHA256


Как только вы закончите, файл конфигурации сервера (исключая комментарии) должен выглядеть примерно так:

/etc/openvpn/server1.conf
port 1194
proto udp
dev tun
ca ca.crt
cert server1.crt
key server1.key  # This file should be kept secret
dh dh.pem
server 10.8.0.0 255.255.255.0
ifconfig-pool-persist ipp.txt
push "redirect-gateway def1 bypass-dhcp"
push "dhcp-option DNS 208.67.222.222"
push "dhcp-option DNS 208.67.220.220"
keepalive 10 120
tls-auth ta.key 0 # This file is secret
cipher AES-256-CBC
user nobody
group nobody
persist-key
persist-tun
status openvpn-status.log
verb 3
explicit-exit-notify 1
auth SHA256

В этом уроке мы использовали server1.conf файл конфигурации. Чтобы запустить службу OpenVPN с этой конфигурацией, нам нужно указать имя файла конфигурации после имени файла системного модуля:

На вашем сервере OpenVPN выполните следующую команду, чтобы запустить службу OpenVPN:


sudo systemctl start openvpn@server1


Проверьте, успешно ли запущен сервис, набрав:


sudo systemctl status openvpn@server1


Если служба активна и работает, вывод будет выглядеть примерно так:


● openvpn@server1.service - OpenVPN Robust And Highly Flexible Tunneling Application On server1
   Loaded: loaded (/usr/lib/systemd/system/openvpn@.service; disabled; vendor preset: disabled)
   Active: active (running) since Tue 2018-11-06 10:07:35 UTC; 7s ago
 Main PID: 19912 (openvpn)
   Status: "Initialization Sequence Completed"
   CGroup: /system.slice/system-openvpn.slice/openvpn@server1.service
           └─19912 /usr/sbin/openvpn --cd /etc/openvpn/ --config server1.conf


Включите службу для автоматического запуска при загрузке с:


sudo systemctl enable openvpn@server1
Created symlink /etc/systemd/system/multi-user.target.wants/openvpn@server1.service → /lib/systemd/system/openvpn@.service.

Если служба OpenVPN не запускается, проверьте журналы с sudo journalctl -u openvpn@server1

При запуске сервер OpenVPN создает устройство настройки tun0. Чтобы проверить, доступно ли устройство, введите следующую команду ip :


ip a show tun0


Вывод должен выглядеть примерно так:


4: tun0: <POINTOPOINT,MULTICAST,NOARP,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UNKNOWN group default qlen 100
    link/none 
    inet 10.8.0.1 peer 10.8.0.2/32 scope global tun0
       valid_lft forever preferred_lft forever
    inet6 fe80::f421:f382:3158:138f/64 scope link flags 800 
       valid_lft forever preferred_lft forever


На этом этапе ваш сервер OpenVPN настроен и работает правильно.

Для правильной пересылки сетевых пакетов нам необходимо включить пересылку IP.

Следующие шаги выполняются на сервере OpenVPN .

Откройте /etc/sysctl.confфайл и добавьте следующую строку:


sudo nano /etc/sysctl.conf
/etc/sysctl.conf
net.ipv4.ip_forward = 1

Как только вы закончите, сохраните и закройте файл.

Примените новые настройки, выполнив следующую команду:


sudo sysctl -p
net.ipv4.ip_forward = 1


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

Теперь нам нужно добавить правила брандмауэра, открыть порт OpenVPN и включить маскировку.

Начнем с добавления tun0 интерфейса в trusted зону:


sudo firewall-cmd --permanent --zone=trusted --add-interface=tun0


Откройте порт openvpn 1194 по умолчанию , добавив службу openvpn в список служб, разрешенных firewalld:


sudo firewall-cmd --permanent --add-service openvpn


Установите IP-маскарадинг в trusted зоне:


sudo firewall-cmd --permanent --zone=trusted --add-masquerade


Перед добавлением правила nat вам необходимо знать общедоступный сетевой интерфейс вашего сервера CentOS OpenVPN. Вы можете легко найти интерфейс, выполнив следующую команду:


ip -o -4 route show to default | awk '{print $5}'


В нашем случае интерфейс назван так, eth0 как показано на выходе ниже. Ваш интерфейс может иметь другое имя.


eth0


Следующая команда позволит трафику покинуть VPN, предоставляя вашим VPN-клиентам доступ в Интернет. Не забудьте заменить eth0 в соответствии с именем общедоступного сетевого интерфейса, который вы нашли в предыдущей команде.


sudo firewall-cmd --permanent --direct --passthrough ipv4 -t nat -A POSTROUTING -s  10.8.0.0/24 -o eth0 -j MASQUERADE


Наконец, перезагрузите правила брандмауэра, чтобы изменения вступили в силу:


sudo firewall-cmd --reload

В этом руководстве мы создадим отдельный сертификат SSL и создадим отдельный файл конфигурации для каждого VPN-клиента.

Закрытый ключ клиента и запрос сертификата могут быть сгенерированы либо на клиентском компьютере, либо на сервере. Для простоты мы сгенерируем запрос сертификата на сервере и затем отправим его в ЦС для подписи.

Весь процесс создания сертификата клиента и файла конфигурации выглядит следующим образом:

  1. Сгенерируйте закрытый ключ и запрос сертификата на сервере OpenVPN.
  2. Отправьте запрос на компьютер CA для подписи.
  3. Скопируйте подписанный сертификат SSL на сервер OpenVPN и создайте файл конфигурации.
  4. Отправьте файл конфигурации на компьютер VPN-клиента.

Начнем с создания набора каталогов для хранения файлов клиентов:

mkdir -p ~/openvpn-clients/{configs,base,files}
  • base В директории будут храниться базовые файлы и настройки, которые будут доступны всем клиентским файлам.
  • configs каталог будет хранить сгенерированную конфигурацию клиента.
  • files В каталоге будет храниться клиентская пара сертификат / ключ.

Скопируйте в ca.crtи ta.keyфайлы в ~/openvpn-clients/baseкаталоге:

cp ~/EasyRSA-3.0.5/ta.key ~/openvpn-clients/base/
cp /etc/openvpn/ca.crt ~/openvpn-clients/base/

Затем скопируйте образец файла конфигурации клиента VPN в ~/openvpn-clients/base каталог client . Мы будем использовать этот файл в качестве базовой конфигурации:

sudo cp /usr/share/doc/openvpn-*/sample/sample-config-files/client.conf ~/openvpn-clients/base/

Теперь нам нужно отредактировать файл в соответствии с настройками и конфигурацией нашего сервера. Откройте файл конфигурации в вашем текстовом редакторе:

nano ~/openvpn-clients/base/client.conf
  • Найдите директиву remote и замените по умолчанию на общедоступный IP-адрес вашего сервера OpenVPN:

    ~ / OpenVPN-клиент / база / client.conf
    # The hostname/IP and port of the server.
    # You can have multiple remote entries
    # to load balance between the servers.
    remote YOUR_SERVER_IP 1194


  • Найдите и комментарий ca, cert и key директивы. Сертификаты и ключи будут добавлены в файл конфигурации:

    ~ / OpenVPN-клиент / база / client.conf
    # SSL/TLS parms.
    # See the server config file for more
    # description.  It's best to use
    # a separate .crt/.key file pair
    # for each client.  A single ca
    # file can be used for all clients.
    # ca ca.crt
    # cert client.crt
    # key client.key


  • Добавьте следующие строки в конец файла, чтобы соответствовать настройкам сервера:

    ~ / OpenVPN-клиент / база / client.conf
    auth SHA256
    key-direction 1


Как только вы закончите, файл конфигурации сервера должен выглядеть примерно так:

~ / OpenVPN-клиент / база / client.conf
client
dev tun
proto udp
remote YOUR_SERVER_IP 1194
resolv-retry infinite
nobind
persist-key
persist-tun
remote-cert-tls server
cipher AES-256-CBC
verb 3
auth SHA256
key-direction 1


Затем создайте простой сценарий bash, который объединит базовую конфигурацию и файлы с сертификатом и ключом клиента и сохранит сгенерированную конфигурацию в ~/openvpn-clients/configsкаталоге.

Откройте ваш текстовый редактор и создайте следующий скрипт:


nano ~/openvpn-clients/gen_config.sh
~ / OpenVPN-клиенты / 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:


chmod u+x ~/openvpn-clients/gen_config.sh

Процесс генерации личного ключа клиента и запроса сертификата такой же, как и при создании ключа сервера и запроса сертификата.

Как мы уже упоминали в предыдущем разделе, мы сгенерируем закрытый ключ клиента и запрос сертификата на сервере OpenVPN. В этом примере имя первого VPN-клиента будет client1.


  • Перейдите в каталог EasyRSA на сервере OpenVPN и сгенерируйте новый закрытый ключ и файл запроса сертификата для клиента:

    cd ~/EasyRSA-3.0.5/
    ./easyrsa gen-req client1 nopass
    

    Команда создаст два файла: закрытый ключ ( client1.key) и файл запроса сертификата ( client1.req).

    Common Name (eg: your user, host, or server name) [client1]:
    
    Keypair and certificate request completed. Your files are:
    req: /home/serveruser/EasyRSA-3.0.5/pki/reqs/client1.req
    key: /home/serveruser/EasyRSA-3.0.5/pki/private/client1.key

  • Скопируйте закрытый ключ client1.key в ~/openvpn-clients/files каталог, который вы создали в предыдущем разделе:

    cp ~/EasyRSA-3.0.5/pki/private/client1.key ~/openvpn-clients/files/
    

  • Перенесите файл запроса сертификата на компьютер CA.

    scp ~/EasyRSA-3.0.5/pki/reqs/client1.req causer@your_ca_ip:/tmp
    

    В этом примере, который мы используем scp для передачи файла, вы также можете использовать rsync ssh или любой другой безопасный метод.


  • Войдите в свой компьютер CA , перейдите в каталог EasyRSA и импортируйте файл запроса сертификата:

    cd ~/EasyRSA-3.0.5
    ./easyrsa import-req /tmp/client1.req client1
    

    Первый аргумент - это путь к файлу запроса сертификата, а второй - имя клиента.

    The request has been successfully imported with a short name of: client1
    You may now use this name to perform signing operations on this request.

  • В каталоге EasyRSA на компьютере CA выполните следующую команду, чтобы подписать запрос:

    cd ~/EasyRSA-3.0.5
    ./easyrsa sign-req client client1
    

    Вам будет предложено подтвердить, что запрос поступил из надежного источника. Введите yesи нажмите Enterдля подтверждения:

    Если ваш ключ CA защищен паролем, вам будет предложено ввести пароль. После проверки скрипт сгенерирует сертификат SSL и напечатает полный путь к нему.

    ...
    Certificate created at: /home/causer/EasyRSA-3.0.5/pki/issued/client1.crt

  • Затем перенесите client1.crtфайл подписанного сертификата обратно на сервер OpenVPN. Вы можете использовать scp, rsync или любой другой безопасный метод:

    scp ~/EasyRSA-3.0.5/pki/issued/client1.crt serveruser@your_server_ip:/tmp
    

  • Войдите на сервер OpenVPN и переместите client1.crt файл в ~/openvpn-clients/files каталог:

    mv /tmp/client1.crt ~/openvpn-clients/files
    

  • Последний шаг - создание клиентской конфигурации с использованием gen_config.sh скрипта. Перейдите в ~/openvpn-clients каталог и запустите скрипт, используя имя клиента в качестве аргумента:

    cd ~/openvpn-clients
    ./gen_config.sh client1
    

    Скрипт создаст файл с именем client1.ovpnв ~/client-configs/configsкаталоге. Вы можете проверить, перечислив каталог:

    ls ~/openvpn-clients/configs
    
    client1.ovpn


На этом этапе конфигурация клиента создана. Теперь вы можете перенести файл конфигурации на устройство, которое вы собираетесь использовать в качестве клиента.

Например, чтобы перенести файл конфигурации на локальный компьютер вместе с scpвами, выполните следующую команду:

scp ~/client-configs/files/client1.ovpn your_local_ip:/

Чтобы добавить дополнительных клиентов, просто повторите те же шаги.

Ваша дистрибутивная или настольная среда может предоставлять инструмент или графический пользовательский интерфейс для подключения к серверам OpenVPN. В этом уроке мы покажем вам, как подключиться к серверу с помощью openvpnинструмента.

  • Установите OpenVPN в Ubuntu и Debian

    sudo apt update
    sudo apt install openvpn
    
  • Установите OpenVPN на CentOS и Fedora

    sudo yum install epel-release
    sudo yum install openvpn
    

После установки пакета для подключения к VPN-серверу используйте openvpn команду и укажите файл конфигурации клиента:

sudo openvpn --config client1.ovpn

Tunnelblick - это бесплатный графический пользовательский интерфейс с открытым исходным кодом для OpenVPN в OS X и macOS.

Загрузите и установите последнюю версию приложения OpenVPN на странице загрузок OpenVPN .

Скопируйте .ovpnфайл в папку конфигурации OpenVPN ( \Users\<Name>\OpenVPN\Config или \Program Files\OpenVPN\config).

Запустите приложение OpenVPN.

Щелкните правой кнопкой мыши значок в системном трее OpenVPN, и имя скопированного вами файла конфигурации OpenVPN будет указано в меню. Нажмите Подключиться.

Приложение VPN, разработанное OpenVPN, доступно как для Android, так и для iOS. Установите приложение и импортируйте .ovp файл клиента .

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

Чтобы отозвать сертификат клиента, выполните следующие действия:

  1. Войдите в свой компьютер CA и перейдите в каталог EasyRSA:

    cd EasyRSA-3.0.5
    
  2. Запустите скрипт easyrsa, используя revoke аргумент и имя клиента, которого вы хотите отозвать:

    ./easyrsa revoke client1
    

    Вам будет предложено подтвердить, что вы хотите отозвать сертификат. Введите yes и нажмите enter для подтверждения:

    Please confirm you wish to revoke the certificate with the following subject:
    
    subject=
        commonName                = client1
    
    Type the word 'yes' to continue, or any other input to abort.
    Continue with revocation: yes
    ...

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

    ...
    Revocation was successful. You must run gen-crl and upload a CRL to your
    infrastructure in order to prevent the revoked cert from being accepted.
  3. Используйте gen-crl опцию для генерации списка отзыва сертификатов (CRL):

    ./easyrsa gen-crl
    
    An updated CRL has been created.
    CRL file: /home/causer/EasyRSA-3.0.5/pki/crl.pem
  4. Загрузите файл CRL на сервер OpenVPN:

    scp ~/EasyRSA-3.0.5/pki/crl.pem serveruser@your_server_ip:/tmp
    
  5. Войдите на сервер OpenVPN и переместите файл в /etc/openvpn каталог:

    sudo mv /tmp/crl.pem /etc/openvpn
    
  6. Откройте файл конфигурации сервера OpenVPN:

    sudo nano /etc/openvpn/server1.conf
    

    Вставьте следующую строку в конец файла

    /etc/openvpn/server1.conf
    crl-verify crl.pem

    Сохраните и закройте файл.

  7. Перезапустите службу OpenVPN, чтобы директива отзыва вступила в силу:

    sudo systemctl restart openvpn@server1
    

    На этом этапе клиент больше не должен иметь доступ к серверу OpenVPN, используя отозванный сертификат.

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

Из этого руководства вы узнали, как установить и настроить сервер OpenVPN на компьютере CentOS 7.


    Комментарии

    Если у вас есть вопросы, не стесняйтесь оставлять комментарии ниже.

Загрузка комментариев...