Андрей Смирнов
Время чтения: ~8 мин.
Просмотров: 12

Волчье логово / Ulvens Lair / Wolfshöhle / Wolfs Lair

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

В 1994 году Совет по архитектуре Интернет выпустил отчет “Безопасность архитектуры Интернет”. Данный отчет посвящался в основном проблемам защиты от несанкционированного мониторинга, подмены пакетов и управлению потоками данных. Требовалась разработка некоторого стандарта, способного решить все эти проблемы. В результате были созданы стандарты протоколов, в число которых входил IPsec.

IPsec (сокр. IP Security) – группа протоколов, предназначенных для обеспечения защиты данных, передаваемых по IP-сети. Задача IPsec сводится к тому, чтобы выбрать конкретные алгоритмы и механизмы и настроить соответствующим образом устройства, участвующие в создании безопасного соединения. IPsec находит применение в организации VPN-соединений.

При создании защищенного канала участникам данного процесса необходимо произвести следующие действия:

  1. Аутентифицировать друг друга
  2. Сгенерировать и обменяться ключами
  3. Договориться с помощью каких протоколов шифровать данные
  4. Начать передавать данные в зашифрованный туннель

Сам IPsec, как уже было указано ранее, состоит из нескольких протоколов, каждый из которых отвечает за конкретную стадию установления IPsec туннеля. Первым из них является IKE.

IKE (Internet Key Exchange) – протокол обмена ключами.

IKE используется на первой стадии установления соединения. К его задачам относят: аутентификация VPN-точек, организация новых IPsec соединений (через создание SA-пар), управление текущими соединениями. SA представляет из себя набор параметров защищенного соединения. При настроенном соединении для каждого протокола создается одна SA-пара: первая для протокола AH, вторая для ESP (расскажу про них дальше). Также стоит отметить, что SA является однонаправленным. Таким образом, при связи двух компьютеров будет использоваться четыре SA. IKE работает в двух фазах, при этом первая фаза может работать как в основном, так и в агрессивном режиме. Рассмотрим две фазы IKE-соединения:

Первая фаза (основной режим):

  1. Обмен параметрами безопасности IKE-соединения (алгоритмы и хэш-функции)
  2. На каждом конце туннеля генерируются общий секретный ключ
  3. Используя алгоритм Деффи-Хеллмана, стороны обмениваются общим секретным ключом
  4. Аутентификация обеих концов туннеля

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

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

Таким образом, первая фаза служит для создания защищенного туннеля, через который будут передаваться параметры для IPSec-туннеля.  Во время второй фазы строится основной IPSec-туннель.

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

  • Выбирается IPSec-протокол: AH (Authentication Header) и/или ESP (Encapsulation Security Payload)
  • Выбирается алгоритм для шифрования данных: DES, 3DES, AES
  • Выбирается алгоритм для аутентификации: SHA, MD5
  • Выбирается режим работы: туннельный или транспортный
  • Устанавливается время жизни IPSec-туннеля
  • Определяется трафик, который будет пускаться через VPN-туннель

AH (Authentication Header) – протокол IPSec, предназначенный для аутентификации. По сути это обычный опциональный заголовок, располагающийся между основным заголовком IP-пакета и полем данных. Предназначение AH – обеспечение защиты от атак, связанных с несанкционированным изменением данных в IP-пакете, в частности подмены исходного адреса сетевого уровня.

 ESP (Encapsulation Security Payload) – протокол IPSec, предназначенный для шифрования данных. Дословно переводится как “поле данных безопасной инкапсуляции”. Также как и AH представляет из себя опциональный заголовок, вкладываемый в IP-пакет. Основной целью ESP является обеспечение конфиденциальности данных.

Вы могли заметить, что ESP и AH имеют разные форматы в зависимости от типа используемого режима: туннельного и транспортного.

Туннельный режим применяется чаще всего для удаленных VPN-подключений. При таком режиме исходный IP-пакет полностью инкапсулируется в новый таким образом, что для наблюдателя со стороны будет видно только соединение между двумя VPN-точками. Реальные IP-адреса источника и получателя видны не будут, их можно получить только при деинкапсуляции на VPN-точке. Исходя из этого, можно считать, что туннельный режим является более защищенным.

