SSTP (Secure Socket Tunneling Protocol) - это форма туннеля виртуальной частной сети (VPN), которая обеспечивает механизм передачи трафика PPP через канал SSL/TLS.
SSL/TLS обеспечивает безопасность на транспортном уровне с согласованием ключей, шифрованием и проверкой целостности трафика.
Довольно простой VPN, который был разработан компанией Microsoft, имеет ряд приемуществ, таких как нет необходимости устанавливать дополнительное ПО для работы на Windows, поддерживается прямо из коробки, легко настраивается как на стороне сервера, так и на стороне клиента. Из недостатков можно выделить то, что данный VPN довольно медлителен, имеет ограничения в плане конфигурации и не умеет использовать UDP протокол. Несмотря на довольно большие недостатки, в некоторых случаях он может быть полезен.
Рассмотрим установку SSTP VPN сервера на базе SoftEther VPN в Docker, что позволяет еще больше упростить установку данного ПО.
Инструкцию, как подключиться к данному серверу SSTP VPN после настройки, Вы можете найти здесь:
https://zomro.com/rus/blog/faq/413-how-to-connect-to-sstp-vpn-from-windows-10
SoftEther VPN поддерживает и другие протоколы, такие как OpenVPN и L2TP/IPsec, но в данной статье мы рассмотрим только SSTP.
1. Установка Docker
Для установки и запуска службы Docker выполните следующие команды:
wget -qO- https://get.docker.com/ | sh
systemctl start docker
systemctl enable docker
2. Далее нужно открыть порт в файрволле, на котором будет работать VPN и сохранить настройку перманентно:
iptables -I INPUT -p tcp -m tcp --dport 443 -j ACCEPT
service iptables save
На разных дистрибутивах Linux последняя команда может выполняться по-разному.
Обратите внимание, что если на Вашем сервере работают сайты, то нужно будет выбрать другой порт во избежание конфликта портов.
3. Выпуск сертификата.
Теперь нужно выдать сертификат, который будет использован для шифрования соединения, нет необходимости устанавливать для него пароль.
Нам также понадобится домен, через который мы будем подключаться к серверу, домен должен быть обязательно направлен на ip адрес сервера в DNS,
замените слово MYDOMAIN в следующей строке на Ваш домен и затем эту выполните команду:
openssl req -x509 -nodes -newkey rsa:4096 -keyout server_key.pem -out server_cert.pem -days 365 -subj "/C=XX/ST=XX/L=XX/O=XX/OU=XX/CN=MYDOMAIN/[email protected]"
Я для примера укажу домен example.com, Вам же нужно указать реальный работающий домен, иначе VPN не сможет подключиться.
Получаем файлы секретного ключа server_key.pem и сертификата server_cert.pem в текущей папке.
4. Запуск SoftEther VPN.
Создадим пароль сервера, данный пароль будет использоваться только на сервере и только для проведения настроек.
Замените слово MYPASSWORD на Ваш придуманный пароль (пароль должен быть минимум 12 символов, включающий цифры, большие и маленькие буквы) и затем введите следующую команду в консоли:
SERVER_PASS='MYPASSWORD';
Теперь создадим нашего пользователя и его пароль. с которыми мы будем подключаться, запишите эти данные, так как их нужно будет позже вводить на Вашем компьютере:
Замените слово MYUSER на имя Вашего соединения, а слово MYPASSWORD на Ваш придуманный пароль (пароль должен быть минимум 12 символов, включающий цифры, большие и маленькие буквы), затем введите эти строчки в консоли:
CUSER='MYUSER';
CUSER_PASS='MYPASSWORD';
Я буду использовать "client1" в качестве имени пользователя.
Скачиваем и запускаем контейнер с SoftEther VPN, передавая ранее указанные параметры и прикрепляем ранее созданный сертификат, для этого просто запустите следующую команду:
docker run --restart=always -d --name sstp-vpn --cap-add NET_ADMIN -p 443:443/tcp -e SSTP_ENABLED=1 -e USERNAME=${CUSER} -e PASSWORD=${CUSER_PASS} -e SERVER_PWD=${SERVER_PASS} -e CERT="$(cat server_cert.pem)" -e KEY="$(cat server_key.pem)" fernandezcuesta/softethervpn
Проверим, что наш контейнер запущен и работает:
docker ps
5. Создание дополнительного пользователя (не обязательно)
Если Вам потом понадобится создать еще несколько подключений, то нужно выполнить следующие команды для каждого пользователя (подключения):
docker exec -it sstp-vpn ./vpncmd <MYDOMAIN> /SERVER /PASSWORD:"$SERVER_PASS" /ADMINHUB:DEFAULT /CSV /CMD UserCreate <USER_NAME> /GROUP:none /REALNAME:none /NOTE:none
docker exec -it sstp-vpn ./vpncmd <MYDOMAIN> /SERVER /PASSWORD:"$SERVER_PASS" /ADMINHUB:DEFAULT /CSV /CMD UserPasswordSet <USER_NAME> /PASSWORD:<PASSWORD>
Где нужно заменить:
<MYDOMAIN> - заменить на доменное имя, которе Вы указывали ранее при выдаче сертификата
<USER_NAME> - заменить на имя нового соединения (пользователя)
<PASSWORD> - заменить на пароль нового соединения (пользователя)
На сервере настройка окончена, рассмотрим настройку на стороне клиента и подключение к данному VPN в следующей статье:
https://zomro.com/rus/blog/faq/413-how-to-connect-to-sstp-vpn-from-windows-10