Table of Contents
JN0-332: IPSec VPNs
Необходимые знания по IPSec:
- Identify the concepts, benefits and operation of IPSec VPNs:
- Secure VPN characteristics and components
- IPSec tunnel establishment
- IPSec traffic processing
- Junos OS IPSec implementation options
- Demonstrate knowledge of how to configure, monitor and troubleshoot IPSec VPNs:
- IPSec VPN configuration steps
- Monitoring and troubleshooting
Проблемы безопасности в разрезе передачи информации через через ip сети:
- Конфиденциальность (Confidentiality) - чувствительную для бизнеса информацию надо шифровать.
Нужно добиться того, что бы в случае перехвата информации её нельзя было прочесть и\или понять. - Целостность (Integrity) - всегда надо проверять целостность принятой информации.
Информация по пути может “попортиться” в случае потерь на одном из каналов связи или при её намеренном изменении. Факт изменения информации надо отслеживать . - Аутентификация (authentication) - всегда надо понимать с кем ты строишь ipseс туннель, что бы не построить его с врагом.
Соответственно задачи srx при построении ipsec туннеля будут такими:
- Зашифровать ip пакет.
- Проверить целостность передаваемых пакетов
- Идентифицировать удаленный srx c которым строится ipsec туннель.
Confidentiality
Data Encryption
Шифрование - процесс перевода plaintext в нечитаемый вид, т.н. ciphetext.
Основные составными части шифрования - алгоритм и ключ шифрования, что бы можно было расшифровать данные нужно знать алгоритм и ключ.
Типы шифрования :
- Шифрование симметричный ключом - данные шифруются и расшифровываются одним и тем же ключом.
Пример - AES (Advanced Encryption Standart), ГОСТ, Blowfish, CAST, DES (Data Encryprion Standart). - Шифрование несимметричный (открытым) ключом - данные шифруются открытым ключом, а расшифровываются закрытом ключом получателя.
Пример - RSA, El-Gamal.
Symmetric Key Encryption
Обмен информацией осуществляется в три этапа:
- отправитель передает получателю ключ (в сети с несколькими абонентами у каждой пары абонентов должен быть свой ключ, отличный от ключей других пар);
- отправитель, используя ключ, зашифровывает сообщение, которое пересылается получателю;
- получатель получает сообщение и расшифровывает его.
Размер ключа обычно варьируется от 40 до 1024 бит. Такой способ хорошо подходит для шифрования больших объемов данных. Надо аккуратно относиться к передачи секретного ключа.
Симметричное шифрование используется при построении ipsec туннелей, с каждой стороны пишем pre-shared-key (??).
Public (open) Key Encryption
Схема обмена информацией следующая:
- Получатель вычисляет открытый и секретный ключи, секретный ключ хранит в тайне, открытый же делает доступным (сообщает отправителю, группе пользователей сети, публикует);
- Отправитель, используя открытый ключ получателя, зашифровывает сообщение, которое пересылается получателю;
- Получатель получает сообщение и расшифровывает его, используя свой секретный ключ.
Размер ключа обычно выбирают от 512 до 2048 бит. Т.к. ключ длинный процесс шифрование идет медленнее.
Integrity
Данные зашифрованы и отправлены, теперь на стороне получателя надо проверить, что эти данные по пути не были модифицированы. Для этого используют алгоритмы хэширования.
Перед отправкой данные пропускаются через алгоритм хэширования и на выходе получается некое значение хэша.
Это значение отправляется вместе с данными.
На принимающей стороне данные прогоняются через тот же алгоритм хэширования и полученное значение хэша сравнивается со значением которые насчитал отправитель. Если значения одинаковые значит все хорошо, если значения не совпадают, то пакет дропается.
К функции хэша применяются след. требования:
- Не должно быть возможности получить оригинальные данные из значения хэша.
- Одно и тоже значение хэша не должно получаться из двух разных начальных данных, хэш всегда должен быть уникальным.
Примером такой функции является функция определения остатка от деления - остаток при делении 80 на 11 будет равняться 3 (80 делим на 11 целое число раз и получаем остаток - целое число раз будет равняться 7, 7*11=77, 80-77=3 ). Зная, что остаток равняется 3 мы не сможем точно узнать что на что делилось.
80mod11=3
13mod5=3
203mod10=3 и т.д.
13mod5=3 эта такая форма записи в англоязычной литературе, к нашему модулю “| |” отношение вроде не имеет.
На на практике вычисления функция вычисления остатка не применяется, т.к. невозможно обеспечить уникальность результата.
Наиболее распространенными функциями являются SHA1, SHA3 (secure hash algoritm) и MD5 (message digest).
Аuthentication
Данные зашифрованы - никто их не прочитает. Хэш посчитан - о изменении передаваемых данных узнаем.
Осталось убедиться, что мы обмениваемся данными с правильным “собеседником”.
Для этого применяется механизм HMAC (Hashed MeassageAuthentication Code).
Принцип hmac:
- отправляющий к данным добавляем (appends) preshared-key, хэширует данные и отправляет
- данные с хэшем доходят до получателя
- получатель отделяет данные от хэша
- получатель добавляет свою версию preshared-key и считает хэш.
- получатель сравнивает высчитанное значение хэша с тем которое он получил от отправителя, если одинаковые, то все ок.
Обмен ключами
Ключи используются при шифровании и аутентификации, ключами надо как-то безопасно обмениваться.
Обменяться ключами можно в ручном режиме или автоматически.
При ручном обмене обычно с обоих сторон ставят один ключи и его всегда используют, передать этот ключ можно, например. на флешке. Часто менять ключ сложно т.к. его каждый раз надо надежным способом доставить и настроить.
При автоматическом обмене флешку возить не надо, но надо как-то безопасным образом передавать ключи через интернет. Для этого используют протокол Diffie-Hellman с помощью которого две стороны получают общий секретный ключ который в дальнейшем используются при не (Перечитать!!) симметричном шифровании.
DH
У протокола DH есть несколько групп определяющие длину числа, над которым производятся математические вычисления (combination of exponential and modulus calculation), используемое при генерации ключа.
Junos поддерживает группы 1 (длина числа 768 бит), 2 (1024 бит) и 5 (1536 бит).
Вставить картинку с chapter7-7
—-
IPSec
IPSec - это набор стандартов\протоколов с помощью которых можно организовать безопасную передачу данных через ip сети.
Два основных этапа:
- Поднятие ipsec туннеля - туннеля поднимается руками (??) или автоматически c помощью протокола IKE (Internet Key Excahnge).
- Передача данных внутри ipsec туннеля - собственно шифруем данные.
IKE
IKE это протокол используемый для безопасного согласования параметров туннеля.
IKE работает по udp/500 и udp/4500. System service должен быть включен на интерфейсе от имени которого строится туннель.
{primary:node0}[edit security zones security-zone untrust]
admin@srx650-master# show
...
reth0.261 {
host-inbound-traffic {
system-services {
ping;
traceroute;
ike;
}
}
}
Обмен информацией осуществляется парными сообщениями «запрос — ответ». Такие пары называются «обмен» («exchange»).
Обмен данными в IKE происходит в 2 фазы. В первой фазе устанавливается SA IKE. Во второй фазе SA IKE используется для согласования пары SA IPSec.
SA
Security Associations - это набор согласованных параметров (см. выше), ключей и протоколов которыми будет шифроваться данные. Другими словами SA в принципе можно назвать соединением, после установления которого начинается безопасная передача данных.
SA уникальна и идентифицируется след. параметрами:
- SPI (Security Paremeter Index)
- Адрес назначения
- Протокол безопасности (ESP или AH)
SA IKE - устанавливается во время первой фазы, SA двунаправленная
{primary:node0}[edit security zones security-zone untrust]
admin@srx650-master# run show security ike security-associations
node0:
--------------------------------------------------------------------------
Index State Initiator cookie Responder cookie Mode Remote Address
8191533 UP ef6b34533d577417 7c3c47e505cbae39 Main 10.11.5.5
{primary:node0}[edit security zones security-zone untrust]
admin@srx650-master# run show security ike security-associations index 8191533 detail
node0:
--------------------------------------------------------------------------
IKE peer 10.11.5.5, Index 8191533, Gateway Name: IKE-GW-MSK-01-PTP
Role: Initiator, State: UP
Initiator cookie: ef6b34533d577417, Responder cookie: 7c3c47e505cbae39
Exchange type: Main, Authentication method: Pre-shared-keys
Local: 10.11.5.4:500, Remote: 10.11.5.5:500
Lifetime: Expires in 42709 seconds
Peer ike-id: 10.11.5.5
Xauth assigned IP: 0.0.0.0
Algorithms:
Authentication : hmac-sha1-96
Encryption : aes256-cbc
Pseudo random function: hmac-sha1
Diffie-Hellman group : DH-group-5
Traffic statistics:
Input bytes : 811208
Output bytes : 809296
Input packets: 8773
Output packets: 8743
IPSec security associations: 15 created, 15 deleted
Phase 2 negotiations in progress: 1
Negotiation type: Quick mode, Role: Initiator, Message ID: 0
Local: 10.11.5.4:500, Remote: 10.11.5.5:500
Local identity: 10.11.5.4
Remote identity: 10.11.5.5
Flags: IKE SA is created
SA IPSEC - устанавливается во время второй фазы через ранее установленный SA IKE, SA однонаправленный, нужно две.
{primary:node0}[edit security zones security-zone untrust]
admin@srx650-master# run show security ipsec security-associations
node0:
--------------------------------------------------------------------------
Total active tunnels: 24
ID Algorithm SPI Life:sec/kb Mon lsys Port Gateway
<131075 ESP:aes-cbc-256/sha1 2c00e182 2074/ unlim - root 500 10.11.5.5
>131075 ESP:aes-cbc-256/sha1 34ea8f60 2074/ unlim - root 500 10.11.5.5
{primary:node0}[edit security zones security-zone untrust]
admin@srx650-master# run show security ipsec security-associations detail index 131075
node0:
--------------------------------------------------------------------------
ID: 131075 Virtual-system: root, VPN Name: IKE-VPN-MSK-01-PTP
Local Gateway: 10.11.5.4, Remote Gateway: 10.11.5.5
Local Identity: ipv4_subnet(any:0,[0..7]=0.0.0.0/0)
Remote Identity: ipv4_subnet(any:0,[0..7]=0.0.0.0/0)
Version: IKEv1
DF-bit: clear, Bind-interface: st0.905
Port: 500, Nego#: 1644, Fail#: 0, Def-Del#: 0 Flag: 0x600a29
Tunnel events:
Tue May 30 2017 11:35:04 +0300: IPSec SA negotiation successfully completed (218 times)
Mon May 29 2017 23:38:32 +0300: IKE SA negotiation successfully completed (57 times)
Mon May 22 2017 23:38:01 +0300: Reached maximum allowed negotiation trigger. Delayed triggering negotiation (2 times)
Mon May 22 2017 23:15:42 +0300: IPSec SA negotiation successfully completed (48 times)
Sun May 21 2017 07:33:52 +0300: Reached maximum allowed negotiation trigger. Delayed triggering negotiation (1 times)
Sun May 21 2017 07:33:47 +0300: IPSec SA negotiation successfully completed (17 times)
Sat May 20 2017 17:30:06 +0300: Reached maximum allowed negotiation trigger. Delayed triggering negotiation (1 times)
Sat May 20 2017 17:30:01 +0300: IPSec SA negotiation successfully completed (3 times)
Sat May 20 2017 15:00:49 +0300: Reached maximum allowed negotiation trigger. Delayed triggering negotiation (1 times)
Mon Apr 03 2017 23:35:26 +0300: No response from peer. Negotiation failed (64 times)
Mon Apr 03 2017 19:40:34 +0300: IKE SA negotiation successfully completed (1 times)
Direction: inbound, SPI: 2c00e182, AUX-SPI: 0
Hard lifetime: Expires in 2056 seconds
Lifesize Remaining: Unlimited
Soft lifetime: Expires in 1494 seconds
Mode: Tunnel(0 0), Type: dynamic, State: installed
Protocol: ESP, Authentication: hmac-sha1-96, Encryption: aes-cbc (256 bits)
Anti-replay service: counter-based enabled, Replay window size: 64
Direction: outbound, SPI: 34ea8f60, AUX-SPI: 0
Hard lifetime: Expires in 2056 seconds
Lifesize Remaining: Unlimited
Soft lifetime: Expires in 1494 seconds
Mode: Tunnel(0 0), Type: dynamic, State: installed
Protocol: ESP, Authentication: hmac-sha1-96, Encryption: aes-cbc (256 bits)
Anti-replay service: counter-based enabled, Replay window size: 64
Фазы IKE
Фаза 1
Тезисно:
- Два пира построили безопасный канал связи через который в дальшейшем будут согласовываться SA IPSec.
- Алгоритм DH сформировал симметричный ключ.
- Main mode - используется когда оба пира имеют статический внешний ip адрес.
- Aggressive mode - используется когда один из пиров находится за vpn.
В ходе первой фазы согласовываются следующие параметры:
- Алгоритм шифрования
- Алгоритм хэширования
- Метод аутентификации
- Preshared key (разделяемый ключ, слово)
- Digital key (Цифровая подпись, сертификат)
- Public key encryption (открытый ключ)
- Группа Diffie-Hellman
Main mode Вставить картинку с chapter7-10
Message1 и Message2 - пиры обмениваются куками и SA пропосалами.
Куки это уникальные числа сгенеренные (был взят хэш) на основе ip адресов, порта, времени. Посмотреть на ответную куку инициатор соединения сможет убедиться, что ему ответил нужный пир.
SA пропосал это предложение по параметрам SA.
{primary:node0}[edit security ike]
admin@srx650-master# show proposal DEFAULT-FILIALS-IKE-PROPOSAL
authentication-method pre-shared-keys;
dh-group group5;
authentication-algorithm sha1;
encryption-algorithm aes-256-cbc;
lifetime-seconds 86400;
Message3 и Message4 - алгоритм DH обменялся публичными данными и сформировал симметричный ключ. Дальнейший обмен уже шифруется.
Message5 и Message6 - пиры аутентифицируют друг друга выбранным методом (preshared key, open key, digital signature) и фаза1 успешно завершается.
Aggresive mode Используется когда один из пиров имеет динамический ip адрес или стоит за натом т.к. в main mode первые два сообщения используют внешние адреса при формировании куков. Пир с динамическим адресом достоверное не знает его.
Вставить картинку с chapter7-11
Message1 - пир с динамическим адресом посылает куки, SA пропосал, публичные ключ алгорима DH.
Message2 - пир со статическим адресом посылает ответные куки, сообщение о принятии SA пропосал, свою публичное ключ алгорима DH. Дальнейший обмен уже шифруется.
Message3 - пир с динамическим адресом посылает один из ключей (preshared key, open key, digital signature) и если все хорошо, то второй пир аутентифицирует первого и фаза 1 успешно завершается.
Фаза 2
Вставить картинку с chapter7-12
Message1 и Message2 - пиры обмениваются и согласовывают SA пропосалами.
SA пропосал включает в себя:
- IPSec протокол - ESP или AH
- Группу DH (0 если не формируем новый общий симметричный ключ)
- Алгоритм шифрования
- Алгоритм хэширования
- Время жизни ключа (время и/или объем переданных данных)
- Proxy ID
- Публичные ключи DH
{primary:node0}[edit security ipsec]
admin@srx650-master# set proposal DEFAULT-FILIALS-IPSEC-PROPOSAL ?
Possible completions:
<[Enter]> Execute this command
+ apply-groups Groups from which to inherit configuration data
+ apply-groups-except Don't inherit configuration data from these groups
authentication-algorithm Define authentication algorithm
description Text description of IPSec proposal
encryption-algorithm Define encryption algorithm
lifetime-kilobytes Lifetime, in kilobytes (64..4294967294 kilobytes)
lifetime-seconds Lifetime, in seconds (180..86400 seconds)
protocol Define an IPSec protocol for the proposal
| Pipe through a command
{primary:node0}[edit security ipsec]
admin@srx650-master# show
...
proposal DEFAULT-FILIALS-IPSEC-PROPOSAL {
protocol esp;
authentication-algorithm hmac-sha1-96;
encryption-algorithm aes-256-cbc;
lifetime-seconds 3600;
}
...
policy DEFAULT-FILIALS-VPN-POLICY {
perfect-forward-secrecy {
keys group5;
}
proposals DEFAULT-FILIALS-IPSEC-PROPOSAL;
}
Message3 - принимаем пропосал, поднимаем пару SA IPSEC и успешно завершаем вторую фазу.
IPSec: Передача трафика
IPSec может работать в двух режимах:
- Транспортный - в транспортном режиме шифруются только данные ip пакета, а заголовок (информация о изначальных ip адресах) не меняется и не шифруются.
Такой режим используется когда надо зашифровать данные внутри иного туннеля, например L2PT. - Туннельный - шифруется весь ip и сверху добавляются новые ip заголовки. Это основной режим работы.
Протоколы IPSec
- AH (Authentication Header) - протокол отвечает за:
- Целостность данных (integrity, MD5/SHA-1)
- Аутентификацию данных
- Номер протокола 51 (/etc/protocols)
- Не обеспечивает шифрование
- ESP (Encapsulating Security Payload) - протокол отвечает за:
- Целостность данных (integrity)
- Аутентификацию данных
- Номер протокола 50 (/etc/protocols)
- Шифрует данные (DES, AES)
—-
Настройка
admin@srx650-master> show configuration security ike
...
proposal DEFAULT-FILIALS-IKE-PROPOSAL {
authentication-method pre-shared-keys;
dh-group group5;
authentication-algorithm sha1;
encryption-algorithm aes-256-cbc;
lifetime-seconds 86400;
}
...
policy IKE-POLICY-MSK-01 {
mode main;
proposals DEFAULT-FILIALS-IKE-PROPOSAL;
pre-shared-key ascii-text "$9$ixxxxxxxxxxxxxxxxxxxxxxxxxxxx6At"; ## SECRET-DATA
}
policy IKE-POLICY-MSK-01-PTP {
mode main;
proposals DEFAULT-FILIALS-IKE-PROPOSAL;
pre-shared-key ascii-text "$9$kxxxxxxxxxxxxxxxxxxxfz"; ## SECRET-DATA
}
...
gateway IKE-GW-MSK-01 {
ike-policy IKE-POLICY-MSK-01;
address 147.45.yyy.xxx;
dead-peer-detection always-send;
external-interface reth0.261;
}
gateway IKE-GW-MSK-01-PTP {
ike-policy IKE-POLICY-MSK-01-PTP;
address 10.11.5.5;
dead-peer-detection always-send;
external-interface reth0.162;
}
...
{primary:node0}
admin@srx650-master> show configuration security ipsec
...
proposal DEFAULT-FILIALS-IPSEC-PROPOSAL {
protocol esp;
authentication-algorithm hmac-sha1-96;
encryption-algorithm aes-256-cbc;
lifetime-seconds 3600;
}
...
policy DEFAULT-FILIALS-VPN-POLICY {
perfect-forward-secrecy {
keys group5;
}
proposals DEFAULT-FILIALS-IPSEC-PROPOSAL;
}
...
vpn IKE-VPN-MSK-01 {
bind-interface st0.5;
ike {
gateway IKE-GW-MSK-01;
ipsec-policy DEFAULT-FILIALS-VPN-POLICY;
}
establish-tunnels immediately;
}
vpn IKE-VPN-MSK-01-PTP {
bind-interface st0.905;
ike {
gateway IKE-GW-MSK-01-PTP;
ipsec-policy DEFAULT-FILIALS-VPN-POLICY;
}
establish-tunnels immediately;
}
...
{primary:node0}
admin@srx650-master> show configuration interfaces st0
...
unit 5 {
description vpn_to_msk-01;
family inet {
address 10.11.5.13/30;
}
}
...
unit 905 {
description vpn_to_msk-01_ptp;
family inet {
address 10.11.5.9/30;
}
}
{primary:node0}
admin@srx650-master> show configuration security zones security-zone vpn
...
st0.5 {
host-inbound-traffic {
system-services {
ping;
traceroute;
}
protocols {
ospf;
}
}
}
st0.905 {
host-inbound-traffic {
system-services {
ping;
traceroute;
}
protocols {
ospf;
}
}
}
...
{primary:node0}
admin@srx650-master> show route
...
192.168.5.0/24 *[OSPF/10] 5d 00:33:01, metric 2
> via st0.905
...
