Экспресс установка openvpn на ubuntu 22.04

Настройка и использование openvpn на ubuntu

Настройка OpenVPN сервера для второго примера

Подключаемся к нашему серверу, входим под рутом и скачиваем openvpn:

aptitude install openvpn openssl

После установки копируем скрипты в папку программы:

cp -r /usr/share/easy-rsa /etc/openvpn/

Далее переходим в папку /etc/openvpn/easy-rsa и открываем файл vars текстовым редактором. Здесь нас интересуют следующие опции:

export KEY_SIZE=1024

export KEY_COUNTRY="RU"

export KEY_PROVINCE="CA"

export KEY_CITY="Moscow"

export KEY_ORG="barnak VPN"

export KEY_EMAIL="test"

export KEY_OU="test"

Соответственно что делать с этими полями вы уже знаете :)

export KEY_SIZE=1024 — длина ключа. Можно указать 2048, но особого смысла в этом не будет, только VPN медленнее станет работать.

Теперь эти переменные надо инициировать:

source ./vars

Мы получим предупреждение, что при запуске скрипта clean-all оно удалит все содержимое папки с ключами (а это папка с программой). Но нам ничего чистить не нужно, так что не обращаем внимания.

Теперь создаем сертификат УЦ:

./build-ca

После этого ключи DH:

./build-dh

Сертификат и ключи сервера:

./build-key-server debian-srv

И клиента:

./build-key client

Теперь создаем файл конфигурации сервера:

vim.tiny /etc/openvpn/server.conf

Добавляем туда следующее:

port 1194

proto tcp

dev tun

ca ca.crt

cert debian-srv.crt

key debian-srv.key

dh dh1024.pem

server 10.10.20.0 255.255.255.0

keepalive 10 120

cipher AES-128-CBC # AES

comp-lzo

max-clients 10

persist-key

persist-tun

client-to-client

status openvpn-status.log

log /var/log/openvpn.log

verb 4

mute 20

sndbuf 0

rcvbuf 0

push "route 10.10.20.0 255.255.255.0"

push "redirect-gateway def1"

Из новых настроек здесь следующие:

  • persist-key, — позволяет избежать некоторых проблем с доступностью при понижении прав (только для Linux);
  • persist-tun, — аналогично;
  • client-to-client, — позволяет клиентам видеть друг друга. Без этой опции клиенты смогут видеть только сервер и его ресурсы, но не других клиентов (аналог AP Isolation);
  • log /var/log/openvpn.log, — где будет храниться журнал событий openvpn;
  • push «redirect-gateway def1», — добавляет клиентам маршрут к VPN серверу, чтобы весь трафик ходил через него.

Теперь, чтобы мы все-таки могли открывать сайты, будучи подключенным к VPN, надо на сервере прописать правило NAT:

iptables -t nat -A POSTROUTING -s 10.10.20.0/24 -o eth0 -j MASQUERADE

Где 10.10.20.0/24 — ваша виртуальная VPN подсеть.

Сохраняем правило NAT в файл:

iptables-save > /etc/network/iptables.conf

Теперь открываем текстовым редактором настройки сетевых интерфейсов:

vim.tiny /etc/network/interfaces

И добавляем к интерфейсу eth0 (или какой вы используете) строчку для автозагрузки правила:

post-up /sbin/iptables-restore < /etc/network/iptables.conf

Вот как это выглядит у меня:

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

И последний штрих. нужно включить IP Forwarding. Без этого скорее всего ваш NAT не заработает. Открываем текстовым редактором файл  /etc/sysctl.conf, находим строчку net.ipv4.ip_forward=1, раскомментируем ее (либо выставляем 1) и применяем командой:

sysctl -p

Теперь можно запускать OpenVPN. делается это довольно просто командой:

openvpn server.conf

Теперь сервер настроен и переходим к клиенту.

Файлы конфигурации сервера OpenVPN

Как видите, пользоваться OpenVPN для личного веб-сёрфинга просто и удобно. Однако на этом его преимущества не заканчиваются. При желании вы можете настроить соединение, используя файлы конфигурации OpenVPN — прописать маршруты, прокси-серверы для отдельных портов и так далее.

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

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

port — порт, на котором сервер OpenVPN будет слушать входящие подключения.

proto — протокол, который будет использоваться сервером (TCP или UDP).

