Нажмите CTRL-D чтобы добавить нас в закладки
HackZone.RU - Настройка IPSEC туннеля между Cisco и FreeBSD
Войти / Регистрация / Участники
Определение даты выпуска iPhone по серийному номеру
-
Поиск по сайту
Форумы



Реклама

Поиск ТОП Добавить публикацию

Настройка IPSEC туннеля между Cisco и FreeBSD

16.07.2009

1. Введение

В данном документе описана методика создания и настройки шифрованного
туннеля (IPSec) между маршрутизатором Cisco и сервером на базе ОС
FreeBSD, соединенных через незащищенную публичную сеть.

Используемое оборудование:

ПК Celeron 366 MHz, 256 MB RAM, ОС FreeBSD 7.0 (далее - PC)
Маршрутизатор CISCO 2821 (далее - Cisco)

Схема организации связи и IP-адресации приведена на рис.1.

                                                                                                Рис.1

В рассматриваемой схеме защищенный туннель устанавливается между
внешними IP-адресами PC (10.40.248.2) и Cisco (192.168.50.2). Шифрованию
подлежит весь IP-трафик между локальными сетями 10.5.3.0/24,
10.5.4.0/24, с одной стороны, и сетью 10.11.16.0/23, с другой стороны.


2. Краткая теория IPSec

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

Установление защищенных соединений, или туннелей является функцией
протокола IKE (Internet key exchange) и выполняется в две фазы. 

В первой фазе (IKE Phase 1) устанавливается защищенное соединение,
предназначенное для обмена параметрами, необходимыми для установления
фазы 2 туннеля. Аутентификация ответной стороны может осуществляться как
по заранее заданному ключу (одинаковому на обеих сторонах - preshared
key), так и с использованием алгоритма RSA (rsa signature). В настоящей
статье используется аутентификация методом preshared key.

Существуют два ключевых протокола, связанных со второй фазой SA: AH
(Authentication header) и ESP (Encapsulating Security Payload). Первый
обеспечивает только проверку подлинности, но не шифрование данных;
второй выполняет обе указанные операции. В настоящей статье
рассматривается протокол ESP. 

IPSec может работать в одном из двух режимов: транспортном (transport)
или туннельном (tunnel). В первом случае шифруется и/или
аутентифицируется только содержимое (payload) IP-пакета, а заголовок
остается нетронутым. Во втором случае исходный IP-пакет шифруется и/или
аутентифицируется целиком, и к нему добавляется новый заголовок. В
настоящей статье рассматривается только туннельный режим IPSec.

В качестве методов шифрования могут быть использованы блочные алгоритмы
такие, как DES, 3DES, AES, blowfish и др. 

3. Настройка PC

В качестве шлюза под управлением FreeBSD используется операционная
система со специально пересобранным ядром. Для этого при сборке в
директории /usr/src/sys/i386/conf в файле конфигурации ядра следует
отметить опции:

 options IPSEC
 options IPSEC_DEBUG
 device crypto


Сборка ядра осуществляется следующим образом:

 cd /usr/src 
 make buildkernel KERNCONF=name
 make installkernel KERNCONF=name


После данных операций в системе загружается ядро с поддержкой IPSEC протоколов.
По желанию, можно пересобрать и "мир" (предварительно
обновив через csup), но это дело вкуса и значимости сервера.

Далее, необходимо собрать приложение racoon, обеспечивающее функционал
IKE Phase 1 (см. раздел 2). Для упрощения задачи применяется метод
аутентификации preshare key (далее обозначается psk).

