Общий ключ vpn что это
Перейти к содержимому

Общий ключ vpn что это

  • автор:

IPsec VPN: что это такое и как настроить

/upload/iblock/290/6brv7ny2bm2jb1z4f2nx0s75jpkbhapa/Sover_opt.jpeg

Если вам когда-либо приходилось работать удаленно, возможно, вы использовали VPN для безопасного подключения к ресурсам частной сети вашей компании. Некоторые VPN используют протокол IPsec для установления безопасных соединений. Но что такое VPN и IPsec VPN?

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

Представьте, что вы встречаетесь с клиентом в кафе, и вам нужен доступ к конфиденциальным данным, размещенным на частных серверах вашей компании. Использование незащищенных сетей типа Wi-Fi в кофейне может подвергнуть риску вашу компанию.

VPN позволяют пользователям получать доступ к частной сети и удаленно обмениваться конфиденциальными данными без риска нанести ущерб сетевой инфраструктуре и информации.

Вот несколько причин, чтобы использовать VPN:

  • обеспечение защищенного соединения;
  • обезличивание пользователя во время работы в сети;
  • работа с ресурсами, которые заблокированы пользователям определенной страны.

Традиционная сетевая архитектура состоит из некоторой комбинации разрешенных статических IP-адресов, сопоставления подсетей для удаленных пользователей с использованием групповой политики, брандмауэра, управления маршрутами и шлюза в общедоступном интернете.

IPsec — это безопасный сетевой протокол, который использует шифрование пакетов для обеспечения их безопасной передачи между устройствами внутри сети.

Что такое IPsec VPN?

IPsec VPN — это VPN, которая использует IPsec в качестве протокола для установления безопасных соединений между устройствами. Другие протоколы, используемые VPN, включают SSL/TLS и L2TP. Давайте рассмотрим их подробнее:

  1. TLS, преемник SSL, представляет собой криптографический протокол, обеспечивающий безопасность связи в компьютерной сети. TLS хорошо известен тем, что обеспечивает безопасность HTTPS-соединений.
  2. IPsec — это безопасный сетевой протокол, используемый в VPN для аутентификации и шифрования пакетов.
  3. L2TP — это протокол туннелирования, используемый для поддержки VPN. L2TP сам по себе не обеспечивает надежную аутентификацию. IPSec часто используется для защиты пакетов L2TP. Комбинация этих двух протоколов обычно называется L2TP/IPsec.

Набор протоколов IPsec защищает данные, передаваемые через интернет или любую общедоступную сеть, с помощью шифрования между двумя конечными точками. Они часто применяются для установления взаимной аутентификации между компьютерами в начале сеанса и для согласования криптографических ключей.

VPN сервер IPsec обеспечивает несколько уровней безопасности: аутентификацию для защиты любых изменений в пакетах данных и шифрует данные в каждом пакете.

Существует два режима IPsec VPN:

  • IPsec Tunnel Mode VPN — в этом режиме шифруется весь исходящий пакет. Обычно это реализуется на защищенном шлюзе с использованием брандмауэра или порта маршрутизатора.
  • IPsec Transport Mode VPN — в этом режиме шифруются только полезные данные IP и трейлер ESP, передаваемые между двумя конечными точками. В основном это используется во время сквозной связи и не меняет IP-заголовок исходящего пакета.

Как настроить IPsec VPN-сервер

Настройка IPsec VPN относительно несложная. Рассмотрим, как быстро и автоматически настроить собственный IPsec VPN-сервер в дистрибутивах CentOS/RHEL, Ubuntu и Debian Linux.

Для начала вам понадобится выделенный сервер или виртуальный частный сервер (VPS), на котором установлена ​​одна из следующих ОС:

  • Ubuntu 20.04 (Focal) or 18.04 (Bionic);
  • Debian 11 (Bullseye), 10 (Buster) or 9 (Stretch);
  • CentOS 8 or 7;
  • Rocky Linux 8;
  • AlmaLinux OS 8;
  • Red Hat Enterprise Linux (RHEL) 8 or 7;
  • Amazon Linux 2.

Войдите в VPS через SSH, а затем запустите команды для вашего дистрибутива Linux, чтобы настроить VPN-сервер. По умолчанию скрипт сгенерирует для вас случайные учетные данные VPN (предварительный общий ключ, имя пользователя и пароль VPN) и отобразит их в конце установки.

Однако чтобы использовать свои учетные данные, вам сначала необходимо создать надежный пароль и PSK соответственно с помощью следующих команд:

> openssl rand -base64 106xWSdx0q7hrUAQ==> openssl rand -base64 16bcM90acDBKB6qdmsZM63Vg==

Результатом первой команды является пароль, а результатом второй команды — PSK.

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

VPN_IPSEC_PSK: ‘Your IPsec pre-shared key’VPN_USER: ‘Your VPN user name’VPN_PASSWORD: ‘Your VPN password’

В CentOS/RHEL или Ubuntu/Debian

wget https://git.io/vpnsetup -O vpnsetup.shVPN_IPSEC_PSK=’KvLjedUkNzo5gBH72SqkOA==’ VPN_USER=’bobalice’
VPN_PASSWORD=’8DbDiPpGbcr4wQ==’ sudo sh vpnsetup.sh

Вот основные пакеты, которые необходимо установить:

  • bind-utils;
  • net-tools;
  • bison;
  • flex;
  • gcc;
  • libcap-ng-devel;
  • libcurl-devel;
  • libselinux-devel;
  • nspr-devel;
  • nss-devel;
  • pam-devel xl2tpd;
  • iptables-services;
  • systemd-devel;
  • fipscheck-devel;
  • libevent-devel;
  • fail2ban.

Загрузите, скомпилируйте и установите Libreswan из исходного кода, затем включите и запустите необходимые службы. После завершения установки вы увидите отображаемые сведения о VPN в следующем формате:

Server IP: xxx.xxx.xxx.xxxIPsec PSK: VPN_IPSEC_PSKUsername : VPN_USERPassword : VPN_PASSWORD

Теперь VPN-сервер IPsec готов к использованию. Далее рассмотрим, как настроить клиент сервер IPsec VPN на компьютерах с Windows, Linux и OS X.

Как настроить VPN-клиент IPsec

Сочетание L2TP с протоколами IPsec позволит создать VPN-клиент с высоким уровнем защиты. L2TP генерирует туннель, поскольку он не поддерживает шифрование. Протокол IPsec обеспечивает шифрование, безопасность канала и целостность данных, гарантируя, что все пакеты безопасны и не скомпрометированы. Стоит рассмотреть, как происходит настройка IPsec туннеля.

Windows 11

Для настройки VPN-клиента IPsec в Windows 11 следуйте инструкции ниже. В Windows 11 IPsec VPN также поддерживается по умолчанию, и дополнительное программное обеспечение для его установки не требуется.

  1. Нажмите на значок сети в системном трее на панели задач.
  2. Выберите «Настройки сети и интернета».
  3. Прокрутите вниз до раздела «Расширенные настройки сети» и выберите «VPN».
  4. Нажмите «Добавить соединение VPN».
  5. В разделе «Поставщик VPN» выберите «Windows (встроенный)».
  6. В поле «Имя соединения» введите название вашего VPN-соединения для удобства идентификации.
  7. В поле «Имя или адрес сервера» введите IP-адрес вашего VPN-сервера.
  8. В разделе «Тип VPN» выберите «L2TP/IPsec с предварительным ключом».
  9. В поле «Предварительный ключ» введите ваш VPN IPsec PSK (предварительный ключ).
  10. В разделе «Тип входа» выберите предпочитаемый тип учетных данных (обычно это имя пользователя и пароль).
  11. Введите своё имя пользователя и пароль для VPN (если это требуется).
  12. Нажмите «Сохранить».

Теперь ваше VPN-соединение должно отображаться в списке VPN. Для подключения:

  1. Вернитесь в настройки VPN (пункты 1-3 предыдущей инструкции).
  2. Выберите своё VPN-соединение из списка и нажмите «Подключить».

Если вам необходимо настроить дополнительные параметры безопасности или другие расширенные настройки, выполните следующие шаги:

  1. В настройках VPN найдите своё соединение и нажмите на него.
  2. Выберите «Свойства».
  3. Перейдите на вкладку «Безопасность».
  4. Выберите необходимые параметры безопасности, включая типы протоколов и методы аутентификации.
  5. Подтвердите изменения, нажав «ОК».

Убедитесь, что все настройки соответствуют требованиям вашей сети или VPN-сервиса.

MacOS