dev — виртуальное устройство сетевого интерфейса, которое будет использоваться сервером, например TUN или TAP.

ca, cert и key — пути к сертификатам и ключам, которые сервер OpenVPN будет использовать для аутентификации клиентов и установки безопасного соединения.

dh — путь к файлу с параметрами протокола Диффи — Хеллмана, используемыми для обмена ключами и установки шифрования.

server — внутренний IP-адрес и диапазон подсетей, которые сервер будет присваивать клиентам.

push позволяет серверу отправлять настройки клиентам, например маршруты, DNS-серверы или другие параметры сети.

keepalive указывает интервал проверки активности подключения между сервером и клиентом.

cipher и auth определяют алгоритмы шифрования и аутентификации, которые будут использоваться сервером.

Включение перенаправления и IPTABLES

Создайте файл vpn_firewall.sh

vim /root/vpn_firewall.sh

B этот файл скопируйте следующее содержимое, отредактировав его под свои нужды

Обратите внимание на:

  • PRIVATE=10.8.0.0/24 – измените подсеть в соответствии с вашими настройками. Если делали по этой инструкции, то менять ничего не нужно.
  • имя интерфейса — eth0, у вас может быть другое значение, измените его на своё везде, где оно встречается
  • в строке iptables -A INPUT -p tcp —dport 22 -j ACCEPT мы открываем доступ к порту 22, чтобы могли подключиться по SSH, если у вас нестандартный порт, то обязательно отредактируйте его, поскольку может получиться так, что после применения этого файла вы не сможете подключиться к вашему серверу по сети, добавьте нужно количество строк с необходимыми вам портами
#!/bin/sh
 
echo 1 > /proc/sys/net/ipv4/ip_forward
 
# Пример настройки файервола для OpenVPN.
 
# Если нужно, сделайте соответствующие 
# изменения, сети вашего OpenVPN
PRIVATE=10.8.0.0/24
 
# Петлевой адрес
LOOP=127.0.0.1
 
# Удалить старые правила iptables
# и временно заблокировать весь трафик.
iptables -P OUTPUT DROP
iptables -P INPUT DROP
iptables -P FORWARD DROP
iptables -F
 
# Установление политик по умолчанию
iptables -P OUTPUT ACCEPT
iptables -P INPUT DROP
iptables -P FORWARD DROP
 
# Предотвращаем использование локальных адресов внешними пакетами
iptables -A INPUT -i eth0 -s $LOOP -j DROP
iptables -A FORWARD -i eth0 -s $LOOP -j DROP
iptables -A INPUT -i eth0 -d $LOOP -j DROP
iptables -A FORWARD -i eth0 -d $LOOP -j DROP
 
# Всё, что приходит из Интернета, должно иметь реальный адрес
iptables -A FORWARD -i eth0 -s 192.168.0.0/16 -j DROP
iptables -A FORWARD -i eth0 -s 172.16.0.0/12 -j DROP
iptables -A FORWARD -i eth0 -s 10.8.0.0/8 -j DROP
iptables -A INPUT -i eth0 -s 192.168.0.0/16 -j DROP
iptables -A INPUT -i eth0 -s 172.16.0.0/12 -j DROP
iptables -A INPUT -i eth0 -s 10.8.0.0/8 -j DROP
 
# Блокируем исходящий NetBios (если в вашей подсети
# есть машины с Windows).  Это не окажет влияния на какой-либо
# трафик NetBios, который идёт по VPN туннелю, но остановит
# локальные машины Windows от самостоятельного 
# широковещания в Интернет.
iptables -A FORWARD -p tcp --sport 137:139 -o eth0 -j DROP
iptables -A FORWARD -p udp --sport 137:139 -o eth0 -j DROP
iptables -A OUTPUT -p tcp --sport 137:139 -o eth0 -j DROP
iptables -A OUTPUT -p udp --sport 137:139 -o eth0 -j DROP
 
# Разрешаем локальные петли
iptables -A INPUT -s $LOOP -j ACCEPT
iptables -A INPUT -d $LOOP -j ACCEPT
 
# Позволяем входящий пинг (можно отключить)
# iptables -A INPUT -p icmp --icmp-type echo-request -j ACCEPT
 