Осуществляем сборку приложения racoon:

 cd /usr/ports/*/ipsec-tools
 make


В появившемся окне следует отключить опцию NATT (Nat traversal) -
механизм обеспечения прохождения IPSec-пакетов через NAT. Далее,

 make install


После сборки racoon необходимо отредактировать (или создать, если он не
существует) конфигурационный файл /usr/local/etc/racoon/racoon.conf 

со следующим содержимым:

 # $KAME: racoon.conf.in,v 1.18 2001/08/16 06:33:40 itojun Exp $

 path include "/usr/local/etc/racoon" ;

 path pre_shared_key "/usr/local/etc/racoon/psk.txt" ;
 #path pre_shared_key "/etc/psk.txt" ;

 # "log" specifies logging level. It is followed by either "notify", "debug"
 # or "debug2".
 log notify;

 # "padding" defines some parameter of padding. You should not touch these.
 padding
 {
 maximum_length 20;
 randomize off;
 strict_check off;
 exclusive_tail off;
 }
 
 # if no listen directive is specified, racoon will listen to all
 # available interface addresses.
 listen
 {
 isakmp 10.2.8.2 [500];
 }
 
 # Specification of default various timer.
 
 timer
 
 {
 # These value can be changed per remote node.
 counter 5;# maximum trying count to send.
 interval 20 sec;# maximum interval to resend.
 persend 1;# the number of packets per a send.
 
 # timer for waiting to complete each phase.
 phase1 30 sec;
 phase2 15 sec;
 }

 #Определяем настройки первой фазы:
 
 remote 10.8.50.2 #Внешний IP адрес удаленной стороны
 {
 exchange_mode main; #Не все IOS поддерживают агрессивное согласование в две фазы
 #exchange_mode aggressive;
 doi ipsec_doi;
 situation identity_only;
 nonce_size 16;
 lifetime time 60 min;
 initial_contact on;
 support_proxy on;
 proposal_check obey;# obey, strict or claim
 proposal {
 encryption_algorithm 3des; #Алгоритм шифрования
 hash_algorithm sha1; #Метод хеширования
 authentication_method pre_shared_key; #Метод аутентификации на общем ключе
 dh_group 2; #Длина ключа Диффи-Хеллмана (группа 2 - 1024 бит)
 }
 }
 
 sainfo subnet 10.5.3.0/24 any address 10.11.16.0/23 any {

 #В данном случае это означает, что пакеты из сети 10.5.3.0/24 в сеть 10.11.16.0/24 попадают в обработку. 
 #Первое значение своя сеть, второе - удаленная. Any означает "любой порт".

 pfs_group 2;
 lifetime time 24 hour;
 encryption_algorithm aes;
 authentication_algorithm hmac_sha1;
 compression_algorithm deflate;
 }

 sainfo subnet 10.5.4.0/24 any address 10.11.16.0/23 any {

 #Аналогично, для второй подсети:
 
 pfs_group 2;
 lifetime time 24 hour;
 encryption_algorithm aes;
 authentication_algorithm hmac_sha1;
 compression_algorithm deflate;
 }


Следует иметь ввиду, что параметры pfs_group, encryption_algorithm,
authentication_algorithm, compression_algorithm на локальной и
удаленной сторонах должны быть идентичными. Времена жизни (lifetime)
могут различаться, при этом фактическое время жизни определится как
меньшее из двух.

Затем следует создать файл для хранения ключей (тех самых preshared
keys):

 cd /usr/local/etc/racoon
 touch psk.txt
 chmod 600 psk.txt
 chown root:wheel psk.txt


Содержимое файла psk.txt должно быть следующим:

 10.8.50.2 key12345


На этом настройка racoon закончена.

Далее, необходимо указать ядру параметры ожидаемых SA, для чего следует
создать файл /etc/ipsec.conf 
следующего содержания:

 flush;
 spdflush;

 #Правила для исходящего трафика ESP из подсети 10.5.3.0/24:
 spdadd 10.5.3.0/24 10.11.16.0/23 any -P out ipsec esp/tunnel/10.2.8.2-10.8.50.2/unique;

 #Правила для входящего трафика ESP в подсеть 10.5.3.0/24:
 spdadd 10.11.16.0/23 10.5.3.0/24 any -P in ipsec esp/tunnel/10.2.8.2-10.8.50.2/unique;

 #Правила для исходящего трафика ESP из подсети 10.5.4.0/24:
 spdadd 10.5.4.0/24 10.11.16.0/23 any -P out ipsec esp/tunnel/10.2.8.2-10.8.50.2/unique;

 #Правила для входящего трафика ESP в подсеть 10.5.4.0/24:
 spdadd 10.11.16.0/23 10.5.4.0/24 any -P in ipsec esp/tunnel/10.2.8.2-10.8.50.2/unique;


Ну, и напоследок активируем ipsec и racoon в /etc/rc.conf :

 racoon_flags="-l /var/log/racoon.log"
 ipsec_enable="YES"
 ipsec_file="/etc/ipsec.conf"


Всё, со стороны FreeBSD больше настроек не требуется. Перезагружаем сервер.


4. Настройка Cisco

Создаем isakmp-политику. О совпадении значений параметров с ответной
стороной сказано в разделе 3, при описании sainfo subnet. 

 crypto isakmp policy 20
 encr 3des
 authentication pre-share
 group 2
 lifetime 3600
 crypto isakmp identity address
 crypto isakmp key key12345 address 10.2.8.2


Создаем transform-set:

 crypto ipsec transform-set MY_MAP esp-aes esp-sha-hmac


Создаем CryptoMap:

 crypto map MY_MAP 1 ipsec-isakmp 
 set peer 10.2.8.2
 set security-association lifetime seconds 86400 
 set transform-set MY_MAP
 set pfs group2
 match address 150


Описываем "интересный" трафик, подлежащий шифрованию. В контексте crypto
ACL "permit" означает "шифровать", а "deny" - "не шифровать".

 access-list 150 permit ip 10.11.16.0 0.0.1.255 10.5.3.0 0.0.0.255
 access-list 150 permit ip 10.11.16.0 0.0.1.255 10.5.4.0 0.0.0.255


Ну, и привязываем CryptoMap к интерфейсу:

 interface Vlan10
 description ---
 ip address 10.8.50.2 255.255.255.252
 no ip redirects
 no ip unreachables
 no ip proxy-arp
 crypto map MY_MAP


Прописываем маршрут для интересного трафика на внешний IP адрес FreeBSD маршрутизатора:

 ip route 10.5.3.0 255.255.255.0 10.2.8.2
 ip route 10.5.4.0 255.255.255.0 10.2.8.2


5. Проверка правильности настроек

После первого же пинга должна установиться фаза IKE1. Со стороны Cisco,
её состояние можно определить командой:

 show crypto isakmp sa


Ожидаемый вывод:

 dst src state conn-id slot status
 192.168.50.2 10.2.8.2 QM_IDLE 3 0 ACTIVE


Если фаза IKE1 установилась, проверяем состояние IPSec SA:

 show crypto ipsec sa interface Vlan10


Ожидаемый вывод:

 interface: Vlan10
 Crypto map tag: MY_MAP, local addr10.8.50.2
 protected vrf: (none)
 local ident (addr/mask/prot/port): (172.21.16.0/255.255.254.0/0/0)
 remote ident (addr/mask/prot/port): (10.250.30.0/255.255.255.0/0/0)
 current_peer10.2.8.2 port 500
 PERMIT, flags={origin_is_acl,ipsec_sa_request_sent}
 #pkts encaps: 1, #pkts encrypt: 1, #pkts digest: 1
 #pkts decaps: 1, #pkts decrypt: 1, #pkts verify: 1
 #pkts compressed: 0, #pkts decompressed: 0
 #pkts not compressed: 0, #pkts compr. failed: 0
 #pkts not decompressed: 0, #pkts decompress failed: 0
 #send errors 1, #recv errors 0
 
 local crypto endpt.:10.8.50.2, remote crypto endpt.:10.2.8.2
 path mtu 1500, ip mtu 1500, ip mtu idb Vlan10
 current outbound spi: 0xC29EA2C(204073516)
 
 inbound esp sas:
 spi: 0x43CF5008(1137659912)
 transform: esp-aes esp-sha-hmac ,
 in use settings ={Tunnel, }
 conn id: 3001, flow_id: NETGX:1, crypto map: MY_MAP
 sa timing: remaining key lifetime (k/sec): (4595528/86385)
 IV size: 16 bytes
 replay detection support: Y
 Status: ACTIVE

 inbound ah sas:

 inbound pcp sas:

 outbound esp sas:
 spi: 0xC29EA2C(204073516)
 transform: esp-aes esp-sha-hmac ,
 in use settings ={Tunnel, }
 conn id: 3012, flow_id: NETGX:12, crypto map: MY_MAP
 sa timing: remaining key lifetime (k/sec): (4595528/86385)
 IV size: 16 bytes
 replay detection support: Y
 Status: ACTIVE

 outbound ah sas:

 outbound pcp sas:


...откуда видно, что SA назначены, активны, и соответствуют ACL.

Проверяем корректность работы IPSec-туннеля со стороны FreeBSD:

 setkey -D


Ожидаемый вывод:


 10.2.8.2 10.8.50.2
 esp mode=tunnel spi=1137659912(0x43cf5008) reqid=16385(0x00004001)
 E: rijndael-cbc ac144569 a67b16b0 eade4bac 429d4f08
 A: hmac-sha1 d62d63e9 eb08e6d8 5302bb00 e76432a5 f32c10b7
 seq=0x00000001 replay=4 flags=0x00000000 state=mature
 created: Oct 15 15:50:35 2008 current: Oct 15 16:10:17 2008
 diff: 1182(s) hard: 86400(s) soft: 86400(s)
 last: Oct 15 15:50:39 2008 hard: 0(s) soft: 0(s)
 current: 120(bytes) hard: 0(bytes) soft: 0(bytes)
 allocated: 1 hard: 0 soft: 0
 sadb_seq=7 pid=1036 refcnt=2
 10.2.8.2 10.8.50.2
 esp mode=tunnel spi=204073516(0x0c29ea2c) reqid=16386(0x00004002)
 E: rijndael-cbc 9f96cb23 6628fd08 dfa56c63 37410a4b
 A: hmac-sha1 ded12d87 993b05aa 2884b12e 6d336cfe 72d50d39
 seq=0x00000001 replay=4 flags=0x00000000 state=mature
 created: Oct 15 15:50:35 2008 current: Oct 15 16:10:17 2008
 diff: 1182(s) hard: 86400(s) soft: 86400(s)
 last: Oct 15 15:50:39 2008 hard: 0(s) soft: 0(s)
 current: 80(bytes) hard: 0(bytes) soft: 0(bytes)
 allocated: 1 hard: 0 soft: 0
 sadb_seq=6 pid=1036 refcnt=1




После этого можно проверять связность сетей 10.5.3.0/23 и 10.11.16.0/23.

При копировании материалов ссылка на HackZone.RU обязательна

Добавить страницу в закладки

 Детали
Категория: Системное администрирование
Опубликовал: superhacker
Просмотров: 16817
Проголосовало через SMS: 0
Ключевые слова: ipsec, gre, freebsd, cisco, (найти похожие документы)
  Разместить у себя на сайте
Прямая ссылка
HTML
BBCode ссылка
BBCode ссылка с текстом

 Комментарии (оставить свой комментарий можно здесь)
Только зарегистрированные пользователи могут оставлять комментарии

Зарегистрироваться *** Авторизоваться


 Последние новости и статьи  Последние сообщения с форумов
  • Данные пользователей Zoom оказались опубликованы на хакерском фор...
  • SpaceX и НАСА запретили сотрудникам использовать Zoom. Разработка...
  • В Firefox исправлены две 0day уязвимости
  • Хакерский форум OGUsers взломан
  • Уязвимости в Safari позволяли взломать камеру на iPhone и MacBook
  • Уязвимость в iOS блокирует шифрование трафика VPN
  • Зафиксирован новый случай использования крайне редкой атаки BadUS...
  • Опубликован способ обхода PPL для внедрения шелл-кода
  • ФБР ликвидировали deer.io
  • Пользователи iOS в Гонконге стали жертвами многофункциональной ма...

    Все новости... Все статьи... Прислать новость RSS
  • Взлом и безопасность / ICQ,AIM,YAHOO,QIP » Заказать услугу ВЗЛОМА по адресу [email protected]
  • Взлом и безопасность / Новичкам » Re: Взлом Whatsapp.Viber.Instagram. facebook.Узнаем взломаем...
  • Hardware / Общее » Взлом распечатка СМС и звонков
  • Взлом и безопасность / Новичкам » Re: Нужно взломать mail.ru
  • Взлом и безопасность / Новичкам » Re: Взлом Whatsapp.Viber.Instagram. facebook.Узнаем взломаем...
  • Разное / Предложения работы » Re: 3D Pool Studio (VIP 3d) - взлом программы
  • Разное / Предложения работы » 3D Pool Studio (VIP 3d) - взлом программы
  • Интернет / SE Optimization » Re: Подскажите программу для измерения ссылок на сайт
  • Разное / Предложения работы » Re: Обход защиты. Кейген
  • Разное / Предложения работы » Предложение работы

    Все форумы... RSS


  • Разместить рекламу
    © HackZone Ltd. 1996-2020. Все права зарегистрированы.
    Перепечатка материалов без согласования и указания источника будет преследоваться по Закону

    О проекте | История проекта | Размещение рекламы | Обратная связь | Правила поведения на портале
    contador de visitas счетчик посещений

    #{title}

    #{text}

    x

    #{title}

    #{text}