IPsec VPN поддерживается в OS X по умолчанию. После настройки VPN-сервера выполните следующие действия, чтобы настроить IPsec VPN в OS X.

  1. Откройте «Системные настройки»: Найдите иконку «Системные настройки» на вашем Dock-панели или используйте Spotlight поиск, набрав «Системные настройки», и откройте его.
  2. Перейдите к «Сеть»: В Системных настройках пролистайте до раздела «Сеть» и кликните по нему.
  3. Добавьте новое VPN-соединение: Нажмите на кнопку с символом плюса (+), которая находится в нижней части списка интерфейсов слева, чтобы добавить новое соединение.
  4. Настройте тип VPN: В появившемся окне выберите «VPN» из выпадающего меню «Интерфейс». Затем, в «Тип VPN», выберите «IKEv2», который является более безопасным и современным вариантом по сравнению с «L2TP через IPSec».
  5. Конфигурация службы VPN: Введите название вашего VPN-соединения в поле «Имя службы». Это может быть любое название, которое поможет вам идентифицировать соединение.
  6. Настройки сервера и учетных данных: Введите адрес вашего VPN-сервера в поле «Адрес сервера» и имя учетной записи пользователя в поле «Удаленный ID».
  7. Аутентификация: Нажмите на «Аутентификация» и введите свой пароль VPN и, если требуется, общий секрет или сертификат для аутентификации.
  8. Дополнительные настройки: Перейдите в раздел «Дополнительно» и убедитесь, что установлен флажок «Отправлять весь трафик через VPN-соединение». Это обеспечит, что весь ваш интернет-трафик будет проходить через VPN.
  9. Настройка IPv6: На вкладке «TCP/IP» убедитесь, что в разделе «Настройка IPv6» выбрано «Локальная ссылка», если не хотите использовать IPv6 или ваш VPN не поддерживает его.
  10. Сохраните и подключитесь: Нажмите «ОК», чтобы закрыть дополнительные настройки, а затем «Применить», чтобы сохранить вашу новую VPN-конфигурацию. Выберите созданное VPN-соединение из списка и нажмите «Подключить», чтобы начать использование VPN.

Ubuntu/Linux

Для Ubuntu и других дистрибутивов Linux на базе Ubuntu версий 18.04 и новее, процесс установки и настройки VPN-клиента IPsec/L2TP остается в основном неизменным и актуален на 2024 год. Однако стоит проверить наличие обновлений для пакетов и убедиться в совместимости с вашей версией системы. Вот обновленная инструкция по настройке:

  1. Установка необходимых пакетов:
    • Откройте терминал.
    • Установите пакет network-manager-l2tp и network-manager-l2tp-gnome (для графического интерфейса) с помощью команды: sudo apt-get update && sudo apt-get install network-manager-l2tp network-manager-l2tp-gnome
  2. Настройка VPN-соединения:
    • Откройте «Настройки» > «Сеть» > «VPN». Нажмите кнопку «+» для добавления нового VPN-соединения.
    • В появившемся списке выберите «Layer 2 Tunneling Protocol (L2TP)».
    • Введите название вашего VPN-соединения в поле «Имя».
    • В поле «Шлюз» введите IP-адрес вашего VPN-сервера.
    • Введите имя пользователя в поле «Имя пользователя».
    • Щелкните на значок «?» в поле «Пароль» и выберите «Хранить пароль только для этого пользователя», затем введите ваш пароль.
    • Оставьте поле «Домен NT» пустым.
    • Нажмите на кнопку «Настройки IPsec…»:
      • Установите флажок «Включить IPsec для L2TP хоста».
      • Оставьте поле «Идентификатор шлюза» пустым.
      • Введите ваш Pre-shared key (PSK) для IPsec в соответствующее поле.
      • В разделе «Дополнительно», укажите алгоритмы шифрования:
        • Для «Фазы 1» используйте: aes128-sha1-modp2048 .
        • Для «Фазы 2» используйте: aes128-sha1 .
    • Нажмите «ОК», затем «Добавить» для сохранения настроек VPN-соединения.
    • Активируйте VPN-соединение, переключив соответствующий слайдер в положение «Вкл».

После завершения этих шагов, VPN-соединение должно быть настроено и готово к использованию. Обратите внимание, что конкретные алгоритмы шифрования и другие параметры безопасности могут отличаться в зависимости от требований вашей VPN-сети, поэтому рекомендуется консультироваться с вашим администратором сети или документацией VPN-сервиса.

Заключение

Благодаря IPsec VPN IP-пакеты защищены при прохождении к шлюзу IPsec и от него. Протоколы IPsec реализуют безопасную сеть, которая защищает данные VPN от внешних злоумышленников.

Хотите узнавать больше о технологиях и наших облачных продуктах? Подписывайтесь на нашу рассылку и следите за новостями: Телеграм и Вконтакте .

Как настроить подключение к VPN через L2TP ipsec

Если вы хотите развернуть собственный VPN сервер прямо из коробки и не мучиться с настройкой, мы создали для вас образ с VPN L2TP ipsec. Заказать такой сервер можно в нашем маркетплейсе.

Итак, вы заказали сервер с L2TP VPN ipsec и хотите подключиться к вашему серверу. Расскажем пошагово, как это сделать

ИНСТРУКЦИЯ ПО ПОДКЛЮЧЕНИЮ К L2TP VPN IPSEC ДЛЯ WINDOWS 10

Для демонстрационных целей выберем Windows 10. В меню пуск ищем VPN.

Пуск, параметры VPN

Жмем на кнопку добавления подключения и переходим в настройки.

Параметры VPN

Имя подключения задавайте какое вам хочется. IP адрес – это адрес вашего VPN сервера. Тип VPN – l2TP с предварительным ключом. Общий ключ – vpn (для нашего образа в маркетплейсе.) А логин и пароль – это логин и пароль от локального пользователя, то есть от администратора.

Добавить VPN подключение

Жмем на подключение и готово. Вот и ваш собственный VPN готов.

Успешное добавление VPN подключения

ИНСТРУКЦИЯ ПО ПОДКЛЮЧЕНИЮ К L2TP VPN IPSEC ДЛЯ ДЛЯ WINDOWS 8 И НИЖЕ

В Windows 8 и 8,1 ищем в меню пуск VPN би выбираем пункт с настройкой VPN.

Поиск, настройка VPN

В меню адреса вводим ip адрес вашего сервера.

Создание подключения

В свойствах подключения нужно выбрать L2Tp IPsec .

Свойства VPN подключения

В дополнительных параметрах нужно переключиться на первый пункт и ввести ключ. Для нашего образа ключ – vpn.

Дополнительные свойства L2TP

При подключении к серверу введите логин и пароль.

Вход VPN

Вот и все. Приятного использования.

VPN: ключи, шифрование, hmac, key exchange

До того как мы приступим непосредственно к внедрению IPsec VPN, поговорим о технологиях, на которые он будет опираться, предоставляя защиту трафику: ключи, шифрование, аутентификация пакетов, обмен ключами, методы аутентификации пользователей и устройств.

Ключи

Ключи используются в таких критически важных функциях VPN как: шифрование, проверка целостности пакета, аутентификация.

Ключи бывают двух видов – симметричные и асимметричные.

Симметричный ключ, это единый ключ, который используется для защиты информации. Алгоритм шифрования использует его и для шифрования, и для дешифрования, что делает подобные алгоритмы быстрыми, но менее криптостойкими. К таким алгоритмам относятся DES, 3DES, AES, RC4 и другие.

Устройства на двух концах VPN сессии должны знать о симметричном ключе, который будет использоваться в процессе перед тем, как защищать какую-либо информацию, что может быть достигнуто следующими путями:

  • pre-shared ключи – обмен ключами, что называется, out-of-band
  • с использованием защищенного соединения (catch-22 ситуация) – чтобы установить безопасное подключение вам нужны ключи, а чтобы получить ключи вам нужно безопасное соединение 🙂

Асимметричные ключи – это уже пара ключей, состоящая из открытых (public) и закрытых (private) ключей. Закрытый ключ, в отличии от открытого, держится в секрете и не сообщается никому другому. За формирование пары ключей отвечает специальный алгоритм.

В процессе шифрования между маршрутизаторами R1 и R2 устройства создают пару ключей, обмениваются открытыми ключами. R1 отправляет открытый ключ на R2, R2, используя его, шифрует информацию, которую следует отправить на R1, затем R1, используя закрытый ключ, расшифровывает полученную информацию. Даже если злодей получил открытый ключ расшифровать полезную нагрузку он все равно будет не в состоянии.

Примерами могут служить такие алгоритмы как RSA, DSA, DH.

Шифрование

Есть процесс трансформации информации в такую форму, из которой ее невозможно было бы обратно извлечь без знания ключа или ключей, которые использовались в процессе трансформации.

Процесс шифрования описывает какие ключи (симметричные или ассиметричные) будут использоваться. Не смотря на то, что устройства используют отдельные модули для разгрузки CPU, процесс шифрования ассиметричными ключами намного более требователен к ресурсам.

Алгоритмы шифрования DES/3DES и AES

DES/3DES изначально разработанный IBM алгоритм Lucifer, который в процессе модификаций превратился в стандарт. DES – блочный алгоритм шифрования с эффективной длинной ключа в 56 бит.

Из-за низкой криптостойкости на смену ему в 1999 был создан 3DES, суть которого состоит в том, что информация трижды прогоняется через алгоритм DES тремя разными 56ю битовыми ключами (результирующая эффективная длина ключа – 168 бит).

Преимуществами DES/3DES являются быстрая скорость шифрования и дешифрования, простота реализации алгоритмов с ПО и железе, однако на данный момент существую алгоритмы новее, которые и быстрее и безопаснее чем 3DES. AES, как пример.

AES (Advanced Encryption Standard) – так же является симметричным блочным шифром, поддерживающим длину ключа в 128, 192 и 256 бит. Является более щадящим к ресурсам чем тот же 3DES.

Аутентификация пакетов

Используется с целью проверки подлинности пакетов, а так же отвечает за аутентификацию источника информации.

Осуществляется это с помощью HMAC (Hashing Message Authentication Codes) функций, которые являются подмножеством хэш-функций. HMAC функции используют симметричный общий ключ, для создания определённого значения – fingerprint, чтобы исключить ситуацию когда злодей перехватывает пакет и с помощью одного лишь MD5 пытается подписать изменённую информацию.

Происходит это следующим образом:

  1. Источник берет информацию, ключ, известный получателю, и прогоняет все это дело через HMAC функцию.
  2. Выхлоп HMAC и есть цифровая подпись пакета – fingerprint (в IPsec VPN это называется Integrity Checksum Value – ICV).
  3. Источник отправляет информацию и fingerprint получателю.
  4. Получатель производит те же действия с информацией, что и отправитель в пункте 1.
  5. Если fingerprint полученный в процессе выполнения пункта 3 и fingerprint полученный в процессе выполнения пункта 4 совпадают, то все хорошо.

Примерами HMAC функций являются MD5 и SHA.

Применяется это повсеместно в протоколах динамической маршрутизации, ведь мало кому хочется, чтобы злодей нарушил связность, обновив таблицу маршрутизации неверной информацией, или того хуже объявил себя маршрутом по умолчанию.

Меня всегда интересовал другой вопрос – зачем проверять уже зашифрованное сообщение?

Как оказалось HMAC алгоритмы используют во много раз меньше ресурсов, из-за чего вызвать отказ в обслуживании с помощью «левых» пакетов, заставляя оборудование их расшифровывать будет значительно труднее. Поясню на примере:

Если в процессе сверки на стадии 4 выяснится что fingerprint не соответствует зашифрованному пакету, то и расшифровывать его не надо.

Обмен общим HMAC ключом

Понятное дело, нельзя отправить этот ключ открытым текстом, так как теряется весь смысл HMAC. Опять же, можно использовать out-of-band обмен или обмен ключами по уже зашифрованному каналу.

HMAC fingerprint и NAT/PAT

Помните, в предыдущей статье, мы говорили о проблемах преодоления NAT/PAT IPsec протоколами AH и ESP? Информация, которая может изменится в процессе трансляции (IP, TTL, TOS поля, номера портов) просто не включается в алгоритм формирования HMAC fingerprint.

Обмен ключами

Помните дилемму? Чтобы начать обмен информацией по зашифрованному каналу, надо сначала обменяться ключами для создания зашифрованного канала и ключи, желательно, передать в сохранности. Читай – не обычным текстом. Сделать это можно с помощью:

  • Pre-shared key
  • Один из вариантов решения проблемы – использовать заранее оговоренные ключи и передать их администраторам другого узла по телефону или почте, или же вбить руками самому тем или иным образом.
  • Уже существующих безопасных соединений
  • Сходить на железку по SSH.
  • Зашифровать ключ с помощью ассиметричных алгоритмов шифрования.

Но тут встает другая проблема – жадные до ресурсов ассиметричные алгоритмы шифрования при передаче большого объема траффика позволят устройству обрабатывать потом в разы меньший поток, чем при использовании симметричных, по этому… мы будем использовать ассиметричные алгоритмы шифрования для того, чтобы обмениваться симметричными ключами 🙂

Алгоритм Diffie-Hellman (DH)

DH обычно не используется для шифрования данных, однако, как указано выше, используется различными реализациями VPN для обмена общими ключами через сети с низким уровнем доверия (интернет).