# Разрешаем такие службы как www и ssh (можно отключить)
iptables -A INPUT -p tcp --dport http -j ACCEPT
iptables -A INPUT -p tcp --dport 22 -j ACCEPT
iptables -A INPUT -p tcp --dport 80 -j ACCEPT
iptables -A INPUT -p tcp --dport 443 -j ACCEPT
 
# Разрешаем входящие пакеты OpenVPN 
# Дуплицируйте строку ниже для каждого
# туннеля OpenVPN, меняя --dport n
# для соответствия порту OpenVPN UDP.
#
# В OpenVPN номер порта
# контролируется опцией --port n.
# Если вы разместили эту опцию в конфигурационном 
# файле, вы можете удалить предшествующие '--'
#
# If you taking the stateful firewall
# approach (see the OpenVPN HOWTO),
# then comment out the line below.
 
iptables -A INPUT -p udp --dport 1194 -j ACCEPT
 
# Разрешить пакеты от устройств TUN/TAP.
# Когда OpenVPN запущен в безопасном режиме,
# он будет проверять подлинность пакетов до
# их прибытия на интерфейс 
# tun или tap.  Следовательно нет
# необходимости добавлять сюда какие-либо фильтры,
# если вы не хотите ограничить
# тип пакетов, которые могут проходить
# через туннель.
 
iptables -A INPUT -i tun+ -j ACCEPT
iptables -A FORWARD -i tun+ -j ACCEPT
iptables -A INPUT -i tap+ -j ACCEPT
iptables -A FORWARD -i tap+ -j ACCEPT
 
# Сохранить состояние подключений от локальной машины и частных сетей
iptables -A OUTPUT -m state --state NEW -o eth0 -j ACCEPT
iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A FORWARD -m state --state NEW -o eth0 -j ACCEPT
iptables -A FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT
 
# Маскировка локальной сети
iptables -t nat -A POSTROUTING -s $PRIVATE -o eth0 -j MASQUERADE

Проверить работу файла:

bash vpn_firewall.sh

ОБЯЗАТЕЛЬНО проверьте работу файла ДО добавления его в автозагрузку. Отключитесь и подключитесь по SSH чтобы убедиться, что всё действительно работает.

Настраиваем сервер и клиента

Настройка сервера

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

# nano /etc/openvpn/server.conf

local 192.168.166.155

port 443

proto udp

dev tun

ca keys/ca.crt

cert keys/server.crt

key keys/server.key

dh keys/dh2048.pem

tls-auth keys/ta.key 0

server 172.16.10.0 255.255.255.0

ifconfig-pool-persist ipp.txt

keepalive 10 120

max-clients 32

client-to-client

persist-key

persist-tun

status /var/log/openvpn/openvpn-status.log

log-append /var/log/openvpn/openvpn.log

# 0 is silent, except for fatal errors

# 4 is reasonable for general usage

# 5 and 6 can help to debug connection problems

# 9 is extremely verbose

verb 4

mute 20

daemon

mode server

tls-server

comp-lzo

* 192.168.166.155 — IP-адрес, на котором сервер будет устанавливать VPN-соединение. 172.16.10.0 255.255.255.0 — адресация для виртуальной сети. 32 — количество клиентов для одновременного подключения.

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

# mkdir /var/log/openvpn
# service openvpn start

Проверить работоспособность службы можно командой:

# service openvpn status

Настройка клиента

Запускаем скачанный файл и устанавливаем программу, нажимая «Далее».

Переходим в папку C:\Program Files\OpenVPN\config. И копируем в нее файлы ca.crt, client.crt, client.key, dh2048.pem, ta.key из каталога /etc/openvpn/keys на сервере.

** Самый простой способ скопировать файлы с сервера UNIX — воспользоваться программой WinSCP.

У вас, скорее всего, возникнет проблема при открытии папки keys — ошибка permission denied (не хватает прав). Для обхода этой проблемы на сервере Ubuntu скопируйте необходимые ключи во временную папку и предоставьте к ним полный доступ:

# mkdir /tmp/keys# cd /etc/openvpn/keys# cp ca.crt client.crt client.key dh2048.pem ta.key /tmp/keys
# chmod -R 777 /tmp/keys

По завершении копирования не забываем удалить папку /tmp/keys:

# rm -R /tmp/keys

