ЛР 3.12 - Настройка OpenVPN + CA

В данной лабораторной работе мы развернем собственный центр сертификатов (CA) и настроим OpenVPN на машине gwX. OpenVPN-клиентом будет выступать находящаяся "снаружи" машина clientX.

1.Подключитесь к gwX и установите необходимые пакеты:
apt install openvpn easy-rsa

  1. Скопируйте демо-конфиги easy-rsa в директорию с конфигами openvpn:
    mkdir /etc/openvpn/easy-rsa
    cp -r /usr/share/easy-rsa /etc/openvpn/
  2. Запустите скрипт настройки центра сертификации:
    cd /etc/openvpn/easy-rsa/
    ./easyrsa init-pki
  3. Создайте корневой сертификат CA, ключи алгоритма Диффи-Хеллмана, сертификат для отзыва сертификатов и сертификат сервера OpenVPN:
    ./easyrsa build-ca
    ./easyrsa gen-dh
    ./easyrsa gen-crl
    ./easyrsa build-server-full server nopass
  4. Скопируйте созданные сертификаты в директорию /etc/openvpn/:
    cp ./pki/ca.crt /etc/openvpn/ca.crt
    cp ./pki/dh.pem /etc/openvpn/dh.pem
    cp ./pki/crl.pem /etc/openvpn/crl.pem
    cp ./pki/issued/server.crt /etc/openvpn/server.crt
    cp ./pki/private/server.key /etc/openvpn/server.key
  5. Скопируйте шаблон конфигурации сервера и отредактируйте его:
    cp /usr/share/doc/openvpn/examples/sample-config-files/server.conf /etc/openvpn
    nano /etc/openvpn/server.conf
    ca /etc/openvpn/ca.crt
    cert /etc/openvpn/server.crt
    key /etc/openvpn/server.key
    dh /etc/openvpn/dh.pem
    push "route 172.16.0.0 255.255.255.0"
    push "route 10.20.30.0 255.255.255.0"
    push "dhcp-option DNS 172.16.0.1"
    #tls-auth ta.key 0
  6. Смените права на директорию и скопируйте конфиг:
    chmod -R 700 pki/revoked/*
    cp -a openssl-easyrsa.cnf /etc/openvpn/pki
  7. Скопируйте и отредактируйте дефолтный конфиг-файл для клиентов:
    cp /usr/share/doc/openvpn/examples/sample-config-files/client.conf /etc/openvpn/client/mycompany.conf
    nano /etc/openvpn/client/mycompany.conf
    remote 10.5.Y.X+100 1194
    #tls-auth ta.key 1
    auth-nocache
  8. Сгенерируйте сертификаты нового openvpn-клиента и переместите их в созданную для клиента папку:
    ./easyrsa build-client-full <логин> nopass
    mkdir /etc/openvpn/client/<логин>
    cd /etc/openvpn/client/<логин>
    cp /etc/openvpn/easy-rsa/pki/ca.crt .
    cp /etc/openvpn/easy-rsa/pki/issued/<логин>.crt ./client.crt
    cp /etc/openvpn/easy-rsa/pki/private/<логин>.key ./client.key
  9. Отредактируйте настройки демона openvpn и перезагрузите машину gwX:
    systemctl edit openvpn
    [Service]
    Type=oneshot
    RemainAfterExit=yes
    ExecStart=/usr/sbin/openvpn --config /etc/openvpn/server.conf --ncp-ciphers AES-256-GCM
    WorkingDirectory=/etc/openvpn

    systemctl daemon-reload
    init 6

  10. Переместите файлы сертификатов и конфиг mycompany.conf на машину clientX в отдельную директорию внутри домашней директории.
  11. В GUI машины clientX откройте настройки сети, импортируйте конфиг клиента и запустите openvpn.
  12. На машине clientX запустите браузер и откройте сайт http://10.20.30.10.
  13. (опционально) Отзовите сертификат пользователя на сервере OpenVPN:
    cd /etc/openvpn/easy-rsa
    ./easyrsa revoke strelnikov
    ./easyrsa gen-crl
    systemctl restart openvpn