Установка и настройка OpenVPN (клиента и сервера) и Easy-RSA 3 в CentOS 7
OpenVPN — свободная реализация технологии виртуальной частной сети с открытым исходным кодом для создания зашифрованных каналов типа точка-точка или сервер-клиенты между компьютерами. Easy-RSA — программа для создания и ведения инфраструктуры открытых ключей (PKI) в openVPN
Прежде чем создавать ключ, нам нужно инициализировать каталог PKI и создать ключ CA.
[root@localhost ~]# cd /etc/openvpn/easy-rsa/3/
root@localhost ~]# ./easyrsa init-pki
Note: using Easy-RSA configuration from: ./vars
init-pki complete; you may now create a CA or requests.
Your newly created PKI dir is: /etc/openvpn/easy-rsa/3/pki
[root@localhost ~]# ./easyrsa build-ca
На этом необходимо придумать пароль для своего CA-ключа, чтобы сгенерировались файлы ‘ca.crt’ и ‘ca.key’ в каталоге ‘pki’. Этот пароль нам потребуется дальше Создаем корневой сертификатСоздадим ключ сервера (название сервера srv-openvpn)
опция nopass — отключение пароля для srv-openvpn Создаем ключ сервераПодпишем ключ srv-openvpn используя наш CA-сертификат
[root@localhost ~]# ./easyrsa sign-req server srv-openvpn
В процессе у нас спросят пароль, который мы задавали ранее Подписываем ключ, используя CA-сертификатПроверим файлы сертификата, что бы убедится, что сертификаты сгенерировались без ошибок
[root@localhost ~]# openssl verify -CAfile pki/ca.crt pki/issued/srv-openvpn.crt
pki/issued/srv-openvpn.crt: OK
В процессе у нас спросят пароль, который мы задавали ранее Подписываем ключ клиента, используя корневой сертификатПроверим файлы сертификата
[root@localhost ~]# openssl verify -CAfile pki/ca.crt pki/issued/client-01.crt
pki/issued/client-01.crt: OK
Дополнительная настройка OpenVPN сервера
Сгенерируем ключ Диффи-Хеллмана
[root@localhost ~]# ./easyrsa gen-dh
Генерация ключа Диффи-ХеллманаЕсли мы в дальнейшем планируем отзывать клиентские сертификаты, нам необходимо сгенерировать CRL ключ
[root@localhost ~]# ./easyrsa gen-crl
В процессе у нас спросят пароль, который мы задавали ранее Генерируем CRL-ключДля того, что бы отозвать сертификат надо выполнить команду:
[root@localhost ~]# ./easyrsa revoke client-02
где client-02 имя сертификата, который мы отзываем Все необходимые сертификаты созданы, теперь их надо скопировать в директории Копируем сертификаты сервера
!!! Проверить, надо ли перегенерировать CRL и заново копировать его в каталог /etc/openvpn/server/ после отзыва сертификата !!!
Настройка OpenVPN сервера
Создадим файл конфигурации server.conf
[root@localhost ~]# cd /etc/openvpn/
[root@localhost ~]# nano server.conf
Содержимое файла:
# OpenVPN Port, Protocol and the Tun
port 1194
proto udp
dev tun
# OpenVPN Server Certificate - CA, server key and certificate
ca /etc/openvpn/server/ca.crt
cert /etc/openvpn/server/srv-openvpn.crt
key /etc/openvpn/server/srv-openvpn.key
# DH and CRL key
dh /etc/openvpn/server/dh.pem
crl-verify /etc/openvpn/server/crl.pem
# Network Configuration - Internal network
# Redirect all Connection through OpenVPN Server
server 10.10.1.0 255.255.255.0
push "redirect-gateway def1"
# Using the DNS from https://dns.watch
push "dhcp-option DNS 84.200.69.80"
push "dhcp-option DNS 84.200.70.40"
# Enable multiple client to connect with same Certificate key
duplicate-cn
# TLS Security
cipher AES-256-CBC
tls-version-min 1.2
tls-cipher TLS-DHE-RSA-WITH-AES-256-GCM-SHA384:TLS-DHE-RSA-WITH-AES-256-CBC-SHA256:TLS-DHE-RSA-WITH-AES-128-GCM-SHA256:TLS-DHE-RSA-WITH-AES-128-CBC-SHA256
auth SHA512
auth-nocache
# Other Configuration
keepalive 20 60
persist-key
persist-tun
comp-lzo yes
daemon
user nobody
group nobody
# OpenVPN Log
log-append /var/log/openvpn.log
verb 3
[root@localhost ~]# netstat -plntu
[root@localhost ~]# systemctl status openvpn@server
Проверяем, запущен ли OpenVPN
Настройка OpenVPN клиента
Создадим файл конфигурации client-01.ovpn
[root@localhost ~]# cd /etc/openvpn/client
[root@localhost ~]# nano client-01.ovpn
Содержимое файла:
client
dev tun
proto udp
remote xx.xx.xx.xx 1194
ca ca.crt
cert client-01.crt
key client-01.key
cipher AES-256-CBC
auth SHA512
auth-nocache
tls-version-min 1.2
tls-cipher TLS-DHE-RSA-WITH-AES-256-GCM-SHA384:TLS-DHE-RSA-WITH-AES-256-CBC-SHA256:TLS-DHE-RSA-WITH-AES-128-GCM-SHA256:TLS-DHE-RSA-WITH-AES-128-CBC-SHA256
resolv-retry infinite
compress lzo
nobind
persist-key
persist-tun
mute-replay-warnings
verb 3
В строке ‘remote xx.xx.xx.xx 1194‘ надо прописать IP-адрес вместо ‘xx.xx.xx.xx‘ Теперь для надо заархивировать сертификаты (ca.crt, client-01.crt), ключ клиента (client-01.key), файл конфигурации (client-01.ovpn), и передать их на ПК, который будет подключаться к OpenVPN серверу Установим архиватор zip и создадим архив с файлами
[root@localhost ~]# yum install zip unzip -y
[root@localhost ~]# cd /etc/openvpn/
[root@localhost ~]# zip client/client-01.zip client/*
Пробуем подключиться с другого ПК к OpenVPN серверу и смотрим лог: