Настройка сервера OpenVPN 2.4 с Easy-RSA-3
В данной статье описан процесс развертывания OpenVPN 2.4 с Easy-RSA-3
Исходные данные:
Имя сервера: OpenVPN
Устанавливаем Ubuntu Server
Обновляем список пакетов
sudo apt update
Ставим приложения:
sudo apt install openvpn easy-rsa
После установки копируем easy-rsa вместе со сценариями в другую папку, у нас установка произошла в /usr/share/easy-rsa
скопируем папку в /root
cp -Rp /usr/share/easy-rsa /root/easy-rsa-3 cd /root/easy-rsa-3
мы можем отредактировать файл vars.example, чтобы внести коррективы по создаваемым сертификатам
sudo nano vars.example
например можно изменить размер ключа, срок действия и тип шифрования:
set_var EASYRSA_KEY_SIZE 4096 set_var EASYRSA_CRL_DAYS 3650 set_var EASYRSA_DIGEST "sha512"
После редактирования файла переименуйте его:
mv vars.example vars
Теперь выполните следующую команду:
./easyrsa init-pki
Здесь мы можем использовать пароль или нет, в зависимости от необязательного параметра nopass:
./easyrsa build-ca [nopass]
Это сгенерирует все файлы, необходимые для управления нашим ЦС. Следующие файлы создаются предыдущими шагами и имеют особое значение:
/root/easy-rsa-3/pki
/root/easy-rsa-3/pki/ca.crt
/root/easy-rsa-3/pki/private/ca.key
Создаем сертификат сервера
Теперь, когда наш ЦС готов, давайте создадим сертификат для нашего сервера. Единственный параметр, который нам нужен здесь, это CN, и он будет запрошен во время процесса, вы можете использовать имя хоста вашего сервера или что угодно:
Сначала делаем запрос:
./easyrsa gen-req OpenVPN [nopass]
Затем подписываем собственный запрос:
./easyrsa sign-req server OpenVPN
Вы можете выполнить шаг запроса на любом другом компьютере и также перенести файлы на компьютер с нашими файлами CA, но для этого потребуется дополнительный шаг импорта.
Как и в предыдущем шаге, создаются некоторые файлы, обратите внимание на следующие файлы, допустим, мы использовали «openvpn» для нашего имени сервера:
/root/easy-rsa-3/pki/private/openvpn.key
/root/easy-rsa-3/pki/reqs/openvpn.req
/root/easy-rsa-3/pki/issued/openvpn.crt
ОПРЕДЕЛЕНИЕ КЛИЕНТОВ, ПОЛУЧЕНИЕ СЕРТИФИКАТОВ
Этот шаг похож на шаг 1. но в этом случае сертификат предназначен для нашего клиента, предположим, что наш клиент называется «client1», это будут шаги для создания сертификата (замените client1 на желаемое имя):
Сначала делаем запрос:
./easyrsa gen-req client1 nopass
Затем подписываем собственный запрос:
./easyrsa sign-req client client1
То, что мы сказали об использовании другого компьютера, остается в силе и здесь.
Некоторые из сгенерированных файлов:
/root/easy-rsa-3/pki/private/client1.key
/root/easy-rsa-3/pki/reqs/client1.req
/root/easy-rsa-3/pki/выпущено/client1.crt
Обратите внимание, что этот шаг следует повторить для каждого клиента для повышения безопасности. Идея состоит в том, чтобы иметь разные сертификаты для каждого клиента.
СОЗДАНИЕ И ОЧИСТКА СПИСКА ОТОЗВАННЫХ СЕРТИФИКАТОВ
Мы только что создали наш ЦС, и на данный момент, возможно, все наши сертификаты в безопасности, но в будущем это может измениться, например, в случае кражи одного из наших устройств. Для решения таких ситуаций мы создаем пустой список отзыва сертификатов.
./easyrsa gen-crl
Список можно найти по следующему пути:
/root/easy-rsa-3/pki/crl.pem
ГЕНЕРАЦИЯ ПАРАМЕТРОВ DH
Теперь пришло время сгенерировать наши параметры Диффи-Хеллмана. Этот шаг может занять много времени в зависимости от выбранной длины и доступной энтропии на машине, поэтому будьте осторожны, идите на кофе.
mkdir /etc/openvpn/ssl -p openssl dhparam -out /etc/openvpn/ssl/dh.pem 4096
НАСТРОЙКА СЕРВЕРНОЙ ЧАСТИ OPENVPN
Прежде всего, мы собираемся скопировать необходимые файлы в соответствующую функцию сервера:
cp /root/easy-rsa-3/pki/ca.crt /etc/openvpn/ssl/ cp /root/easy-rsa-3/pki/issued/server.lan.crt /etc/openvpn/ssl/ cp /root/easy-rsa-3/pki/private/server.lan.key /etc/openvpn/ssl/ cp /root/easy-rsa-3/pki/crl.pem /etc/openvpn/ssl/
В случае с моим дистрибутивом файл конфигурации называется /etc/openvpn/server.conf и содержит следующие директивы:
client-to-client persist-key persist-tun ca /etc/openvpn/ssl/ca.crt cert /etc/openvpn/ssl/server.lan.crt comp-lzo adaptive dev tun dh /etc/openvpn/ssl/dh.pem ifconfig-pool-persist server-ipp.txt 0 keepalive 10 120 key /etc/openvpn/ssl/server.lan.key tls-auth /etc/openvpn/ssl/ta.key 0 cipher AES-256-CBC auth SHA512 tls-version-min 1.2 tls-cipher TLS-DHE-RSA-WITH-AES-256-GCM-SHA384 log /var/log/openvpn/server.log port 1194 proto udp server 192.168.10.0 255.255.255.0 verb 3 crl-verify /etc/openvpn/ssl/crl.pem push "route 192.168.1.0 255.255.255.0" push "redirect-gateway def1" push "dhcp-option DNS 192.168.1.1"