Files
sf/02-pentest/01-network/03-vpn-dmz-wifi/01-vpn/README.md
2024-03-26 19:36:57 -04:00

8.7 KiB
Raw Blame History

Сетевая безопасность. Лабораторная работа №1 (HW)

Ход работы

Для стенда мы будем использовать 2 виртуальные машины Ubuntu Linux 22.04:

hostname ip address
ubuntu 192.168.103.100
ubuntu2 192.168.103.101

ubuntu будет использоваться в качестве сервера, а ubuntu2 -- в качестве клиента.

С помощью инструмента iperf3 и замерим скорость передачи данных в условиях открытой сети.

alt text

Как видим, при отсутствии VPN скорость между хостами около 18 Гбит/с.

Настройка OpenVPN

  1. Для настройки OpenVPN установим необходимые пакеты на обе машины с помощью sudo apt install openvpn

ubuntu

alt text

ubuntu2

alt text

  1. Настроим сервер OpenVPN на ubuntu

    1. Создадим каталог /etc/openvpn/easy-rsa и скопируем в него исполняемый файл easy-rsa
    root@ubuntu:/home/marker# mkdir /etc/openvpn/easy-rsa
    root@ubuntu:/home/marker# cp -R /usr/share/easy-rsa /etc/openvpn/
    root@ubuntu:/home/marker# cd /etc/openvpn/easy-rsa/
    
    1. Выполним инициализацию PKI
    ./easyrsa init-pki
    

    alt text

    1. Выпустим корневой сертификат
    ./easyrsa build-ca
    

    alt text

    1. Сгенерируем последовательность Диффи-Хелмана (DH)
    ./easyrsa gen-dh
    

    alt text

    1. Создадим CRL
    ./easyrsa gen-crl
    

    alt text

    1. Сгенерируем ключ TLS-Auth
    openvpn --genkey tls-auth /etc/openvpn/ta.key
    

    alt text

    1. Сгенерируем серверный сертификат
    ./easyrsa build-server-full server nopass
    

    alt text

    1. Скопируем криптографическую информацию в папку /etc/openvpn/
    cp ./pki/ca.crt /etc/openvpn/ca.crt
    cp ./pki/dh.pem /etc/openvpn/dh2048.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
    
    1. Создадим файл /etc/openvpn/server.conf и наполним его следующим:
    port 1194
    # TCP or UDP server?
    ;proto tcp
    proto udp
    dev tun
    ca ca.crt
    cert server.crt
    key server.key  # This file should be kept secret
    dh dh2048.pem
    server 10.8.0.0 255.255.255.0
    ifconfig-pool-persist /var/log/openvpn/ipp.txt
    keepalive 10 120
    tls-auth ta.key 0 # This file is secret
    cipher CHACHA20-POLY1305
    data-ciphers CHACHA20-POLY1305
    persist-key
    persist-tun
    status /var/log/openvpn/openvpn-status.log
    verb 3
    

    Таким образом мы указали, что мы будем работать по протоколу UDP на порту 1194, использовать ранее сгенерированные криптопоследовательности, а частной сетью будет 10.8.0.0/24 (у сервера будет адрес 10.8.0.1)

    1. Сгенерируем клиентский сертификат
    ./easyrsa build-client-full client nopass
    

    alt text

    1. Скопируем криптографическую информацию клиента в папку /etc/openvpn/clients/client
    mkdir /etc/openvpn/clients
    mkdir /etc/openvpn/clients/client
    cp /etc/openvpn/easy-rsa/pki/ca.crt /etc/openvpn/clients/client/
    cp /etc/openvpn/ta.key /etc/openvpn/clients/client/
    cp /etc/openvpn/easy-rsa/pki/issued/client.crt /etc/openvpn/clients/client/
    cp /etc/openvpn/easy-rsa/pki/private/client.key /etc/openvpn/clients/client/
    
    1. Создадим файл конфигурации клиента /etc/openvpn/clients/client/client.conf
    client
    dev tun
    ;proto tcp
    proto udp
    remote 192.168.103.100 1194
    nobind
    persist-key
    persist-tun
    ca ca.crt
    cert client.crt
    key client.key
    remote-cert-tls server
    tls-auth ta.key 1
    cipher CHACHA20-POLY1305
    data-ciphers CHACHA20-POLY1305
    verb 3
    
    1. Папку с конфигурацией клиента и криптографической информацией передадим на машину ubuntu2 с помощью scp

    scp /etc/openvpn/clients/client/* marker@192.168.103.101:/home/marker/client

    alt text

    1. Запустим сервер и клиент.

    alt text

    1. Проверим наличие сетевых интерфейсов.

    alt text

  2. Проверим скорость соединения с помощью iperf3

    alt text

    Мы получили среднюю скорость около 850 Мбит/c. Теперь проверим, как этот результат изменится, в случае использования TCP.

  3. Изменяем строку proto udp на proto tcp в конфигах сервера и клиента.

  4. Перезапускаем сервер и клиент и проверяем скорость.

    alt text

    Мы получили среднюю скорость в 1.1 Гбит/с. Что довольно странно, учитывая, что мы используем TCP. Я предполагаю, что дело в том, что в данном тесте мы используем одно L2 пространство, где нет маршрутизирующих устройств, а при режиме UDP OpenVPN по сути просто инкапсулирует SSL/TLS в UDP, отсюда появляется значимый оверхед, который нивелируется в реальном использовании.

Настройка Wireguard

  1. С помощью sudo apt install wireguard установим необходимые пакеты на виртуальные машины

ubuntu:

alt text

ubuntu2:

alt text

  1. С помощью утилиты wg genkey сгенерируем на машинах пары приватный-публичный ключ.

alt text

  1. Составим конфиги для машин на основании полученных пар ключей.

alt text

  1. Запустим демонов, которые поднимут указанные интерфейсы и проверим связность по VPN интерфейсам.

alt text

  1. Мы обеспечили связность через VPN. Теперь замерим скорость между машинами с помощью iperf3

alt text

Средняя скорость 7.7 Гбит/с.

Выводы

Итак, мы получили следующие результаты:

VPN Protocol Bitrate
OpenVPN (UDP) 850 Mbps
OpenVPN (TCP) 1.1 Gbps
Wireguard 7.7 Gbps

OpenVPN в режиме TCP показал более высокую скорость, но только в рамках стенда, как показывает практика режим UDP является более предпочтительным для обеспечения большей скорости передачи.

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

Wireguard работает поверх протокола UDP, чем и объясняется такая скорость, а легковесная архитектура позволяет максимизировать это преимущество.

Выполнил: Харитонов Марат Русланович, студенческий билет М235314.