IPsec EcoRouter Documentation / Настройка туннелирования / IPsec
IPsec (IP Security) – это набор протоколов для обеспечения сервисов защиты и аутентификации данных на сетевом уровне модели OSI. В операционной системе маршрутизатора предусмотрена возможность создания статических IPsec-туннелей, то есть туннелей без автоматического создания, установления, изменения и удаления SA (Security Associations) между двумя хостами сети посредством протокола IKE (Internet Key Exchange). Все используемые туннелем ключи, алгоритмы и протоколы задаются вручную и должны совпадать на обоих концах туннеля.
На данный момент устройство поддерживает протокол защиты передаваемых данных ESP (Encapsulating Security Payload) и исключительно туннельный режим работы, когда у пакетов появляются дополнительные заголовки IP и ESP.
Для шифрования доступны алгоритмы AES, 3DES, а для хеширования – MD5, SHA1/256/512.
Основные параметры туннеля задаются в профиле IPsec. Для перехода в режим его конфигурирования необходимо в глобальном режиме конфигурирования ввести команду crypto-ipsec profile <NAME> manual, где NAME – имя профиля, а ключ 'manual' означает, что туннель является статическим.
В первую очередь необходимо задать режим работы туннеля. Как сказано выше, на данный момент устройство поддерживает только туннельный режим работы. Данный режим задаётся командой mode tunnel.
Далее следует задать ключевые параметры IPsec (ESP) туннеля в двух направлениях – входящем, т. е. от удалённой точки до локального устройства (inbound) и исходящем, т. е. от локального устройства до удалённой точки (outbound). Переход в режим конфигурирования туннеля в исходящем или входящем направлении производится командами ipsec-outbound esp и ipsec-inbound esp соответственно.
Для каждого направления туннеля необходимо задать основные параметры для организации SA:
- sp-index <NUMBER> – номер SP (Security Parameter Index);
- authenticator sha1 | sha256 | sha512 | md5 <KEY> – выбор алгоритма хеширования и задание ключа в шестнадцатеричном виде;
- encryption 3des | aes <KEY> – выбор алгоритма хеширования и задание ключа в шестнадцатеричном виде.
CLI устройства принимает ввод ключа как с префиксом 0x, так и в обычном шестнадцатеричном виде. При неверной длине ключа устройство подскажет, какую длину следует использовать.
Заданные для обоих направлений параметры SA должны совпадать на обоих концах туннеля.
Затем с помощью криптографических карт crypto-map необходимо указать, к какому пиру следует применять соответствующий профиль IPsec. Переход в режим конфигурирования криптографической карты производится командой crypto-map <NAME> <PRIORITY>, где NAME – имя карты, а PRIORITY (иначе – последовательность карты) определяет порядок обработки карты. Чем меньше номер, тем выше приоритет и вероятность того, что трафик IPsec будет обработан именно этой последовательностью карты.
В настройках карты необходимо указать профиль IPsec и соседа, к которому должен быть применён данный профиль:
- match peer <ADDRESS>, где ADDRESS – IPv4-адрес соседа;
- set crypto-ipsec profile <NAME>, где NAME – имя профиля.
Ниже приведён пример для криптографической карты с именем TEST.
crypto-map TEST 10
match peer 200.0.0.3
set crypto-ipsec profile TEST1
crypto-map TEST 20
match peer 200.0.0.3
set crypto-ipsec profile TEST2
crypto-map TEST 30
match peer 200.0.0.3
set crypto-ipsec profile TEST3
При такой конфигурации к пиру могут быть применены 3 профиля, но обработка трафика IPsec от соседа с адресом 200.0.0.3 начнётся на локальном устройстве с профиля TEST1.
Далее необходимо научить маршрутизатор перехватывать трафик, который должен быть обработан IPsec модулем. Для этого следует воспользоваться встроенными функциями списков контроля доступа filter-map ipv4 (см. главу "Списки доступа", раздел "Настройка L3 filter-map").
Для перехвата входящего трафика IPsec от определённого соседа следует создать правило match/set вида:
match esp host <Remote ADDRESS> host <Local ADDRESS>, где Remote ADDRESS – IPv4-адрес соседа в туннеле, а Local ADDRESS – локальный IPv4-адрес маршрутизатора для IPSec туннеля;
set crypto-map <NAME> peer <Remote ADDRESS>, где NAME – имя ранее созданной криптографической карты (crypto-map), а Remote ADDRESS – IPv4-адрес соседа в туннеле, для точного соответствия.
Для перехвата трафика IPsec, передаваемого из локальной сети в удалённую сеть, т. е. исходящего трафика, который должен быть зашифрован, следует создать правило match/set вида:
match any <Local NETWORK> <Remote NETWORK>, где Local NETWORK – локальная IPv4-подсеть, а Remote NETWORK – удалённая IPv4-подсеть. Таким образом, трафик, передаваемый из локальной подсети в удалённую подсеть, попадёт в туннель и будет зашифрован.
set crypto-map <NAME> peer <Remote ADDRESS>, где NAME – имя ранее созданной криптографической карты, а Remote ADDRESS – IPv4-адрес соседа в туннеле, для точного соответствия.
Последним действием следует применить командой set списки контроля доступа filter-map к необходимым L3-интерфейсам во входящем направлении. Пример для filter-map c именем ipsec_tunnel:
interface lan
ip mtu 1500
connect port te2 service-instance lan
ip address 192.168.100.100/24
set filter-map in ipsec_tunnel
!
interface wan
ip mtu 1500
connect port te0 service-instance wan
ip address 200.0.0.100/8
set filter-map in ipsec_tunnel
Для вывода информации о настроенных SA предусмотрена команда show crypto sa.
Ниже приведён пример настройки IPSec-туннелей для схемы c тремя соседями, LAG для WAN соединения и алгоритмов SHA1/256/512 и 3DES.
crypto-ipsec profile test1 manual
mode tunnel
ipsec-outbound esp
sp-index 1000
authenticator sha1 0x000102030405060708090a0b0c0d0e0f00000000
encryption 3des 0x000102030405060708090a0b0c0d0e0faaaaaaaabbbbbbbb
ipsec-inbound esp
sp-index 1001
authenticator sha1 0x000102030405060708090a0b0c0d0e0f11111111
encryption 3des 0x000102030405060708090a0b0c0d0e0faaaaaaaabbbbbbbb
!
crypto-ipsec profile test2 manual
mode tunnel
ipsec-outbound esp
sp-index 2000
authenticator sha256 0x000102030405060708090a0b0c0d0e0f00000000000102030405060708090a0b
encryption 3des 0x000102030405060708090a0b0c0d0e0fbbbbbbbbcccccccc
ipsec-inbound esp
sp-index 2001
authenticator sha256 0x000102030405060708090a0b0c0d0e0f22222222000000002222222222222222
encryption 3des 0x000102030405060708090a0b0c0d0e0fbbbbbbbbcccccccc
!
crypto-ipsec profile test3 manual
mode tunnel
ipsec-outbound esp
sp-index 3000
authenticator sha512 0x000102030405060708090a0b0c0d0e0f00000000000102030405060708090a0b000102030405060708090a0b0c0d0e0f00000000000102030405060708090a0b
encryption 3des 0x000102030405060708090a0b0c0d0e0fccccccccdddddddd
ipsec-inbound esp
sp-index 3001
authenticator sha512 0x000102030405060708090a0b0c0d0e0f33333333000000003333333333333333000102030405060708090a0b0c0d0e0f33333333000000003333333333333333
encryption 3des 0x000102030405060708090a0b0c0d0e0fccccccccdddddddd
!
crypto-map ipsec 10
match peer 200.0.0.1
set crypto-ipsec profile test1
!
crypto-map ipsec 20
match peer 200.0.0.2
set crypto-ipsec profile test2
!
crypto-map ipsec 30
match peer 200.0.0.3
set crypto-ipsec profile test3
!
filter-map ipv4 ipsec_tunnel 5
match esp host 200.0.0.1 host 200.0.0.100
set crypto-map ipsec peer 200.0.0.1
!
filter-map ipv4 ipsec_tunnel 10
match any host 192.168.100.1 host 10.0.0.1
set crypto-map ipsec peer 200.0.0.1
!
filter-map ipv4 ipsec_tunnel 15
match esp host 200.0.0.2 host 200.0.0.100
set crypto-map ipsec peer 200.0.0.2
!
filter-map ipv4 ipsec_tunnel 20
match any host 192.168.100.2 host 172.16.0.2
set crypto-map ipsec peer 200.0.0.2
!
filter-map ipv4 ipsec_tunnel 25
match esp host 200.0.0.3 host 200.0.0.100
set crypto-map ipsec peer 200.0.0.3
!
filter-map ipv4 ipsec_tunnel 30
match any host 192.168.100.3 host 192.168.0.3
set crypto-map ipsec peer 200.0.0.3
!
port ae.0
bind te0
bind te1
mtu 9728
service-instance wan
encapsulation untagged
!
port te2
mtu 9728
service-instance lan
encapsulation untagged
!
interface lan
ip mtu 1500
connect port te2 service-instance lan
ip address 192.168.100.100/24
set filter-map in ipsec_tunnel 10
!
interface wan
ip mtu 1500
connect port ae.0 service-instance wan
ip address 200.0.0.100/8
set filter-map in ipsec_tunnel 10
exit
exit
Для полноты изложения рассмотрим пример конфигурации маршрутизатора Cisco R1.
hostname R1
!
crypto ipsec transform-set ipsec_tunnel esp-3des esp-sha-hmac
mode tunnel
crypto map ipsec 10 ipsec-manual
set peer 200.0.0.100
set session-key inbound esp 1000 cipher 000102030405060708090a0b0c0d0e0faaaaaaaabbbbbbbb authenticator 000102030405060708090a0b0c0d0e0f00000000
set session-key outbound esp 1001 cipher 000102030405060708090a0b0c0d0e0faaaaaaaabbbbbbbb authenticator 000102030405060708090a0b0c0d0e0f11111111
set transform-set ipsec_tunnel
match address 100
!
interface Loopback0
ip address 10.0.0.1 255.0.0.0
!
interface FastEthernet0/0
ip address 200.0.0.1 255.0.0.0
crypto map ipsec
!
access-list 100 permit ip host 10.0.0.1 host 192.168.100.1