Как он работает:

  1. Каждое из двух устройств рассказывает информацию, которая поможет им создать собственные пары открытых и закрытых ключей. Этот шаг важен потому, что DH поддерживает разные длины ключей, который называются DH groups. Как только устройства на обоих концах согласовали длину ключа создаются пары открытых и закрытых ключей.
  2. Каждое из устройств обменивается открытыми ключами с соседом.
  3. Каждое из устройств берет свой закрытый ключ и открытый ключ соседа и запускает алгоритм DH.
  4. Фишка алгоритма в том, что не смотря на то, что информация различается на обоих концах результат будет одинаков.
  5. Теперь можно зашифровать симметричных ключ с помощью ключа, полученного в процессе работы алгоритма DH и отправить его соседу не беспокоясь о том, что он может быть расшифрован 3ей стороной.
  6. Когда принимающая сторона получила симметричный ключ в целостности и сохранности и расшифровала его с помощью алгоритма DH можно начинать обмен данными, с использованием быстрых симметричных алгоритмов шифрования.

Некоторые DH группы и длина ключа:

  • DH 1 – 768 бит
  • DH 2 – 1024 бит
  • DH 5 – 1536 бит
  • DH 14 – 2048 бит
  • DH 15 – 3072 бит

Одно из преимуществ ассиметричных алгоритмов состоит в том, что закрытый ключ никогда не передается по сети, по этому злодей, даже получив доступ к открытому ключу будет не в состоянии расшифровать передаваемую информацию. Однако такая передача уязвима к атакам типа «человек посередине» («man in the middle»).

К примеру, R1 хочет передать зашифрованный симметричный ключ R2, однако вместо R2 на предложение инициировать обмен ключами по алгоритму DH отвечает злоумышленник. Другими словами помимо обеспечения безопасности передачи по алгоритму DH необходимо еще каким-то образом ответит на вопрос – «является ли R2 тем, за кого он себя выдает»?

Аутентификация устройств встречается и в l2l и в remote access VPN. Осуществляется либо с помощью pre-shared ключей, либо с помощью цифровых сертификатов.

Аутентификация пользователей свойственна именно remote access VPN-ам, обычно используется совместно с аутентификацией устройств. Осуществляется с помощью pre-shared (обычный пароль) ключей и сервисам подобным OTP (one time password).

Аутентификация устройств: pre-shared симметричные ключи

Наиболее простой и часто встречающийся случай когда устройства проводят аутентификацию друг друга с помощью pre-shared ключей, обмен которыми был произведен заранее, out-of-band. Процесс аутентификации использует либо алгоритм шифрования, либо HMAC функцию.

И в том и в другом случае берется какой-то набор сведений об устройствах (IP, hostname, serial no. + pre-shared key), прогоняется через алгоритм шифрования или HMAC функцию и отправляется соседу. Сосед расшифровывает или прогоняется через HMAC и сравнивается с fingerprint. Если все совпадает, то факт соседства можно считать установленным.

Аутентификация устройств: pre-shared асимметричные ключи

С ассиметричными ключами так же имеет место обмен out-of-band, только вместо pre-shared ключей соседи будут меняться открытыми ключами. В конечном итоге маршрутизаторы-соседи R1 и R2 будут иметь следующий набор:

R1: R1 public key, R1 private key, R2 public key

R2: R2 public key, R2 private key, R1 public key

Далее, к примеру, R1 берет информацию о себе, R1 private key и шифруя это, передает в последствии in-band на R2, где R2 расшифровывает информацию с использованием R1 public key.

Еще одним методом аутентификации является аутентификация с использованием цифровых сертификатов. Я на нем подробно останавливаться не буду.

L2TP & «IPsec with pre shared key» vs MITM

В статье рассмотрены основные vpn протоколы, которые на текущий момент применимы в бизнес процессах, а также углубленно освещен вопрос использования L2TP в связке с IPsec в режиме pre shared key. На практике разобраны подходы к организации виртуальных сетей на оборудовании MikroTik и выполнен практический аудит безопасности передачи данных с позиции анализа третьими лицами исходящего трафика при возможности MITM атаки.

Vpn технологии прочно вошли не только в корпоративную среду, но и в повседневную жизнь многих IT и других специалистов в реализации рабочих и личных проектов. Если перед вторыми вопрос безопасности может вставать исключительно с исследовательским интересом, то для бизнеса важно понимать риски, связанные с эксплуатацией различных информационных процессов в задействованной инфраструктуре, слабые и сильные места, а также экономическое обоснование применяемых решений. Безопасность стоит денег, но не всегда стоит подходить к этому вопросу, как к неприступной крепости, при условии правильной оценки складывающейся ситуации.

Для начала разберем, в каких случаях бизнесу нужен vpn: при подключении удаленных сотрудников к сетевым ресурсам компании (client-to-site vpn) и при объединении территориально разнесенных сетевых элементов (site-to-site vpn) . Самих протоколов vpn сейчас много : GRE , PPTP, SSTP, OVPN, L2TP, Wireguard и т.д.

Здесь важно не путать протоколы с сервисами vpn, которых еще больше: ExpressVPN, CyberGhost, NordVPN и т.д. Вторые по сути являются провайдерами услуг, обеспечивая доступ клиентов к собственным ресурсам с целью обхода блокировок со стороны ISP, а также анонимности серфинга в интернете. Про них сейчас речь не идет.

С вариацией протоколов определились, какой же выбрать?

Во-первых, в зависимости от того, что строим client-to-site или site-to-site, потому что GRE для первого случая не подойдет.

Во-вторых, Wireguard хоть молодой, простой и очень перспективный, но на офисном маршрутизаторе Cisco или MikroTik его не поднять пока (на stable версии ОС, для второго вендора). PPTP очень легок в настройке, однако будет либо не шифрованным, либо шифрованным протоколом MPPE, который не имеет аппаратной разгрузки, в следствие чего, многопользовательскую сеть замедлит в работе. SSTP отличный протокол, работает по TLS на 443 порту, пролезет через любой Firewall, а может даже и IDS. У некоторых вендоров, например, MikroTik, может работать по pre shared key вместо сертификата, запускается на Windows клиентах из коробки.

Из минусов: определенные танцы с бубном при настройке Linux клиентов (протокол все-таки от Microsoft) и отсутствие поддержки со стороны вендоров в аппаратной разгрузке. OpenVPN всем хорош, особенно высокой гибкостью. Можно туннелировать на L2, можно на L3, всего не перечислить. Не даром он open soft. Роутер MikroTik скоро научится работать с ним по UDP (ожидается в следующем поколении RouterOS), так как смысла в TCP нет, ведь соединение все равно проверяется во вложенном туннеле. Однако, скорее всего ваша офисная Cisco не умеет с ним работать, поэтому vpn сервер из нее не организовать.

Фактически, стандартом де-факто в корпоративной среде является протокол L2TP. Он работает на UDP, порт по умолчанию 1701. С шифрованием все хорошо, особенно наличие возможности аппаратной разгрузки IPsec. Есть вероятность, что ваш корпоративный MikroTik (несмотря на то, что он софтовый маршрутизатор) умеет шифровать IPsec на железе (смотри таблицу «Hardware acceleration» на сайте производителя ). У Cisco в этом вопросе дела обстоят еще лучше. Даже если ваш офисный роутер не умеет шифровать железом, никто кроме вас это знать не должен не будет.

Итак, подведем промежуточный итог: vpn технологии бизнесу нужны, использовать лучше всего L2TP. Закончив с затянувшейся вводной частью, перейдем непосредственно к теме статьи. Рассмотрим на примере оборудования MikroTik безопасность передачи данных в туннеле при возможности MITM атаки со стороны третьих лиц. Этот вопрос возникает в следствие того, что почти всегда в корпоративной среде используют L2TP в связке с IPsec в туннельном режиме и общим ключем для всей сети, вместо создания PKI и задействования сертификатов. Это удобно, сеть быстро разворачивается и легко обслуживается. Безопасно ли это в условиях компрометации pre shared key? Разберем на практике.

Начнем с того, что L2TP может быть не шифрованным:

/ppp profile name=test use-encryption=no

с интегрированным в протокол шифрованием MPPE:

/ppp profile name=test use-encryption=yes (или require, при этом IPsec отключен) 

с качественным внешним шифрованием от IPsec, вроде AES:

/ppp profile name=test use-encryption=yes (или require, при этом IPsec включен)

Настройка L2TP сервера осуществляется достаточно просто, активируем его и указываем тип аутентификации:

/interface l2tp-server server set authentication=mschap2 default-profile=test enabled=yes

Здесь же появляется возможность сразу активировать IPsec и настроить pre shared key. Если это сделать, то общий ключ будет закреплен за всей vpn сетью и передан всем ее участникам в качестве настроечной информации. Один и тот же на всех. На самом деле, если активировать IPsec таким образом, то RouterOS автоматически создает необходимые настройки в соответствующем разделе /ip ipsec сразу после установления L2TP соединения.

Конкретно речь идет:

  • IPsec Policy с указанными протоколом UDP и портом подключения 1701;
  • IPsec Peer c IP адресами сервера и клиента;
  • IPsec Identity с указанным ранее pre shared key.

