(495) 925-0049, ITShop интернет-магазин 229-0436, Учебный Центр 925-0049
  Главная страница Карта сайта Контакты
Поиск
Вход
Регистрация
Рассылки сайта
 
 
 
 
 

Racoon vs. OpenSWAN: Настройка IPSEC VPN туннеля HOST-TO-SITE с Cisco и L2TP over IPSEC для Windows, iOS и Android

Источник: habrahabr
Alvelig

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

Читателю, которому требуется срочная помощь, а не рассказы о моих несчастьях, приведших к написанию данного топика, рекомендую пролистать до заголовка "Собственно сабж" 

Где-то с полгода назад мне понадобилось поднять сервер для платежных терминалов с подключением к платежной системе по IPSec. Мой выбор пал на Debian Squeeze и KAME ipsec-tools, в простонародье racoon. Ох, и не знаю, почему моя душа прикипела к данному приложению. Сначала, поверхностно изучив теорию IPSec, я взялся за практику:

apt-get install racoon
Ракун успешно скачался, установился, утянув за собой еще кучу пакетов и радостно известил меня о том, что он тут.

На другой стороне ждала его возлюбленная CISCO, которая, правда, стабильно поддерживала еще пару десятков защищенных связей, но с нетерпением ждала, что наш герой к ней постучится, назовет PreShared Key и заключит ее в объятия своего надежного IPSec канала.

Но перед этим нужно было пройти трудное испытание, ведь строгий, но справедливый отец CISCO - сисадмин на той стороне, не давал доступа к своей подопечной без успешного прохождения испытания. Условия прохождения были следующими:

IKE 3DES HASH SHA-1 Diffie Hellman Grupo 2 Life Time 86400 seconds Authentication by Preshared Key IPSec 3DES Integrity : ESP/SHA1 Mode: Tunel Perfect Forward Secrecy (Active) Lifetime 3600 seconds x.x.x.x - IP адрес моего сервера, он же сервер приложений y.y.y.y - IP Cisco z.z.z.z - IP сервера приложений за Cisco

Чтобы помочь влюбленным, еще примерно пару дней ушло на создание более или менее работающего конфига. И наконец, любовь восторжествовала. Одной из проблем было переделывание конфигов из существующих site-to-site, пришлось немного напрячь мозг и вспомнить, что один хост - это та же сеть, только с маской подсети 255.255.255.255, то есть /32. 

Но счастье было не долгим. Возникла задача подключить и клиентские хосты по L2TP over IPSec, и здесь Ракун не смог справится. Сначала потребовалась операция по пересборке ipsec-tools, чтобы он мог поддерживать wildcard (*) для preshared key, так как IP-адреса клиентских машин неизвестны. Выглядело сие безобразие как-то так:

diff -ur a/ipsec-tools-0.7.1/src/racoon/localconf.c b/ipsec-tools-0.7.1/src/racoon/localconf.c --- a/ipsec-tools-0.7.1/src/racoon/localconf.c 2006-09-09 11:22:09.000000000 -0500 +++ b/ipsec-tools-0.7.1/src/racoon/localconf.c 2010-08-06 16:35:18.000000000 -0500 <at> <at> -211,7 +211,8 <at> <at> if (*p == '\0') continue; /* no 2nd parameter */ p--; - if (strncmp(buf, str, len) == 0 && buf[len] == '\0') { + if (strncmp(buf, "*", 2) == 0 // + (strncmp(buf, str, len) == 0 && buf[len] == '\0')) { p++; keylen = 0;

Банальное разрешение зависимостей при сборке потребовало еще недели кропотливого курения мана, потому что не мог пройти дальше ./configure. В итоге, я наткнулся на статью BenV, которая многозначительно вещала: And you trust your security to these clowns (И вы доверяете свою безопасность этим клоунам). Не придав большого значения этим словам, ведь статья мою проблему решила, я успешно собрал, подключил и заставил Ракун работать теперь и в конфигурации Road Warrior.


Настройки L2TP


C L2TP проблем не было:

Установил xl2tp и ppp
apt-get install xl2tp ppp

Настроил согласно множеству How-to:
# /etc/xl2tpd/xl2tpd.conf [global] ipsec saref = yes force userspace = yes [lns default] local ip = 10.1.2.1 ip range = 10.1.2.10-10.1.2.254 # пул адресов для клиентов refuse pap = yes require authentication = yes ppp debug = yes length bit = yes pppoptfile = /etc/ppp/options # /etc/ppp/options: ms-dns 10.1.2.1 ms-dns 8.8.8.8 require-mschap-v2 asyncmap 0 auth crtscts lock hide-password modem debug name l2tpd proxyarp lcp-echo-interval 10 lcp-echo-failure 100 #/etc/ppp/chap-secrets: # Secrets for authentication using CHAP # client server secret IP addresses username * userpass * # имя пользователя и пароль в подключении. Вместо звездочки в колонке IP addresses можно вставить адрес, который вы хотите присвоить определенному логину. У меня например для пользователя alvelig задается адрес 10.1.2.7 alvelig * alvelig 10.1.2.7

А вот с ipsec-tools пришлось повозиться. Приведу рабочий конфиг ракуна:

# /etc/racoon/racoon.conf: path include "/etc/racoon"; path pre_shared_key "/etc/racoon/psk.txt"; # путь до PreShared Keys файла (см. чуть ниже) path certificate "/etc/racoon/certs"; # конфиг IKE для Road Warrior remote anonymous { exchange_mode aggressive,main; passive on; proposal_check obey; support_proxy on; nat_traversal on; ike_frag on; dpd_delay 20; proposal { encryption_algorithm aes; hash_algorithm sha1; authentication_method pre_shared_key; dh_group modp1024; } proposal { encryption_algorithm 3des; hash_algorithm sha1; authentication_method pre_shared_key; dh_group modp1024; } } # IPSEC для Road Warrior и CISCO sainfo anonymous { pfs_group 2; lifetime time 3600 sec; encryption_algorithm 3des; authentication_algorithm hmac_sha1; compression_algorithm deflate ; } # IKE для CISCO remote y.y.y.y { exchange_mode main, aggressive; my_identifier address; lifetime time 86400 sec; nat_traversal on; dpd_delay 20; proposal { encryption_algorithm 3des; hash_algorithm sha1; authentication_method pre_shared_key; dh_group 2; } }

# /etc/racoon/psk.txt: # PSK для Cisco 200.68.5.131 CiscoPSK # PSK для клиентов за NAT * RoadWarrior

# /etc/ipsec-tools.conf #!/usr/sbin/setkey -f # # Flush SAD and SPD flush; spdflush; # Create policies for racoon spdadd x.x.x.x/32 z.z.z.z/32 any -P out ipsec esp/tunnel/x.x.x.x-y.y.y.y/require; spdadd z.z.z.z/32 x.x.x.x/32 any -P in ipsec esp/tunnel/y.y.y.y-x.x.x.x/require; ########################## ## XL2TP ## ########################## spdadd 0.0.0.0/0[0] 0.0.0.0/0[1701] udp -P in ipsec esp/transport//require; spdadd 0.0.0.0/0[1701] 0.0.0.0/0[0] udp -P out ipsec esp/transport//require;

Но через неделю успешной работы туннель оказался вдруг неактивным, и единственное средство, которое помогало, - это restart racoon или reboot.

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

Наконец, у меня дошли руки до того, чтобы разобраться досконально в вопросе, и в надежде на bug-fixes и прочие неуловимые вещи я собрал свежую версию ipsec-tools 0.8.1. И сразу же после старта racoon сообщил мне о тяжелой болезни - segmentation fault.

Такого удара я вынести не смог. Не спал ночь: думал, как же так…

Проснувшись утром, выпил чаю, закусил бутербродом и сел за компьютер. Внезапно в голове загорелась мысль: OpenSWAN! Ай да, попробуем! 


Собственно сабж

apt-get install openswan

Aptitude ругнулся на то, что OpenSWAN не дружит с racoon, и с былым другом нам придется попрощаться. Ну, была не была, подумал я и подтвердил установку OpenSWAN.

После долгих мучений настройки racoon настройка OpenSWAN оказалась легче легкого (или, может, я опыта уже набрался):

# /etc/ipsec.conf config setup # Общий раздел для всех подключений nat_traversal=yes # для клиентов за NAT conn cisco # Туннель к циске dpddelay=30 # Dead peer detection - 30 секунд - интервал между keep-alive пакетами dpdtimeout=120 # dpd таймаут 120 секунд, после которого хост будет объявлен недоступным dpdaction=restart # перезапустить процесс подключения к хосту # IKE alg 3DES - HASH sha1 - DH group 2 (1024) ike=3des-sha1-modp1024 # IKE lifetime 86400 seconds (24 hours) ikelifetime=86400s # IKE auth method Pre-Shared Key (PSK secret) authby=secret # IPSEC params # Закомментированные настройки уже по умолчанию установлены в OpenSWAN # phase2=esp # by default # phase2=3des-sha1 # by default the same as IKE # IPSec type tunnel type=tunnel # режим - туннель # IPSEC (key) lifetime salifetime=3600s # Perfect Forward Secrecy PFS group the same as IKE (1024) pfs=yes # включить Perfect Forward Secrecy #left side (myside) left=x.x.x.x # OpenSWAN side # в моем случае хост был один, и он же был и шлюзом IPSec, поэтому netmask x.x.x.x/32 leftsubnet=x.x.x.x/32 #net subnet on left side to assign to right side leftnexthop=y.y.y.y # CISCO side #right security gateway (CISCO side) right=y.y.y.y #CISCO side rightsubnet=z.z.z.z/32 #net on right side rightnexthop=x.x.x.x # OpenSWAN side auto=start # Road Warrior conn L2TP authby=secret pfs=no auto=add keyingtries=3 rekey=no ikelifetime=8h keylife=1h type=transport left=x.x.x.x leftprotoport=17/%any # до этого стояло 1701, но iOS не подключался. Поменял на %any и, о чудо: теперь мой iPad тоже был в сети для мониторинга терминалов! right=%any rightprotoport=17/%any compress=no dpddelay=30 dpdtimeout=120 dpdaction=clear # dpdaction=clear это важное замечание, т.к. ipsec здесь восстанавливается #только по инициации со стороны клиента, то есть, если обнаружили "мертвый peer", #то все записи по нему надо очистить, чтобы успешно подключить его снова

Настройки L2TP даже менять не пришлось: все заработало сразу. Настройки L2TP.
ipsec setup start ping z.z.z.z 64 bytes from z.z.z.z: icmp_req=1 ttl=254 time=7.53 ms 64 bytes from z.z.z.z: icmp_req=2 ttl=254 time=6.59 ms 64 bytes from z.z.z.z: icmp_req=3 ttl=254 time=6.41 ms 64 bytes from z.z.z.z: icmp_req=4 ttl=254 time=6.77 ms

И это заняло у меня порядка получаса против полутора недель мучений с racoon.

Заключение


К сожалению, как это часто бывает, капризная Циска часто ссорилась и рвала отношения с Ракуном, а вот с OpenSWAN (интересно, какого пола это приложение? может, женского, тогда это многое объясняет) уже третью неделю стабильно и без конфликтов и скандалов.

Постскриптум


Если VPN-соединения с клиентами подключаются, но хосты внутри сети недоступны друг для друга, то вам не хватает:
echo 1 > /proc/sys/net/ipv4/ip_forward Или смотрите ваш iptables

Здесь можно взять настройки для клиентов iOS и Windows

Ссылки по теме


 Распечатать »
 Правила публикации »
  Написать редактору 
 Рекомендовать » Дата публикации: 22.04.2013 
 

Магазин программного обеспечения   WWW.ITSHOP.RU
Enterprise Connectors (1 Year term)
IBM Domino Utility Server Processor Value Unit (PVU) License + SW Subscription & Support 12 Months
Dr.Web Security Space, продление лицензии на 1 год, 1 ПК
TeeBI for RAD Studio Suite with source code single license
Allround Automation Direct Oracle Access Standard license
 
Другие предложения...
 
Курсы обучения   WWW.ITSHOP.RU
 
Другие предложения...
 
Магазин сертификационных экзаменов   WWW.ITSHOP.RU
 
Другие предложения...
 
3D Принтеры | 3D Печать   WWW.ITSHOP.RU
 
Другие предложения...
 
Новости по теме
 
Рассылки Subscribe.ru
Информационные технологии: CASE, RAD, ERP, OLAP
OS Linux для начинающих. Новости + статьи + обзоры + ссылки
Реестр Windows. Секреты работы на компьютере
Компьютерные книги. Рецензии и отзывы
Один день системного администратора
Компьютерная библиотека: книги, статьи, полезные ссылки
Краткие описания программ и ссылки на них
 
Статьи по теме
 
Новинки каталога Download
 
Исходники
 
Документация
 
 



    
rambler's top100 Rambler's Top100