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

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

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

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

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/