Автоматически созданные настройки IPsec

Очень удобно. Особенно, когда IP адреса динамические и вообще натированные. Клиентам не нужно выполнять лишние процедуры по отслеживанию их текущих значений. В RouterOS в разделе L2TP есть дополнительная настройка, определяющая общий секрет при конфигурировании в сетях Virtual Private DialUp Network протяженных соединений точка-точка между удаленным сервером PPPOE и L2TP сетью, но это к теме статьи не относиться, поэтому просто ее упомянем всуе:

/ppp l2tp-secret add address=0.0.0.0/0 secret=

Допустим, мы не хотим простого счастья и дополнительно желаем, чтобы у каждого клиента был индивидуальный сертификат вместо общего ключа (возможно, для этого в компании уже все готово). Звучит очень круто и безопасно. Нет технически не преодолимых проблем, кроме танцев с бубнами: создаем все вышеперечисленное в ручном режиме, не забываем про корректно заданные IP адреса, как со стороны сервера, так и со стороны клиентов.

/ip ipsec peer add address=IP local-address=IP name=peer1 /ip ipsec identity add peer=peer1 auth-method=digital-signature certificate=u01.crt_0 /ip ipsec policy add dst-address=IP dst-port=1701 peer=peer1 protocol=udp src-address=IP src-port=1701 

Здесь нас поджидает кропотливая работа, ведь, скорее всего, адреса у клиентов меняются (и достаточно часто), кроме этого клиенты сидят за провайдорским NAT. Все это можно накрутить кастомными скриптами на RouterOS, и все будет отлично работать. Нужно ли это? Cмоделируем ситуацию, когда общий для всех pre shared key стал известен злоумышленнику, который целенаправленно хочет нам навредить. Или клиент vpn нам больше не клиент. Сразу баним его учетную запись, и теперь аутентификацию mschap2 (или какая у вас там выбрана) он не пройдет и доступ не получит:

/ppp secret disable bad_user

Если каким-то чудом у него есть возможность MITM, то есть пропускать трафик через себя, то толку в этом ровно никакого нет. Весь трафик зашифрован. Выдать себя за vpn сервер другим участникам корпоративной сети тоже не удастся. В подобном нереальном сценарии аутентификацию mschap2 клиенты не пройдут, ведь их секрет известен только им и вам, разумеется:

/ppp secret add name=good_user password=12345 service=l2tp

Шифрованный трафик L2TP туннеля

Исследовательский интерес нас ведет дальше. Может все-таки что-то можно сделать с трафиком? И в результате извлечь передаваемую информацию? Попробуем дешифровать трафик в лабораторных условиях. MikroTik позволяет нам выполнить debug соединения и увидеть подробную информацию об установленной IPsec сессии:

/ip ipsec installed-sa print

Как видно, сессия установилась на 30 минут, имеются разные ключи аутентификации и шифрования. Применим их в Wireshark, после приведения шестнадцатеричных значений к корректному формату: SPI 0x0ada181b, вместо MikroTik-овского 0xADA181B, ключи начинаются со значения 0x. Если все сделано правильно, тогда трафик откроется.

Ввод данных сессии для дешифрования IPsec

Дешифрованный IPsec

Подведем результаты

Насколько безопасно использовать L2TP c общим секретом? Абсолютно безопасно. По сути IPsec с помощью pre shared key выполняет функцию аутентификации, но в нашем случае процедура аутентификации выполняется после при установлении L2TP соединения. Нет практической необходимости выполнять аутентификацию дважды. По сути MikroTik, введя возможность настройки IPsec в разделе создания L2TP сервера, автоматизирует рутинные задачи по настройке шифрованного туннеля в ручном режиме (история про танцы с бубном). Это еще один плюс в сторону использования не дорогостоящего, но качественного оборудования MikroTik. Конечно, в ручном режиме гораздо больше вариаций на тему шифрования, но по умолчанию задаются, по авторскому мнению, идеальные значения: aes256 и sha1.

Как рекомендации для бизнеса , смело можно использовать L2TP с IPsec pre shared key. При планировании политик информационной безопасности, нет необходимости в задании сложных значений для pre shared key. Важно выставить не угадываемые и не словарно подбираемые значения для аутентификации L2TP (/ppp secret). Удобно, безопасно и качественно, админ доволен, клиенты не замучены.


  • Блог компании RUVDS.com
  • Информационная безопасность
  • Сетевые технологии

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *