IPSec VPN: Статический виртуальный туннельный интерфейс SVTI   (Дата: 05.03.2016)

Как просто и быстро настроить и отладить наиболее распространенный на практике тип IPSec VPN между 2-мя офисами?

Здесь речь пойдет о так называемом «Site-To-Site», или «Lan-To-Lan» (L2L) VPN.

Несмотря на великое множество разновидностей виртуальных частных сетей VPN и способов их построения, я остановлюсь на варианте со статическим виртуальным туннельным интерфейсом «Static VTI» (SVTI), как наиболее удобном, простом и функциональном.

Он позволяет создать постоянный шифрованный туннель между двумя маршрутизаторами Cisco.

Основное достоинство такого типа туннеля – это выделенный маршрутизирующий виртуальный интерфейс SVTI для VPN соединения, к которому можно применять различные политики и фичи, включая такие как QoS, uRPF, CBAC/ZBF, PBR, NAT, ACL и другие.

В этом случае, нет больше привязки к физическому интерфейсу. А также заметно упрощается настройка VPN, по сравнению с классическим IPsec VPN c crypto-map и ACL.

Например, нет необходимости описывать трафик, подлежащий шифрованию, с помощью зеркальных списков доступа ACL (proxy-identity) и исключать его из правил трансляции NAT.

Достаточно лишь настроить для него маршрут в туннельный интерфейс Tunnel. И весь трафик, отправляемый туда, будет автоматически шифроваться.

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

И еще один большой плюс такой типа VPN, в отличие от классического IPSec c crypto-map, он позволяет передавать и мультикастовый трафик. Что означает, что в защищенной таким способом сети смогут работать различные сервисы, базирующиеся на мульти кастах, включая передачу голоса и видео.

А самое главное, через такой туннель смогут работать динамические протоколы маршрутизации, например, такие как OSPF, EIGRP, RIP.

Конечно, можно организовать аналогичный способ передачи мульти кастового трафика и с помощью комбинации IPSec/GRE, но при этом к каждому передаваемому пакету будет добавляется дополнительный заголовок GRE (24 байта).

Кстати, с проектированием GRE туннелей надо быть аккуратнее и учитывать особенности их реализации на различном оборудовании. Например, такое популярное устройство как межсетевой экран Cisco ASA, не умеет их терминировать.

В моей практике были случаи, когда компании самостоятельно закупали большое количество Cisco ASA для организации филиальных сетей, и уже только в процессе настройки выяснялось, что OSPF или EIGRP не будут работать по IPSec VPN между ними.

С другой стороны, у VPN построенных на Static VTI есть и недостатки. Например, имеются сложности с «горячим» резервированием туннелей. Тут нет поддержки такого удобного механизма, как «IPSec Stateful Failover».

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

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

Некоторые из этих вопросов более детально рассмотрены в прилагаемом ВИДЕО.

IPSec (IP Security) – это группа протоколов, обеспечивающих работу сервисов конфиденциальности, аутентификации и проверки целостности передаваемой информации на сетевом уровне модели OSI (L3, Network).

Для увеличения изображения можно кликнуть на него мышью.

Протокол IPSec

IKE (Internet Key Exchange) – это протокол, используемый для автоматического создания, установки соединения, изменения и удаления Security Associations (SA) между двумя хостами.

SA (Security Associations) – это уникальный идентификатор конечной точки туннеля. Его можно трактовать, например, как почтовый адрес. Только вместо города, дома и квартиры используются индекс параметра безопасности SPI, IP адрес получателя и идентификатор протокола (ESP или AH). Эта информация позволяет однозначно идентифицировать SA в базе данных SAD маршрутизатора.

В своей работе IKE использует вспомогательные протоколы – ISAKMP, Oakley, SKEME и Diffie-Hellman.

Часто термины IKE и ISAKMP употребляют как синонимы, что не совсем верно. ISAKMP – это фреймворк, а IKE уже его конкретная реализация.

У IKE есть 2 фазы работы. Их еще называют фаза ISAKMP и фаза IPSec.

Протокол IKE

Основная задача первой фазы IKE (ISAKMP) состоит в независимом формировании каждой из сторон общего симметричного секретного ключа шифрования.

