Протокол ассоциации безопасности интернета и управления ключами — internet security association and key management protocol

[править] Введение

IPsec – это набор протоколов, использующихся для обеспечения сервисов приватности и аутентификации на сетевом уровне модели OSI. Эти протоколы можно разделить на два класса – протоколы защиты передаваемых данных (AH, ESP) и протоколы обмена ключами (IKE).

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

Для установления безопасных Интернет сессий необходимы однонаправленные Secure associations (SA) между участниками соединений. SA определяют, какие операции должны применяться к пакету. Они определяют: метод аутентификации, алгоритм шифрования, ключи шифрования и аутентификации, время жизни ключа шифрования, время жизни SA и номер последовательности (sequence number) для предотвращения повторений.

Secure associations могут быть установлены вручную или автоматически. Для автоматического установления SA используется IKE.

Устранение неполадок

В данном разделе содержатся сведения, помогающие при поиске и устранении неполадок конфигурации.

Команды поиска и устранения неисправностей

Некоторые команды show поддерживаются служебной программой Output Interpreter Tool (только для зарегистрированных пользователей), что позволяет просматривать результаты выполнения команды show.

Примечание.  Перед использованием команд отладки debug  ознакомьтесь с документом под названием Важные сведения о командах Debug.

  • debug crypto ipsec  — отображает события IPsec. Параметр no отключает вывод результатов выполнения этой команды.

  • debug crypto isakmp — отображает сообщения о событиях IKE. Параметр no отключает вывод результатов выполнения этой команды.

  • debug crypto engine — отображает сведения о механизме шифрования, например, при выполнении операционной системой Cisco IOS операций шифрования и дешифрования.

IKEv1 vs IKEv2

У IKE есть две версии — IKEv1 и IKEv2. IKEv2 получила сколько‐нибудь широкое распространение только в последние несколько лет, и то не везде, но у нее есть ряд ощутимых преимуществ.

  • Окончательная стандартизация работы через NAT — в большинстве случаев она теперь просто работает.
  • Livenesscheck — двусторонний keepalived для проверки, живы ли SA.
  • Возможность совместить несколько критериев шифрования трафика в одной SA.

В IKEv1 на каждую пару локальных и удаленных адресов нужна была отдельная SA. К примеру, если хостам 192.168.1.1 и 192.168.1.2 нужен доступ через туннель к 10.1.0.1 и 10.1.0.2, демон IKE создаст четыре отдельные SA. IKEv2 в этом смысле более гибкая.

В IKEv2 также окончательно удален aggressive mode, в котором параметры Phase 1 и Phase 2 передавались одновременно. Значительная часть реализаций, впрочем, давно перестала его поддерживать и в IKEv1 из‐за очевидных проблем с безопасностью такого подхода.

Если обе стороны поддерживают IKEv2, лучше использовать именно ее. Если интересно почитать стандарт, она описана в RFC 5996.

Заключение

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

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

/ статья из журнала ХАКЕР (06) 2019 /

Подписывайтесь на канал и узнавайте первыми о новых материалах, опубликованных на сайте.

Если считаете статью полезной,не ленитесь ставить лайки и делиться с друзьями.

ой… Нам очень жаль, но запросы, поступившие с вашего IP-адреса, похожи на автоматические.Диспетчер задач отключен администратором. Win32.Sector.21ping не является внутренней или внешней командой…Что делать, если не удаляется папка на Win7Все папки и файлы на флешке стали ярлыкамиОшибка OpenVPN CRL has expired (просрочен список CRL)

AH и ESP

Три основных компонента безопасности — доступность, аутентичность и конфиденциальность. IPsec может обеспечивать аутентичность, при этом ничего не делая для конфиденциальности.

Тем не менее его можно встретить в приложениях, где важна только аутентичность. К примеру, протокол маршрутизации OSPFv2 использовал пароли и суммы MD5 для защиты от поддельных анонсов, а его наследник OSPFv3 не включает никакой функциональности для защиты — вместо этого предлагается использовать IPsec в транспортном (прозрачном) режиме и с одной подписью AH без шифрования.

