SoftEther VPN — быстрая настройка

от автора

В свете периодических блокировок в РБ и РФ, блокирующих как “недозволенные речи неугодных” так и работу специалистов разных мастей, организации и просто технари перебирают возможности различных VPN решений. SoftEther VPN в моем списке выглядит как бесплатное “чудо-решение”, которое позволяет иметь под рукой внушительный лист протоколов VPN из коробки: L2TP, IPSec, OpenVPN, SSTP, SoftEther VPN.

Цель туториала — упростить его установку, сделав доступным любому специалисту способному подключиться по ssh к серверу и вбить пару команд.

Если вас интересуют все возможности решения — на хабре уже есть обзоры SoftEther VPN: раз два три.

Теоретически

Я не системный администратор и не специалист по безопасности. Могу быть не прав.

Наиболее интересными протоколами для нас выглядят протоколы работающие поверх 443 порта т.к. похожи на https трафик: «SSTP», «SoftEther VPN». Ставим нашей целью настроить оба, остальные протоколы бонусом.
Хотя по опыту, они не спасут в случае применения тяжелой артиллерии.

Нам понадобятся

  1. SoftEther VPN Server manager for Windows

  2. Ubuntu 20.04 server

  3. Docker 19+ на борту

    sudo apt-get update sudo apt-get install docker-ce docker
  4. SoftEther VPN Client под необходимую вам систему. [Опционально, если планируете использовать «SoftEther VPN» протокол]

Приступим

  1. Создадим папку для наших настроек

    mkdir /home/softethervpn && cd /home/softethervpn 
  2. Создайте и откройте docker-compose.yamlфайл используя vi или nano

    nano docker-compose.yaml

    ВНИМАНИЕ: Замените следующие ключи своими значениями

    1. <PSK> — pre-shared key. Используется для IpSec

    2. <username>

    3. <password>

    4. <spassword> — Server management password (супер админ — будьте с ним аккуратны)

    5. <hpassword> — hub management password

    6. В секции USERS вы можете определить предустановленных юзеров: username:password;user2:pass2;

      version: '3' services:   softethervpn:     container_name: 'softethervpn'     image: siomiz/softethervpn     cap_add:        - NET_ADMIN     environment:       - PSK=<PSK>       - "USERS=<username>:<password>"       - SPW=<spassword>       - HPW=<hpassword>     #volumes:       #- ./vpn_server.config:/opt/vpn_server.config     ports:       # L2TP/IPSec       - "500:500/udp"       - "4500:4500/udp"       - "1701:1701/tcp"       # OpenVPN/SSTP       - "443:443/tcp"       - "1194:1194/udp"       # SoftEther VPN (recommended by vendor)       - "5555:5555/tcp"       - "992:992/tcp"
  3. Стартуем из папки с docker-compose.yaml

    docker-compose up -d  
  4. Во время первого запуска контейнера была создана конфигурация. Давайте скопируем ее из контейнера в нашу папку.

    docker cp softethervpn:/usr/vpnserver/vpn_server.config ./
  5. Теперь нам необходимо раскомментировать строки 13, 14 в файле docker-compose.yaml

    Итоговый файл должен выглядеть так

    version: '3' services:   softethervpn:     container_name: 'softethervpn'     image: siomiz/softethervpn     cap_add:        - NET_ADMIN     environment:       - PSK=<PSK>       - "USERS=<username>:<password>"       - SPW=<spassword>       - HPW=<hpassword>     volumes:       - ./vpn_server.config:/opt/vpn_server.config     ports:       # L2TP/IPSec       - "500:500/udp"       - "4500:4500/udp"       - "1701:1701/tcp"       # OpenVPN/SSTP       - "443:443/tcp"       - "1194:1194/udp"       # SoftEther VPN (recommended by vendor)       - "5555:5555/tcp"       - "992:992/tcp"
  6. Теперь вы не будете терять ваш конфиг после каждого перезапуска контейнера. Для обновления конфигурации контейнера вызываем.

    docker-compose up -d
  7. Запускаем SoftEther VPN Server manager for Windows с локальной машины и подключаемся к созданному серверу:

    Если вам удалось подключиться — вам уже доступны протоколы L2TP, IPSec, SoftEther VPN. (при условии, что у вас установлены соответствующие клиенты)

  8. Пора настроить OpenVPN

    1. Активируем протокол в настройках

    2. Кнопка «Generate a Sample Configuration File for OpenVPN Clients» отдаст вам файл который вы можете скормить типовому OpenVPN клиенту.

  9. Пришло время настроить SSTP

    1. Первое, что нужно сделать — сгенерировать self-signed сертификат для сервера:

    2. Экспортируем сертификат в формате .cer

    3. Этот сертификат необходимо импортировать в Trusted Root Certificate Authorities вашей системы. Для этого

      1. Открываем утилиту «Manage Computer Certificates»

      2. Импортируем сертификат в «Trusted Root Certificate Authorities»

        Важно: Store location должен быть установлен в Local:

        После импорта, в ветке Certificates вы увидите сертификат с IP адресом вашего сервера.

      3. Попробуем установить подключение, для этого идем в настройки VPN:

      4. Добавляем новое VPN соединение

      5. Готово! Если все настройки были выполнены верно, соединение должно было успешно установиться.

Дополнительно

  1. По адресу https://<your_ip_address> доступна страница приветствия SoftEther VPN. Чтобы лишний раз не афишировать факт, что это VPN сервер, давайте ее отключим.

    1. Откроем на редактирование файл vpn_server.config

       nano vpn_server.config
    2. Заменим флаг
      bool DisableJsonRpcWebApi false на bool DisableJsonRpcWebApi true

    3. Перезапустим контейнер:

       docker restart softethervpn
  2. Имеет смысл скрыть все неиспользуемые нами порты. В моем случае все кроме 443. Для этого комментируем в файлеdocker-compose.yaml строки с лишними портами

        ports:       # L2TP/IPSec       #- "500:500/udp"       #- "4500:4500/udp"       #- "1701:1701/tcp"       # OpenVPN/SSTP       - "443:443/tcp"       #- "1194:1194/udp"       # SoftEther VPN (recommended by vendor)       #- "5555:5555/tcp"       #- "992:992/tcp" 

Готово

Теперь у нас под рукой есть многопользовательский VPN Server с набором протоколов которые можно перебирать в надежде достучаться до рабочего варианта в случае известных форс-мажоров. Всем спасибо!

ссылка на оригинал статьи https://habr.com/ru/post/566650/


Комментарии

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *