ПР. Организация защищённого канала
Кратко:
- VPN (Virtual Private Network) используется для защиты передаваемых данных между локальной инфраструктурой и облаком.
- VPN-туннель - канал передачи данных между двумя узлами, VPN-шлюзом и VPN-клиентом.
- Для создания VPN-туннеля необходимо идентифицировать узлы, определить протоколы и алгоритмы шифрования.
- IPSec (Internet Protocol Security) - популярный стандарт для создания VPN-туннелей.
- В статье представлен урок по настройке IPSec VPN-туннеля между двумя VPN-шлюзами с использованием демона strongSwan.
- Для практической работы необходимы сеть и подсеть в Yandex Cloud, тестовая виртуальная машина без публичного IP-адреса и две VPN-инстанса (одна для создания IPSec-инстанса, другая для использования в качестве удалённого шлюза).
- В статье представлены шаги по настройке IPSec-шлюзов и проверке созданного VPN-туннеля.
Практическая работа. Организация защищённого канала
Защита данных, передаваемых между вашей локальной инфраструктурой и облаком, — важный элемент информационной безопасности. А удалённая работа, которая получила распространение в период пандемии коронавируса и сейчас закрепилась в практиках многих компаний, сделала эту задачу ещё более актуальной.
Чтобы защитить передаваемую информацию, используют VPN (Virtual Private Network) — технологию, позволяющую развернуть защищённое сетевое соединение «поверх» незащищённой сети (чаще всего это интернет). VPN-соединение представляет собой канал передачи данных между двумя узлами. Этот канал обычно называют VPN-туннелем. Если за одним из узлов находится целая сеть, то его называют VPN-шлюзом.
Механизм работы VPN:
- Перед созданием туннеля узлы идентифицируют друг друга, чтобы удостовериться, что шифрованные данные будут отправлены на нужный узел.
- На обоих узлах нужно заранее определить, какие протоколы будут использоваться для шифрования и обеспечения целостности данных.
- Узлы сверяют настройки, чтобы договориться об используемых алгоритмах. Если настройки разные, туннель не создаётся.
- Если сверка прошла успешно, то создаётся ключ, который используется для симметричного шифрования.
Этот механизм регламентируют несколько стандартов. Один из самых популярных — IPSec (Internet Protocol Security).
На этом уроке вы научитесь настраивать IPSec VPN-туннель между двумя VPN-шлюзами с помощью демона strongSwan. Один шлюз вы настроите на виртуальной машине в Yandex Cloud, второй — на своей локальной машине или виртуальной машине в другой облачной сети.
Шаг 1. Создание ресурсов
Для практической работы вам понадобится сеть и подсеть в Yandex Cloud, а также созданная в этой подсети тестовая ВМ без публичного IP-адреса. Создайте эти ресурсы, если у вас их нет.
Теперь создадим IPSec-инстанс — ВМ, которая будет служить шлюзом для IPSec-туннеля. Чтобы это сделать:
- Откройте ваш каталог, нажмите кнопку Создать ресурс и выберите пункт Виртуальная машина.
- В поле Имя задайте имя ВМ, например
ipsec-instance. - Выберите зону доступности, где находится подсеть, к которой будет подключён IPSec-инстанс, и тестовая ВМ.
- В разделе Выбор образа/загрузочного диска перейдите в блок Cloud Marketplace и выберите образ IPSec-инстанс.

- В блоке Сетевые настройки выберите нужную сеть, подсеть и назначьте ВМ публичный IP-адрес из списка или автоматически.
Важно использовать только статические публичные IP-адреса из списка или сделать IP-адрес ВМ статическим после её создания. Динамический IP-адрес может измениться после перезагрузки ВМ, и туннель перестанет работать.
-
В блоке Доступ укажите логин и SSH-ключ для доступа к ВМ.
-
Нажмите кнопку Создать ВМ.
Виртуальная машина готова.
Шаг 2. Настраиваем IPSec
Теперь настроим шлюз с публичным IP-адресом, который будет устанавливать IPSec-соединение с удалённым шлюзом (вашей локальной машиной или ВМ в другой облачной сети).
Вы можете создать в своём каталоге ещё одну облачную сеть с подсетью, создать в ней IPSec-инстанс из образа и использовать его в качестве удалённого шлюза. Либо можно использовать в качестве шлюза машину в вашей локальной сети. Вам понадобится публичный IP-адрес удалённого шлюза и CIDR подсети.
Допустим, публичный IP-адрес вашего шлюза —
130.193.32.25, а за ним находится подсеть c префиксом подсети CIDR 10.128.0.0/24. Шлюз будет устанавливать IPSec-соединение с удалённым шлюзом с IP-адресом, например, 1.1.1.1, за которым находится подсеть с префиксом подсети CIDR 192.168.0.0/24.- Подключитесь к ВМ IPSec-инстанс по SSH:
ssh <имя пользователя>@130.193.32.25
- Откройте конфигурацию IPSec:
sudo nano /etc/ipsec.conf
- В разделе
config setupфайла конфигурации задайте следующие параметры:config setup charondebug="all" uniqueids=yes strictcrlpolicy=no
-
Добавьте новый раздел с описанием тестового соединения, например
conn cloud-to-hq. -
Задайте параметры тестового соединения:
leftid — публичный IP-адрес IPSec-инстанса.leftsubnet — CIDR подсети, к которой подключён IPSec-инстанс.right — публичный IP-адрес шлюза на другом конце VPN-туннеля.rightsubnet — CIDR подсети, к которой подключён VPN-шлюз на другом конце VPN-туннеля.Параметры ike и esp — это алгоритмы шифрования, которые поддерживаются на удалённом шлюзе. Перечень поддерживаемых алгоритмов можно посмотреть на сайте strongSwan: IKEv1 и IKEv2.
-
Укажите остальные настройки, консультируясь с документацией strongSwan и учитывая настройки удалённого шлюза.
-
У вас должна получиться примерно такая конфигурация:
conn cloud-to-hq authby=secret left=%defaultroute leftid=130.193.32.25 leftsubnet=10.128.0.0/24 right=1.1.1.1 rightsubnet=192.168.0.0/24 ike=aes256-sha2_256-modp1024! esp=aes256-sha2_256! keyingtries=0 ikelifetime=1h lifetime=8h dpddelay=30 dpdtimeout=120 dpdaction=restart auto=start
-
Сохраните изменения и закройте файл.
-
Откройте файл
/etc/ipsec.secretsи укажите в нём пароль для установки соединения:130.193.32.25 1.1.1.1 : PSK "<пароль>"
- Перезапустите strongSwan:
sudo systemctl restart strongswan-starter
Шаг 3. Настраиваем статическую маршрутизацию
Теперь нужно настроить маршрутизацию между IPSec-инстансом и тестовой ВМ без публичного IP-адреса. Для этого создадим таблицу маршрутизации и добавим в неё статические маршруты.
- Откройте сервис Virtual Private Cloud в каталоге, где требуется создать статический маршрут.
- Выберите раздел Таблицы маршрутизации в панели слева и нажмите кнопку Создать таблицу маршрутизации.
- Задайте имя таблицы маршрутизации, выберите сеть, в которой требуется её создать, и нажмите кнопку Добавить маршрут.
- В открывшемся окне введите префикс подсети назначения на удалённой стороне, в примере это
192.168.0.0/24.

- В поле Next hop укажите внутренний IP-адрес IPSec-шлюза и нажмите кнопку Добавить.
- Нажмите кнопку Создать таблицу маршрутизации.
- Чтобы использовать статические маршруты, нужно привязать таблицу маршрутизации к подсети. Для этого в разделе Подсети, в строке нужной подсети, нажмите кнопку … и в открывшемся меню выберите пункт Привязать таблицу маршрутизации.

- В открывшемся окне выберите созданную таблицу и нажмите кнопку Привязать. Созданный маршрут можно применять и к другим подсетям этой сети.
Шаг 4. Настраиваем IPSec на другом шлюзе
Для работы VPN-туннеля нужно настроить второй шлюз.
- Настройте strongSwan аналогично первому IPSec-шлюзу, но с зеркальными настройками IP-адресов и подсетей в файле
/etc/ipsec.conf. Должна получиться такая конфигурация:conn hq-to-cloud authby=secret left=%defaultroute leftid=1.1.1.1 leftsubnet=192.168.0.0/24 right=130.193.32.25 rightsubnet=10.128.0.0/24 ike=aes256-sha2_256-modp1024! esp=aes256-sha2_256! keyingtries=0 ikelifetime=1h lifetime=8h dpddelay=30 dpdtimeout=120 dpdaction=restart auto=start
- Укажите пароль для соединения в файле
/etc/ipsec.secrets, указав IP-адреса шлюзов в обратном порядке:1.1.1.1 130.193.32.25 : PSK "<пароль>"
- Перезапустите strongSwan:
sudo systemctl restart strongswan-starter
Шаг 5. Проверяем, что всё работает
Чтобы убедиться, что туннель между шлюзами установлен, выполните на любом из шлюзов команду:
sudo ipsec status
Если всё в порядке, то у вас должно появиться примерно такое сообщение:
Security Associations (1 up, 0 connecting):
hq-to-cloud[3]: ESTABLISHED 29 minutes ago, 10.128.0.26[130.193.33.12]...192.168.0.23[1.1.1.1]
hq-to-cloud{3}: INSTALLED, TUNNEL, reqid 3, ESP in UDP SPIs: c7fa371d_i ce8b91ad_o
hq-to-cloud{3}: 10.128.0.0/24 === 192.168.0.0/24
Статус
ESTABLISHED означает, что туннель между шлюзами создан.Сведения об установке и работе соединения находятся в логах strongSwan. Просмотреть логи можно с помощью команды:
sudo journalctl -u strongswan-starter
Проверить статус демона strongSwan можно командой:
systemctl status strongswan-starter
Осталось проверить связность соединения. Для этого создайте ещё одну тестовую виртуальную машину за вторым шлюзом, а затем пропингуйте одну тестовую машину с другой.
Поздравляем, ваше соединение с облаком безопасно!
Если вы не планируете использовать созданный VPN-туннель, удалите ненужные ресурсы.