Strongswan — это кроссплатформенная, полнофункциональная и широко используемая реализация VPN с открытым исходным кодом, работающая на Linux, FreeBSD, OS X, Windows, Android и iOS. Это прежде всего демон управления ключами, который поддерживает протоколы обмена ключами в Интернете (IKEv1 и IKEv2) для установления security associations (SA) между двумя узлами. Но как настроить VPN (site-to-site) на основе IPsec с помощью Strongswan в Debian и Ubuntu?
В этой статье мы опишем, как настроить межсетевые шлюзы IPSec VPN с использованием StrongSwan на серверах Ubuntu и Debian. Под сервером мы подразумеваем, что у каждого шлюза безопасности есть подсеть. Кроме того, одноранговые узлы будут аутентифицировать друг друга, используя предварительный общий ключ (PSK).
Тестовая среда
Не забудьте заменить следующие IP-адреса реальными IP-адресами для настройки среды:
Site 1 Gateway (sedicomm-devgateway)
Site 2 Gateway (sedicomm-prodgateway)
Шаг 1. Включение пересылки пакетов в ядре
1. Во-первых, вам нужно настроить ядро для включения пересылки пакетов, добавив соответствующие системные переменные в файл конфигурации /etc/sysctl.conf на обоих шлюзах безопасности:
Найдите следующие строки, раскомментируйте их и установите их значения, как показано ниже (для получения дополнительной информации прочитайте комментарии в файле):
2. Затем загрузите новые настройки, выполнив следующую команду:
3. Если у вас включена служба брандмауэра UFW, вам нужно добавить следующие правила в файл конфигурации /etc/ufw/before.rules непосредственно перед правилами фильтрации в любом из шлюзов безопасности:
Site 1 Gateway (sedicomm-devgateway)
Site 2 Gateway (sedicomm-prodgateway)
4. После добавления правил брандмауэра примените новые изменения, перезапустив UFW, как показано ниже:
Шаг 2: Установка strongSwan в Debian и Ubuntu
5. Обновите кэш пакетов на обоих шлюзах безопасности и установите пакет strongswan с помощью диспетчера пакетов APT:
6. После завершения установки сценарий установщика запустит службу strongswan и включит её автоматический запуск при загрузке системы. Вы можете проверить его статус и узнать, включен ли он, используя следующую команду:
Шаг 3: Настройка шлюзов безопасности
7. Далее необходимо настроить шлюзы безопасности с помощью файла конфигурации /etc/ipsec.conf:
Site 1 Gateway (sedicomm-devgateway)
Скопируйте и вставьте следующую конфигурацию в файл:
Site 2 Gateway (sedicomm-prodgateway)
Скопируйте и вставьте следующую конфигурацию в файл:
Вот значение каждого параметра конфигурации:
- 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 режим.
- keyingtries — указывает количество попыток согласования соединения.
- ikelifetime — указывает, как долго должен быть доступным канал соединения ключей до повторного согласования.
- lifetime — определяет, как долго должен длиться конкретный экземпляр соединения, от успешного согласования до истечения срока действия.
- dpddelay — указывает временной интервал, с которым R_U_THERE/INFORMATIONAL сообщения отправляются одноранговому узлу.
- dpdtimeout — указывает интервал времени ожидания, после которого все соединения с одноранговым узлом удаляются в случае неактивности.
- dpdaction — определяет, как использовать протокол Dead Peer Detection (DPD) для управления соединением.
Для получения дополнительной информации о вышеуказанных параметрах конфигурации прочитайте справочную страницу ipsec.conf, выполнив команду:
Шаг 4. Настройка PSK для одноранговой аутентификации
8. После настройки обоих шлюзов безопасности создайте безопасный PSK, который будет использоваться узлами с помощью следующей команды:
9. Затем добавьте PSK в файл /etc/ipsec.secrets на обоих шлюзах:
Скопируйте и вставьте следующую строку:
10. Перезапустите программу IPSec и проверьте её состояние для просмотра подключений:
11. Наконец, убедитесь, что вы можете получить доступ к частным подсетям с любого шлюза безопасности, выполнив команду ping:
12. Кроме того, вы можете остановить и запустить IPSec, как показано ниже:
13. Чтобы узнать больше о командах IPSec для мануального установления соединений и многого другого, посетите справочную страницу IPSec:
На этом всё! В этой статье мы описали, как настроить IPSec VPN типа «site-to-site» с использованием strongSwan на серверах Ubuntu и Debian, где оба шлюза безопасности были настроены для аутентификации друг друга с помощью PSK. Если у вас есть какие-либо вопросы или мысли, делитесь ими с нами ниже.
Спасибо за уделенное время на прочтение статьи о том, как настроить VPN (site-to-site) на основе IPsec с помощью Strongswan в Debian и Ubuntu!
Если возникли вопросы, задавайте их в комментариях.
Подписывайтесь на обновления нашего блога и оставайтесь в курсе новостей мира инфокоммуникаций!
Чтобы знать больше и выделяться знаниями среди толпы IT-шников, записывайтесь на курсы Cisco, курсы по кибербезопасности, полный курс по кибербезопасности, курсы DevNet (программируемые сети) от Академии Cisco, курсы Linux от Linux Professional Institute на платформе SEDICOMM University (Университет СЭДИКОММ).
Курсы Cisco, Linux, кибербезопасность, DevOps / DevNet, Python с трудоустройством!
- Поможем стать экспертом по сетевой инженерии, кибербезопасности, программируемым сетям и системам и получить международные сертификаты Cisco, Linux LPI, Python Institute.
- Предлагаем проверенную программу с лучшими учебниками от экспертов из Cisco Networking Academy, Linux Professional Institute и Python Institute, помощь сертифицированных инструкторов и личного куратора.
- Поможем с трудоустройством и стартом карьеры в сфере IT — 100% наших выпускников трудоустраиваются.
- Проведем вечерние онлайн-лекции на нашей платформе.
- Согласуем с вами удобное время для практик.
- Если хотите индивидуальный график — обсудим и реализуем.
- Личный куратор будет на связи, чтобы ответить на вопросы, проконсультировать и мотивировать придерживаться сроков сдачи экзаменов.
- Всем, кто боится потерять мотивацию и не закончить обучение, предложим общение с профессиональным коучем.
- отредактировать или создать с нуля резюме;
- подготовиться к техническим интервью;
- подготовиться к конкурсу на понравившуюся вакансию;
- устроиться на работу в Cisco по специальной программе. Наши студенты, которые уже работают там: жмите на #НашиВCisco Вконтакте, #НашиВCisco Facebook.
6 комментариев. Оставить новый
У вас сбилась разметка в шаг 4, п. 8. А так статья хорошая, хоть и переводная.
левый ip правый ip ага все понял от души
RTR-R / RTR-L
apt install libreswan
nano /etc/ipsec.conf
RTR-L
config setup
conn vpn
auto=start
authby=secret
type=tunnel
ike=aes128-sha2;dh14
ikev2=no
phase2=esp
pfs=no
encapsulation=yes
leftsubnet=0.0.0.0/0
rightsubnet=0.0.0.0/0
left=4.4.4.100
right=5.5.5.100
rightid=5.5.5.100
mark=5/0oxffffffff (их 8 F)
vti-inetrface=vti01
vti-routing=no
vti-shared=yes
leftvti=192.168.20.1/30
rightvti=192.168.20.2/30
nano /etc/ipsec.d/test.secrets
%any %any : PSK “P@ssw0rd123#”
systemctl enable ipsec
systemctl restart ipsec
RTR-R
config setup
conn vpn
auto=start
authby=secret
type=tunnel
ike=aes128-sha2;dh14
ikev2=no
phase2=esp
pfs=no
encapsulation=yes
leftsubnet=0.0.0.0/0
rightsubnet=0.0.0.0/0
left=4.4.4.100
leftid=4.4.4.100
right=5.5.5.100
mark=5/0oxffffffff (их 8 F)
vti-inetrface=vti01
vti-routing=no
vti-shared=yes
leftvti=192.168.20.1/30
rightvti=192.168.20.2/30
nano /etc/ipsec.d/test.secrets
%any %any : PSK “P@ssw0rd123#”
systemctl enable ipsec
systemctl restart ipsec
Кто знает, как полдключиться к strongswan с винды как Machine Certificate?
Что только не перепробовал, винда не видит сертификат. Как его праввильно устанавливать?
А вто же время User certificate работает без проблем как EAP-TLS
Здравствуйте, часто встречаю подобный пример и возникает вопрос зачем здесь NAT ведь вы построили s2s ipsec пусть маршрутизация работает, зачем все запросы пришедшие из сети sedicomm-devgateway в сеть sedicomm-prodgateway NAT’ить в адрес шлюза sedicomm-prodgateway?
>>/etc/strongswan/ipsec.conf
conn gre
auto=start
type=tunnel
authby=secret
left=
right=
leftsubnet=0.0.0.0/0
rightsubnet=0.0.0.0/0
leftprotoport=gre
rightprotoport=gre
ike=aes256-sha2_256-modp1024!
esp=aes256_sha2_256!
>>/etc/strongswan/ipsec.secrets
: PSK «password»
systemctl enable —now ipsec.service