Настройка IPSec на маршрутизаторах Cisco
- Font size: Larger Smaller
- Hits: 16280
- 0 Comments
- Subscribe to this entry
- Bookmark
Представим следующую ситуацию. Сидите вы мирно за компьютером, попивая кофе и читая новости с networkdoc.ru :) Сеть у вас настроена, с несколькими VLAN-ами, с NAT-ом, DHCP, списками доступа, блекджеком и т.д. Тут к вам приходит начальник и говорит следующее: "Наша компания движется вперед и мы вскоре откроем филиал в Урюпинске, где будет сидеть 5 калек, но им крайне важно для бизнеса компании иметь доступ к корпоративной почте, 1с и прочей лабуде" Естественно это должно быть безопасно и все ваши сервера находятся как полагается в серверной в главном здании. Начальник готов купить маршрутизатор, хаб или че там вам ИТшникам надо что бы это сделать.
Что мы в данной ситуации можем сделать. Я бы конечно воспользовался услугой от провайдера связи удаленных объектов на уровне L2, но не всегда такой тип соединения доступен. Чаще всего в нашем Урюпинске есть какой-то провайдер "ООО Ромашка" который может только прямой ip адрес в интернете предоставить и то слава богу.
Поможет решить нашу возникшую задачу технология IPSec. Посредством двух маршрутизаторов Cisco мы создадим между двумя маршрутизаторами (с прямыми ip адресами в интернете) шифрованный туннель, который обеспечит связь филиала в Урюпинске с нашим головным офисом.
Разберем простой пример, представленный на рисунке1.
Рис.1
Мы имеем два маршрутизатора Router0 и Router1, которые через интернет должны связать два удаленных офиса. К сожалению в нашей лабораторной нет возможности использовать реальные прямые ip адреса в интернете, поэтому мы просто свяжем два маршрутизатора проводом напрямую и выдумаем между ними подсеть 1.1.1.0 с маской 255.255.255.0. В случае реальной ситуации провайдер или провайдеры выдадут нам прямые ip адреса в интернете и необходимо будет настроить маршрут по умолчанию на адрес, который предоставит провайдер в качестве шлюза. В остальном настройка в нашей лабораторной работе ничем не отличается от реальной.
Внутренняя сеть головного офиса у нас будет 192.168.1.0 а филиала в Урюпинске 192.168.2.0.
Первым делом нужно зайти на маршрутизаторы и задать на соответствующих интерфейсах ip адреса.
Router0#conf t
Router0(config)#int fa0/0 - интерфейс смотрящий в внутреннюю сеть
Router0(config-if)#ip address 192.168.1.1 255.255.255.0 - ip адрес маршрутизатора в внутренней сети
Router0(config-if)#exit
Router0(config)#int fa0/1 - интерфейс смотрящий в интернет
Router0(config-if)#ip address 1.1.1.1 255.255.255.0 - ip адрес маршрутизатора в интернете (выдается провайдером)
Router0(config-if)#exit
Router0(config)#int fa0/0 - интерфейс смотрящий в внутреннюю сеть
Router0(config-if)#ip address 192.168.1.1 255.255.255.0 - ip адрес маршрутизатора в внутренней сети
Router0(config-if)#exit
Router0(config)#int fa0/1 - интерфейс смотрящий в интернет
Router0(config-if)#ip address 1.1.1.1 255.255.255.0 - ip адрес маршрутизатора в интернете (выдается провайдером)
Router0(config-if)#exit
Router1#conf t
Router1(config)#int fa0/0 - интерфейс внутренней сети в Урюпинске
Router1(config-if)#ip address 192.168.2.1 255.255.255.0 - ip адрес маршрутизатора в локальной сети Урюпинска
Router1(config-if)#exit
Router1(config)#int fa0/1 - интерфейс смотрящий в интерфейс
Router1(config-if)#ip address 1.1.1.2 255.255.255.0 - ip адрес маршрутизатора в интернете (выдается провайдером)
Router1(config-if)#exit
Router1(config)#
Router1(config)#int fa0/0 - интерфейс внутренней сети в Урюпинске
Router1(config-if)#ip address 192.168.2.1 255.255.255.0 - ip адрес маршрутизатора в локальной сети Урюпинска
Router1(config-if)#exit
Router1(config)#int fa0/1 - интерфейс смотрящий в интерфейс
Router1(config-if)#ip address 1.1.1.2 255.255.255.0 - ip адрес маршрутизатора в интернете (выдается провайдером)
Router1(config-if)#exit
Router1(config)#
Теперь можно настраивать туннель. Если совсем вкратце, то ipsec туннель состоит из двух фаз: isakmp и ipsec. Подробно как работает данный протокол и что это за фазы можно почитать в интернете. Мы будем смотреть с точки зрения практики.
Итак, мы остановились на том, что ipsec туннель делится на две фазы. Все очень просто: сначала устанавливается первая фаза подключения isakmp и после нее вторая ipsec.
Для начала необходимо сконфигурировать первую фазу. Для этого нам необходимо будет настроить политику шифрования на наших устройствах. Приведем пример конфигурации и опишем подробнее:
Router0(config)#crypto isakmp policy 1 - создаем политику подключения 1-й фазы
Router0(config-isakmp)#authentication pre-share - выбираем метод аутентификации по ключу
Router0(config-isakmp)#hash sha - выбираем алгоритм хэширования
Router0(config-isakmp)#encryption aes 128 - выбираем метод шифрования
Router0(config-isakmp)#group 2 - выбираем группу Diffie-Hellman которая будет использоваться для безопасного обмена ключами
Router0(config-isakmp)#lifetime 86400 - указываем жизненный период подключения
Router0(config-isakmp)#exit
Router0(config)#crypto isakmp key abcd address 1.1.1.2 - задаем ключ (abcd) подключения и указываем адрес удаленного маршрутизатора к которому его нужно применить.
Router0(config)#
Router0(config-isakmp)#authentication pre-share - выбираем метод аутентификации по ключу
Router0(config-isakmp)#hash sha - выбираем алгоритм хэширования
Router0(config-isakmp)#encryption aes 128 - выбираем метод шифрования
Router0(config-isakmp)#group 2 - выбираем группу Diffie-Hellman которая будет использоваться для безопасного обмена ключами
Router0(config-isakmp)#lifetime 86400 - указываем жизненный период подключения
Router0(config-isakmp)#exit
Router0(config)#crypto isakmp key abcd address 1.1.1.2 - задаем ключ (abcd) подключения и указываем адрес удаленного маршрутизатора к которому его нужно применить.
Router0(config)#
Остановимся подробнее на создании политики crypto isakmp policy 1. Мы создаем политику и указываем параметры подключения нашего шифрованного туннеля, такие как метод аутентификации, метод хэширования, шифрования и т.д. Нужно обратить внимание на номер созданной нами политики "1". Можно создавать множество различных политик с параметрами подключения и чем ниже номер политики тем выше ее приоритет. Зачем это сделано? В случае если у нас много туннелей и разные удаленные устройства поддерживают разные алгоритмы шифрования. Соответственно мы создаем несколько политик и при установлении соединения они будут просматриваться по очереди по порядковому номеру. Допустим параметры подключения политики 1 не подошли тогда роутер смотрит следующую политику в своем списке если такая имеется. Принято политикам с более жесткими параметрами безопасности давать номер с более высоким приоритетом, а политикам с менее жесткими параметрами безопасности номер с меньшим приоритетом. Это сделано для того, что если используется несколько политик безопасности в первую очередь маршрутизатор пытался установить более безопасное соединение и только в случае если это невозможно (к примеру удаленный маршрутизатор не поддерживает какой-то алгоритм шифрования) пытался установить менее безопасное соединение.
В нашем случае будет использоваться только одна политика, поэтому этот номер не играет роли.
Так же мы задали ключ по которому будет осуществляться соединение. В нашем пример ключ будет незамысловатый "abcd"
Мы настроили первую фазу на маршрутизаторе Router0, теперь сделаем тоже самое на маршрутизаторе Router1
Router(config)#crypto isakmp policy 1
Router(config-isakmp)#authentication pre-share
Router(config-isakmp)#hash sha
Router(config-isakmp)#encryption aes 128
Router(config-isakmp)#group 2
Router(config-isakmp)#lifetime 86400
Router(config-isakmp)#exit
Router(config)#crypto isakmp key abcd address 1.1.1.1
Router(config)#
Router(config-isakmp)#authentication pre-share
Router(config-isakmp)#hash sha
Router(config-isakmp)#encryption aes 128
Router(config-isakmp)#group 2
Router(config-isakmp)#lifetime 86400
Router(config-isakmp)#exit
Router(config)#crypto isakmp key abcd address 1.1.1.1
Router(config)#
В настройках второго маршрутизатора мы используем тот же ключ. Изменился только ip адрес удаленного маршрутизатора.
Настройка первой фазы закончена. Приступаем к настройке второй фазы. Для этого мы сначала создадим так называемый transform-set, т.е. набор параметров безопасности для второй фазы.
Router0(config)#crypto ipsec transform-set SET esp-aes esp-sha - создаем transform-set для маршрутизатора Router0
Router1(config)#crypto ipsec transform-set SET esp-aes esp-sha - создаем transform-set для маршрутизатора Router1
Теперь нам нужно создать список доступа, который будет определять в каких ситуациях пакеты будут попадать в ipsec туннель.
Router0(config)#access-list 101 permit ip 192.168.1.0 0.0.0.255 192.168.2.0 0.0.0.255
Этот список доступа будет указывать на то что если пакет пришел из сети 192.168.1.0 и должен быть отправлен в сеть 192.168.2.0, то он будет попадать под данное правило и перенаправляться в наш туннель. Далее мы применем этот список доступа к конфигурации туннель, а пока настроим список доступа на втором маршрутизаторе
Router1(config)#access-list 101 permit ip 192.168.2.0 0.0.0.255 192.168.1.0 0.0.0.255
Здесь мы видим обратную картину, т.е. пакеты, которые пришли из сети 192.168.2.0 в адрес сети 192.168.1.0 будут заворачиваться в туннель.
Нужно понимать что расширенные списки доступа позволяют нам проводить довольно гибкую конфигурацию. Принцип очень простой: если пакет попадает под правило значит он уйдет в туннель. Можно попробовать разные конфигурации, к примеру задать в списке доступа определенные протоколы, которые будут под него попадать или же вместо сети отправителя поставить any и тогда любой трафик, который предназначен удаленной сети уйдет в туннель. Все это зависит от того чего мы хотим добиться. Пока мы не применим его к ipsec туннель, это просто список доступа. Как только мы его применим, правила начнут отрабатывать.
Теперь мы наконец готовы настроить вторую фазу подключения, т.к. у нас есть transform-set и подходящий список доступа. Проведем следующую конфигурацию на наших устройствах:
Router0(config)#crypto map MAIN 1 ipsec-isakmp - создаем так называемую крипто карту с номером 1. Номер используется для того что бы можно было создавать несколько подключений, т.е. можно их создавать одна за другой для всех наших туннелей. Не надо путать с политиками. Там номер говорит о приоритете подключения. Здесь это просто номер и не несет какой-то смысловой нагрузки.
Router0(config-crypto-map)#set peer 1.1.1.2 - говорим ip адрес удаленного маршрутизатора
Router0(config-crypto-map)#match address 101 - применяем созданный ранее список доступа
Router0(config-crypto-map)#set transform-set SET - применяем созданный ранее transform-set
Router0(config-crypto-map)#exit
Router0(config)#
Router0(config-crypto-map)#set peer 1.1.1.2 - говорим ip адрес удаленного маршрутизатора
Router0(config-crypto-map)#match address 101 - применяем созданный ранее список доступа
Router0(config-crypto-map)#set transform-set SET - применяем созданный ранее transform-set
Router0(config-crypto-map)#exit
Router0(config)#
Тоже самое делаем на втором маршрутизаторе только с другим ip адресом удаленного маршрутизатора.
Router(config)#crypto map MAIN 1 ipsec-isakmp
Router(config-crypto-map)#set peer 1.1.1.1
Router(config-crypto-map)#match address 101
Router(config-crypto-map)#set transform-set SET
Router(config-crypto-map)#exit
Router(config)#
Router(config-crypto-map)#set peer 1.1.1.1
Router(config-crypto-map)#match address 101
Router(config-crypto-map)#set transform-set SET
Router(config-crypto-map)#exit
Router(config)#
Осталось применить наши крипто карты на внешние интерфейсы, которые смотрят в интернет.
Router0(config)#int fa0/1 - заходим в настройку порта, смотрящего в интернет
Router0(config-if)#crypto map MAIN - привязываем к нему нашу крипто карту.
Router0(config-if)#crypto map MAIN - привязываем к нему нашу крипто карту.
Тоже самое на втором маршрутизаторе
Router0(config)#int fa0/1 - заходим в настройку порта, смотрящего в интернет
Router0(config-if)#crypto map MAIN - привязываем к нему нашу крипто карту.
Router0(config-if)#crypto map MAIN - привязываем к нему нашу крипто карту.
В случае реальной конфигурации и в случае если на вашем маршрутизаторе настроен маршрут по умолчанию на провайдера, то этих настроек достаточно. В нашей же лабораторной необходимо добавить по маршруту на каждом из маршрутизаторов.
Router0(config)#ip route 192.168.2.0 255.255.255.0 1.1.1.2
Router1(config)#ip route 192.168.1.0 255.255.255.0 1.1.1.1
Настройка закончена. Теперь трафик между двумя офисами будет заворачиваться в шифрованый туннель. Можно проверить попробовав пинг с компьютера РС0 (192.168.1.10 на рис.1) компьютер PC1 (192.168.2.10 на рис.1)
Надеюсь данный материал был вам полезен.
Удачи и до следующих постов.