Wednesday, January 9, 2019

НАСТРОЙКА SITE-TO-SITE IPSEC VPN НА CISCO

Привет! Сегодня мы расскажем про то как настроить Site-To-Site IPSec VPN туннель между роутерами Cisco. Такие VPN туннели используются обеспечения безопасной передачи данных, голоса и видео между двумя площадками (например, офисами или филиалами). Туннель VPN создается через общедоступную сеть интернет и шифруется с использованием ряда продвинутых алгоритмов шифрования, чтобы обеспечить конфиденциальность данных, передаваемых между двумя площадками.
Site-To-Site IPSec VPN
В этой статье будет показано, как настроить и настроить два маршрутизатора Cisco для создания постоянного безопасного туннеля VPN типа «сеть-сеть» через Интернет с использованием протокола IP Security (IPSec) . В рамках статьи мы предполагаем, что оба маршрутизатора Cisco имеют статический публичный IP-адрес.
ISAKMP (Internet Security Association and and Key Management Protocol) и IPSec необходимы для построения и шифрования VPN-туннеля. ISAKMP, также называемый IKE (Internet Key Exchange) , является протоколом согласования (negotiation protocol), который позволяет двум хостам договариваться о том, как создать сопоставление безопасности IPsec. Согласование ISAKMP состоит из двух этапов: фаза 1 и фаза 2.
Во время фазы 1 создается первый туннель, который защищает последующие сообщения согласования ISAKMP. Во время фазы 2 создается туннель, который защищает данные. Затем в игру вступает IPSec для шифрования данных с использованием алгоритмов шифрования и предоставляющий аутентификацию, шифрование и защиту от повторного воспроизведения.

ТРЕБОВАНИЯ К IPSEC VPN

Чтобы упростить понимание настройки разделим его на две части:
  1. Настройка ISAKMP (Фаза 1 ISAKMP)
  2. Настройка IPSec (Фаза 2 ISAKMP, ACL, Crypto MAP)
Делать будем на примере, который показан на схеме – два филиала, оба маршрутизатора филиалов подключаются к Интернету и имеют статический IP-адрес, назначенный их провайдером. Площадка №1 имеет внутреннею подсеть 10.10.10.0/24, а площадка №2 имеет подсеть 20.20.20.0/24. Цель состоит в том, чтобы безопасно соединить обе сети LAN и обеспечить полную связь между ними без каких-либо ограничений.
Схема Site-To-Site IPSec VPN-туннеля

НАСТРОЙКА ISAKMP (IKE) - ISAKMP PHASE 1

IKE нужен только для установления SA (Security Association) для IPsec. Прежде чем он сможет это сделать, IKE должен согласовать отношение SA (ISAKMP SA) с одноранговым узлом (peer).
Начнем с настройки маршрутизатора R1 первой площадки. Первым шагом является настройка политики ISAKMP Phase 1:
R1(config)#  crypto isakmp policy 1
R1(config-isakmp)# encr 3des
R1(config-isakmp)# hash md5
R1(config-isakmp)# authentication pre-share
R1(config-isakmp)# group 2
R1(config-isakmp)# lifetime 86400
Приведенные выше команды означают следующее:
  • 3DES - метод шифрования, который будет использоваться на этапе 1
  • MD5 - алгоритм хеширования
  • Pre-Share - использование предварительного общего ключа (PSK) в качестве метода проверки подлинности
  • Group 2 - группа Диффи-Хеллмана, которая будет использоваться
  • 86400 - время жизни ключа сеанса. Выражается либо в килобайтах (сколько трафика должно пройти до смены ключа), либо в секундах. Значение установлено по умолчанию.
Мы должны отметить, что политика ISAKMP Phase 1 определяется глобально. Это означает, что если у нас есть пять разных удаленных площадок и настроено пять разных политик ISAKMP Phase 1 (по одной для каждого удаленного маршрутизатора), то, когда наш маршрутизатор пытается согласовать VPN-туннель с каждой площадкой, он отправит все пять политик и будет использовать первое совпадение, которое принято обоими сторонами.
Далее мы собираемся определить Pre-Shared ключ для аутентификации с нашим партнером (маршрутизатором R2) с помощью следующей команды:
R1(config)# crypto isakmp key merionet address 1.1.1.2
Pre-Shared ключ партнера установлен на merionet, а его публичный IP-адрес - 1.1.1.2. Каждый раз, когда R1 пытается установить VPN-туннель с R2 (1.1.1.2), будет использоваться этот ключ.

НАСТРОЙКА IPSEC – 4 ПРОСТЫХ ШАГА
Для настройки IPSec нам нужно сделать следующее:
  • Создать расширенный ACL
  • Создать IPSec Transform
  • Создать криптографическую карту (Crypto Map)
  • Применить криптографическую карту к общедоступному (public) интерфейсу
Давайте рассмотрим каждый из вышеперечисленных шагов.

ШАГ 1: СОЗДАЕМ РАСШИРЕННЫЙ ACL
Нам нужно создать расширенный access-list (про настройку Extended ACL можно прочесть в этой статье) и в нем определить какой траффик мы хотим пропускать через VPN-туннель. В этом примере это будет трафик из одной сети в другую с 10.10.10.0/24 по 20.20.20.0/24. Иногда такие списки называют crypto access-list или interesting traffic access-list.
R1(config)# ip access-list extended VPN-TRAFFIC
R1(config-ext-nacl)# permit ip 10.10.10.0 0.0.0.255 20.20.20.0 0.0.0.255

ШАГ 2: СОЗДАЕМ IPSEC TRANSFORM
Следующим шагом является создание набора преобразования (Transform Set), используемого для защиты наших данных. Мы назвали его TS.
R1(config)# crypto ipsec transform-set TS esp-3des esp-md5-hmac
Приведенная выше команда определяет следующее:
  • ESP-3DES - метод шифрования
  • MD5 - алгоритм хеширования

ШАГ 3: СОЗДАЕМ CRYPTO MAP
Crypto Map является последнем этапом нашей настройки и объединяет ранее заданные конфигурации ISAKMP и IPSec:
R1(config)# crypto map CMAP 10 ipsec-isakmp
R1(config-crypto-map)# set peer 1.1.1.2
R1(config-crypto-map)# set transform-set TS
R1(config-crypto-map)# match address VPN-TRAFFIC
Мы назвали нашу криптографическую карту CMAP. Тег ipsec-isakmp сообщает маршрутизатору, что эта криптографическая карта является криптографической картой IPsec. Хотя в этой карте (1.1.1.2) объявлен только один пир, существует возможность иметь несколько пиров.

ШАГ 4: ПРИМЕНЯЕМ КРИПТОГРАФИЧЕСКУЮ КАРТУ К ОБЩЕДОСТУПНОМУ ИНТЕРФЕЙСУ
Последний шаг - применить криптографическую карту к интерфейсу маршрутизатора, через который выходит траффик. Здесь исходящим интерфейсом является FastEthernet 0/1.
R1(config)# interface FastEthernet0/1
R1(config- if)# crypto map CMAP
Обратите внимание, что интерфейсу можно назначить только одну криптокарту.
Как только мы применим криптографическую карту к интерфейсу, мы получаем сообщение от маршрутизатора, подтверждающее, что isakmp включен: “ISAKMP is ON”.
На этом этапе мы завершили настройку IPSec VPN на маршрутизаторе Площадки 1.
Теперь перейдем к маршрутизатору Площадки 2 для завершения настройки VPN. Настройки для R2 идентичны, с отличиями лишь в IP-адресах пиров и ACL.
R2(config)# crypto isakmp policy 1
R2(config-isakmp)# encr 3des
R2(config-isakmp)# hash md5
R2(config-isakmp)# authentication pre-share
R2(config-isakmp)# group 2
R2(config-isakmp)# lifetime 86400

R2(config)# crypto isakmp key merionet address 1.1.1.1
R2(config)# ip access-list extended VPN-TRAFFIC
R2(config-ext-nacl)# permit ip 20.20.20.0 0.0.0.255 10.10.10.0 0.0.0.255
 
R2(config)# crypto ipsec transform-set TS esp-3des esp-md5-hmac
R2(config)# crypto map CMAP 10 ipsec-isakmp
R2(config-crypto-map)# set peer 1.1.1.1
R2(config-crypto-map)# set transform-set TS
R2(config-crypto-map)# match address VPN-TRAFFIC

