Требуется защитить p2p GRE туннель. Настройка IPsec достаточно простая, необходимо:
1. Настроить ISAKMP политику. Здесь указываются параметры для защиты Management соединения (ISAKMP фаза 1)
R1(config)#crypto isakmp policy 5
R1(config-isakmp)#encr aes
R1(config-isakmp)#hash sha256
R1(config-isakmp)#authentication pre-share
R1(config-isakmp)#group 14
2. В данном примере IPsec будет на PSK (Pre-Shared Key), так что настройка PSK)
R1(config)#crypto isakmp key super_secret_psk address 7.7.7.2
3. Настройка Transform Set. Здесь указываются криптографические параметры для защиты уже Data соединения, т.е. IPsec туннеля, который будет защищать пользовательские данные.
R1(config)#crypto ipsec transform-set TRANS esp-aes esp-sha-hmac
R1(cfg-crypto-trans)#mode transport
Отступление:
IPsec реализован на симметричных алгоритмах шифрования, основная проблема данных алгоритмов, это как безопасно пирам обменяться ключами. Ключ должен быть с обеих сторон одинаковый. Реализация в IPsec:
Процесс начинается с первой фазы ISAKMP, пиры обмениваются криптографическими параметрами, аутентифицируются и на выходе получается Management Туннель. Этот туннель нужен, чтобы пиры безопасно обменялись криптографической информацией для построения уже Data туннеля. Этот процесс называется второй фазой ISAKMP.
Management туннель:
show crypto isakmp sa
Data туннель:
show crypto ipsec sa
4. Настроить IPsec профиль
R1(config)#cryptо ipsec profile IPSEC_PROF
R1(ipsec-profile)#set transform-set TRANS
5. Применить IPsec профиль к VTI
R1(config)#interface tunnel 1
R1(config-if)#tunnel protection ipsec profile IPSEC_PROF
R1(config-if)#ip mtu 1400
R1(config-if)#ip tcp adjust-mss 1360
Пример: продолжаем конфиг с
DMVPN - часть 1 (Обзор GRE)
Конфиг для двух устройств
!
R1(config)#crypto isakmp policy 5
R1(config-isakmp)#encr aes
R1(config-isakmp)#hash sha256
R1(config-isakmp)#authentication pre-share
R1(config-isakmp)#group 14
!
R1(config)#crypto isakmp key super_secret_psk address 7.7.7.2
!
R1(config)#crypto ipsec transform-set TRANS esp-aes esp-sha-hmac
R1(cfg-crypto-trans)#mode transport
!
R1(config)#cryptо ipsec profile IPSEC_PROF
R1(ipsec-profile)#set transform-set TRANS
!
R1(config)#interface tunnel 1
R1(config-if)#tunnel
protection ipsec profile IPSEC_PROF
R1(config-if)#ip mtu 1400
R1(config-if)#ip tcp adjust-mss 1360
R2(config)#crypto isakmp policy 5
R2(config-isakmp)#encr aes
R2(config-isakmp)#hash sha256
R2(config-isakmp)#authentication pre-share
R2(config-isakmp)#group 14
!
R2(config)#crypto isakmp key super_secret_psk address 7.7.7.1
!
R2(config)#crypto ipsec transform-set TRANS esp-aes esp-sha-hmac
R2(cfg-crypto-trans)#mode transport
!
R2(config)#crypto ipsec profile IPSEC_PROF
R2(ipsec-profile)#set transform-set TRANS
!
R2(config)#interface tunnel
1
R2(config-if)#tunnel protection ipsec
profile IPSEC PROF
R2(config-if)#ip mtu 1400
R2(config-if)#ip tcp adjust-mss 1360
Тот же самый пакет (TFTP), но уже зашифрованный IPsec
Примечание:
1. На туннельных интерфейсах установлено значение MTU 1400, TCP MSS 1360. Мы уменьшаем размер исходного пакета, чтобы добавление GRE + IPsec заголовков не привело к фрагментированию.
2. Механизм Keepalive не работает совместно с IPsec.