Найти тему
Александр Linux

Установка SoftEther VPN на Linux сервере Ubuntu

Всем привет!!!

В этой статье моя инструкция по установке SoftEther VPN на Linux сервере под управлением ОС Ubuntu Serever 20.04, но в принципе мануал подойдет к любой версии Ubuntu или даже другому дистрибутиву при самостоятельной установке зависимостей.

Установка SoftEther VPN на Synology NAS • Александр Linux (bafista.ru)SoftEther VPN — продвинутый мульти протокольный и кросс платформенный VPN-сервер и клиент. Этот сервер умеет работать с такими протоколами как L2TP/IPsec, OpenVPN, MS-SSTP, L2TPv3, EtherIP-серверы, а также имеет свой собственный протокол «SSL-VPN», который неотличим от обычного HTTPS-трафика. Может работать не только через TCP/UDP, но и через ICMP (подобно pingtunnel, hanstunnel) и DNS (подобно iodine), работает быстрее других аналогов (по заверению разработчиков). Текущих версия строит L2 и L3 туннели, имеет встроенный DHCP-сервер, поддерживает как kernel-mode, так и user-mode NAT, IPv6, шейпинг, QoS, кластеризацию, load balancing и fault tolerance. Поддерживает операционные системы Windows, Linux, Mac OS, FreeBSD и Solaris и является Open-Source проектом под GPLv2.
SoftEther VPN Project – SoftEther VPN Project
SoftEther VPN Project – SoftEther VPN Project

Так отличие Softether VPN от других аналогов в том, что у него есть отличное приложение Softether VPN Server Manager, которое доступно для Windows и Mac OS. Для Linux доступен только режим через командную строку vpncmd

-2

Так же хочу отметить, что можно создавать несколько хабов с разным поведением VPN для разных задач. Это очень удобно

Всю установку я буду делать на любимом дистрибутиве Linux Ubuntu версия 20.04 LTS

Все команды я буду вводить от имени root. Для этого достаточно ввести:

sudo -i

Первое, что всегда нужно делать это обновить систему:

apt update && apt upgrade -y

Если при обновлении обновились пакеты, то лучше перегрузить систему:

reboot

Теперь, когда система в актуальном состоянии установим зависимости:

apt install build-essential cmake gcc g++ make libncurses5-dev libssl-dev libsodium-dev libreadline-dev zlib1g-dev pkg-config

Затем переходим на офф сайт softether vpn и копируем ссылку на продукт

-3

Когда вы будите устанавливать этот vpn сервер его актуальная версия может поменяться. На данный момент версия такая.

Я предпочитаю устанавливать стороннее ПО в папку opt, поэтому переходим в нее, скачиваем vpn сервер и распаковываем:

cd /opt/
wget https://github.com/SoftEtherVPN/SoftEtherVPN_Stable/releases/download/v4.38-9760-rtm/softether-vpnserver-v4.38-9760-rtm-2021.08.17-linux-x64-64bit.tar.gz
tar xzvf softether-vpnserver-v4.38-9760-rtm-2021.08.17-linux-x64-64bit.tar.gz
cd vpnserver/

В папке /opt/vpnserver будут лежать исполняемый файлы, логи и конфигурация Sofrether VPN сервера.

Настало время скомпилировать наш vpn сервер с исходников. Для этого нам нужна всего одна команда:

make

После компиляции в папке /opt/vpnserver должны появиться бинарные файлы для запуска:

-4

Теперь добавим Softether VPN в автозагрузку как сервис системы. Для этого создадим файл:

nano /lib/systemd/system/softether-vpnserver.service

И добавим в него следующее содержимое:

[Unit]
Description=SoftEther VPN Server
After=network.target auditd.service
ConditionPathExists=!/opt/vpnserver/do_not_run

[Service]
Type=forking
TasksMax=16777216
EnvironmentFile=-/opt/vpnserver
ExecStart=/opt/vpnserver/vpnserver start
ExecStop=/opt/vpnserver/vpnserver stop
KillMode=process
Restart=on-failure

