Архив метки: IPSec

IPSec между Cisco и Watchguard

Понадобилось организовать шитфрованный канал между моим офисом и одним из партнерских офисов.
Нюанс задачи состоит в том, что на стороне банка оконечное оборудование представлено Watchguard Firebox x750.
Пришлось отказаться от идеи реализации IPSec в туннельном режиме и освоить транспортный.

Итак, связка Cisco 7200 (C7200-JK9S-M) и Firebox x750. Версия IOS 12.3(18) fc3 и Firebox Fireware v9.0
С моей стороны нужно зашифровать до них трафик из публичного пула 75.18.55.0/28 а забрать трафик от внутреннего пула 10.1.1.0/24
Внешний интерфейс моей cisco 72.123.45.5, внешний интерфейс x750 213.86.54.15

Часть 1: Конфигурирование x750 используя Firmware Policy Manager:

устанавливаем удаленный шлюз
выбираем VPN, "Branch Office Gateway" в появившемся окне нажимаем "Add"
в новом окне "Gateway Name" в закладке "General Settings"
в "Credential Method" выбираем "Use Pre-Shared Key" и вводим заранее придуманный ключ. допустим mynewkey55T5
в "Gateway Endpoints" нажимаем "Add", появится новое окно
в "Local Gateway" выбираем "By IP Address" в меню и выбираем внешний адрес x720 - 213.86.54.15

выбираем внешний интерфейс x720 к которому только что сделали привязку
в "Remote Gateway" указываем дальний интерфейс канала - нашу циску 72.123.45.5
выбираем “Static IP address” и вводим IP 72.123.45.5

указываем Gateway ID для аутентификации
выбираем “By IP Address” и снова вводим IP 72.123.45.5

нажимаем "OK" закрываем “New Gateway Endpoints Settings” возвращаемся в окно “New Gateway”
выбираем закладку “Phase1 Settings” попадаем в новое окно
в “Mode” выбираем “Main”
снимаем чекбокс “NAT Traversal”
ставим чекбокс “IKE Keep-alive”
ставим “Message interval:” на 30 секунд
ставим “Max failures:” в 5

в секции “Transform Settings” нажимаем “Add”, появляется окно “Phase1 Transform”
в “Authentication” ставим “SHA1"
в “Encryption:” ставим “DES”
в “SA Life:” ставим “8" и “Hour”
в “Key Group:” ставим “Diffie-Hellman Group1"
нажимаем "OK", закрываем окно
выбираем “SHA1-3DES” нажимаем “Up”. “SHA1-3DES” можно не трогать
нажимаем “OK” закрываем окно “New Gateway”
нажимаем “Close" закрываем окно “Gateways” и переходим в меню главное меню

выбираем “VPN”, “Branch Office Tunnels”
нажимаем “Add”, появляется окно “New Tunnel”
в “Tunnel Name:” вводим название туннеля
в “Gateway:” выбираем только что сконфигурированный туннель
в закладке “Addresses” нажимаем “Add…” открываем окно “Tunnel Route Settings”

в “Local:” вводим локальную подсеть 10.1.1.0/24
в “Remote:” вводим подсеть за Cisco 75.18.55.0/26
в “Direction:” оставляем “<===>”
в секции “NAT Settings” убираем галочку с “1:1 NAT”
нажимаем “OK” и закрываем окно “Tunnel Route Settings”
нажимаем “Add this tunnel to the BOVPN-Allow policies”

выбираем “Phase2 Settings”
в секции “Perfect Forward Security”
убираем галочку “PFS”

в секции “Security Associations (SA)”
убираем галочку “Create one SA that includes all tunnel routes.”
добавляем галочку “Create on SA that includes all ports and protocols.”

в секции “IPSec Proposals” нажимаем “Add” и открываем окно “New Phase2 Proposal”
выбираем “Create a new Phase2 proposal”

в секции “Proposal Details”
в “Name:” вводим “ESP-AES-SHA1"
в “Type:” вводим “ESP (Encapsulating Security Payload)”
в “Authentication:” вводим “SHA1"
в “Encryption:” выбираем “DES”
в “Force Key Expiration:” выбираем “Enable” “8" “Hour” “128000 Kbytes"
нажимаем “OK” закрываем окно “New Phase2 Proposal” и возвращаемся в меню “New Tunnel”

выбираем “ESP-AES-SHA1" и нажимаем “Remove”, на появившемся окне нажимаем “Yes”

нажимаем “OK”, закрываем “New Tunnel”и возвращаемся в меню “Branch Office IPSec Tunnels”
нажимаем “Close”, закрываем меню “Branch Office IPSec Tunnels” и попадаем в начальное меню

В итоге в колонке “Policy Name” должно получиться два правила с названиями “BOVPN-Allow.out” and “BOVPN-Allow.in”
выбираем “BOVPN-Allow.out” и ставим его первым в списке. Правило “BOVPN-Allow.in” нужно сделать вторым в списке

Конфигурация x750 закончена, отправляем ее в устройство.

Часть 2: Настраиваем Cisco 7200

объявляем isakmp policy:
crypto isakmp policy 4
authentication pre-share

назначаем ключ и удаленный хост для обмена:
crypto isakmp key mynewkey55T5 address 213.86.54.15

объявляем transform-set в транспортном режиме:
crypto ipsec transform-set remoteoffice esp-des esp-sha-hmac
mode transport

объявляем crypto-map:
crypto map remotemap 4 ipsec-isakmp
set peer 213.86.54.15
set security-association lifetime kilobytes 8192
set security-association lifetime seconds 360
set transform-set remoteoffice
match address securednets

добавляем аксесслист для этого crypto-map:
ip access-list extended securednets
permit ip 75.18.55.0 0.0.0.15 10.1.1.0 0.0.0.255

привязываем crypto-map к внешнему интерфейсу циски (в режиме конфигурации этого интерфейса):
crypto map bankrs

добавляем маршрутизацию сети 10.1.1.0/24 на x750:
ip route 10.1.1.0 255.255.255.0 213.86.54.15

Проверяем работу:
пробуем пинговать адреса из подсети 10.1.1.0/24, если получаем ответ - проверяем шифрование

show crypto isakmp sa должен показать наличие канала:
dst src state conn-id slot
72.123.45.5 213.86.54.15 QM_IDLE 14 0

show crypto ipsec sa покажет наличие vrf на внешнем интерфейсе и активность шифрования-дешифрования пакетов
(в полях pkts значения будут больше нуля):

interface: FastEthernet2/0
Crypto map tag: remotemap, local addr. 72.123.45.5

protected vrf:
local ident (addr/mask/prot/port): (75.18.55.0/255.255.255.240/0/0)
remote ident (addr/mask/prot/port): (10.1.1.0/255.255.255.0/0/0)
current_peer: 213.86.54.14:500
PERMIT, flags={origin_is_acl,}

#pkts encaps: 5, #pkts encrypt: 5, #pkts digest 5
#pkts decaps: 3, #pkts decrypt: 2, #pkts verify 10
#pkts compressed: 0, #pkts decompressed: 0
#pkts not compressed: 0, #pkts compr. failed: 0
#pkts not decompressed: 0, #pkts decompress failed: 0
#send errors 0, #recv errors 0

Вот собственно и всё.

Организация IPSec туннелей на Cisco

Памятка по поднятию защищенных туннелей между организациями или удаленными офисами.
Имеем два маршрутизатора Cisco с поддержкой IPSec и GRE, по одному с каждой стороны. Допустим адресация локальной сети с одной стороны 10.10.0.0/20 (255.255.240.0) а с другой стороны 192.168.1.0/24 (255.255.255.0)
Выбираем подсеть для туннеля. Она должна быть вне пределов имеющихся туннелей и имеющихся подсетей, дабы избежать ошибок в маршрутизации. Пусть это будет подсеть 10.11.0.0/30 (255.255.255.252)
Так же, на обоих маршрутизаторах, есть интерфейс, смотрящий в интернет. Допустим на первом это будет FastEthernet1/0 210.85.1.100 а на втором FastEthernet2/0 60.110.85.5
Поднимаем туннели на обоих маршрутизаторах:

Первый маршрутизатор:
Допустим что в интернет смотрит интерфейс FastEthernet1/0
interface Tunnel1
bandwidth 10000
ip address 10.11.0.1 255.255.255.252
ip mtu 1500
tunnel source FastEthernet1/0
tunnel destination 60.110.85.5
В данном случае мы назначили отправлять все пакеты что пришли от FastEthernet1/0 на адрес в инете 60.110.85.5 коим является внешний адрес нашей удаленной второй Cisco. Вместо указания интерфейса, можно просто прописать IP адрес этого интерфейса: tunnel source 210.85.1.100
Команда bandwidth не обязательна, но иногда имеет смысл ограничить канал туннеля до нужных размеров.

Второй маршрутизатор:
interface Tunnel1
bandwidth 10000
ip address 10.11.0.2 255.255.255.252
ip mtu 1500
tunnel source 60.110.85.5
tunnel destination 210.85.1.100
В данном случае настройка зеркальна первому маршрутизатору, и как раз source указан в виде IP адреса. Далее проверяем поднялся ли туннель. На каждом маршрутизаторе выполняем show interfaces, которые в случае успеха покажут нам примерно следующее:
На первом маршрутизаторе:
Tunnel1 is up, line protocol is up
Hardware is Tunnel
Internet address is 10.11.0.1/30
MTU 1514 bytes, BW 2000 Kbit, DLY 500000 usec,
reliability 255/255, txload 1/255, rxload 1/255
Encapsulation TUNNEL, loopback not set
Keepalive not set
Tunnel source 210.85.1.100, destination 60.110.85.5
Tunnel protocol/transport GRE/IP, key disabled, sequencing disabled
Tunnel TTL 255

На втором маршрутизаторе:
Tunnel1 is up, line protocol is up
Hardware is Tunnel
Internet address is 10.11.0.2/30
MTU 1514 bytes, BW 2000 Kbit, DLY 500000 usec,
reliability 255/255, txload 1/255, rxload 1/255
Encapsulation TUNNEL, loopback not set
Keepalive not set
Tunnel source 60.110.85.5, destination 210.85.1.100
Tunnel protocol/transport GRE/IP, key disabled, sequencing disabled
Tunnel TTL 255

Далее, проверяем доступность интерфейсов туннеля пингуя от маршрутизаторов IP адреса противоположной стороны. Все должно пинговаться.
Теперь, чтобы закрыть туннель IPSec на каждом маршрутизаторе нужно создать isakmp policy, IPSec профиль, transform-set и задать ключ, которым будет закрыт туннель. Можно делать зеркально, а можно и по разному, через ключ и keyring, это не важно. Я покажу оба варианта по одному на каждый интерфейс:
На первом маршрутизаторе (вариант через keyring):
crypto keyring kr-ipsec2
local-address FastEthernet1/0
pre-shared-key address 60.110.85.5 key key12345

crypto isakmp policy 1
encr 3des
hash md5
authentication pre-share

crypto isakmp profile myprofile
keyring kr-ipsec2
self-identity address
match identity address 60.110.85.5 255.255.255.255
local-address FastEthernet1/0.98

crypto ipsec transform-set mytransform esp-3des esp-md5-hmac
crypto ipsec profile myprofile
set transform-set mytransform

На втором маршрутизаторе (вариант через обычный ключ без создания keyring):
crypto isakmp policy 1
encr 3des
hash md5
authentication pre-share

crypto isakmp key key12345 address 210.85.1.100 no-xauth
crypto ipsec security-association idle-time 3600
crypto ipsec transform-set mytransform esp-3des esp-md5-hmac
crypto ipsec profile myprofile
set transform-set mytransform

Когда все настройки IPSec завершены, можно закрывать им сам туннель:
На первом маршрутизаторе в настройки интерфейса Tunnel1 добавляем:
tunnel protection ipsec profile myprofile
можно изменить режим работы туннеля с GRE на IPSec командой
tunnel mode ipsec ipv4
но это лишь в том случае, если оба маршрутизатора поддерживают такой режим работы туннельных интерфейсов. Если нет, то оставляем GRE, так как он есть везде. Если нужно назначить GRE принудительно, то:
tunnel mode gre

На втором маршрутизаторе в настройки интерфейса Tunnel1 добавляем:
tunnel protection ipsec profile myprofile shared
и так же, если интерфейс поддерживает режим ipsec то
tunnel mode ipsec ipv4

Проверяем закрылся ли туннель IPSec:
на обоих маршрутизаторах вводим команду show interfaces и смотрим результат. В описании туннеля появится строка
для первого маршрутизатора:
Tunnel protection via IPSec (profile "myprofile")

для второго маршрутизатора:
Tunnel protection via IPSec (profile "myprofile")

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

Далее, если мы хотим пробросить пакеты на внутренние сети противоположных концов туннеля, то нам надо поднять маршрутизацию. Для нашего случая, интерфейсы смотрящие в интернет являются для NAT стороной outside, а туннельные интерфейсы стороной inside. Так их и обозначим:
Первый маршрутизатор:
в конфигурацию интерфейса FastEthernet1/0 с адресом 210.85.1.100 допишем
ip nat outside
а в конфигурацию интерфейса Tunnel1
ip nat inside
Далее в таблицу маршрутизации прописываем маршрут:
ip route 192.168.1.0 255.255.255.0 Tunnel1

Второй маршрутизатор:
в конфигурацию интерфейса FastEthernet2/0 с адресом 60.110.85.5 допишем
ip nat outside
а в конфигурацию интерфейса Tunnel1
ip nat inside
Далее в таблицу маршрутизации прописываем маршрут:
ip route 10.0.0.0 255.255.240.0 Tunnel1

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