This is an old revision of the document!
Table of Contents
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.
В ходе первой фазы согласовываются следующие параметры:
- Протокол шифрации
- Алгоритм хэширования
- Метод аутентификации
- Preshared key (разделяемый ключ, слово)
- Digital key (Цифровая подпись, сертификат)
- Public key encryption (открытый ключ)
- Группа Diffie-Hellman
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