Далее он будет использоваться для шифрования служебного трафика между этими сторонами.

Это ключ не передается через публичный Интернет и его невозможно ни перехватить, ни подсмотреть. И все это благодаря математическому алгоритму Diffie-Hellman (DH).

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

В основном режиме обмен состоит из 6 сообщений, а в агрессивном из 3-х. По умолчанию используется основной режим.

Помимо этого, в первой фазе также идет согласование (isakmp policy) для нее алгоритмов шифрования (AES, 3DES и т.д.), алгоритмов проверки целостности HMAC (MD5, SHA1 и т.д.), методов аутентификации сторон (общий ключ или сертификат), групп DH (длинны ключей) и времени жизни SA (по умолчанию 24 часа).

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

Таким образом, в результате работы первой фазы IKE (ISAKMP) каждая из сторон аутентифицируется, ими вычисляется общий секретный ключ шифрования с помощью алгоритма Diffie-Hellman и создается один двунаправленный SA. Его можно трактовать как канал управления для дальнейшей работы IPSec.

Работа второй фазы IKE (фаза IPSec) защищается ключом и алгоритмами, согласованными в первой фазе. По этому защищенному каналу идет обмен ключевым материалом и согласование алгоритмов шифрования и проверки целостности уже для фазы IPSec (transform-set).

Затем ключевой материал комбинируется с DH ключом первой фазы и создается новый ключ уже для шифрования основного трафика VPN (IPSec key).

Для большей безопасности, можно включить режим «Perfect Forward Secrecy» (PFS) и тогда при каждой смена ключа второй фазы будет генерироваться новый ключ DH, устраняя зависимость IPSec ключа от DH ключа первой фазы.

Вторая фаза IPSec всегда работает в быстром режиме. По ее завершении создаются два однонаправленных IPSec SA, один на прием, а другой на передачу.

Время жизни SA для фазы IPSec по умолчанию составляет 1 час.

ESP (Encapsulation Security Payload) – это IP протокол с номером 50, отвечающий за шифрование и проверку целостности передаваемых данных.

Протокол ESP может работать в 2-х режимах – туннельном и транспортном.

Транспортный режим применяется между конечными хостами, а туннельный между шлюзами (маршрутизаторами).

Транспортный режим предполагает наличие публичных IP адресов на конечных хостах.

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

На практике же обычно используется туннельный режим. Кстати, именно он и стоит по умолчанию на маршрутизаторах Cisco.

Протокол ESP туннельный режим

В туннельном режиме исходный IP пакет «оборачивается» в ESP, содержимое пакета зашифровывается, пакет подписывается выбранным алгоритмом hash (HMAC), подпись ICV помещается в поле ESP Authentication и создается новый заголовок IP.

В новом заголовке IP уже указываются публичные IP адреса шлюзов, а в поле «протокол» - ESP.

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

Плюс, такой пакет защищен от перехвата и повторной отправки в сеть. Это так называемая Anti-replay функция, защищающая от Replay атак. Все передаваемые пакеты нумеруются, и эта информация содержится в заголовке ESP Header, наряду с индексом SPI.

AH (Authentication Header) – это IP протокол с номером 51, отвечающий за аутентификацию участников и проверку целостности передаваемых данных.

Протокол AH не обеспечивает конфиденциальность данных, а только защищает передаваемые пакеты от модификации, а также Replay и Spoofing атак. Поэтому он практически и не используется.

AH также может работать в 2-х режимах – туннельном и транспортном.

На этом с теорией пока и остановимся. Перейдем непосредственно к практике.


Лабораторная работа «Cisco IOS L2L IPSec VPN с SVTI»: Исходные данные и задачи

Для настройки IPSec VPN c помощью технологии SVTI я воспользуюсь вот такой топологией, созданной в GNS3 v1.4.4 по материалам курса «Домашняя Лаборатория Cisco за 1 День - 2015!» v3.1.

Эта модель сети охватывает практически все типовые случаи, встречающиеся в реальной жизни.

L2L IPSec VPN SVTI GNS3 Lab