Теперь возвращаемся к компьютеру с Windows, открываем блокнот от имени администратора и вставляем следующие строки:

client

resolv-retry infinite

nobind

remote 192.168.166.155 443

proto udp

dev tun

comp-lzo

ca ca.crt

cert client.crt

key client.key

dh dh2048.pem

tls-client

tls-auth ta.key 1

float

keepalive 10 120

persist-key

persist-tun

verb 0

*** 192.168.166.155 — IP-адрес сервера VPN.

Сохраняем файл с именем config.ovpn в папке C:\Program Files\OpenVPN\config.

Запускаем с рабочего стола программу «OpenVPN GUI» от имени администратора (это важно). Нажимаем правой кнопкой по появившемуся в трее значку и выбираем «Подключиться»:

Нажимаем правой кнопкой по появившемуся в трее значку и выбираем «Подключиться»:

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

Установка и создание сертификатов

Использование сертификатов является обязательным условием при использовании VPN. Поэтому сразу после установки мы создадим все необходимые ключи.

Установка OpenVPN

Устанавливаем репозиторий epel:

dnf install epel-release

Устанавливаем необходимые пакеты следующей командой:

dnf install openvpn easy-rsa

Подготовительный этап

Переходим в каталог easy-rsa:

cd /usr/share/easy-rsa/3

* в зависимости от версии easy-rsa, последний каталог может быть другим. Увидеть точное название каталога можно командой ls -l /usr/share/easy-rsa/.

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

vi vars

* где KEY_CN и KEY_OU: рабочие подразделения (например, можно указать название отдела); KEY_NAME: адрес, по которому будет выполняться подключение (можно указать полное наименование сервера); KEY_ALTNAMES — альтернативный адрес.
* так как мы генерируем самоподписный сертификат, значения данных полей никак не повлияют на работу OpenVPN, однако, для удобства, лучше подставить реальные данные.

Запускаем созданный файл на исполнение:

. ./vars

Генерация ключей

1. Инициализируем PKI:

./easyrsa init-pki

Мы должны увидеть:

init-pki complete; you may now create a CA or requests.
Your newly created PKI dir is: /usr/share/easy-rsa/3/pki

… а в текущем каталоге появится папка pki.

2. Генерируем корневой сертификат (CA):

./easyrsa build-ca

… после ввода Enter обязательно задаем пароль дважды. На запрос ввести Common Name можно просто нажать ввод или написать свое имя:

Common Name (eg: your user, host, or server name) :

3. Создаем ключ Диффи-Хеллмана:

./easyrsa gen-dh

4. Для создания сертификата сервера необходимо сначала создать файл запроса:

./easyrsa gen-req vpn-server nopass

* на запрос ввода Common Name просто вводим Enter, чтобы использовать настройку из файла vars; nopass можно упустить, если хотим повысить безопасность с помощью пароля на сертификат.

… и на его основе — сам сертификат:

./easyrsa sign-req server vpn-server

После ввода команды подтверждаем правильность данных, введя yes:

  Confirm request details: yes

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

5. Для создания ta ключа используем команду:

openvpn —genkey —secret pki/ta.key

6. Сертификаты сервера готовы и находятся в каталоге pki. 

Создаем каталог в /etc/openvpn, в котором будем хранить сертификаты:

mkdir -p /etc/openvpn/server/keys

Переходим в каталог pki:

cd pki

Копируем в него необходимые сертификаты:

cp ca.crt issued/vpn-server.crt private/vpn-server.key dh.pem ta.key /etc/openvpn/server/keys/

Устанавливаем OpenVPN и создаем сертификаты

Устанавливаем пакеты openvpn и easy-rsa:

apt install openvpn easy-rsa

Создаем каталог easy-rsa, переходим в него и копируем рабочие файлы:

mkdir /etc/openvpn/easy-rsa

cd /etc/openvpn/easy-rsa

