Как настроить IPsec-VPN с Strongswan на Debian и Ubuntu

strongSwan – это открытый исходный код, кросс-платформенный, полностью функциональный и широко используемый реализация VPN (Virtual Private Network) на основе IPsec, которая работает на Linux, FreeBSD, OS X, Windows, Android и iOS. В основном это демон ключей, который поддерживает протоколы Internet Key Exchange (IKEv1 и IKEv2) для установления безопасных ассоциаций (SA) между двумя узлами.

В этой статье описывается, как настроить шлюзы IPSec VPN между сайтами с использованием strongSwan на Ubuntu и Debian серверах. Под между сайтами мы подразумеваем, что за каждым безопасным шлюзом находится подсеть. Кроме того, узлы будут аутентифицировать друг друга с использованием предварительно совместно используемого ключа (PSK).

Тестовая среда

Не забудьте заменить следующие IP-адреса на реальные IP-адреса вашего мира для настройки вашей среды.

Шлюз сайта 1 (tecmint-devgateway)

OS 1: Debian or Ubuntu
Public IP: 10.20.20.1
Private IP: 192.168.0.101/24
Private Subnet: 192.168.0.0/24

Шлюз сайта 2 (tecmint-prodgateway)

OS 2: Debian or Ubuntu
Public IP:  10.20.20.3
Private IP: 10.0.2.15/24
Private Subnet: 10.0.2.0/24

Шаг 1: Включение пересылки пакетов ядра

1. Во-первых, вам нужно настроить ядро для включения пересылки пакетов, добавив соответствующие системные переменные в файл конфигурации /etc/sysctl.conf на обоих безопасных шлюзах.

$ sudo vim /etc/sysctl.conf

Найдите следующие строки и раскомментируйте их, а также установите их значения, как показано (прочитайте комментарии в файле для получения дополнительной информации).

net.ipv4.ip_forward = 1 
net.ipv6.conf.all.forwarding = 1 
net.ipv4.conf.all.accept_redirects = 0 
net.ipv4.conf.all.send_redirects = 0 

2. Далее, загрузите новые настройки, запустив следующую команду.

$ sudo sysctl -p
Load Sysctl Kernel Settings

3. Если у вас включена служба брандмауэра UFW, вам нужно добавить следующие правила в файл конфигурации /etc/ufw/before.rules прямо перед правилами фильтрации на обоих шлюзах безопасности.

Шлюз 1 сайта (tecmint-devgateway)

*nat
:POSTROUTING ACCEPT [0:0]
-A POSTROUTING -s 10.0.2.0/24  -d 192.168.0.0/24 -j MASQUERADE
COMMIT

Шлюз 2 сайта (tecmint-prodgateway)

*nat
:POSTROUTING ACCEPT [0:0]
-A POSTROUTING  -s 192.168.0.0/24 -d 10.0.2.0/24 -j MASQUERADE
COMMIT

4. После добавления правил брандмауэра примените новые изменения, перезапустив UFW, как показано.

$ sudo ufw disable 
$ sudo ufw enable

Шаг 2: Установка strongSwan в Debian и Ubuntu

5. Обновите кэш пакетов на обоих шлюзах безопасности и установите пакет strongswan с помощью менеджера пакетов APT.

$ sudo apt update
$ sudo apt install strongswan 

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

$ sudo systemctl status strongswan.service
$ sudo systemctl is-enabled strongswan.service

Шаг 3: Настройка шлюзов безопасности

7. Далее, вам нужно настроить шлюзы безопасности, используя файл конфигурации /etc/ipsec.conf.

Шлюз 1 сайта (tecmint-devgateway)

$ sudo cp /etc/ipsec.conf /etc/ipsec.conf.orig
$ sudo nano /etc/ipsec.conf 

Скопируйте и вставьте следующую конфигурацию в файл.

config setup
        charondebug="all"
        uniqueids=yes
conn devgateway-to-prodgateway
        type=tunnel
        auto=start
        keyexchange=ikev2
        authby=secret
        left=10.20.20.1
        leftsubnet=192.168.0.101/24
        right=10.20.20.3
        rightsubnet=10.0.2.15/24
        ike=aes256-sha1-modp1024!
        esp=aes256-sha1!
        aggressive=no
        keyingtries=%forever
        ikelifetime=28800s
        lifetime=3600s
        dpddelay=30s
        dpdtimeout=120s
        dpdaction=restart

Шлюз сайта 2 (tecmint-prodgateway)

$ sudo cp /etc/ipsec.conf /etc/ipsec.conf.orig
$ sudo nano /etc/ipsec.conf 

Скопируйте и вставьте следующую конфигурацию в файл.

config setup
        charondebug="all"
        uniqueids=yes