# Hardening
PrivateTmp=yes
ProtectHome=yes
ProtectSystem=full
ReadOnlyDirectories=/
ReadWriteDirectories=-/opt/vpnserver/
CapabilityBoundingSet=CAP_NET_ADMIN CAP_NET_BIND_SERVICE CAP_NET_BROADCAST CAP_NET_RAW CAP_SYS_NICE CAP_SYSLOG CAP_SETUID

[Install]
WantedBy=multi-user.target

Для выхода из режима редактирования и сохранения изменений нажмите Ctrl+x и ответьте y на вопрос.

Включаем сервис Softether VPN в автозагрузку

systemctl enable softether-vpnserver.service

Запустим вручную для проверки

systemctl start softether-vpnserver.service

Статус можно узнать командой:

systemctl status softether-vpnserver.service

Если нужно включить форвардин пакетов силами ядра, вводим команды:

sudo sysctl -w net.ipv4.ip_forward=1
sudo sed -i 's/#net.ipv4.ip_forward=1/net.ipv4.ip_forward=1/' /etc/sysctl.conf

Для проверки вводим такие команды:

cat /etc/sysctl.conf | grep forward
cat /proc/sys/net/ipv4/ip_forward

где 0 – форвардинг отключен, 1 – форвардин включен

Теперь можно первый раз подключиться к нашему SoftEther VPN серверу. Для этого скачиваем и устанавливаем Manager

-5

После установки запускаем программу, нажимаем добавить новый и в открывшемся окне вписываем только имя и IP адрес сервера.

-6

Первый раз пароль вводить не надо. Затем нажимаем ОК и подключаемся к серверу для настройки. Первый раз он предложит установить пароль администратора. Придумываем сложный пароль:

-7

После чего система начнет задавать вопросы, для первоначальной настройки. Выбирайте нужные параметры, но имейте ввиду, что потом их можно поменять в любой момент.

Так же я рекомендую настроить защиту от подбора паролей fail2ban для Softether VPN. Установим fail2ban^

apt install fail2ban

После установки создаем файл фильтров:

nano /etc/fail2ban/filter.d/vpnserver.conf

И наполняем его следующим содержимым:

# Fail2Ban filter for SoftEther authentication failures
# Made by quixrick and Nobody
# Thanks to quixrick from Reddit! https://reddit.com/u/quixrick
# Further reference: http://www.vpnusers.com/viewtopic.php?f=7&t=6375&sid=76707e8a5a16b0c9486a39ba34763901&view=print

[INCLUDES]

# Read common prefixes. If any customizations available -- read them from
# common.local
before = common.conf

#Enable multi line support. Doesn't work with versions < 0.9
[Init]
maxlines = 2
# The regular expression filter follows
[Definition]

failregex =IP address: <HOST>.*\n.*User authentication failed.*
ignoreregex=
Затем редактируем файл:
nano /etc/fail2ban/jail.local
Добавляем в конец следующее:
[vpnserver-udp]
port = 500,1701,4500
enabled = true
protocol = udp
filter = vpnserver
logpath = /opt/vpnserver/security_log/*/sec_*.log

[vpnserver-tcp]
port = 443
enabled = true
protocol = tcp
filter = vpnserver
logpath = /opt/vpnserver/security_log/*/sec_*.log

Нужно создать два контекста, один для tcp, другой для udp иначе fail2ban не сможет заблокировать udp соединения и пароль будут подбирать несмотря на то, что IP адрес заблокирован в правилах. Порты указывайте свои, те которые вы используете.

Рестартуем fail2ban для применения изменений:

systemctl restart fail2ban.service

Теперь защита от подбора паролей включена, но ее нужно до настроить. Как это сделать я расскажу в другой статье.

В этой статье только установка, настройка будет попозже.

Настраивайте ваш личный VPN сервер, подключайте клиентов, желаю удачи!!!

Про Linux • Александр Linux