Построим VPN туннель между маршрутизаторами R1 и R2 с Cisco IOSv 15.5(3)M. Туннель будет терминироваться на их интерфейсах GigabitEthernet0/0.

Защищать будем трафик между сетями, подыгрываемыми интерфейсами Loopback 0 на маршрутизаторах R1 и R2.

Это сети 10.1.1.0/24 и 10.2.2.0/24 из диапазона частных сетей, определенных в RFC 1918.

Для имитации Интернета я воспользуюсь двумя IP сетями из RFC 5735, специально предназначенными для таких целей.

Между маршрутизаторами R1 и R2 стоит ASAv c кодом 9.5.1, где настроена трансляция адресов NAT.

Статическая трансляция (Object NAT) на ASAv также позволяет маршрутизатору R2 видеть R1 как хост с IP адресом 203.0.113.3.

Более того, и на R1 тоже настроен NAT (PAT) для выхода сети 10.1.1.0/24 в Интернет c IP адресом внешнего интерфейса Gi0/0 (198.51.100.2).


Начальные конфигурации всех устройств в лабораторной работе

Здесь приведены только релевантные команды для этой лабораторной работы. Вся остальная конфигурация устройств дефолтовая.

R1:

hostname IOSv-R1
!
no ip domain lookup
ip host R2 203.0.113.2
!
interface Loopback0
 ip address 10.1.1.1 255.255.255.0
 ip nat inside
 ip virtual-reassembly in
 no shutdown
!
interface GigabitEthernet0/0
 ip address 198.51.100.2 255.255.255.0
 ip nat outside
 ip virtual-reassembly in
 duplex auto
 speed auto
 no shutdown
!
ip nat inside source list NAT-RULES interface GigabitEthernet0/0 overload
ip route 0.0.0.0 0.0.0.0 198.51.100.1
!
ip access-list extended NAT-RULES
 permit ip 10.1.1.0 0.0.0.255 any
!
line con 0
 exec-timeout 0 0
 logging synchronous
!

R2:

hostname IOSv-R2
!
no ip domain lookup
ip host R1 203.0.113.3
!
interface Loopback0
 ip address 10.2.2.2 255.255.255.0
 no shutdown
!
interface GigabitEthernet0/0
 ip address 203.0.113.2 255.255.255.0
 duplex auto
 speed auto
 no shutdown
!
ip route 0.0.0.0 0.0.0.0 203.0.113.1
!
line con 0
 exec-timeout 0 0
 logging synchronous
!
line vty 0 4
 privilege level 15
 no login
 transport input all
!

ASAv:

hostname ASAv
!
interface GigabitEthernet0/0
 nameif outside
 security-level 0
 ip address 203.0.113.1 255.255.255.0
 no shutdown
!
interface GigabitEthernet0/1
 nameif inside
 security-level 100
 ip address 198.51.100.1 255.255.255.0
 no shutdown
!
object network LAN1
 subnet 198.51.100.0 255.255.255.0
 nat (inside,outside) dynamic interface
object network R1
 host 198.51.100.2
 nat (inside,outside) static 203.0.113.3
!
access-list OUTSIDE-IN extended permit udp any any eq isakmp log debugging 
access-list OUTSIDE-IN extended permit udp any any eq 4500 log debugging 
access-list OUTSIDE-IN extended permit esp any any log debugging 
access-list OUTSIDE-IN extended permit gre any any log debugging 
access-list OUTSIDE-IN extended permit icmp any any
!
access-group OUTSIDE-IN in interface outside
!

Шаги для настройки IPSec VPN c помощью технологии SVTI

Здесь я кратко приведу последовательность настройки и необходимые шаги. Дополнительные комментарии и пояснения есть в прилагаемом ВИДЕО.

1. Предварительная подготовка

1.1. Проверить доступность по протоколу IP маршрутизатора R2 c R1 и, наоборот, с помощью команды ping

1.2. Разрешить на промежуточных устройствах (ASAv) выбранные протоколы IPSec

ISAKMP UDP 500
NAT-T UDP 4500
ESP IP 50
AH IP 51

1.3. Выбрать соответствующие политики для первой и второй фазы IKE