В туннельном режиме ESP шифрует весь пакет и передает его как полезную нагрузку, на другой стороне он извлекается, расшифровывается и маршрутизируется дальше.

Что интересно, оба они не работают поверх TCP или UDP, а используют отдельные номера протоколов IP. Во всяком случае, по умолчанию — ESP может быть инкапсулирован в UDP для работы через NAT, но об этом позже.

PPTP

Point-to-Point Tunneling Protocol (PPTP) — один из старейших VPN протоколов, используемых до сих пор, изначально был разработан компанией Microsoft.

PPTP использует два соединения — одно для управления, другое для инкапсуляции данных. Первое работает с использованием TCP, в котором порт сервера 1723. Второе работает с помощью протокола GRE, который является транспортным протоколом (то есть заменой TCP/UDP). Этот факт мешает клиентам, находящимся за NAT, установить подключение с сервером, так как для них установление подключения точка-точка не представляется возможным по умолчанию. Однако, поскольку в протоколе GRE, что использует PPTP (а именно enhanced GRE), есть заголовок Call ID, маршрутизаторы, выполняющие натирование, могут идентифицировать и сопоставить GRE трафик, идущий от клиента локальной сети к внешнему серверу и наоборот. Это дает возможность клиентам за NAT установить подключение point-to-point и пользоваться протоколом GRE. Данная технология называется VPN PassTrough. Она поддерживается большим количеством современного клиентского сетевого оборудования.

PPTP поддерживается нативно на всех версиях Windows и большинстве других операционных систем. Несмотря на относительно высокую скорость, PPTP не слишком надежен: после обрыва соединения он не восстанавливается так же быстро, как, например, OpenVPN.

В настоящее время PPTP по существу устарел и Microsoft советует пользоваться другими VPN решениями. Мы также не советуем выбирать PPTP, если для вас важна безопасность и конфиденциальность.

Конечно, если вы просто используете VPN для разблокировки контента, PPTP имеет место быть, однако, повторимся: есть более безопасные варианты, на которые стоит обратить внимание

Настройка своего VPN сервера

Теперь разберу еще один полезный, на мой взгляд, кейс. Так как ИКС бесплатен для 8-ми пользователей, его можно использовать как личный vpn сервер с удобным веб интерфейсом. Я покажу это на примере настройки OpenVPN сервера.

Идем в раздел VPN и запускаем OpenVPN.

Нам надо выпустить сертификаты для работы openvpn. Для этого идем в раздел Защита -> Сертификаты и добавляем новый.

Настройки можно оставить дефолтными, только название указать. И обязательно на вкладке Настройки указать, что это CA сертификат.

Рекомендую срок действия подольше поставить, чтобы потом не заниматься перевыпуском. После создания CA сертификата, надо добавить сертификат самого сервера. Для этого выбираем созданный сертификат и нажимаем Добавить.

Здесь тоже можно все дефолтное оставить, только поменяйте Имя или адрес хоста на что-то отличное от значения CA, иначе openvpn будет ругаться на сертификат при подключении. У меня на скриншоте это не сделано.

На вкладке Настройки обязательно указать, что это Конечный сертификат.

Должно получиться вот так — один сертификат за другим.

Идем в Провайдеры и сети и добавляем Openvpn-сеть.

Вам доступен весь основной функционал Openvpn, за который я его люблю. Можете заменять пользователю дефолтный шлюз, прокидывать необходимые маршруты и dns сервера, разрешать трафик между клиентами. На вкладке Шифрование и сертификаты укажите созданные ранее сертификаты.

Возвращаемся в раздел VPN и добавляем пользователя.

Разрешаем ему OpenVPN доступ и указываем созданную ранее OpenVPN-сеть.

Далее идем в настройки пользователя и на вкладке OpenVPN скачиваем конфиг для подключения.

Перед выгрузкой вас попросят указать внешний интерфейс, по которому пользователи будут подключаться к openvpn серверу. Он будет указан в параметре remote конфига openvpn. Скачанный конфиг кладем в папку с OpenVPN и подключаемся.

Ваше подключение будет отображаться во вкладке Текущие сеансы.

