Установка и настройка OpenVPN (клиента и сервера) и Easy-RSA 3 в CentOS 7

Установка, настройка и запуск VPN-сервера


Устанавливает OpenVPN 2.4 и Easy-RSA 3 

yum install openvpn easy-rsa -y

Настройка Easy-RSA 3

Скопируем скрипты easy-rsa в каталог /etc/openvpn/
cp -r /usr/share/easy-rsa /etc/openvpn/
Переходим в каталог /etc/openvpn/easy-rsa/3/ и создаем там файл vars
cd /etc/openvpn/easy-rsa/3/
nano vars
Содержимое файла:
set_var EASYRSA                 "$PWD"
set_var EASYRSA_PKI             "$EASYRSA/pki"
set_var EASYRSA_DN              "cn_only"
set_var EASYRSA_REQ_COUNTRY     "RU"
set_var EASYRSA_REQ_PROVINCE    "Sankt-Petersburg"
set_var EASYRSA_REQ_CITY        "Sankt-Petersburg"
set_var EASYRSA_REQ_ORG         "SNAK Company"
set_var EASYRSA_REQ_EMAIL       "snak@snak84.ru"
set_var EASYRSA_REQ_OU          "Director"
set_var EASYRSA_KEY_SIZE        2048
set_var EASYRSA_ALGO            rsa
set_var EASYRSA_CA_EXPIRE       7500
set_var EASYRSA_CERT_EXPIRE     3650
set_var EASYRSA_NS_SUPPORT      "no"
set_var EASYRSA_NS_COMMENT      "CERTIFICATE AUTHORITY"
set_var EASYRSA_EXT_DIR         "$EASYRSA/x509-types"
set_var EASYRSA_SSL_CONF        "$EASYRSA/openssl-1.0.cnf"
set_var EASYRSA_DIGEST          "sha512"
Делаем файл исполняемым
chmod +x vars

Создание ключа и сертификата для OpenVPN Сервера

Прежде чем создавать ключ, нам нужно инициализировать каталог PKI и создать ключ CA.
cd /etc/openvpn/easy-rsa/3/
./easyrsa init-pki
./easyrsa build-ca
На этом необходимо придумать пароль для своего CA-ключа, чтобы сгенерировались файлы ‘ca.crt’ и ‘ca.key’ в каталоге ‘pki’.
Этот пароль нам потребуется дальше

Создадим ключ сервера (название сервера srv-openvpn)
./easyrsa gen-req srv-openvpn nopass
опция nopass — отключение пароля для srv-openvpn
Подпишем ключ srv-openvpn используя наш CA-сертификат
./easyrsa sign-req server srv-openvpn
В процессе у нас спросят пароль, который мы задавали ранее

Создание ключа клиента

Сгенерируем ключ клиента client-01
./easyrsa gen-req client-01 nopass
Теперь подпишем ключ client-01, используя наш CA сертификат
./easyrsa sign-req client client-01
В процессе у нас спросят пароль, который мы задавали ранее


Дополнительная настройка OpenVPN сервера

Сгенерируем ключ Диффи-Хеллмана
./easyrsa gen-dh
Если мы в дальнейшем планируем отзывать клиентские сертификаты, нам необходимо сгенерировать CRL ключ
./easyrsa gen-crl
В процессе у нас спросят пароль, который мы задавали ранее

Для того, что бы отозвать сертификат надо выполнить команду:
./easyrsa revoke client-02
где client-02 имя сертификата, который мы отзываем
Все необходимые сертификаты созданы, теперь их надо скопировать в директории

Для создания ta ключа используем команду:
openvpn --genkey --secret pki/ta.key
Создаем каталог в /etc/openvpn, в котором будем хранить сертификаты:
mkdir /etc/openvpn/keys
Копируем сертификаты сервера
cp pki/ca.crt /etc/openvpn/keys/
cp pki/issued/srv-openvpn.crt /etc/openvpn/keys/
cp pki/private/srv-openvpn.key /etc/openvpn/keys/
Копируем ключи DH, TA и CRL
cp pki/dh.pem /etc/openvpn/keys/
cp pki/crl.pem /etc/openvpn/keys/
cp pki/ta.key /etc/openvpn/keys/

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

Создадим файл конфигурации server.conf
cd /etc/openvpn/
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/keys/ca.crt
cert /etc/openvpn/keys/srv-openvpn.crt
key /etc/openvpn/keys/srv-openvpn.key

# DH and CRL key
dh /etc/openvpn/keys/dh.pem
crl-verify /etc/openvpn/keys/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 8.8.8.8"
push "dhcp-option DNS 8.8.4.4"

# Enable multiple client to connect with same Certificate key
duplicate-cn

# TLS Security
cipher AES-256-CBC
tls-server
tls-auth /etc/openvpn/keys/ta.key 0
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

Активируем модуль ядра port-forwarding
echo 'net.ipv4.ip_forward = 1' >> /etc/sysctl.conf


Запустим OpenVPN и добавим его в автозагрузку
systemctl start openvpn@server
systemctl enable openvpn@server
Проверим
netstat -plntu
systemctl status openvpn@server

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

Содержимое файла:
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-client
tls-auth ta.key 1

resolv-retry infinite
compress lzo
nobind
persist-key
persist-tun
mute-replay-warnings
verb 3


---
0