cp -r /usr/share/easy-rsa/* .

Открываем на редактирование скрипт vars и выставляем подходящие значения для своего сертификата:

# nano ./vars

export KEY_COUNTRY=»RU»

export KEY_PROVINCE=»Leningrad»

export KEY_CITY=»Sankt-Petersburg»

export KEY_ORG=»DMOSK COMPANY»

export KEY_CN=DMOSK

export KEY_OU=DMOSK

export KEY_NAME=name-openvpn-server.dmosk.ru

export KEY_ALTNAMES=»name-openvpn-server»

#export PKCS11_MODULE_PATH=changeme

#export PKCS11_PIN=1234

Запускаем на исполнение отредактированный скрипт:

# . ./vars

На всякий случай, чистим каталоги от старых сертификатов:

# ./clean-all

Генерируем первый сертификат:

# ./build-ca

На все запросы просто нажимаем Enter, так как мы все настроили в переменных с помощью файла vars.

Создаем ключ для сервера:

# ./build-key-server server

В конце подтверждаем подписание сертификата ().

Формируем ключ Диффи-Хеллмана:

# ./build-dh

Теперь создаем ключ для клиента:

# ./build-key client

В конце подтверждаем подписание сертификата ().

Ну и на последок, TLS-ключ:

# openvpn —genkey —secret keys/ta.key

Копируем каталог с созданными сертификатами и ключами в /etc/openvpn:

# cp -r keys /etc/openvpn/

Примечания к конфигурационному файлу сервера OpenVPN

В данном конфиге будут только два различия в версиях сервера для Unix или для Windows.

1. Пути расположения файлов конфигурации, сертификатов и пр. в конфиге для Windows должны прописываться так:

а в Linux/FreeBSD так:

2. В конфиге для Windows следующие строки должны быть закомментированы:

а в Linux/FreeBSD (по желанию или по соображениям безопасности, но режиме отладки самого сервера OpenVPN можно сначала запускать сервер OpenVPN под админом, чтобы в случае проблем не грешить на права доступа, но потом обязательно сменить запуск на nobody!!!) раскомментированы:

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

Подключение к OpenVPN серверу из консоли Linux

Для установки пакета OpenVPN в Linux:

  • Debian, Ubuntu, Linux Mint, Kali Linux:
  • RedHat, Fedora, CentOS, Oracle, Rocky Linux:

Для подключения к OpenVPN серверу вам понадобится файл конфигурации ovpn. Чтобы подключиться к VPN с помощью ovpn файла:

Введите имя пользователя и пароль (если настроена AD аутентификация для OpenVPN).

Проверьте что VPN подключение установлено:

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

В OpenVPN вы можете разрешить несколько подключений с одним сертификатом, а в Windows можно даже создать несколько одновременных подключений с помощью виртуальных TAP адаптеров.

Чтобы OpenVPN подключение автоматически устанавливалось при старте Linux, нужно создать отдельный юнит systemd:

Description=Hide.me OpenVPN Client Corp
After=multi-user.target

Type=idle
ExecStart=/usr/sbin/openvpn --config /etc/openvpn/client.ovpn

WantedBy=multi-user.target

Измените разрешения на файл:

Добавьте юнит через systemctl

В Windows также можно реализовать автоматическое подключение к 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”

Debian/Ubuntu

apt-get install -y openvpn
cd /usr/share/doc/openvpn/examples/easy-rsa/2.0/

Настройка сервера OpenVPN

nano ./vars
export KEY_SIZE=1024  # Длина ключа
export KEY_EXPIRE=3650 # Срок действия ключа в днях

# описание сертификатов по умолчанию
export KEY_COUNTRY="RU"
export KEY_PROVINCE="RU"
export KEY_CITY="Kiev"
export KEY_ORG="http://example.com"
export KEY_EMAIL="[email protected]"
. ./vars
. ./clean-all

./build-ca			# корневой сертификат
./build-key-server server	# сертификат сервера
./build-dh			# ключ Диффи Хельман
openvpn --genkey --secret ./keys/ta.key
cp ./keys/ca.crt /etc/openvpn
cp ./keys/server.crt /etc/openvpn
cp ./keys/server.key /etc/openvpn
cp ./keys/dh1024.pem /etc/openvpn
cp ./keys/ta.key /etc/openvpn
./build-key-pkcs12 windows
./build-key-pkcs12 debian
./build-key-pkcs12 android
#	cd /usr/share/doc/openvpn/examples/easy-rsa/2.0/
#	. ./vars
#	./build-key-pkcs12 newuser1
#	./build-key-pkcs12 newuser2

= СОЗДАНИЕ PKI. СЕРВЕР УДОСТОВЕРЯЮЩЕГО ЦЕНТРА =

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

Также, в целях безопасности, все операции на сервере необходимо проводить от пользователя, не имеющего права суперпользователя (т.е. не root). Дальнейшая работа УЦ тоже должна проводится под непривилегированным пользователем.

Элементы, из которых состоит PKI:

1. Собственно удостоверяющий центр (УЦ) (Certificate Authority — CA). Создавать его следует на отдельном сервере (физическом или виртуальном, не имеет значения).
2. Закрытый ключ УЦ. Будет необходим для подписания выдаваемых сертификатов. Является самой уязвимой частью PKI.
3. Ключевая пара (закрытый и открытый ключи) для OpenVPN-сервера.
4. Ключевые пары для клиентов OpenVPN.

— Настройка удостоверяющего центра —

Установка Easy-RSA:

Easy-RSA — это и есть основа удостоверяющего центра. Это программное обеспечение, предназначенное для генерации ключей.

а) Установка Easy-RSA на сервер. Производится командой: sudo dnf install easy-rsa

На CentOS 7.X вместо dnf используем команду yum.

б) После установки Easy-RSA, я скопирую папку с программой с ее места в папку текущего пользователя. Для чего? Напомню, что все работы я провожу под непривилегированным пользователем (т.е. не root). При установке Easy-RSA установился по следующему пути: /usr/share/easy-rsa/3.0.8/ 3.0.8 — папка с программой (в моем случае это последняя версия). Установка проводилась от пользователя root (префикс sudo), поэтому проблем с установкой по этому пути не вышло. А вот уже запускать саму программу необходимо от имени текущего непривилегированного пользователя. Программе будет необходимо создавать некоторые папки и файлы в своем рабочем каталоге и она не сможет этого сделать. Поэтому я ее просто скопирую в папку текущего пользователя, где она сможет спокойно создавать необходимые файлы и папки, работая от текущего пользователя.

Итак, я скопировал содержимое папки 3.0.8 в папку /home/username/easy-rsa username — это имя текущего пользователя. Запускать программу буду отсюда.

в) Инициализируем PKI: ./easyrsa init-pki

Поскольку программа представляет собой bash-скрипт, то запускаться она должна с префикса «» Если все хорошо, то скрипт сообщит, что PKI создан и мы можем приступить к созданию УЦ (CA). Во время выполнения этой команды, скрипт создает в своей папке подпапку pki, в которой будут храниться запросы клиентов на выпуск сертификатов, закрытый ключ и конфигурационные файлы. Если бы мы запустили скрипт из изначальной директории, куда установился Easy-RSA, то программе бы не хватило прав создать эту папку и, была бы ошибка «Cannot create /usr/share/easy-rsa/3.0.8/pki (permission?)«, явно говорящая о недостатке прав у текущего пользователя.

г) Создание удостоверяющего центра (CA): ./easyrsa build-ca

Создание конфигурационного файла. Перед генерацией ca.crt можно создать файл vars в /pki/, в который поместить следующие строки:

   set_var EASYRSA_ALGO «ec»

   set_var EASYRSA_DIGEST «sha512»

   Данные строки будут предписывать программе использовать современные алгоритмы шифрования на основе эллиптических кривых для выпуска сертификатов.

Генерация закрытого ключа. После выполнения команды будет запрошен пароль, который нужно придумать и который будет необходимо каждый раз вводить, как только закрытый ключ будет использоваться для подписи издаваемых сертификатов для клиентов OpenVPN. Будет сгенерирован закрытый ключ. /pki/private/ca.key Данный ключ не должен покидать пределы сервера, где он находится.

Генерация сертификата с открытым ключом. После создания закрытого ключа будет предложено ввести информацию, которая будет помещена в сертификат открытого ключа. Это имя пользователя (в данном случае можно ввести название сервера). После ввода этой информации будет сообщено, что сертификат был выпущен, что находится он в папке /pki/ca.crt и его можно использовать. Данный сертификат необходимо будет устанавливать на всех клиентах OpenVPN, в том числе и на OpenVPN-сервере.

Понравилась статья? Поделиться с друзьями:
Компьютерная помощь
Добавить комментарий

;-) :| :x :twisted: :smile: :shock: :sad: :roll: :razz: :oops: :o :mrgreen: :lol: :idea: :grin: :evil: :cry: :cool: :arrow: :???: :?: :!: