В процессе установления соединения через IPSec двум участникам защищенного канала необходимо согласовать значительный ряд параметров: по необходимости они должны аутентифицировать друг друга, сгенерировать и обменяться общими ключами (причем через недоверенную среду), установить какой трафик шифровать (от какого отправителя и к какому получателю), а также договориться с помощью каких протоколов шифровать, а с помощью каких — аутентифицировать. Служебной информации предполагается обменяться много, не правда ли? По этой причине IPSec и состоит из стека протоколов, обязанность которых обеспечить установление, работу и управление защищенным соединением.
Процесс установления соединения состоит из 2 фаз: первая фаза устанавливается для того, чтобы обеспечить безопасный обмен ISAKMP сообщений во второй фазе.
ISAKMP (Internet Security Association and Key Management Protocol) служит для согласования политик безопасности (SA) между участниками VPN соединения, в который как раз и определяются с помощью какого протокола шифровать (AES, 3DES, DES), и с помощью чего аутентифицировать (HMAC SHA, MD5).
Режим работы IKE (Internet Key Exchange):
IKE Фаза 1
- Согласование IKE SA между пирами
- аутентификация пиров
Main Mode (6 сообщений)
- [First exchange] Начало согласований начинаются с отправки пиром друг другу предложений о поддерживаемом шифровании, протоколов аутентификации самих сообщений IKE, времени жизни ассоциаций безопасности. Пир выбирает предложенный SA и отправляет их предложившему пиру. Эти настройки определяются в ISAKMP Policy
- [Second exchange] Генерация общих разделяемых ключей через обмен открытыми ключами по Diffie-Hellman. Дальнейший обмен сообщениями происходит уже зашифрованными сообщениями.
- [Third exchange] Обмен сообщениями для аутентификации ISAKMP сессии (IKE_I_MM4)
После установки IKE SA (то есть установления 1-ой фазы), происходит согласование IPSEC в quick mode (QM). На этом этапе ISAKMP ответственен за обмен сессионными ключами и согласование политик безопасности (SA) для обеспечения конфиденциальности и целостности пользовательского трафика.
Сетевая диаграмма показана на рисунке.
Здесь роутеры R1 и R5 формируют IPSEC туннель, который соединяет две приватные сети 10.0.0.0.24 и 10.1.19.0/24
Сначала мы определяем политику IKE или Первой Фазы, где настраиваем алгоритмы шифрования и параметры согласования. В данном случае мы будем использовать аутентифиацию по pre-share ключам (PSK) и алгоритм шифрования 3DES/MD5 и DH группу 2.
crypto isakmp policy 10
encr 3des
hash md5
authentication pre-share
group 2
!
Далее определяем ключ “CISCO” который будем использовать для формирования IPSEC между роутерами. Pre-share ключ должен быть одинаковым на обеих роутерах.
crypto isakmp key CISCO address <IP_ADDR_PEER>
Затем необходимо определить трафик подлежащий шифрованию из одной приватной сети в другую. Это делается с помощью листа доступа, называемым крипто-доменом.
На маршрутизаторе R1 крипто домен определятся как
!
ip access-list extended ACL_CRYPTO
permit ip 10.0.0.0 0.0.0.255 10.1.19.0 0.0.0.255
!
А на маршрутизаторе R5 лист доступа, определяющий трафик подлежащий шифрованию, должен быть зеркальным.
ip access-list extended ACL_CRYPTO
permit ip 10.1.19.0 0.0.0.255 10.0.0.0 0.0.0.255
После определения крито-домена, настраиваем алгоритмы по которым будет производится шифрование трафика
crypto ipsec transform-set TS esp-3des esp-md5-hmac
И в заключении определяем политику для IPSEC
crypto map VPN 10 ipsec-isakmp
set peer <IP_ADDR_PEER>
set transform-set TS
match address ACL_CRYPTO
Которую потом применяем к исходящему интерфейсу
!
interface <INTERFACE>
crypto map VPN
!
Конфигурация R1
!--- Определяем трафик подлежащий шифрованию из одной приватной сети в другую
ip access-list extended ACL_CRYPTO
permit ip 10.0.0.0 0.0.0.255 10.1.19.0 0.0.0.255
!
!--- Политика IKE. Настройка первой фазы IPSec для обмена сессионного ключа
crypto isakmp policy 10
encr 3des
hash md5
authentication pre-share
group 2
crypto isakmp key CISCO address 155.1.0.5
!
! Настройка второй фазы IPSec c заданием алгоритма шифрования и аутентификации
crypto ipsec transform-set TS esp-3des esp-md5-hmac
!
crypto map VPN 10 ipsec-isakmp
set peer 155.1.0.5
set transform-set TS
match address ACL_CRYPTO
!
interface Ethernet0/1
ip address 136.1.124.1 255.255.255.0
crypto map VPN
!
Конфигурация R5
!--- Политика IKE. Настройка первой фазы IPSec для обмена сессионного ключа
crypto isakmp policy 10
encr 3des
hash md5
authentication pre-share
group 2
crypto isakmp key CISCO address 136.1.124.1
!
!--- Политика IKE. Настройка первой фазы IPSec для обмена сессионного ключа
crypto ipsec transform-set TS esp-3des esp-md5-hmac
!
crypto map VPN 10 ipsec-isakmp
set peer 136.1.124.1
set transform-set TS
match address ACL_CRYPTO
!
interface Serial1/0.1 point-to-point
ip address 155.1.0.5 255.255.255.0
frame-relay interface-dlci 503
crypto map VPN
!
ip access-list extended ACL_CRYPTO
permit ip 10.1.19.0 0.0.0.255 10.0.0.0 0.0.0.255
!
Проверим, что получилось. Для того, что IPSEC туннель начал строится между маршрутизаторами, необходим трафик, попадающий в крипто-домен

Проверим состояние фазы 1 командой show crypto isakmp sa

Успешное состояние идентифицируется флагом QM_IDLE в колонке state. Для проверки состояния IPSEC фазы 2 выполним команду show crypto ipsec sa

Успешной установкой фазы 2 IPSEC можно считать наличие в выводе данных SPI в inbound esp sas и outbound esp sas. В данном случае у нас есть две SPI - одна в направлении inbound (вход), другая в направлении outbound (выход).
SPI передается в IPSec пакете для того, чтобы при получении его пиром, в данном случае HUB-ом, HUB знал какой SA (security association) использовать, то есть какой протокол шифрования, какой протокол аутентификации и т.д. используется и как пакет расшифровывать. На другой стороне имеется точно такая же SA с таким же SPI.

Заметим, что номер входной SPI на маршрутизаторе R1 совпадает с номером выходной SPI на маршрутизаторе R5. Кроме того, успешным прохождение трафика через VPN можно считать наличие не нулевых счетчиков #pkts encaps и #pkts decaps.
Другим критерием успешного прохождение трафика через VPN можно видеть в выводе команды show crypto engine connections active

Здесь также растут счетчики Encrypt и Decrypt.
Проверим доступность приватной сети 10.1.19.0 со станции 10.0.0.100
