- Введение
- Выбор идентификатора isakmp на asa
- Выбор идентификатора isakmp на маршрутизаторах
- Выделение ресурсов в режиме мультиконтекста на asa
- Импорт сертификатов и настройка ipsec mikrotik
- Использование клиента charon-cmd для разовых подключений
- Используемые компоненты
- Как настроить ike2 ipsec на mikrotik с авторизацией по psk?
- Конфигурация strongswan
- Настройка windows с помощью графических инструментов
- Настройка маршрутизации трафика и списка ресурсов
- Отладка на asa
- Отладка на маршрутизаторе
- Подключение из android
- Подключение из ios
- Подключение из macos
- Подключение из windows
- Проверка
- Проверка идентификатора isakmp на asa
- Проверка идентификатора isakmp на маршрутизаторах
- Проверка списка отозванных сертификатов
- Проверка цепочки сертификатов
- Проверка этапа 1
- Проверка этапа 2
- Размер полезных данных аутентификации
- Родственные продукты
- Управление strongswan как службой
- Шаг 1 — установка strongswan
- Шаг 2 — создание центра сертификации
- Шаг 3 — генерирование сертификата для сервера vpn
- Шаг 4 — настройка strongswan
- Шаг 5 — настройка аутентификации vpn
- Шаг 6 — настройка брандмауэра и переадресации ip ядра
- Шаг 7 — тестирование подключения vpn на windows, macos, ubuntu, ios и android
- Заключение
Введение
Виртуальная частная сеть (VPN) позволяет выполнять защищенное шифрование трафика, передаваемого через незащищенные сети, например, в кафе, на конференции или в аэропорту.
Internet Key Exchange v2 или IKEv2 — это протокол, который позволяет создавать прямые туннели IPSec между сервером и клиентом. IPSec обеспечивает шифрование сетевого трафика в виртуальных частных сетях IKEv2. IKEv2 изначально поддерживается на ряде платформ (OS X 10.11 , iOS 9.1 , Windows 10) без дополнительных приложений и легко решает проблемы с подключением клиентов.
В этом обучающем руководстве мы настроим сервер IKEv2 VPN с помощью StrongSwan на сервере Ubuntu 20.04. Затем вы узнаете, как подключиться к нему с помощью клиентов Windows, macOS, Ubuntu, iOS и Android.
Выбор идентификатора isakmp на asa
На устройствах ASA идентификатор ISAKMP выбирается глобально с помощью команды crypto isakmp identity:
ciscoasa/vpn(config)# crypto isakmp identity ?
configure mode commands/options:
address Use the IP address of the interface for the identity
auto Identity automatically determined by the connection type: IP
address for preshared key and Cert DN for Cert based connections
hostname Use the hostname of the router for the identity
key-id Use the specified key-id for the identity
По умолчанию командный режим переводится в автоматический режим, а это означает, что устройство ASA определяет согласование ISAKMP по типу соединения:
- IP-адрес для предварительного общего ключа.
- Отличительное имя сертификата для аутентификации с помощью сертификата.
Примечание. Ошибка Cisco с идентификатором CSCul48099 является запросом на улучшение, чтобы была добавлена возможность выполнять настройку для отдельных групп, а не задавать глобальную конфигурацию.
Выбор идентификатора isakmp на маршрутизаторах
Когда на маршрутизаторах используются туннели IKEv2, локальные идентификаторы, используемые при согласовании, определяются командой identity local в профиле IKEv2:
R1(config-ikev2-profile)#identity local ?
address address
dn Distinguished Name
email Fully qualified email string
fqdn Fully qualified domain name string
key-id key-id opaque string - proprietary types of identification
По умолчанию маршрутизатор использует в качестве локального идентификатора свой адрес.
Выделение ресурсов в режиме мультиконтекста на asa
Начиная с версии ASA 9.0, устройство ASA поддерживает VPN в режиме мультиконтекста. Однако при настройке сети VPN в режиме мультиконтекста обязательно выделите соответствующие ресурсы в системе, которая будет использовать VPN.
Дополнительные сведения см. в разделе Информация об управлении ресурсами документа Руководство по настройке интерфейса командной строки устройств серии Cisco ASA, 9.0.
Импорт сертификатов и настройка ipsec mikrotik
Импорт сертификатов
Для добавления сертификатов, необходимо перенести их в память вашего MikroTik в раздел Files.
System -> Certificates
Импортируем открытый ключ корневого сертификата вашего центра сертификации на VPS на котором установлен StrongSwan.
Последовательно импортируем открытый и закрытый ключи авторизации используемые в конфигурации StrongSwan.
Настройка клиента IPsec
IP -> IPsec
Импортируем закрытый ключ авторизации StrongSwan, для использования в клиенте.
Далее, последовательно настраиваем профиль VPN-клиента.
Вместо “VPS IP” указываем адрес вашего сервера, где развернут StrongSwan.
В разделе IPsec Idenity настраиваем профиль авторизации, указываем учётные данные и сертификат импортированный ранее.
После выполнения этого шага туннель между MikroTik и StrongSwan будет поднят автоматически.

