Резервирование каналов связи при помощи пакета «changeroutes»
Дополнительный файл:
changeroutes_3.02_sterra-1_all.rar
Документ описывает ряд необходимых процедур, которые нужно выполнить на С-Терра Шлюз, чтобы реализовать возможность резервирования каналов связи при помощи пакета «changeroutes».
Пакет «changeroutes» предназначен для резервирования каналов связи (Интернет провайдеров) в режиме основной/резервный. Пакет «changeroutes» разработан для функционирования на шлюзах безопасности «С-Терра Шлюз 4.2».
Сервис changeroutes конфигурируется через файл /etc/changeroutes/changeroutes.ini.
Доступность канала определяется по доступности хостов (параметр IP_HOSTS в конфигурационном файле) посредством протокола ICMP – если доступен хоть один хост, указанный в IP_HOSTS, то канал считается рабочим. Как только все хосты становятся недоступны, то происходит переключение на резервный канал. При восстановлении основного канала происходит обратное переключение.
1) Не устанавливайте версии пакета changeroutes ниже чем 2.00~sterra-2 на СКЗИ КС2/КС3, так как после перезагрузки ОС Шлюз будет неработоспособен.
2) Также, если на аппаратной платформе установлен АПМДЗ, то следует пересчитать хеш суммы.
1. Максимальное количество поддерживаемых интерфейсов: 2 (active/passive).
2. Получение сетевых параметров по DHCP на отслеживаемых интерфейсах настоятельно не рекомендуется к использованию в текущей версии 3.02~sterra-1.
3. Так как сервис changeroutes сам управляет маршрутами по умолчанию, то задавать их вручную через консоль cisco-like, либо LSP – запрещено.
4. Состояние резервного канала не отслеживается: при недоступном основном происходит безусловное переключение на резервный.
5. При переключении канала происходит очистка текущих ISAKMP/IPsec туннелей и таблицы трансляций NAT.
6. Резервирование каналов в сценарии RRI (reverse route injection) может приводить к проблемам при переключении, так как механизм RRI добавляет маршруты до защищаемых подсетей через шлюз по умолчанию.
Инженер, планирующий использовать данную инструкцию, должен свободно ориентироваться в настройке базовых сценариев продукта «С-Терра Шлюз» (например, site-to-site IPsec), а также должен знать и понимать следующие технологии и протоколы: PKI, IPsec, NAT, Firewall.
Перед настройкой должно быть выполнено следующее:
1. Шлюз должен быть инициализирован.
2. На шлюзе должны быть установлены корневой сертификат УЦ и сертификат устройства.
Исключительно для тестовых целей можно использовать тестовый УЦ от «КриптоПро», веб-интерфейс: https://www.cryptopro.ru/certsrv/certrqxt.asp.
1. Загрузите deb-пакет changeroutes_3.02~sterra-1_all.deb с личного кабинета Партнера (https://www.s-terra.ru/auth/).
2. Доставьте deb-пакет changeroutes_3.02~sterra-1_all.deb на С-Терра Шлюз и установите его:
root@sterragate:~# dpkg -i changeroutes_3.02~sterra-1_all.deb
Selecting previously unselected package changeroutes.
(Reading database ... 18517 files and directories currently installed.)
Unpacking changeroutes (from changeroutes_3.02~sterra-1_all.deb) ...
Setting up changeroutes (3.02~sterra-1) ...
После установки deb-пакета конфигурационный файл changeroutes.ini будет располагаться в директории /etc/changeroutes.
При конфигурировании сервиса changeroutes нужно обязательно соблюдать следующие правила:
1) Все параметры должны быть представлены в конфигурационном файле.
2) Значения всех параметров должны быть указаны в двойных кавычках.
3) Нельзя использовать пробелы между параметром, знаком равно и значением
параметра (только так: MAIN_INTERFACE="eth0"
и никак иначе).
4) Строки с параметрами не должны содержать пробелов ни в начале, ни в
конце.
5) Нельзя использовать комментарий на той же строке, где задан параметр.
6) Если используется несколько IP хостов для определения доступности канала,
то IP-адреса должны быть разделены пробелом (IP_HOSTS="1.1.1.1
8.8.8.8").
1. Определите IP-адреса хостов по доступности которых будет определяться доступность канала и укажите их (важно: доступность хостов проверяется только через основной канал):
IP_HOSTS="1.1.1.1 8.8.8.8"
2. Укажите имена сетевых интерфейсов в linux нотации для основного и резервного каналов (чтобы посмотреть имена интерфейсов воспользуйтесь командой ip address show в Linux bash):
MAIN_INTERFACE="eth0"
BACKUP_INTERFACE="eth1"
3. Укажите адреса шлюзов по умолчанию для основного и резервного каналов:
MAIN_GATEWAY="172.16.15.1"
BACKUP_GATEWAY="172.16.16.1"
4. Запустите сервис changeroutes и добавьте его автозагрузку:
root@sterragate:~# service changeroutes start
Starting daemon changeroutes_daemon ...done.
root@sterragate:~# update-rc.d changeroutes enable
Посмотреть лог работы сервиса можно в файле /var/log/cspvpngate.log:
root@sterragate:~# tail -n 1000 /var/log/cspvpngate.log | grep changeroutes
Sep 7 19:10:36 sterragate changeroutes: INFO: service was started with parameters: IP_HOSTS=1.1.1.1 8.8.8.8, MAIN_INTERFACE=eth0, BACKUP_INTERFACE=eth1, MAIN_GATEWAY=172.16.15.1, BACKUP_GATEWAY=172.16.16.1, FAILURE_PING_COUNT=10, PING_INTERVAL=3, RESTORE_PING_COUNT=10, RESTORE_PING_INTERVAL=1.
Sep 7 19:10:36 sterragate changeroutes: INFO: all ISAKMP/IPsec SA was deleted.
Sep 7 19:10:36 sterragate changeroutes: INFO: all NAT translations was deleted.
Sep 7 19:10:36 sterragate changeroutes: INFO: switch to main interface eth0.
Перед началом настройки IKE/IPsec шлюз должен быть инициализирован, должны быть выпущены и установлены сертификаты.
1. Параметры IKE/IPsec (предположим, что шлюз на котором настраивается резервирование каналов, защищает взаимодействие между локальной подсетью 192.168.20.0/24 и удаленной 192.168.1.0/24; и имеет внешний IP-адрес 172.16.15.2 на основном канале и 172.16.16.2 – на резервном):
Количество крипто-карт должно соответствовать количеству внешних интерфейсов (отличие между крипто-картами должно быть только в значении параметра local-address).
Параметр local-address нужно использовать обязательно.
crypto ipsec df-bit clear
crypto isakmp identity dn
crypto isakmp session-time-max 10
crypto isakmp keepalive 1 3
crypto isakmp keepalive retry-count 3
!
crypto isakmp policy 1
encr gost
hash gost341112-256-tc26
authentication gost-sig
group vko2
!
crypto ipsec transform-set GOST esp-gost28147-4m-imit
!
ip access-list extended hub_spoke
permit ip 192.168.20.0 0.0.0.255 192.168.1.0 0.0.0.255
!
crypto map ISP1 1 ipsec-isakmp
match address hub_spoke
set transform-set GOST
set dead-connection history off
set local-address 172.16.15.2
set peer 172.16.10.2
!
crypto map ISP2 1 ipsec-isakmp
match address hub_spoke
set transform-set GOST
set dead-connection history off
set local-address 172.16.16.2
set peer 172.16.10.2
!
2. Параметры межсетевого экрана и рекомендации при использовании NAT:
Основная идея списков доступа в данном контексте – исключение ассиметричной маршрутизации (блокировка IKE/IPsec соединений на резервном канале, если доступен основной).
ip access-list extended DROP_IKE_FROM_GI1/1
deny udp host 172.16.15.2 eq isakmp any
deny udp host 172.16.15.2 eq non500-isakmp any
permit ip any any
!
ip access-list extended DROP_IKE_FROM_GI1/2
deny udp host 172.16.16.2 eq isakmp any
deny udp host 172.16.16.2 eq non500-isakmp any
permit ip any any
Список доступа DROP_IKE_FROM_GI1/2 будет использоваться для блокировки на интерфейсе GigabitEthernet1/1 исходящих IKE/NAT-T пакетов, которые имеют IP-адрес источника, принадлежащий к интерфейсу GigabitEthernet1/2 (для DROP_IKE_FROM_GI1/1 аналогично).
ВАЖНО: если на шлюзе используется source NAT (обязательно ознакомьтесь с документом «Использование утилиты «iptables»), то его нужно настраивать так, чтобы локальные IKE пакеты не попадали под его правила, также не забывайте исключать защищаемые подсети из source NAT (так как source NAT происходит до зашифрования), например:
####### Для трафика через основной канал #######
# Исключение из правил NAT локальных IKE пакетов.
iptables -t nat -A POSTROUTING -o eth0 –s 172.16.15.2 -p udp --source-port 500 -j ACCEPT
iptables -t nat -A POSTROUTING -o eth0 –s 172.16.15.2 -p udp --source-port 4500 -j ACCEPT
# Исключение из правил NAT защищаемого трафика.
iptables -t nat -A POSTROUTING -o eth0 -s 192.168.20.0/24 -d 192.168.1.0/24 -j ACCEPT
# Включение source NAT для оставшегося трафика.
iptables -t nat -A POSTROUTING -o eth0 -s 192.168.20.0/24 -j SNAT --to-source 172.16.15.2
####### Для трафика через резервный канал #######
# Исключение из правил NAT локальных IKE пакетов.
iptables -t nat -A POSTROUTING -o eth1 –s 172.16.16.2 -p udp --source-port 500 -j ACCEPT
iptables -t nat -A POSTROUTING -o eth1 –s 172.16.16.2 -p udp --source-port 4500 -j ACCEPT
# Исключение из правил NAT защищаемого трафика.
iptables -t nat -A POSTROUTING -o eth1 -s 192.168.20.0/24 -d 192.168.1.0/24 -j ACCEPT
# Включение source NAT для оставшегося трафика.
iptables -t nat -A POSTROUTING -o eth1 -s 192.168.20.0/24 -j SNAT --to-source 172.16.16.2
3. Прикрепление крипто-карт и списков доступа к интерфейсам:
interface GigabitEthernet1/1
ip address 172.16.15.2 255.255.255.0
ip access-group DROP_IKE_FROM_GI1/2 out
crypto map ISP1
!
interface GigabitEthernet1/2
ip address 172.16.16.2 255.255.255.0
ip access-group DROP_IKE_FROM_GI1/1 out
crypto map ISP2