Так же факт подключения будет записан в журнал событий.

Это удобно, когда пользователей много и нужен контроль.

Вот в целом и все. Надеюсь у вас появилось представление о том, как все это работает в интернет шлюзе ИКС. По мне так все удобно и наглядно. Можно управлять большим количеством пользователей и сетей. То есть продукт может быть одинаково полезен как для больших организаций, так и для небольших коллективов или одиночных пользователей.

К примеру, вы можете установить себе собственный шлюз на базе ИКС, завести на него несколько удаленных подсетей через openvpn client на той стороне. Раскидать маршруты по удаленным сетям и самому подключаться к этому серверу для того, чтобы получать удаленный доступ ко всем подключенным объектам. Я примерно по такой схеме давно настроил себе vpn сервер и использую для управлением своим личным хозяйством, которого у меня много.

Аннотация

Важно!

В этот раздел, описание метода или задачи включены действия, содержащие указания по изменению параметров реестра. Однако неправильное изменение параметров реестра может привести к возникновению серьезных проблем. Поэтому следует в точности выполнять приведенные инструкции. Для дополнительной защиты создайте резервную копию реестра, прежде чем редактировать его. Так вы сможете восстановить реестр, если возникнет проблема. Для получения дополнительных сведений о резервном копировании и восстановлении реестра ознакомьтесь со статьей резервное копирование и восстановление реестра в Windows.

По умолчанию Windows Vista и операционная система Windows Server 2008 не поддерживают сопоставление безопасности IP-адресов (NAT) (NAT-T) с серверами, расположенными за пределами устройства NAT. Таким образом, если сервер виртуальной частной сети (VPN) находится за устройством NAT, VPN-клиент на основе Windows Vista или VPN-клиент на основе Windows Server 2008 не может выполнить подключение по протоколу L2TP (Layer Two Tunneling Protocol)/Ипсек к VPN-серверу. Этот сценарий включает VPN-серверы под управлением Windows Server 2008 и Microsoft Windows Server 2003.

В связи с тем, как устройства NAT преобразуют сетевой трафик, могут возникать неожиданные результаты при помещении сервера за пределами устройства NAT и последующем использовании среды IPsec NAT-T. Таким образом, если необходимо использовать протокол IPsec для связи, рекомендуется использовать общедоступные IP-адреса для всех серверов, к которым можно подключиться из Интернета. Тем не менее, если необходимо перевести сервер за пределами устройства NAT и затем использовать среду IPsec NAT-T, вы можете разрешить взаимодействие, изменив значение реестра на VPN-клиенте и VPN-сервере.

Протокол обмена ключами — IKE (RFC 2409)[править]

Internet Key Exchange — стандартный протокол IPsec, используемый для первоначальной аутентификации сторон и обмена ключами.
Процесс работы IKE можно разбить на две фазы.

Первая фазаправить

Первая фаза, в свою очередь, может проходить в двух режимах: основном и агрессивном.

Основной режим (Main mode)править

  • Стороны согласуют базовые алгоритмы и используемые хеш-функции (может использоваться MD5, функции семейства SHA и другие).
  • Осуществляется обмен открытыми ключами в рамках алгоритма Диффи — Хеллмана и псевдослучайными числами (nonce), которые подписываются принимающими сторонами и отправляются обратно для идентификации.
  • Наконец, в ходе третьего обмена по пришедшим обратно подписанным значениям nonce проверяется подлинность сторон.

Агрессивный режим (Aggressive Mode)править

Этот режим обходится меньшим числом обменов и, соответственно, числом пакетов. В первом сообщении помещается практически вся нужная для установления IKE SA информация: открытый ключ Диффи —Хеллмана, для синхронизации пакетов, подтверждаемое другим участником, идентификатор пакета. Получатель посылает в ответ всё, что надо для завершения обмена. Первому узлу требуется только подтвердить соединение.

Вторая фазаправить

