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)
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
Site 2 Gateway (sedicomm-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 nano /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 непосредственно перед правилами фильтрации в любом из шлюзов безопасности:
Site 1 Gateway (sedicomm-devgateway)
*nat
:POSTROUTING ACCEPT [0:0]
-A POSTROUTING -s 10.0.2.0/24 -d 192.168.0.0/24 -j MASQUERADE
COMMIT
Site 2 Gateway (sedicomm-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:
Site 1 Gateway (sedicomm-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
Site 2 Gateway (sedicomm-prodgateway)
$ sudo cp /etc/ipsec.conf /etc/ipsec.conf.orig
$ sudo cp /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 режим.
- keyingtries — указывает количество попыток согласования соединения.
- ikelifetime — указывает, как долго должен быть доступным канал соединения ключей до повторного согласования.
- lifetime — определяет, как долго должен длиться конкретный экземпляр соединения, от успешного согласования до истечения срока действия.
- dpddelay — указывает временной интервал, с которым R_U_THERE/INFORMATIONAL сообщения отправляются одноранговому узлу.
- dpdtimeout — указывает интервал времени ожидания, после которого все соединения с одноранговым узлом удаляются в случае неактивности.
- dpdaction — определяет, как использовать протокол Dead Peer Detection (DPD) для управления соединением.
Для получения дополнительной информации о вышеуказанных параметрах конфигурации прочитайте справочную страницу ipsec.conf, выполнив команду:
$ man ipsec.conf[*code]
<h4>Шаг 4. Настройка PSK для одноранговой аутентификации</h4>
8. После настройки обоих шлюзов безопасности создайте безопасный <strong>PSK</strong>, который будет использоваться узлами с помощью следующей команды:
[code]$ head -c 24 /dev/urandom | base64
9. Затем добавьте PSK в файл /etc/ipsec.secrets на обоих шлюзах:
$ sudo vim /etc/ipsec.secrets
Скопируйте и вставьте следующую строку:
------- Site 1 Gateway (sedicomm-devgateway) -------
10.20.20.1 10.20.20.3 : PSK "qLGLTVQOfqvGLsWP75FEtLGtwN3Hu0ku6C5HItKo6ac="
------- Site 2 Gateway (sedicomm-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 типа «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 с трудоустройством!
- Поможем стать экспертом в сетевом администрировании и получить международные сертификаты Cisco CCNA Routing & Switching или Linux LPI.
- Предлагаем проверенную программу и учебник экспертов из Cisco Networking Academy и Linux Professional Institute, сертифицированных инструкторов и личного куратора.
- Поможем с трудоустройством и сделать карьеру. 100% наших выпускников трудоустраиваются.
- Проводим вечерние онлайн-лекции на нашей платформе или обучайтесь очно на базе Киевского офиса.
- Спросим у вас об удобном времени для практик и подстроимся: понимаем, что времени учиться мало.
- Если хотите индивидуальный график — обсудим и осуществим.
- Выставим четкие дедлайны для самоорганизации. Личный куратор будет на связи, чтобы ответить на вопросы, проконсультировать и мотивировать придерживаться сроков сдачи экзаменов.
- отредактировать резюме;
- подготовиться к техническим интервью;
- подготовиться к конкурсу на понравившуюся вакансию;
- устроим на работу в Cisco по программе Cisco Incubator, New Graduate и Experienced. Наши студенты, которые уже работают там: жмите на #НашиВCisco Вконтакте, #НашиВCisco Facebook.