Транспортный режим применяется, как правило, в локальной сети при защите соединения между хостами.  Этот режим обеспечивает защиту данных IP-пакета (TCP, UDP, протоколы верхних уровней). Грубо говоря, транспортный режим инкапсулирует все, что находится выше сетевого уровня эталонной модели OSI, при этом не затрагивая сам IP-заголовок. Естественно в таком случае данные IP-пакета: адрес источника и получателя будут видны извне.

Теперь перейдем к практике: настроим защищенный IPSec-туннель между двумя маршрутизаторами Cisco. Схема будет состоять из трех последовательно соединенных маршрутизаторов, при этом крайние R1 и R3 представляют из себя маршрутизаторы для локальных сетей, а центральный R2 имитирует Интернет. Прежде всего необходимо настроить связность между двумя локальными подсетями. Связность обеспечивается за счет GRE-туннеля. Про GRE-туннели я писал в предыдущей статье, также там есть конфигурация GRE-туннеля для маршрутизаторов Cisco. Чтобы понимать логику дальнейший действий настоятельно рекомендую ознакомиться с этим материалом.

Итак, основной GRE-туннель у нас “прокинут”. Он не является защищенным и поэтому поверх него мы будем настраивать IPSec. Мы работали вот с такой схемой.

По легенде у нас было два офиса с подсетями LAN1 и LAN2. Необходимо обеспечить доступ компьютера из LAN1 к серверу, находящемуся в LAN2 (например, для доступа к файлам). Так вот, основной туннель мы создали. На сетевом уровне все работает прекрасно – пинг от компа до сервера есть. Но существует одна проблема: сервер содержит файлы, которые представляет коммерческую тайну для компании. Таким образом, необходимы механизмы шифрования трафика, а также аутентификация для того, чтобы никто кроме нас не мог получить доступ к этим файлам. И вот тут в бой вступает IPSec.

Конфигурация для Router A

Создаем политику безопасности и настраиваем ее  RouterA(config)#crypto isakmp policy 1    Указываем метод шифрования (симметричный блочный шифр)  RouterA(config)#encryption 3des    Указываем метод хеширования MD5  RouterA(config)#hash md5    Указываем метод аутентификации (с предварительным ключом)  RouterA(config)#authentication pre-share    Выходим из режима редактирования политики безопасности  RouterA(config)#exit    Ключ для аутентификации (должен совпадать для обеих точек)  RouterA(config)#crypto isakmp key PASS address 33.33.33.33    Применение набора преобразований   RouterA(config)#crypto ipsec transform-set LAN1 esp-3des esp-md5-hmac    Указываем режим работы IPSec (туннельный режим)  RouterA(cfg-crypto-trans)#mode tunnel  RouterA(cfg-crypto-trans)#exit    Создаем крипто-карту (детали туннелирования)  RouterA(config)#crypto map MAP1 10 ipsec-isakmp    Указываем Ip-адрес маршрутизатора, с которым устанавливаем VPN  RouterA(config-crypto-map)#set peer 33.33.33.33    Указываем набор политик безопасности  RouterA(config-crypto-map)#set transform-set LAN1    Шифровать данные, которые будут проходить через список доступа под номером 100  RouterA(config-crypto-map)#match address 100    Выходим из режима настройки крипто-карты  RouterA(config-crypto-map)#exit    GRE-трафик с хоста 11.11.11.11 на хост 33.33.33.33 подлежит шифрованию  RouterA(config)#access-list 100 permit gre host 11.11.11.11 host 33.33.33.33    Переходим в режим настройки внешнего интерфейса  RouterA(config)#interface fa 0/1    Привязка карты шифрования MAP1 к внешнему интерфейсу   RouterA(config-if)#crypto map MAP1  

Аналогично настраивается Router B:

RouterB(config)#crypto isakmp policy 1  RouterB(config)#encryption 3des  RouterB(config)#hash md5  RouterB(config)#authentication pre-share  RouterB(config)#exit  RouterB(config)#crypto isakmp key PASS address 11.11.11.11  RouterB(config)#crypto ipsec transform-set LAN2 esp-3des esp-md5-hmac  RouterB(cfg-crypto-trans)#mode tunnel  RouterB(cfg-crypto-trans)#exit  RouterB(config)#crypto map MAP2 10 ipsec-isakmp  RouterB(config-crypto-map)#set peer 11.11.11.11  RouterB(config-crypto-map)#set transform-set LAN2  RouterB(config-crypto-map)#match address 100  RouterB(config-crypto-map)#exit  RouterB(config)#access-list 100 permit gre host 33.33.33.33 host 11.11.11.11  RouterB(config)#interface fa 0/1  RouterB(config-if)#crypto map MAP2  

   Настройка VPN-сервера на маршрутизаторе Cisco достаточно проста, но есть некоторые нюансы, которые могут стать причиной долгих поисков проблем в стиле «все правильно сделал, но ничего не работает».    Итак,  для настройки VPN-сервера на маршрутизаторе Cisco необходимо выполнить следующие команды. Настраивать будем VPN на основе PPTP:    Для начала создаем пул адресов, которые будут выдаваться пользователям, подключающимся по VPN:R_1(config)#ip local pool VPN 192.168.1.100 192.168.1.110     В пуле всего 10 адресов, при этом адреса взяты из общего пула (192.168.1.0/24), который используется во внутренней сети. Можно создать отдельную сеть для подключающихся по VPN пользователей, но в данной задаче такого условия не было.    Включаем сервис VPN-сервера:R_1(config)#vpdn enable    Далее настраиваем VPDN-группу: Здесь мы должны разрешить маршрутизатору отвечать на входящие запросы PPTP, и указать специально созданный виртуальный шаблон (virtual template), необходимый для клонирования интерфейса и использования его в качестве основного шлюза для подключающихся клиентов:R_1(config)#vpdn-group VPNR_1(config-vpdn)#accept-dialinR_1(config-vpdn-acc-in)#virtual-template 1R_1(config-vpdn-acc-in)#protocol pptpR_1(config-vpdn-acc-in)#exitR_1(config-vpdn)#    Переходим к последнему этапу настройки: необходимо создать виртуальный шаблон, который позволит клонировать интерфейс, а так же укажет, какие параметры для подключения необходимо использовать:

R_1(config)#interface virtual-template 1      // создаем интерфейс VT R_1(config)#encapsulation ppp                 // включаем инкапсуляцию PPP R_1(config)#peer default ip address pool VPN  // адреса для подключающихся берем из созданного ранее пула R_1(config)#ip unnumbered GigabitEthernet0/0.1// клонируем субинтерфейс Gi0/0.1, 
                                              //т.к. в нашей топологии общая сеть подключена к нему R_1(config)#no keepaliveR_1(config)#ppp encrypt mppe auto             // включаем шифрование. NPE IOS не поддерживает эту команду! R_1(config)#ppp authentication pap chap ms-chap ms-chap-v2 // Включаем все возможные виды аутентификации

   Осталось создать локальную базу данных пользователей, которые могли бы подключаться к нашему серверу, используя внешний IP-адрес в качестве адреса сервера, и логины и пароли из локальной базы на Cisco-маршрутизаторе.    Во всех мануалах команда выглядит следующим образом:Router(config)#username test privilege 0 ?    При использовании SECRET возникают проблемы с работой всех видов аутентификации, кроме PAP. Поэтому, если используется PAP, можно ставить секретный пароль. Но если используются другие виды аутентификации, то необходимо выбирать пункт PASSWORD.    После этого на машине под управлением ОС семейства Windows создаем с помощью мастера VPN подключения, адрес сервера — внешний IP маршрутизатора Cisco, логины и пароли — из базы. Если у маршрутизатора не включалось шифрования (сознательно, либо из-за отсутствия возможности) — не забываем в свойствах подключения указать, что шифрование необязательное. И пользуемся созданным VPN’ом.Используемые источники:

  • https://netclo.ru/osvaivaem-vpn-nastroyka-ipsec-na-cisco-chast-2/
  • https://geks0gen.blogspot.com/2013/07/vpn-cisco.html

Рейтинг автора
5
Подборку подготовил
Максим Уваров
Наш эксперт
Написано статей
171
Ссылка на основную публикацию
Похожие публикации