Вторая фаза происходит после создания безопасного канала в ходе первой фазы в одном режиме — быстром (Quick Mode). В её ходе согласуется общая политика IPsec, происходит обмен общими секретные ключи для алгоритмов протоколов IPsec (AH или ESP), устанавливается IPsec Security Association. Использование последовательных номеров обеспечивает защиту от атак повторной передачи. Также быстрый режим используется для пересмотра текущей IPsec SA и выбора новой, когда время жизни SA истекает. Стандартно быстрый режим проводит обновление общих секретных ключей, используя алгоритм Диффи — Хеллмана из первой фазы.

[править] Настройка IPsec на Cisco PIX/ASA

  1. Включить ISAKMP
  2. Создать ISAKMP Policy
  3. Создать туннельную группу
  4. Создать transform set
  5. Создать ACL (что шифровать)
  6. Настроить правило NAT 0
  7. Создать crypto map
  8. Применить crypto map
ASA(config)# isakmp enable outside 
ASA(config)# isakmp identity address 
ASA(config)# isakmp policy 10 
ASA(config-isakmp-policy)# authentication pre-share 
ASA(config-isakmp-policy)# exit

Настраиваем тип tunnel-group’ы:

ASA(config)# tunnel-group 192.168.2.1 type ipsec-l2l 

Заходим в режим

ASA(config)# tunnel-group 192.168.2.1 ipsec-attributes 
ASA(config-tunnel-ipsec)# pre-shared-key cisco
ASA(config)# crypto ipsec transform-set ASA2 esp-des esp-none 
ASA(config)# access-list VPNL2L permit ip host 192.168.1.10 host 192.168.2.10
ASA(config)# nat (inside) 0 access-list VPNL2L
ASA(config)# crypto map PEERASA2 10 match address VPNL2L
ASA(config)# crypto map PEERASA2 10 set peer 192.168.2.2
ASA(config)# crypto map PEERASA2 10 set transform-set ASA1
ASA(config)# crypto map PEERASA2 interface outside 

Настройка

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

Схема сети

В данном документе используется следующая схема сети:

Примечание.  IP-адреса в данном примере не маршрутизируются в сети Интернет, так как они являются частными IP-адресами в лабораторной сети.

Настройка маршрутизатора Cisco 2611

Маршрутизатор Cisco 2611

vpn2611#show run
Построение конфигурации...

Текущая конфигурация: 2265 байт
!
version 12.2
service timestamps debug uptime
service timestamps log uptime
no service password-encryption
!
hostname vpn2611
!

aaa new-model
!
!

aaa authentication login userauthen local


aaa authorization network groupauthor local 
aaa session-id common
!


username cisco password 0 cisco
ip subnet-zero
!
!
!
ip audit notify log
ip audit po max-events 100
!


crypto isakmp policy 3
encr 3des
authentication pre-share
group 2
!


crypto isakmp policy 10
hash md5
authentication pre-share


crypto isakmp key cisco123 address 172.18.124.199 no-xauth
!


crypto isakmp client configuration group 3000client
key cisco123
dns 10.10.10.10
wins 10.10.10.20
domain cisco.com
pool ippool
!
!


crypto ipsec transform-set myset esp-3des esp-md5-hmac 
!


crypto dynamic-map dynmap 10
set transform-set myset
!
!


crypto map clientmap client authentication list userauthen
crypto map clientmap isakmp authorization list groupauthor
crypto map clientmap client configuration address respond
crypto map clientmap 1 ipsec-isakmp
set peer 172.18.124.199
set transform-set myset
match address 100
crypto map clientmap 10 ipsec-isakmp dynamic dynmap
!
!
fax interface-type fax-mail
mta receive maximum-recipients 0
!
!


interface Ethernet0/0
ip address 172.18.124.159 255.255.255.0
half-duplex
crypto map clientmap
!
interface Serial0/0
no ip address
shutdown
!
interface Ethernet0/1
ip address 10.10.10.1 255.255.255.0
no keepalive
half-duplex
!
!

ip local pool ippool 14.1.1.100 14.1.1.200
ip classless
ip route 0.0.0.0 0.0.0.0 172.18.124.1
ip http server
ip pim bidir-enable
!
!


