Самостоятельное размещение VPN-сервера с IPsec/L2TP, Cisco IPsec и IKEv2

Подробное руководство по созданию собственного VPN-сервера с использованием IPsec/L2TP, Cisco IPsec и IKEv2. Обеспечьте безопасность своей сети с помощью самостоятельного размещения VPN.

Не указано

Подготовка системы

Обновляем систему и настраиваем базовую безопасность

sudo apt update && sudo apt upgrade -y
sudo ufw allow OpenSSH
sudo ufw enable
adduser newuser
usermod -aG sudo newuser
sudo nano /etc/ssh/sshd_config
# Раскомментируйте и измените: PasswordAuthentication no
sudo systemctl restart sshd

Установка VPN-сервера

Клонируем репозиторий и запускаем установочный скрипт

git clone https://github.com/hwdsl2/setup-ipsec-vpn.git
cd setup-ipsec-vpn
sudo bash setup-ipsec-vpn.sh

Добавление пользователей

Создаем VPN-пользователей с хешированными паролями

echo "username:$(openssl passwd -1 -salt $(head -c 100 /dev/urandom | od -An -N 4 -tu4 | cut -c2-) 'yourpassword')" | sudo tee -a /etc/ipsec.d/passwd

Настройка IPsec/L2TP

Конфигурируем параметры IPsec/L2TP в /etc/ipsec.conf

config l2tp-psk
    auth sha256
    pfs sha256
    rekey no
    keyingtries 3
    dpdaction clear
    dpddelay 10
    left %defaultroute
    leftprotoport=17/1701
    rightprotoport=17/0
    auto=add
    leftid=%any
    leftsourceip=%config
    right=%any
    rightid=%any
    rightsourceip=%no
    ike-frag=no
    ike= aes256-sha2,aes128-sha2,aes256-sha1,aes128-sha1!
    phase2alg= aes256-sha2,aes128-sha2,aes256-sha1,aes128-sha1!
    sha2-truncbug=no

Настройка Cisco IPsec

Добавляем конфигурацию для Cisco IPsec

config cisco-unity
    auth sha256
    pfs sha256
    rekey no
    keyingtries 3
    dpdaction clear
    dpddelay 10
    left %defaultroute
    leftprotoport=17/1701
    rightprotoport=17/0
    auto=add
    leftid=%any
    leftsourceip=%config
    right=%any
    rightid=%any
    rightsourceip=%no
    ike-frag=no
    ike= aes256-sha2,aes128-sha2,aes256-sha1,aes128-sha1!
    phase2alg= aes256-sha2,aes128-sha2,aes256-sha1,aes128-sha1!
    sha2-truncbug=no
    modecfgpull=yes
    xauthby=file
    xauthclient=yes
    ikev2=never

Настройка IKEv2

Настраиваем параметры для стабильного IKEv2 соединения

config ikev2
    auth sha256
    pfs sha256
    rekey no
    keyingtries 3
    dpdaction clear
    dpddelay 10
    left %defaultroute
    leftprotoport=17/0
    rightprotoport=17/0
    auto=add
    leftid=%any
    leftsourceip=%config
    right=%any
    rightid=%any
    rightsourceip=%no
    ike-frag=no
    ike= aes256-sha2-modp1024,aes128-sha2-modp1024,aes256-sha1-modp1024,aes128-sha1-modp1024!
    phase2alg= aes256-sha2,aes128-sha2,aes256-sha1,aes128-sha1!
    sha2-truncbug=no
    ikev2=insist
    fragmentation=yes
    forceencaps=yes
    modecfgpull=yes
    xauthby=file
    xauthclient=yes

Настройка брандмауэра

Открываем необходимые порты для VPN и SSH

sudo ufw allow 500,4500/udp  # Для IPsec
sudo ufw allow 1701/udp     # Для L2TP
sudo ufw allow 22/tcp        # Для SSH
sudo ufw enable

Отключение ненужных сервисов

Останавливаем неиспользуемые службы и отключаем IPv6

sudo systemctl stop cups
sudo systemctl disable cups
# Добавляем в /etc/sysctl.conf:
net.ipv6.conf.all.disable_ipv6 = 1
net.ipv6.conf.default.disable_ipv6 = 1
net.ipv6.conf.lo.disable_ipv6 = 1
sudo sysctl -p

Настройка автоматического обновления

Включаем автоматическое обновление системы

sudo apt install unattended-upgrades
sudo dpkg-reconfigure unattended-upgrades

Проверка статуса

Мониторинг работы VPN-сервера

sudo ipsec status
sudo ipsec statusall
sudo tail -f /var/log/syslog | grep ipsec
sudo tail -f /var/log/xl2tpd.log

Создание резервной копии

Регулярное резервное копирование конфигурационных файлов

sudo tar -czvf vpn-backup.tar.gz /etc/ipsec.conf /etc/ipsec.secrets /etc/xl2tpd/xl2tpd.conf /etc/ppp/chap-secrets /etc/ppp/options.xl2tpd
# Добавьте в cron:
# 0 3 * * * tar -czvf /home/user/backup/vpn-backup-$(date +\%Y\%m\%d).tar.gz /etc/ipsec.conf /etc/ipsec.secrets /etc/xl2tpd/xl2tpd.conf /etc/ppp/chap-secrets /etc/ppp/options.xl2tpd