conn prodgateway-to-devgateway
        type=tunnel
        auto=start
        keyexchange=ikev2
        authby=secret
        left=10.20.20.3
        leftsubnet=10.0.2.15/24
        right=10.20.20.1
        rightsubnet=192.168.0.101/24 
        ike=aes256-sha1-modp1024!
        esp=aes256-sha1!
        aggressive=no
        keyingtries=%forever
        ikelifetime=28800s
        lifetime=3600s
        dpddelay=30s
        dpdtimeout=120s
        dpdaction=restart

Здесь приведено значение каждого параметра конфигурации:

  • config setup – указывает общую конфигурационную информацию для IPSec, которая применяется ко всем соединениям.
  • charondebug – определяет, какое количество отладочного вывода Charon должно быть зарегистрировано.
  • uniqueids – указывает, должен ли определенный идентификатор участника оставаться уникальным.
  • conn prodgateway-to-devgateway – определяет имя соединения.
  • type – определяет тип соединения.
  • auto – как обрабатывать соединение при запуске или перезапуске IPSec.
  • keyexchange – определяет версию протокола IKE, которую следует использовать.
  • authby – определяет, как должны аутентифицироваться пиры друг с другом.
  • left – определяет IP-адрес общедоступного сетевого интерфейса левого участника.
  • leftsubnet – указывает частную подсеть за левым участником.
  • right – указывает IP-адрес общедоступного сетевого интерфейса правого участника.
  • rightsubnet – указывает частную подсеть за левым участником.
  • ike – определяет список алгоритмов шифрования/аутентификации IKE/ISAKMP SA, которые будут использоваться. Можно добавить список, разделенный запятыми.
  • esp – определяет список алгоритмов шифрования/аутентификации ESP, которые будут использоваться для соединения. Можно добавить список, разделенный запятыми.
  • aggressive – указывает, следует ли использовать режим Aggressive или Main Mode.
  • keyingtries – указывает количество попыток, которые должны быть предприняты для установки соединения.
  • ikelifetime – указывает, как долго канал установки ключей соединения должен длиться перед повторной установкой.
  • lifetime – определяет, как долго должно длиться определенное соединение, от успешной установки до истечения срока действия.
  • dpddelay – задает интервал времени, с которым отправляются сообщения R_U_THERE/INFORMATIONAL обмена с партнером.
  • dpdtimeout – задает интервал времени ожидания, после которого все соединения с партнером удаляются в случае бездействия.
  • dpdaction – определяет, как использовать протокол обнаружения неработающего партнера (Dead Peer Detection, DPD) для управления соединением.

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

$ man ipsec.conf

Шаг 4: Настройка PSK для аутентификации точка-точка

8. После настройки обоих безопасных шлюзов сгенерируйте безопасный PSK, который будет использоваться пирами с помощью следующей команды.

$ head -c 24 /dev/urandom | base64
Generate PSK Key

9. Далее, добавьте PSK в файл /etc/ipsec.secrets на обоих шлюзах.

$ sudo vim /etc/ipsec.secrets

Скопируйте и вставьте следующую строку.

------- Site 1 Gateway (tecmint-devgateway) ------- 

10.20.20.1 10.20.20.3 : PSK "qLGLTVQOfqvGLsWP75FEtLGtwN3Hu0ku6C5HItKo6ac="

------- Site 2 Gateway (tecmint-prodgateway) -------

10.20.20.3  10.20.20.1 : PSK "qLGLTVQOfqvGLsWP75FEtLGtwN3Hu0ku6C5HItKo6ac="

10. Перезапустите программу IPSec и проверьте её статус, чтобы просмотреть соединения.

$ sudo ipsec restart
$ sudo ipsec status
View IPSec Connection Status

11. В конце, убедитесь, что вы можете получить доступ к частным подсетям с любых из шлюзов безопасности, выполнив команду ping.

$ ping 192.168.0.101
$ ping 10.0.2.15
Verify Site-to-Site VPN Setup

12. Кроме того, вы можете остановить и запустить IPSec, как показано.

$ sudo ipsec stop
$ sudo ipsec start

13. Чтобы узнать больше о командах IPSec для ручного подключения и другом, смотрите страницу помощи IPSec.

$ ipsec --help

Вот и всё! В этой статье мы описали, как настроить межсетевой IPSec VPN с использованием strongSwan на серверах Ubuntu и Debian, где оба шлюза безопасности были настроены на взаимную аутентификацию с использованием PSK. Если у вас есть вопросы или предложения, свяжитесь с нами через форму обратной связи ниже.

Source:
https://www.tecmint.com/setup-ipsec-vpn-with-strongswan-on-debian-ubuntu/