access-list 100 permit ip 10.10.10.0 0.0.0.255 10.10.20.0 0.0.0.255
!
!
snmp-server community foobar RO
call rsvp-sync
!
!
mgcp profile default
!
dial-peer cor custom
!
!
line con 0
exec-timeout 0 0
line aux 0
line vty 0 4
!
!
end

Настройка маршрутизатора 3640

Маршрутизатор Cisco 3640

vpn3640#show run
Построение конфигурации...

Текущая конфигурация: 1287 байт
!
! Последние изменение конфигурации в 13:47:37 UTC среда  6 марта 2002
!
version 12.2
service timestamps debug uptime
service timestamps log uptime
no service password-encryption
!
hostname vpn3640
!
!
ip subnet-zero
ip cef
!

crypto isakmp policy 10
hash md5
authentication pre-share


crypto isakmp key cisco123 address 172.18.124.159
!
!


crypto ipsec transform-set myset esp-3des esp-md5-hmac 
!


crypto map mymap 10 ipsec-isakmp
set peer 172.18.124.159
set transform-set myset
match address 100
!
call RSVP-sync
!
!
!


interface Ethernet0/0
ip address 172.18.124.199 255.255.255.0
half-duplex
crypto map mymap
!
interface Ethernet0/1
ip address 10.10.20.1 255.255.255.0
half-duplex
!
ip classless
ip route 0.0.0.0 0.0.0.0 172.18.124.1
ip http server
ip pim bidir-enable
!


access-list 100 permit ip 10.10.20.0 0.0.0.255 10.10.10.0 0.0.0.255
snmp-server community foobar RO
!
dial-peer cor custom
!
!
line con 0
exec-timeout 0 0
line aux 0
line vty 0 4
login
!
end

Настройка VPN Client 4.x

Для настройки Cisco VPN Client 4.x выполните следующие действия.

  1. Запустите VPN Client, а затем нажмите кнопку New, чтобы создать новое соединение.

  2. Введите необходимую информацию, а затем нажмите кнопку Save.

  3. Щелкните правой кнопкой мыши на вновь созданном экземпляре соединения, а затем выберите пункт меню Connect для установки соединения с маршрутизатором.

  4. Во время согласований по протоколу IPsec будет предложено ввести имя пользователя и пароль.

  5. В окне появятся сообщения «Negotiating security profiles» (Выполняется согласование профилей безопасности) и «Your link is now secure» (Безопасность канала обеспечена).

Обзор существующих решений

PPTPL2TPWireguardOpenVPN

  • Поддержка множества платформ — Windows, Linux, OpenWRT и её производные, Android
  • Стойкое шифрование и поддержка сертификатов.
  • Гибкость настройки.
  • Работа целиком и полностью в user-space.
  • Ограниченная поддержка со стороны домашних машрутизаторов — кривенько-косенько на Mikrotik (не умаляя остальных достоинств железок) и нормально в OpenWRT.
  • Сложности с настройкой мобильных клиентов: нужно скачивать, либо создавать свой инсталлятор, копировать куда-то конфиги.
  • В случае наличия нескольких туннелей ждут танцы с правкой systemd-юнитов на сервере.

OpenConnect (open-source реализация протокола Cisco Anyconnect)

  • Относительно широкая поддержка различных платформ — Windows, Android, Mac на базе родного приложения Cisco Anyconnect из магазина — идеальный вариант предоставить доступ ко внутренней сети носимым устройствам.
  • Стойкое шифрование, поддержка сертификатов, возможность подключения 2FA
  • Сам протокол полностью TLS-based (в отличие от OpenVPN, который легко детектится на 443 порту). Кроме TLS поддерживается и DTLS — во время установленного сеанса клиент может переключится на передачу данных через UDP и обратно.
  • Прекрасное сосуществование на одном порту как VPN, так и полноценного web-сервера при помощи sniproxy.
  • Простота настройки как сервера, так и клиентов.
  • Работа целиком и полностью в user-space.
  • Поддержки со стороны customer-grade оборудования нет.
  • Сложность установки туннелей между двумя Linux: теоретически можно, практически — лучше потратить время на что-то более полезное.
  • В случае наличия нескольких туннелей ждут танцы с несколькими конфигами и правкой systemd-юнитов.

