Saturday, June 22, 2013

IPSec Site-to-site VPN на Cisco IOS. От теории к практике.



 
В наше время передавать через интернет личные или корпоративные данные в открытом виде может только псих. Если данные покидают просторы родной сети, то их неплохо бы зашифровать. Этим и займемся. У нас в распоряжении два роутера Cisco, за каждым из которых наши приватные сети. Что ж, объединим их используя технологию IPSec .
Конфигаруция VPN-a проходит в несколько этапов

  1. Настройка ISAKMP
  2. Настройка ipsec transformorm set
  3. Настройка ACL для фильтрации целевого траффика
  4. Настройка crypto map
  5. Применение crypto map к интерфейсу
  6. Настройка ACL для прохождения шифрованного трафика



Этап 1. Настройка ISAKMP.
В начале взаимодействия при построении IPSec туннеля  создается мини-тунель для передачи служебных данных. В принципе он после построения основного туннеля никуда не девается. Для построения используется ISAKMP (Internet Security Association and Key Management Protocol) Для его настройки необходимо указать ряд параметров, которые используются в этой первой фазе построение туннеля.

  • алгоритм шифрования
  • алгоритм аутентификации
  • ключ
  • версия алгоритма Диффи-Хелмана (используется 1,2 и 5)
  • время жизни туннеля

Для настройки вводим комманды

R1(config)#crypto isakmp policy 25
R1(config-isakmp)# encryption 3des
R1(config-isakmp)# hash md5
R1(config-isakmp)# group 1
R1(config-isakmp)# authentication pre-share
R1(config-isakmp)# lifetime 3600
Все эти параметры должны совпадать на обоих роутерах, иначе туннель не построится. Если какие-то команды не буду т отображаться в running-config, то это только потому что повторились параметры по-умолчанию. Разберем более подробно параметры команд.

crypto isakmp policy 25 — параметр 25 может быть любым. От его значения построение туннеля не зависит. Можно создать несколько политик. Тогда роутеры будут искать общую совпадающую политику. Но надо учитывать, что роутеры будут перебирать политики  начиная с 1-й, так что разумно будет указывать более стойкие политики перед слабыми.
Шифрование:
R1(config-isakmp)#encryption ?
  3des  Three key triple DES
  aes   AES - Advanced Encryption Standard.
  des   DES - Data Encryption Standard (56 bit keys). 
des — 56-битное шифрование. При современных мощностях вычислительной техники взламывается около 24 часов
3des — данные шифруются три раза алгоритмом des. Шифрование более стойкое, но тем не менее уязвимое
aes — самый стойкий алгоритм из предложенных. При его выборе можно также указать длину ключа (128, 192 или 256 бит)
Хеширование обеспечивает уверенность в том, что данные не изменялись посторонними личностями. Нам доступны два алгоритма

R1(config-isakmp)#hash ?    
  md5  Message Digest 5
  sha  Secure Hash Standard 

Механизм sha считается более надежным.
Аутентификация:
R1(config-isakmp)#authentication ?
  pre-share  Pre-Shared Key
  rsa-encr   Rivest-Shamir-Adleman Encryption
  rsa-sig    Rivest-Shamir-Adleman Signature
Ну и время жизни придумываете сами в предложенном диапазоне
R1(config-isakmp)#lifetime ?  
          <60-86400>  lifetime in seconds 
 Также на первом этапе необходимо указать ключ (preshared key), так как мы используем аутентификацию этим методом.
R1(config)#crypto isakmp key 0 SUPERSECRET address 64.155.10.1 
SUPERSECRET — это сам ключ, придумываете его сами, не ограничивайте себя в фантазии. Ключи должны совпадать на обоих роутерах.
64.155.10.1 — адрес удаленного хоста, с которым планируется наладить связь

Этап 2. Настройка ipsec transformorm set
Настроим методы шифрования и аутентификации данных (authentication header и encapsulation security payload), передаваемых между сетями. Параметры должны совпадать на обих роутерах.

R1(config)#crypto ipsec transform-set MyTS ?
  ah-md5-hmac   AH-HMAC-MD5 transform
  ah-sha-hmac   AH-HMAC-SHA transform
  comp-lzs      IP Compression using the LZS compression algorithm
  esp-3des      ESP transform using 3DES(EDE) cipher (168 bits)
  esp-aes       ESP transform using AES cipher
  esp-des       ESP transform using DES cipher (56 bits)
  esp-md5-hmac  ESP transform using HMAC-MD5 auth
  esp-null      ESP transform w/o cipher
  esp-seal      ESP transform using SEAL cipher (160 bits)
  esp-sha-hmac  ESP transform using HMAC-SHA auth
R1(config)#crypto ipsec transform-set MyTS ah-md5-hmac esp-3des
R1(cfg-crypto-trans)#mode tunnel 

В целом, ничего нового. В синтаксисе после указания методов шифрования  опционально можно указать длину ключа. Доступно два режима передачи: transport и tunnel. В первом режиме шифруется только содержимое пакета, во втором режиме весь пакет вместе с заголовками третьего уровня.
Также можно указать время жизни в секундах
R1(config)#crypto ipsec security-association lifetime seconds 18000
Этап 3. Настройка ACL для фильтрации целевого траффика
Тут все просто. Создаем ACL, где указываем, какой траффик шифровать. Логично указать там данные проходящие между приватными сетями
R1(config)#ip access-list extended 105
R1(config-ext-nacl)#permit ip 10.1.0.0 0.0.255.255 10.2.0.0 0.0.255.255
Этап 4. Настройка crypto map
Пришло время соединить воедино наш  transform-set, ACL и привязать его к адресу уделенного хоста
R1(config)#crypto map CMap 10 ipsec-isakmp
% NOTE: This new crypto map will remain disabled until a peer
and a valid access list have been configured.
R1(config-crypto-map)#set peer 64.155.10.1
R1(config-crypto-map)#match 105
R1(config-crypto-map)#set transform-set MyTS
R1(config-crypto-map)# 
Этап 5. Применение crypto map к интерфейсу
На этом этапе все crypto сконфигурированы, осталось дело за малым. Применяем созданный crypto map к интерфейсу, который смотрит в мир и с которого будет строиться тунель.


R1(config)#interface fa0/0
R1(config-if)#crypto map CMap
R1(config-if)#

Не надо забывать про наличие маршрута в удаленную сеть. Если такого нет, то добавляем маршрут
R1(config)#ip route 10.2.0.0 255.255.0.0 64.155.10.1 
Этап 6. Настройка ACL для прохождения шифрованного трафика
Разрешаем шифрованый траффик. Можно просто разрешить протоколы
R1(config)#ip access-list extended 110
R1(config-ext-nacl)#permit ahp host хх.хх.хх.хх host уу.уу.уу.уу
R1(config-ext-nacl)#permit esp host хх.хх.хх.хх host уу.уу.уу.уу
R1(config-ext-nacl)#permit udp host хх.хх.хх.хх host уу.уу.уу.уу 

Если все сделано правильно, то туннель должен подняться
R1#show crypto session
Crypto session current status
Interface: FastEthernet0/0.10
Session status: UP-ACTIVE    
Peer: 64.155.10.12 port 500
  IKE SA: local 64.155.10.2 remote 64.155.10.1 /500 Active
  IPSEC FLOW: permit ip 10.1.0.0/255.255.0.0 10.2.0.0/255.255.0.0
        Active SAs: 4, origin: crypto map 

No comments:

Post a Comment