В разделе IP -> Addresses при успешной авторизации, появится IP адрес выданный StrongSwan.
Использование клиента charon-cmd для разовых подключений
Чтобы управлять StrongSwan как службой, вам нужно выполнить следующие шаги по настройке.
Сначала обновите свой локальный кэш пакетов с помощью apt
Затем установите StrongSwan и необходимые плагины для аутентификации:
Теперь вам потребуется копия сертификата СА в каталоге /etc/ipsec.d/cacerts, чтобы ваш клиент мог проверить подлинность сервера. Запустите следующую команду, чтобы скопировать файл ca-cert.pem в каталог:
На этом этапе вы можете подключиться к серверу VPN с помощью charon-cmd, используя сертификат СА сервера, IP-адрес сервера VPN и настроенное имя пользователя.
Запустите следующую команду для подключения к VPN в любое время:
При запросе укажите пароль пользователя VPN. После этого вы подключитесь к VPN. Чтобы отключиться, нажмите CTRL C в терминале и дождитесь, пока соединение не будет закрыто.
Используемые компоненты
Сведения, содержащиеся в данном документе, касаются следующих версий программного обеспечения и оборудования:
- Устройство Cisco ASA 5510 Adaptive Security Appliance с программным обеспечением версии 9.1(3)
- Маршрутизатор Cisco 2900 Series Integrated Services Router (ISR), работающий под управлением программного обеспечения Cisco IOS версии 15.3(3)M1
Сведения, представленные в этом документе, были получены от устройств, работающих в специальной лабораторной среде. Все устройства, описанные в этом документе, были запущены с чистой (стандартной) конфигурацией. В рабочей сети необходимо изучить потенциальное воздействие всех команд до их использования.
Как настроить ike2 ipsec на mikrotik с авторизацией по psk?
Привет!
Может я не умею искать, но никак не могу найти ни одного описания по настройке Mikrotik в качестве IKEv2 IPSEC сервера, с авторизацией по паролю.
Именно по паролю.
Не авторизация по сертификатам, которая описывается во всех статьях, которые я нашел.
В данный момент у меня реализован VPN сервер на микротике на основе L2TP IPSEC, но мне нужно организовать маршрутизацию юзеров VPN к определенным подсетям рабочей локалки, в том числе из других городов, не создавая на стороне клиента дефолтный маршрут через VPN сервер, чтобы в интернет юзеры ходили через свой роутер, а не через VPN сервер, и не выдавая юзерам никаких BAT-файлов с ручным прописыванием маршрутов.
Изучив разные типы VPN выбор пал на IKEv2 IPSEC из-за:
1) Поддержка нескольких одновременных подключений VPN за одним NAT’ом
2) Нативная поддержка встроенными клиентами всеми устройствами, и операционными системами, без надобности установки стороннего ПО.
3) Возможность доставки маршрутов до пользователя.
Авторизация по паролю, и категорический отказ от авторизации по сертификатам:
1) Пользователь не должен вообще никак возиться со скачиванием и установкой сертификатов. Он должен ввести свой логин и пароль от корпоративной учетной записи Windows, и все. (ну плюс пароль IPSEC). В данный момент пользователи у меня так авторизуются через RADIUS AD
.
2) Установка соединения должна быть простой, понятной для обычных юзеров настолько, что при подключении к VPN очередного устройства юзер смог бы сам повторить подключение, не вникая в подробности, куда ставить сертификат, и зачем он вообще нужен.
Единственные мануалы и описания, что я нашел в данной связке, это сервер на основе PFSense, но его использовать как я думаю в моей ситуации не очень этично, так как во-первых в парке серверов у нас нет ни одной линукс-машины, кроме астериска, и не планируется. Конечно я пытаюсь на основе настроек PFSense что-то соорудить похожее на Mikrotik, но это не так просто. Да и микротик, который смотрит в интернет, и раздаёт L2TP поддерживает аппаратное шифрование для VPN, и вообще он загружен на 0%, в пике рабочего дня на 1%.
Вообще, даже на официальном сайте гайд по настройке сервера написан именно с сертификатом. https://wiki.mikrotik.com/wiki/Manual:IP/IPsec#Tra… Неужели мне одному интересна авторизация по паролю?)
Думаю, это все же возможно, так как в вики по вышеприведенной ссылке есть раздел
Simple mutual PSK XAuth configuration, который я так понимаю мне как раз и нужен.
Буду признателен всем отзывам, советам, а может кто-то поделится опытом в настройке такой же конфигурации.
Конфигурация strongswan
Здесь я рассмотрю только основные конфигурационные файлы StrongSwan, без углубления в настройку данного демона.
/etc/ipsec.conf
config setup
charondebug="ike 2, knl 2, cfg 2, net 2, esp 2, dmn 2, mgr 2"
uniqueids=never
conn ikev2-vpn
auto=add
compress=no
type=tunnel
keyexchange=ikev2
fragmentation=yes
forceencaps=yes
dpdaction=clear
dpddelay=300s
rekey=no
left=%any
leftid=
leftcert=server-cert.pem
leftsendcert=always
leftsubnet=0.0.0.0/0
right=%any
rightid=%any
rightauth=eap-mschapv2
rightsourceip=10.10.10.0/24
rightdns=8.8.8.8,8.8.4.4
rightsendcert=never
eap_identity=%identity
/etc/ipsec.secrets
Настройка windows с помощью графических инструментов
Вначале импортировать сертификат root, выполнив следующие шаги:
- Нажмите
WINDOWS R, чтобы открыть диалоговое окно Выполнить и введитеmmc.exe, чтобы открыть консоль управления Windows. - Из меню Файл перейдите в раздел Добавить или удалить оснастку, выберите Сертификаты из списка доступных оснасток и нажмите Добавить.
- Чтобы разрешить VPN работать для любых пользователей, выберите Учетная запись компьютера и нажмите Далее.
- Поскольку мы выполняем настройку на локальном компьютере, выберите пункт Локальный компьютер и нажмите Готово.
Под узлом Корень консоли откройте запись Сертификаты (локальный компьютер), раскройте Доверенные корневые центры сертификации и выберите запись Сертификаты:

- В меню Действие выберите пункт Все задачи и нажмите Импорт, чтобы открыть мастер импорта сертификатов. Нажмите Далее, чтобы пролистать вводное окно.
- На экране Импортируемый файл нажмите кнопку Обзор, убедитесь, что вы изменили тип файла с “X.509 Certificate (.cer;.crt)” на “All Files (.) и выберите сохраненный ранее файл
ca-cert.pem. Затем нажмите Далее. - Убедитесь, что Хранилище сертификатов имеет значение Доверенные корневые центры сертификации и нажмите Далее.
- Нажмите Готово, чтобы импортировать сертификат.
Затем выполните следующие шаги по настройке VPN:
- Откройте Панель управления и перейдите в Центр управления сетями и общим доступом.
- Нажмите Создание и настройка нового подключения или сети и выберите пункт Подключение к рабочем месту.
- Выберите пункт Использовать мое подключение к Интернету (VPN).
- Введите данные сервера VPN. Введите доменное имя сервера или IP-адрес в поле Адрес в Интернете, затем введите в поле Имя пункта назначения описание своего соединения VPN. Затем нажмите Готово.
Настройка маршрутизации трафика и списка ресурсов
IP -> Firewall
В разделе NAT создаем правило перенаправления трафика.
В данном случае я использовал списки адресов.
local – подсеть маршрутизатора.
List1 – список сайтов.
Перенаправляем трафик на шлюз(IP адрес выданный StrongSwan)
Настройка списков
IP -> Firewall
В разделе Address Lists необходимо добавить следующие списки:
local – подсеть маршрутизатора, в моем случае 192.168.1.0/24
Отладка на asa
Внимание. : На ASA можно установить различные уровни отладки; по умолчанию используется уровень 1. При изменении уровня детализация отладки может увеличиться. Делайте это осторожно, особенно в производственных средах!
Отладка ASA для согласования туннеля:
- debug crypto ikev2 protocol
- debug crypto ikev2 platform
Отладка ASA для аутентификации с использованием сертификата:
Отладка на маршрутизаторе
Отладка маршрутизатора для согласования туннеля:
- debug crypto ikev2
- debug crypto ikev2 error
- debug crypto ikev2 internal
Отладка маршрутизатора для аутентификации с использованием сертификата:
- debug cry pki validation
- debug cry pki transaction
- debug cry pki messages
Подключение из android
Выполните следующие шаги по импорту сертификата:
- Отправьте себе электронное письмо с прикрепленным сертификатом CA. Сохраните сертификат CA в папку «Загрузки».
- Загрузите клиент StrongSwan VPN из магазина Play Store.
- Откройте приложение. Нажмите значок «подробнее» (…) в правом верхнем углу и выберите Сертификаты СА.
- Снова нажмите значок «подробнее» … в правом верхнем углу. Выберите пункт Импорт сертификата.
- Найдите файл сертификата CA в папке «Загрузки» и выберите его для импорта в приложение.
Теперь сертификат импортирован в приложение StrongSwan, и вы можете настроить соединение VPN следующим образом:
Подключение из ios
Чтобы настроить соединение VPN на устройстве iOS, выполните следующие действия:
- Отправьте себе электронное письмо с прикрепленным корневым сертификатом.
- Откройте электронное письмо на устройстве iOS, нажмите на вложенный файл сертификата, затем нажмите Установить и введите код доступа. После установки нажмите Готово.
- Откройте Настройки, Общие, VPN и нажмите Добавить конфигурацию VPN. После этого откроется экран конфигурации подключения VPN.
- Нажмите Тип и выберите IKEv2.
- В поле Описание введите короткое имя подключения VPN. Вы можете выбрать все, что угодно.
- В поле Server (сервер) и Remote ID (удаленный идентификатор) введите доменное имя или IP-адрес сервера. Поле Local ID (локальный идентификатор) нельзя оставлять пустым.
- Введите имя пользователя и пароль в разделе Аутентификация, а затем нажмите Готово.
- Выберите соединение VPN, которое вы только что создали, нажмите переключатель вверху страницы, и подключение будет установлено.
Подключение из macos
Выполните следующие шаги по импорту сертификата:
- Дважды щелкните файл сертификата. Откроется экран «Keychain Access» с диалоговым окном, где будет указано: «Keychain Access is trying to modify the system keychain. Enter your password to allow this».
- Введите свой пароль и нажмите Modify Keychain
- Дважды щелкните импортированный сертификат VPN. После этого откроется небольшое окно свойств, где вы сможете указать уровни доверия. Укажите для параметра IP Security (IPSec) значение Always Trust (всегда доверять), после чего вам нужно будет снова ввести пароль. Настройка будет сохранена автоматически после ввода пароля.
После импорта и подтверждения надежности сертификата настройте подключение к VPN, выполнив следующие шаги:
Подключение из windows
Существует множество способов импорта корневого сертификата и настройки Windows для подключения к VPN. Первый метод использует графические инструменты для каждого шага. Второй метод использует команды PowerShell, которые могут выполняться с помощью скриптов и меняться в зависимости от конфигурации VPN.
Примечание. Эти инструкции протестированы на установках Windows 10, использующих версии 1903 и 1909.
Проверка
Воспользуйтесь данным разделом для проверки правильности функционирования вашей конфигурации.
Примечание. Средство интерпретации выходных данных (только для зарегистрированных заказчиков) поддерживает некоторые команды show. Используйте Средство интерпретации выходных данных, чтобы просмотреть анализ выходных данных команды show.
Эти команды работают и на ASA, и на маршрутизаторах:
- show crypto ikev2 sa – Отображает состояние этапа 1 Security Association (SA).
- show crypto ipsec sa- Отображает состояние этапа 2 SA.
Примечание. В этих выходных данных, в отличие от IKEv1, для значения группы Perfect Forwarding Secrecy (PFS) Diffie-Hellman (DH) отображается «(PFS) (Y/N): N, DH group: none» ((PFS) (Да/нет): N, группа DN: нет) во время первого согласования туннеля; после повторного введения отображается правильное значение. Несмотря на то что это поведение описано в ошибке Cisco с идентификатором CSCug67056, это не дефект.
Различие между IKEv1 и IKEv2 состоит в том, что в IKEv2 дочерние SA создаются в рамках самого обмена AUTH. Группа DH, настроенная в данной криптографической карте, используется только во время повторного ввода. Таким образом сообщение «PFS (Y/N): N, DH group: none» (PFS (Да/нет): N, группа DH: нет) отображается до первого повторного ввода. При использовании IKEv1 отмечается другое поведение, поскольку создание дочерних SA происходит во время быстрого режима, а в сообщении CREATE_CHILD_SA предусмотрена возможность передачи полезных данных Key Exchange, в которых указаны параметры DH для получения нового общего секретного ключа.
Проверка идентификатора isakmp на asa
Удаленная проверка идентификатора выполняется автоматически (она определяется типом соединения) и не может быть изменена. С помощью команды peer-id-validate проверку можно включать или отключать для отдельных групп туннелей:
ciscoasa/vpn(config-tunnel-ipsec)# peer-id-validate ?
tunnel-group-ipsec mode commands/options:
cert If supported by certificate
nocheck Do not check
req Required
Проверка идентификатора isakmp на маршрутизаторах
Ожидаемый идентификатор однорангового узла также настраивается вручную в том же профиле с помощью команды match identity remote:
R1(config-ikev2-profile)#match identity remote ?
address IP Address(es)
any match any peer identity
email Fully qualified email string [Max. 255 char(s)]
fqdn Fully qualified domain name string [Max. 255 char(s)]
key-id key-id opaque string
Проверка списка отозванных сертификатов
В списке отозванных сертификатов (CRL) приводятся сертификаты, которые были выпущены и впоследствии отозваны данным CA. Сертификаты могут отзываться по ряду причин:
- Сбой или взлом устройства, которое использует данный сертификат.
- Компрометация пары ключей, используемой данным сертификатом.
- Ошибки в выпущенном сертификате, такие как неправильный идентификатор или необходимость выполнить изменение имени.
Механизм, используемый для отзыва сертификатов, зависит от CA. Отозванные сертификаты представлены в списке CRL своим серийным номерам. Если сетевое устройство пытается проверить действительность сертификата, оно загружает и просматривает текущий список CRL в поисках серийного номера представленного сертификата.
Дополнительные сведения о списке CRL см. в разделе Что такое CRL документа Настройка инфраструктуры открытых ключей, выпуск Cisco IOS XE 3S.
Проверка цепочки сертификатов
Если в устройстве ASA настроен сертификат, имеются промежуточные CA, а его одноранговое устройство может иметь, а может и не иметь такой же промежуточный CA, то в устройстве ASA необходимо явно настроить отправку маршрутизатору всей цепочки сертификатов.
crypto map outside-map 1 set trustpoint ios-ca chain
Если этого не сделать, то туннель будет согласовываться, только когда отвечающей стороной будет устройство ASA. Если оно является инициатором, произойдет сбой туннеля и маршрутизатор выведет следующие данные отладки:
2328304: Jun 8 19:14:38.051 GMT: IKEv2:(SESSION ID = 14607,SA ID = 68):
Get peer's authentication method
2328305: Jun 8 19:14:38.051 GMT: IKEv2:(SESSION ID = 14607,SA ID = 68):
Peer's authentication method is 'RSA'
2328306: Jun 8 19:14:38.051 GMT: IKEv2:(SESSION ID = 14607,SA ID = 68):
SM Trace-> SA: I_SPI=E4368647479E50EF R_SPI=97B2C8AA5268271A (R) MsgID = 1
CurState: R_VERIFY_AUTH Event: EV_CHK_CERT_ENC
2328307: Jun 8 19:14:38.051 GMT: IKEv2:(SESSION ID = 14607,SA ID = 68):
SM Trace-> SA: I_SPI=E4368647479E50EF R_SPI=97B2C8AA5268271A (R) MsgID = 1
CurState: R_VERIFY_AUTH Event: EV_VERIFY_X509_CERTS
2328308: Jun 8 19:14:38.051 GMT: CRYPTO_PKI: (A16A8) Adding peer certificate
2328309: Jun 8 19:14:38.055 GMT: CRYPTO_PKI: Added x509 peer certificate -(1359) bytes
2328310: Jun 8 19:14:38.055 GMT: CRYPTO_PKI: ip-ext-val: IP extension validation
not required
2328311: Jun 8 19:14:38.055 GMT: CRYPTO_PKI: create new ca_req_context type
PKI_VERIFY_CHAIN_CONTEXT,ident 4177
2328312: Jun 8 19:14:38.055 GMT: CRYPTO_PKI: (A16A8)validation path has 1 certs
2328313: Jun 8 19:14:38.055 GMT: CRYPTO_PKI: (A16A8) Check for identical certs
2328314: Jun 8 19:14:38.055 GMT: CRYPTO_PKI : (A16A8) Validating non-trusted cert
2328315: Jun 8 19:14:38.055 GMT: CRYPTO_PKI: (A16A8) Create a list of suitable
trustpoints
2328316: Jun 8 19:14:38.055 GMT: CRYPTO_PKI: Unable to locate cert record by
issuername
2328317: Jun 8 19:14:38.055 GMT: CRYPTO_PKI: No trust point for cert issuer,
looking up cert chain
2328318: Jun 8 19:14:38.055 GMT: CRYPTO_PKI: (A16A8) No suitable trustpoints found
2328319: Jun 8 19:14:38.059 GMT: IKEv2:(SESSION ID = 14607,SA ID = 68):: Platform
errors
2328320: Jun 8 19:14:38.059 GMT: IKEv2:(SESSION ID = 14607,SA ID = 68):SM Trace-> SA:
I_SPI=E4368647479E50EF R_SPI=97B2C8AA5268271A (R) MsgID = 1 CurState:
R_VERIFY_AUTH Event: EV_CERT_FAIL
2328321: Jun 8 19:14:38.059 GMT: IKEv2:(SESSION ID = 14607,SA ID = 68):Verify cert
failed
2328322: Jun 8 19:14:38.059 GMT: IKEv2:(SESSION ID = 14607,SA ID = 68):
SM Trace-> SA: I_SPI=E4368647479E50EF R_SPI=97B2C8AA5268271A (R) MsgID = 1 CurState:
R_VERIFY_AUTH Event: EV_AUTH_FAIL
2328323: Jun 8 19:14:38.059 GMT: IKEv2:(SESSION ID = 14607,SA ID = 68)
:Verification of peer's authentication data FAILED
Проверка этапа 1
Эта процедура проверяет действия, выполняемые на этапе 1:
Введите на данном маршрутизаторе команду show crypto ikev2 sa:
R1#show crypto ikev2 sa
IPv4 Crypto IKEv2 SATunnel-id Local Remote fvrf/ivrf Status
1 172.16.1.1/500 172.16.1.2/500 none/none READY
Encr: AES-CBC, keysize: 256, Hash: SHA96, DH Grp:14, Auth sign: RSA,
Auth verify: RSA
Life/Active Time: 86400/53 sec
IPv6 Crypto IKEv2 SA- Введите на ASA команду show crypto ikev2 sa:
ciscoasa/vpn(config)# show crypto ikev2 sa
IKEv2 SAs:
Session-id:138, Status:UP-ACTIVE, IKE count:1, CHILD count:1
Tunnel-id Local Remote Status Role
45926289 172.16.1.2/500 172.16.1.1/500 READY INITIATOR
Encr: AES-CBC, keysize: 256, Hash: SHA96, DH Grp:14, Auth sign: RSA,
Auth verify: RSA
Life/Active Time: 86400/4 sec
Child sa: local selector 192.168.0.0/0 - 192.168.0.255/65535
remote selector 172.16.2.0/0 - 172.16.2.255/65535
ESP spi in/out: 0xa84caabb/0xf18dce57
Проверка этапа 2
Эта процедура описывает, как проверить правильность согласования индекса Security Parameter Index (SPI) на двух узлах:
Введите на данном маршрутизаторе команду show crypto ipsec sa | i spi:
R1#show crypto ipsec sa | i spi
current outbound spi: 0xA84CAABB(2823596731)
spi: 0xF18DCE57(4052602455)
spi: 0xA84CAABB(2823596731)- Введите на ASA команду show crypto ipsec sa | i spi:
ciscoasa/vpn(config)# show crypto ipsec sa | i spi
current outbound spi: F18DCE57
current inbound spi : A84CAABB
spi: 0xA84CAABB (2823596731)
spi: 0xF18DCE57 (4052602455)
Эта процедура описывает, как проверить, проходит ли трафик через туннель:
Введите на данном маршрутизаторе команду show crypto ipsec sa | i pkts:
R1#show crypto ipsec sa | i pkts
#pkts encaps: 21, #pkts encrypt: 21, #pkts digest: 21
#pkts decaps: 30, #pkts decrypt: 30, #pkts verify: 30
#pkts compressed: 0, #pkts decompressed: 0
#pkts not compressed: 0, #pkts compr. failed: 0
#pkts not decompressed: 0, #pkts decompress failed: 0- Введите на ASA команду show crypto ipsec sa | i pkts:
ciscoasa/vpn(config)# show crypto ipsec sa | i pkts
#pkts encaps: 4, #pkts encrypt: 4, #pkts digest: 4
#pkts decaps: 4, #pkts decrypt: 4, #pkts verify: 4
#pkts compressed: 0, #pkts decompressed: 0
#pkts not compressed: 4, #pkts comp failed: 0, #pkts decomp
failed: 0
Размер полезных данных аутентификации
Если для аутентификации используются сертификаты (а не предварительные общие ключи), объем полезных данных аутентификации будет значительно больше. Обычно это ведет к фрагментации, из-за которой аутентификация может завершиться ошибкой, если какой-либо фрагмент будет потерян или отброшен в пути. Если туннель не формируется из-за размера полезных данных аутентификации, это чаще всего связано со следующими причинами:
- Контроль уровня управления на маршрутизаторе, который мог бы заблокировать пакеты.
- Неправильное согласование значения MTU, которое может быть исправлено с помощью команды crypto ikev2 fragmentation mtu size.
Родственные продукты
Данный документ также может использоваться со следующими версиями программного и аппаратного обеспечения:
- Устройство Cisco ASA, работающее под управлением ПО 8.4(1) или более поздней версии
- Маршрутизатор Cisco ISR Generation 2 (G2), работающий под управлением программного обеспечения Cisco IOS 15.2(4)M или более поздней версии
- Маршрутизаторы Cisco ASR 1000 Series Aggregation Services Router, работающие под управлением программного обеспечения Cisco IOS-XE 15.2(4)S или более поздней версии
- Маршрутизаторы Cisco Connected Grid Router, работающие под управлением программного обеспечения 15.2(4)M или более поздней версии
Управление strongswan как службой
Чтобы управлять StrongSwan как службой, вам нужно выполнить следующие шаги по настройке.
Сначала обновите свой локальный кэш пакетов с помощью apt
Затем установите StrongSwan и необходимые плагины для аутентификации:
Теперь вам потребуется копия сертификата СА в каталоге /etc/ipsec.d/cacerts, чтобы ваш клиент мог проверить подлинность сервера. Запустите следующую команду, чтобы скопировать файл ca-cert.pem в каталог:
Чтобы убедиться, что VPN работает только по запросу, используйте systemctl для автоматического отключения StrongSwan:
Затем настройте имя пользователя и пароль, которые вы будете использовать для аутентификации на сервере VPN. Отредактируйте /etc/ipsec.secrets с помощью nano или любого предпочитаемого редактора:
Добавьте следующую строку, редактируя выделенные значения имени пользователя и пароля, чтобы они соответствовали настроенным на сервере:
/etc/ipsec.conf
Шаг 1 — установка strongswan
Вначале мы установим StrongSwan, демона IPSec с открытым исходным кодом, а затем настроим его как наш сервер VPN. Также мы установим компонент инфраструктуры открытых ключей (PKI), чтобы создать центр сертификации (СА), который будет предоставлять учетные данные для нашей инфраструктуры.
Начните с обновления кэша локальных пакетов:
Затем установите программное обеспечение с помощью следующей команды:
Дополнительный пакет libcharon-extauth-plugins используется для обеспечения возможности аутентификации различных клиентов для вашего сервера с помощью общего имени пользователя и кодовой фразы.
После завершения установки перейдем к созданию сертификатов.
Шаг 2 — создание центра сертификации
Для идентификации на клиентских системах серверу IKEv2 требуется сертификат. Для упрощения формирования требуемого сертификата пакет strongswan-pki включает утилиту pki, которая может сгенерировать центр сертификации и сертификаты сервера.
Для начала создадим несколько каталогов для хранения всех активо, с которыми мы будем работать. Структура каталогов соответствует некоторым каталогам в /etc/ipsec.d, куда мы постепенно переместим все создаваемые элементы:
Затем мы заблокируем разрешения, чтобы другие пользователи не могли видеть наши частные файлы:
Располагая структурой каталогов для хранения всех элементов, мы можем сгенерировать ключ root. Это будет 4096-битный ключ RSA, который будет использоваться для подписи корневого центра сертификации.
Запустите следующие команды, чтобы сгенерировать ключ:
После этого мы можем переходить к созданию корневого центра сертификации, используя ключ, который мы только что сгенерировали для подписания корневого сертификата:
Флаг –lifetime 3650 используется для обеспечения действительности корневого сертификата центра сертификации на протяжении 10 лет. Корневой сертификат центра обычно не меняется, поскольку его необходимо перераспределять на каждый использующий его сервер и клиент. Исходя из этого, 10 лет — это безопасный срок действия по умолчанию.
Вы можете изменить значение различимого имени distinguished name (DN) на любое другое имя по своему желанию. Обычное имя (поле CN) здесь используется только как индикатор, поэтому оно не обязательно должно совпадать с чем-либо в вашей инфраструктуре.
Настроив и запустив корневой центр сертификации, мы можем создать сертификат, который будет использоваться сервером VPN.
Шаг 3 — генерирование сертификата для сервера vpn
Теперь мы создадим сертификат и ключ для сервера VPN. Этот сертификат позволит клиентам проверять подлинность сервера, используя только что сгенерированный нами сертификат CA.
Вначале создайте закрытый ключ сервера VPN с помощью следующей команды:
Затем создайте и подпишите сертификат сервера VPN, используя ключ центра сертификации, созданный на предыдущем шаге. Запустите следующую команду, но измените поля Common Name (CN) и Subject Alternate Name (SAN) на имя DNS или IP-адрес вашего сервера VPN:
Примечание. Если вы используете IP-адрес вместо имени DNS, вам потребуется указать несколько входов –san. Строка в предыдущем блоке команд, где вы указываете distinguished name (–dn …), должна быть дополнена еще одной строкой, например следующей:
--dn "CN=IP address --san @IP_address --san IP_address
Дополнение –san @IP_address необходимо, так как некоторые клиенты буду проверять наличие в сертификате TLS как записи DNS, так и записи IP-адреса для сервера при проверке его подлинности.
Опция –flag serverAuth используется для указания того, что сертификат будет использоваться для аутентификации сервера, прежде чем будет установлен зашифрованный туннель. Опция –flag ikeIntermediate используется для поддержки более старых клиентов macOS.
Теперь мы сгенерировали все файлы TLS/SSL, необходимые StrongSwan, и можем переместить их в каталог /etc/ipsec.d следующим образом:
На этом шаге мы создали пару сертификатов, которые будут использоваться для защиты связи между клиентом и сервером. Также мы подписали сертификаты ключом CA, и теперь клиент сможет проверять подлинность сервера VPN, используя сертификат CA. После подготовки всех этих сертификатов мы переходим к настройке программного обеспечения.
Шаг 4 — настройка strongswan
StrongSwan имеет файл конфигурации по умолчанию с несколькими образцами, но большинство настроек нужно будет выполнить самостоятельно. Прежде чем начинать, создадим резервную копию файла для справки:
Создайте и откройте новый пустой файл конфигурации с помощью предпочитаемого текстового редактора. Мы будем использовать nano:
Примечание. По мере выполнения данного раздела по конфигурации серверной части VPN вы столкнетесь с настройками, которые относятся к левой и правой сторонам соединения. При работе с VPN IPSec левая сторона, по правилам, обращается к локальной системе, которую вы настраиваете.
Когда вы позже перейдете к настройке клиентов в этом обучающем руководстве, файлы конфигурации клиентов будут обращаться к самим себе, используя различные директивы левой стороны, а к серверу будут обращаться, используя терминологию правой стороны.
Вначале мы укажем StrongSwan регистрировать состояния демонов для целей отладки и разрешить дублирующиеся соединения. Добавьте в файл следующие строки:
/etc/ipsec.conf
config setup
charondebug="ike 1, knl 1, cfg 0"
uniqueids=no
Затем мы создадим раздел конфигурации для сервера VPN. Также мы укажем StrongSwan создать туннели IKEv2 VPN и автоматически загружать этот раздел конфигурации при запуске. Добавьте в файл следующие строки:
/etc/ipsec.conf
. . .
conn ikev2-vpn
auto=add
compress=no
type=tunnel
keyexchange=ikev2
fragmentation=yes
forceencaps=yes
Также мы настроем обнаружение отсутствующих узлов, чтобы закрывать неиспользуемые соединения при непредвиденном отключении клиента. Добавьте следующие строки:
/etc/ipsec.conf
. . .
conn ikev2-vpn
. . .
dpdaction=clear
dpddelay=300s
rekey=no
Затем мы настроим параметры IPSec «левой» стороны сервера. Каждый из следующих параметров обеспечивает конфигурацию сервера для приема соединений от клиентов и корректной идентификации себя. Вы добавите каждую из этих настроек в файл /etc/ipsec.conf после того, как вы изучите их и поймете, для чего они используются:
left=%anyЗначение%anyгарантирует использование сервером сетевого интерфейса при получении входящих соединений для последующей связи с клиентами. Например, если вы подключаете клиента через частную сеть, сервер будет использовать частный IP-адрес, где он получает трафик для остальной части подключения.leftid=@server_domain_or_IPЭта опция контролирует имя, которое сервер показывает клиентам. При совмещении со следующей опциейleftcert, опцияleftidобеспечивает совпадение настроенного имени сервера и различимого имени (DN), содержащегося в публичном сертификате.leftcert=server-cert.pemЭта опция — это путь к публичному сертификату для сервера, который вы настроили на шаге 3. Без него сервер не сможет аутентифицировать себя с клиентами или завершить переговоры по настройке IKEv2.leftsendcert=alwaysЗначениеalwaysгарантирует, что любой клиент, который подключается к серверу, всегда будет получать копию публичного сертификата сервера в рамках настроек первоначального соединения.leftsubnet=0.0.0.0/0Последняя опция «слева», которую вы добавите, указывает клиентам на подсети, которые доступны за сервером. В этом случае0.0.0.0/0используется для представления всего набора адресов IPv4, что означает, что сервер будет указывать клиентам передавать весь свой трафик через VPN по умолчанию.
Теперь, когда вы ознакомились с каждой из соответствующих опций «слева», добавьте их в файл следующим образом:
/etc/ipsec.conf
. . .
conn ikev2-vpn
. . .
left=%any
leftid=@server_domain_or_IP
leftcert=server-cert.pem
leftsendcert=always
leftsubnet=0.0.0.0/0
Примечание. При настройке идентификатора сервера (leftid) символ @ нужно указывать только в случае, если ваш сервер VPN будет идентифицироваться по доменному имени:
/etc/ipsec.conf
Шаг 5 — настройка аутентификации vpn
Теперь наш сервер VPN настроен на принятие подключений клиентов, но мы еще не настроили учетные данные. Нам нужно задать пару настроек в специальном файле конфигурации с именем ipsec.secrets:
- Нам нужно указать StrongSwan, где можно найти закрытый ключ для нашего сертификата сервера, чтобы сервер мог пройти аутентификацию на стороне клиента.
- Также нам потребуется список пользователей, которым будет разрешено подключаться к VPN.
Откроем для редактирования файл secrets
Вначале мы укажем StrongSwan, где можно найти закрытый ключ:
/etc/ipsec.secrets
: RSA "server-key.pem"
Затем мы зададим учетные данные пользователя. Вы можете создать любую комбинацию имени пользователя и пароля:
/etc/ipsec.secrets
Шаг 6 — настройка брандмауэра и переадресации ip ядра
После завершения настройки StrongSwan нам нужно настроить брандмауэр, чтобы разрешить прохождение и перенаправление трафика VPN.
Если вы следовали указаниям модуля по начальной настройке сервера, у вас должен быть включен брандмауэр UFW. Если вы еще не настроили UFW, вам следует начать с добавления правила, разрешающего соединения SSH через брандмауэр, чтобы ваш текущий сеанс не был прерван при активации UFW:
Затем активируйте брандмауэр с помощью следующей команды:
Теперь добавьте правило, которое будет разрешать трафик UDP на стандартных портах IPSec 500 и 4500:
Затем мы откроем один из файлов конфигурации UFW, чтобы добавить несколько политик нижнего уровня для маршрутизации и перенаправления пакетов IPSec. Но прежде чем мы сможем сделать это, нам нужно определить, какой сетевой интерфейс на нашем сервере используется для доступа в Интернет. Определите этот интерфейс с помощью запроса устройства, связанного с маршрутом по умолчанию:
Ваш публичный интерфейс должен содержать слово «dev». Например, в этом результате показан интерфейс с именем eth0, который выделен ниже:
Output
default via your_server_ip dev eth0 proto static
Шаг 7 — тестирование подключения vpn на windows, macos, ubuntu, ios и android
Мы завершили подготовку, и пришло время для тестирования. Вначале нужно скопировать созданный вами сертификат CA и установить его на клиентские устройства, которые будут подключаться к VPN. Для этого удобнее всего выполнить вход на ваш сервер и вывести содержимое файла сертификата:
Вывод будет выглядеть следующим образом:
Output
-----BEGIN CERTIFICATE-----
MIIFNDCCAxygAwIBAgIIHCsidG5mXzgwDQYJKoZIhvcNAQEMBQAwODELMAkGA1UE
. . .
H2YUdz8XNHrJHvMQKWFpi0rlEcMs MSXPFWE3Q7UbaZJ/h8wpSldSUbQRUlphExJ
dJ4PX MUJO/vjG1/ie6Kh25xbBAc3qNq8siiJZDwrg6vjEK7eiZ1rA==
-----END CERTIFICATE-----
Скопируйте эти данные на свой компьютер, включая строки —–BEGIN CERTIFICATE—– и —–END CERTIFICATE—–, и сохраните их в файл с понятным именем, например, ca-cert.pem. Созданный файл должен иметь расширение .pem.
Также вы можете использовать SFTP, чтобы перенести файл на свой компьютер.
Когда файл ca-cert.pem будет загружен на ваш компьютер, вы можете настроить подключение к VPN.
Заключение
В этом обучающем модуле вы создали сервер VPN, использующий протокол IKEv2. Вы узнали о директивах, которые контролируют левую и правую стороны подключения как на сервере, так и на клиентах. Также вы настроили клиент Windows, macOS, iOS, Android или Linux для подключения к VPN.
Чтобы добавить или удалить пользователей, снова перейдите на Шаг 5. Каждая строка в /etc/ipsec.secrets предназначена для одного пользователя, поэтому добавление или удаление пользователей или изменение паролей требует редактирования файла.
Теперь вы можете быть уверены, что ваша деятельность онлайн будет защищена, куда бы вы ни зашли, независимо от устройства, которое вы используете для входа в Интернет.
источник