IKEv2 IPSEC

  • С появлением IKEv2 сам протокол стал проще в настройке, в сравнении с предыдущей версией, правда ценой потери обратной совместимости.
  • Благодаря стандартизации обеспечивается работа где угодно и на чём угодно — список можно вести до бесконечности. Linux, Mikrotik (в последних версиях RouterOS), OpenWRT, Android, iPhone. В Windows также есть нативная поддержка начиная с Windows 7.
  • Высокая скорость: обработка трафика полностью в kernel-space. User-space часть нужна только для установки параметров соединения и контроля работоспособности канала.
  • Возможность использовать несколько методов аутентификации: используя как PSK, так и сертификаты, причем в любых сочетаниях.
  • Несколько режимов работы: туннельный и транспортный. Чем они отличаются можно почитать в том числе и на Хабре.
  • Нетребовательность к настройкам промежуточных узлов: если в первой версии IKE были проблемы, вызванные NAT, то в IKEv2 есть встроенные механизмы для преодоления NAT и нативная фрагментация IKE-сообщений, позволяющая установить соединение на каналах с кривым MTU. Забегая вперед скажу, что на практике я еще ни разу не сталкивался с WiFi сетью, где бы клиенту не удалось установить соединение.
  • Необходимо потратить немного времени на изучение и понять как это работает
  • Особенность, которая может сбить с толку новичка: IPSec, в отличие от привычных VPN решений, не создает сетевые интерфейсы. Задаются только политики обработки трафика, всё остальное разруливается средствами firewall.

Согласование настроек шифрования

В IKE есть возможность предложить второй стороне несколько вариантов на выбор, и соединение будет установлено, если у обеих сторон найдется хотя бы один совпадающий вариант. Это общий принцип работы протоколов обмена ключами, TLS работает так же, но в TLS периодически удаляют поддержку устаревших алгоритмов. В IKE безопасность выбора алгоритмов остается на совести пользователя. Заведомо уязвимые DES и MD5 из протокола официально не исключены и до сих пор поддерживаются многими реализациями.

С каждым туннелем ассоциировано одно или несколько «предложений» (proposals). Предложения обрабатываются до первого совпадения. Отсюда следствие: вполне возможна ситуация, когда зловредный (или безответственно настроенный) сервер предложит клиенту устаревшие алгоритмы, а неаккуратно настроенный клиент согласится. У некоторых клиентов вообще может не быть возможности выбрать алгоритмы вручную, а особо ленивые админы любят делать для всех клиентов один большой proposal со всеми мыслимыми алгоритмами. Сортировать алгоритмы по надежности стандарт не обязывает, и стороны вполне могут договориться на шифр полувековой давности.

Более того, официально поддерживается null cipher — опция не шифровать трафик вообще.

Чтобы убедиться в безопасности настроек, в идеале нужно немного понимать принципы криптографии и следить за новостями. Тем не менее можно привести ряд рецептов.

В IKE вполне можно использовать разные наборы алгоритмов для Phase 1 и Phase 2. Смысла в этом немного, но возможность имеется.

Структура протоколаIsakmp

В этом разделе будет
рассмотрено, как ISAKMPпротокол договаривается о параметрах
и обменивается ключами между двумя
системами, которые хотят создать
секретное соединение .

Для того чтобы
рассмотреть все на конкретном примере
примем, что метод аутентификации –
заранее известный секретный ключ
(preshared key).

Все пакеты, которыми
обмениваются партнеры в процессе
установления соединения, начинаются с
ISAKMP заголовка. Он
содержит некоторую идентифицирующую
информацию (Initiator Cookie, Responder
Cookie иMessage ID), тип
обмена, флаги, номер версии и длину всего
пакета.

Основное тело пакета
состоит из payload-ов.Payload
– объем информации, несущий
определенную смысловую нагрузку. В
дальнейшем этот элемент будем называть
«компонентом».

Оцените статью
Рейтинг автора
5
Материал подготовил
Андрей Измаилов
Наш эксперт
Написано статей
116
Добавить комментарий