AES 256, AES 192, AES 128, AES, 3DES, DES
SHA512, SHA384, SHA256, SHA, MD5
DH 16, DH 15, DH 14, DH 5, DH 2, DH 1
Сертификаты, pre-shared key

2. Настройка 1-й фазы IKE - ISAKMP

Политика ISAKMP и ключ для аутентификации сторон (R1 и R2). Время жизни ISAKMP SA в данном примере умышленно выбрано таким маленьким (5 мин., или 300 сек.), чтобы продемонстрировать смену ключей и связанные с этим возможные проблемы.

R1:

! Политика ISAKMP
crypto isakmp policy 10
 encr aes 256
 hash sha256
 authentication pre-share
 group 5
 lifetime 300
!
! Ключ ISAKMP
crypto isakmp key cisco address 203.0.113.2
!

R2:

! Политика ISAKMP
crypto isakmp policy 10
 encr aes 256
 hash sha256
 authentication pre-share
 group 5
 lifetime 300
!
! Ключи ISAKMP
crypto isakmp key cisco address 203.0.113.3
!

3. Настройка 2-й фазы IKE - IPSec

3.1. Настройка алгоритма шифрования и подписи. Создание профиля IPSec и статического туннельного виртуального интерфейса SVTI

R1:

! IPSec Transform-Set – способ защиты: алгоритм шифрования и подписи
crypto ipsec transform-set ESP-AES-SHA-256 esp-aes 256 esp-sha256-hmac 
 mode tunnel
!
! IPSec профиль
crypto ipsec profile VTI-256
 set transform-set ESP-AES-SHA-256
 set pfs group5
!
! Статический виртуальный туннельный интерфейс SVTI
interface Tunnel0
 ip unnumbered GigabitEthernet0/0
 tunnel source GigabitEthernet0/0
 tunnel mode ipsec ipv4
 tunnel destination 203.0.113.2
 tunnel protection ipsec profile VTI-256
no shutdown
!

R2:

! IPSec Transform-Set – способ защиты: алгоритм шифрования и подписи
crypto ipsec transform-set ESP-AES-SHA-256 esp-aes 256 esp-sha256-hmac 
 mode tunnel
!
! IPSec профиль
crypto ipsec profile VTI-256
 set transform-set ESP-AES-SHA-256
set pfs group5
!
! Статический виртуальный туннельный интерфейс SVTI
interface Tunnel0
 ip unnumbered GigabitEthernet0/0
 tunnel source GigabitEthernet0/0
 tunnel mode ipsec ipv4
 tunnel destination 203.0.113.3
 tunnel protection ipsec profile VTI-256
no shutdown
!

3.2. Маршрутизация подлежащего шифрованию трафика в туннель

R1:

ip route 10.2.2.0 255.255.255.0 Tunnel0

3.2. Маршрутизация подлежащего шифрованию трафика в туннель

R2:

ip route 10.1.1.0 255.255.255.0 Tunnel0

Тестирование работы VPN

1. Проверка соединения между R1 и R2 по протоколу IP

R1:

IOSv-R1#ping 203.0.113.2
Type escape sequence to abort.
Sending 5, 100-byte ICMP Echos to 203.0.113.2, timeout is 2 seconds:
.!!!!
Success rate is 80 percent (4/5), round-trip min/avg/max = 4/6/8 ms
		

R2:

IOSv-R2#ping 203.0.113.3
Type escape sequence to abort.
Sending 5, 100-byte ICMP Echos to 203.0.113.3, timeout is 2 seconds:
!!!!!
Success rate is 100 percent (5/5), round-trip min/avg/max = 6/6/9 ms
		

Для ping-а с R2 мы использует транслированный на ASAv IP адрес маршрутизатора R1 198.51.100.2 во внешний 203.0.113.3.

2. Прохождение трафика через VPN туннель

3. Проверка работы 1-й фазы IKE - ISAKMP

4. Проверка работы 2-й фазы IKE – IPSec



Автор: Алексей Николаев, CCIE #27142 (Security)

Метки: GNS3, IOSv, ASAv, IPSec, IKE, ISAKMP, SVTI, SVTI, VPN


На главную ›