R2(config)# interface FastEthernet0/1
R2(config- if)# crypto map CMAP

ТРАНСЛЯЦИЯ СЕТЕВЫХ АДРЕСОВ (NAT) И VPN-ТУННЕЛИ IPSEC
В реальной схеме трансляция сетевых адресов (NAT), скорее всего, будет настроена для предоставления доступа в интернет внутренним хостам. При настройке VPN-туннеля типа «Site-To-Site» обязательно нужно указать маршрутизатору не выполнять NAT (deny NAT) для пакетов, предназначенных для удаленной сети VPN.
Это легко сделать, вставив оператор deny в начало списков доступа NAT, как показано ниже:
Для первого маршрутизатора:
R1(config)# ip nat inside source list 100 interface fastethernet0/1 overload
R1(config)# access-list 100 deny ip 10.10.10.0 0.0.0.255 20.20.20.0 0.0.0.255
R1(config)# access-list 100 permit ip 10.10.10.0 0.0.0.255 any
Для второго маршрутизатора:
R2(config)# ip nat inside source list 100 interface fastethernet0/1 overload
R2(config)# access-list 100 deny ip 20.20.20.0 0.0.0.255 10.10.10.0  0.0.0.255
R2(config)# access-list 100 permit ip 20.20.20.0 0.0.0.255 any

ИНИЦИАЛИЗАЦИЯ И ПРОВЕРКА VPN-ТУННЕЛЯ IPSEC
К этому моменту мы завершили нашу настройку, и VPN-туннель готов к запуску. Чтобы инициировать VPN-туннель, нам нужно заставить один пакет пройти через VPN, и этого можно достичь, отправив эхо-запрос от одного маршрутизатора к другому:
R1# ping 20.20.20.1 source fastethernet0/0
Type escape sequence to abort.
Sending 5, 100-byte ICMP Echos to 20.20.20.1, timeout is 2 seconds:
Packet sent with a source address of 10.10.10.1
.!!!!
Success rate is 80 percent (4/5), round-trip min/avg/max = 44/47/48 ms
Первое эхо-сообщение icmp (ping) получило тайм-аут, но остальные получили ответ, как и ожидалось. Время, необходимое для запуска VPN-туннеля, иногда превышает 2 секунды, что приводит к истечению времени ожидания первого пинга.
Чтобы проверить VPN-туннель, используйте команду show crypto session:
R1# show crypto session
Crypto session current status
Interface: FastEthernet0/1
Session status: UP-ACTIVE    
Peer: 1.1.1.2 port 500
  IKE SA: local 1.1.1.1/500 remote 1.1.1.2/500 Active
  IPSEC FLOW: permit ip 10.10.10.0/255.255.255.0 20.20.20.0/255.255.255.0
        Active SAs: 2, origin: crypto map
Готово! Мы только что успешно подняли Site-To-Site IPSEC VPN туннель между двумя маршрутизаторами Cisco!

КОМАНДНАЯ СТРОКА MIKROTIK

Консольный доступ на Mikrotik используется для конфигурации и управления роутером с помощью терминала по telnet, SSH и т.д. Также консоль можно использовать для написания скриптов. Ниже вы найдете базовые команды, использующиеся для администрирования роутера.

ИЕРАРХИЯ

Всего существует большое количество команд, которые разбиты на группы, отсортированные в иерархическом порядке. Это означает, что название уровня меню отображает информацию о конфигурации в соответствующем разделе - определение не очень понятное, но, после примеров все станет более прозрачным.
К примеру, введите команду ip route print для вывода таблицы маршрутизации:
Вывод таблицы маршрутизации
Если же ввести команду ip route, то вы как бы сразу попадете в меню манипуляции конкретной ветки:
Выполнение команд на подуровне в RouterOS
Обратите внимание, что для вывода всех возможных команд на данном уровне достаточно ввести знак ?, а для возврата на уровень выше - знак /. Если же вам нужно выполнить команду из основного уровня - добавьте слэш (/) и команду следом, к примеру ping:
Выполнение команды из основного уровня

НУМЕРАЦИЯ И НАЗВАНИЯ СУЩНОСТЕЙ

Множество команд оперирует массивами сущностей - массивами интерфейсов, маршрутов, пользователей и т.д. Для изменения свойств сущности, предварительно должна идти команда set и указано имя или номер сущности. Различие между номером и названием состоит в том, что при обращении к сущности по имени (item name) нет необходимости использовать команду print, в отличие от номера, который может быть назначен с помощью команды. Таким образом, использование “имен” в каком-то смысле более стабильно - однако все равно возможна ситуация, в которой, к примеру, несколько пользователей одновременно настраивают маршрутизатор. Ниже приведен пример изменения параметра MTU с помощью команды interface set 0 mtu=1460
Установка параметра интерфейса

АВТОЗАПОЛНЕНИЕ
В RouterOS есть две фичи, которые ускоряют конфигурацию - табуляция и сокращения команд. Табуляция - автозавершение команды после нажатия на клавишу Tab и оно работает также как автозавершение в bash для Linux\UNIX систем.
Если есть только одна альтернатива - она будет автоматически предложена и будет добавлен пробел, если же альтернатив больше - команда будет выполнена частично и пробел добавлен не будет.
То есть:
  • int[Tab] станет interface
  • interface set e[Tab] станет interface set ether_
Другой фичей является сокращение команд - к примеру вместо interface можно использовать int, вместо ping использовать pi и так далее
Ниже пример как выполняется команда pi 192.1 c 3 si 100, что абсолютно аналогично команде ping 192.0.0.1 count 3 size 100
Пример сокращения команды

ОСНОВНЫЕ КОМАНДЫ
Некоторые команды применимы практически на всех уровнях, эти команды - print, set, remove, add, find, get, export, enable, disable, comment, move.
  • add - добавление нового элемента с указанными параметрами, некоторые из параметров перечислены далее - copy-from, place-before, disabled, comment;
  • edit - ассоциирована с командой set, как правило используется для редактирования сущностей, содержащих большое количество текста, к примеру скриптов, но также работает для любых редактируемых сущностей;
  • find - команда возвращает внутренние номера всех сущностей, которые попадают под указанный фильтр. Обладает такими же аргументами как и команда set + имеет аргументы вида flag - такие как disabled или active (другими словами, булевые переменные);
  • move - команда меняет порядок сущностей в списке;
  • print - команда выводит всю информацию доступную с текущего уровня. Типичные модификаторы - from, where, brief, detail, count-only, file, interval, oid, without-paging. К примеру команда system clock print выводит системную дату и время, ip rout print - таблицу маршрутизации;
  • remove - удаление сущности (-ей) из списка;
  • set - установка параметров, значений и так далее;
Не забывайте, что для просмотра всех возможных аргументов и модификаторов вы можете ввести знак вопроса ? после команды или дважды нажать на клавишу Tab.

ГОРЯЧИЕ КЛАВИШИ
Ниже приведен список самых полезных горячих клавиш, которые могут серьезно ускорить процесс настройки оборудования, и, даже спасти ситуацию в случае ввода некорректного сетевого адреса.
  • Ctrl-C - прерывание, к примеру для остановки процесса ping;
  • Ctrl-D - разлогинивание;
  • Ctrl-K - очистить строку от курсора до конца строки;
  • Ctrl-X - включение Безопасного режима, позволяет настраивать роутер практически без риска потерять удаленный доступ. При потере доступа, все выполненные изменения будут нивелированы через примерно 10 минут;
  • Ctrl-V - включение режима Автозаполнения (HotLock), в нем все команды будут завершаться автоматически;
  • F6 - включение режима помощи, при котором внизу терминала будут показаны типичные сочетания клавиш и как они могут быть использованы;
  • F1 или ? - помощь, вывод всех возможных команд на данном уровне;
  • Tab - автозавершение команды;

НАСТРОЙКА QOS НА MIKROTIK ДЛЯ ASTERISK

Итак, чтобы корректно настроить QoS (Quality of Service), нам необходимо предварительно произвести небольшие расчеты. Предположим, в нашем офисе находятся 30 телефонных аппаратов, работающих по протоколу SIP под управление IP – АТС Asterisk. Мы предполагаем, что для одного телефонного разговора нужно 100 кбит полосы (с оверхедами). Тем самым, для 30 аппаратов нам потребуется полоса в 3 мбит (up/down). Все наша VoIP – инфраструктура живет в отдельном VLAN`e с подсетью 192.168.3.0/24. Приступаем к настройке.
Всегда рекомендует выносить VoIP инфраструктуру (PBX, телефоны, шлюзы) в отдельную подсеть. Это позволит проще сегментировать трафик обычной сети передачи данных и чувствительный к задержкам VoIP.

НАСТРОЙКА НА MIKROTIK | МАРКИРОВКА ПАКЕТОВ

Настройки будем производить через утилиту управления Winbox. Открываем вкладку IP → Firewall и выбираем вкладку Mangle. Нажимаем на синий значок «+»:
Маркировка VoIP соединения Mikrotik
Отлично. Далее мы создаем маркировку для соединения, приходящих из подсети 192.168.3.0/24 и отправленных внутрь этой подсети. Начнем с первой задачи. Указываем:
  • Chain - выбираем здесь prerouting;
  • Src. Address - указываем нашу подсеть;
Тэги для трафик из подсети телефонов Asterisk на Mikrotik
Если ваши телефоны и IP – АТС Asterisk «живут» в той же подсети, что и рабочие станции (ПК), то укажите в качестве источника и назначения в маркировках IP – адрес Asterisk
Прыгаем на вкладку Action и указываем следующие параметры:
  • Action - мы делаем маркировку, поэтому выбираем mark connection;
  • New Connection Mark - маркируем как VoIP;
  • Passthrough - отмечаем галочкой;
Маркировка соединения в Mikrotik
Сохраняем изменения и нажимаем «ОК». Теперь нам необходимо сделать тоже самое, только на первом этапе, подсеть 192.168.3.0/24 мы укажем не в параметре Src. Address, а в Dst. Address. Все прочие опции делаем идентично проделанным шагам. В итоге у вас должно получиться вот так:
Mangle в Mikrotik
И добавляем финальный штрих к нашей конструкции – промаркируем пакеты, которые попадают под ранее созданные правила маркировки коннекций (соединений). Нажимаем на «+» и во вкладке General:
  • Chain - указываем prerouting;
  • Connection Mark - выбираем VoIP;
Mangle prerouting в Mikrotik
А во вкладке Action:
  • Action - делаем mark packet;
  • New Packet Mark - выбираем VoIP;
  • Passthrough снимаем галочку с чекбокса;
Нажимаем «ОК» и сохраняем. Итого у нас получается:
Приоритизация VoIP трафика в Mikrotik

ПРИОРИТЕТЫ И ВЫДЕЛЕНИЕ ПОЛОСЫ ПРОПУСКАНИЯ

На текущем этапе мы достаточно точно можем отделить VoIP – трафик от любого другого. Поэтому, создадим очередь обслуживания. Для этого, переходим в раздел Queues и нажимаем «+»:
Создание очереди в Mikrotik
Работаем со следующими параметрами:
  • Name - даем имя очереди - VoIP queue;
  • Target - укажите 0.0.0.0/0. Мы парсим данные на Mikrotik по маркированным пакета;
  • Max Limit - снимаем галочку с чекбокса;
    • Target Upload - 3M, как и говорили в начале статье;
    • Target Download - 3M, как и говорили в начале статье :);
    Лимит для полосы пропускания в Mikrotik
Двигаем во вкладку Advanced:
  • Marks - выбираем из выпадающего списка VoIP;
  • Priority - выбираем для UP/DOWN 1 приоритет;
Первый приоритет для трафика в Mikrotik
Теперь необходимо сделать очередь для остального трафика:
  • Name - даем имя очереди - Other traffic;
  • Target - указываем сеть, в которой живут наши рабочие станции (ПК) - в нашем случае 192.168.2.0/24;
  • Max Limit
    • Target Upload - 30M в нашем случае;
    • Target Download - 30M;
Трафик сети передачи QoS Mikrotik
Прыгаем на вкладку Advanced:
  • Marks - выбираем no-mark, так как нас интересуют пакеты без маркировки;
  • Priority - выбираем 8 приоритет;
Трафик сети передачи QoS Mikrotik

ТЕСТИРОВАНИЕ
Проверяем. В очереди, переходим во вкладку Traffic в настройках VoIP очереди, делаем звонок и видим его график:
Приоритет для обычного Mikrotik