Создание IPSec  соединения  между

                              Windows 2000, OpenBSD и FreeBSD .

 

                          Автор Andy.  supervisors@lenta.ru

 

 

Некоторое время назад я заинтересовался  установкой защищенного IPSec   соединения между  компьютерами и сетями , причем на разных платформах .  Для начала покопался в поиске и выяснил , что в на русском языке материалов по VPN не так уж мало , но большинство посвящено протоколу PPTP от MS и его UNIX реализациям – PopTop,Vtun и MPD . По IPSec протоколу я нашел только широко распространенный перевод Лапшанского в старой “Софтерре” (5). Предлагаемый материал ,надеюсь,сможет восполнить этот пробел и является в некоторой степени “впечатлениями новичка” в мире защищенных соединений .

 

Первые вопросы .

Как всегда при столкновении с новой темой возникает много вопросов плюс  путаница в понятиях , терминах и т.д.

Например -VPN соединение под 2000 – это IPSec ? И для чего у Микрософта есть отдельный продукт – VPN client ? IPSec продукты других фирм под Windows – для чего они и как соотносятся с IPSec от MS ? 

Какие IPSec продукты используются в мире UNIX ?

По какому порту и протоколу работает IPSec ?

 

Первые ответы .

То , что в 2000 создается в соединениях – это VPN с PPTP протоколом и это не IPSec . IPSec встроен в 2000 как сервис (IPSEC Services в списке ) и настраивается через MMC как “IP Security Policy”

Микрософт выпустил отдельно VPN клиент для Win98/NT4 и опять же это не IPSEC .

Продукты IPSec других фирм под Windows служат аналогичным целям и своими средствами создают защищенное соединение .

В BSD системах для IPSec используют Racoon и ISAKMPD , в Linux-ах – FreeSWAN

IPSec использует при “переговорах” 500 порт UDP , а при обмене данными – специальные IP-пакеты , а не TCP/UDP .

 

 

Наиболее интересным было организовать IPSec соединение между Windows 2000 и UNIX платформами . В качестве UNIX платформы была выбрана OpenBSD из след. соображений

1. ISAKMPD является штатным демоном этой слегка тронутой на security системы и его не надо компилировать . Создал конфигурационный файл и запустил ;-) .

2. В ядро системы включена поддержка IPSec по умолчанию – опять же ничего генерировать не надо .

3. Мне попалась пара толковых статей на англ. языке (1,2) плюс конечно FAQ на openbsd.org (3) . Замечание – материала там много  , так что его понимать для начинающих  сложновато.

 

Конфигурация IPSec OpenBSD

 

Итак , была скачана OpenBSD 3.2 и установлена на достаточно древний компьютер 200MMX c 132Mб памяти и 100Мб сетевой картой. “Я его слепила из того что было” (с) А.Апина J

ISAKMPD использует 2 файла конфигурации – isakmpd.conf и isakmpd.policy, лежат они в /etc/isakmpd . Примеры этих файлов с комментариями расположены в /usr/share/ipsec/isakmpd .В основном конфигурационный файл был взят из (2) и выглядел он так :

/etc/isakmpd/isakmpd.conf

 

# ----------------                               

# Defaults section                              

# ----------------                              

                                                

[General]                                       

Default-phase-1-lifetime=       3600,60:86400   

Default-phase-2-lifetime=       1200,60:86400   

                                                

# -----------                                   

# Connections                                   

# -----------                                    

                                                

[Phase 1]                                       

Default=ISAKMP-clients                          

                                                

[Phase 2]                                       

Passive-Connections=IPsec-clients               

                                                

# ---------------------                         

# Phase 1 peer sections                         

# ---------------------                         

                                                 

[ISAKMP-clients]                                

Phase=1                            

Transport=udp                      

Configuration=Open-main-mode        

Authentication=секретный пароль здесь     

#В данном примере используется самый простой вариант IPSec -#разделяемого ключа (preshared keys)

                                   

# ----------------                 

# Phase 2 sections                 

# ----------------                 

                                    

[IPsec-clients]                    

Phase=2                            

Configuration=Open-quick-mode       

Local-ID=my-host           

Remote-ID=remote-net             

                                   

# ------------------                

# Client ID sections               

# ------------------               

                                   

[my-host]                    

ID-type=IPV4_ADDR_SUBNET           

Network=0.0.0.0                    

Netmask=0.0.0.0                     

 

                      

[remote-net]        

ID-type=IPV4_ADDR     

Address=0.0.0.0       

                      

[Open-main-mode]                            

DOI=IPSEC                                  

EXCHANGE_TYPE=ID_PROT                       

Transforms=3DES-SHA                        

                                           

[Open-quick-mode]                           

DOI=IPSEC                                  

EXCHANGE_TYPE=QUICK_MODE                   

Suites=QM-ESP-AES-SHA-PFS-SUITE            

#---------------------------------------------------------------                                     

Небольшое замечание . Адреса локальной машины и удаленной сети в приведенном примере заданы 0 – то есть любые . Более корректный пример с указанием локальных/удаленных хостов/сетей будет приведен далее .

 

Второй файл isakmpd.policy содержит след. строки –

KeyNote-Version: 2                                                             

Comment: This policy accepts ESP SAs from a remote that uses the right password

        $OpenBSD: policy,v 1.6 2001/06/20 16:36:19 angelos Exp $               

        $EOM: policy,v 1.6 2000/10/09 22:08:30 angelos Exp $                   

Authorizer: "POLICY"                                                            

#---------------------------------------------------------------

Замечание – демон ISAKMPD не очень хорошо разбирает  конфиг. файлы .Лучше избегать лишних пробелов в конце строк – это приводит к малопонятным ошибкам .

Также надо настроить firewall – пропускать UDP пакеты по 500 порту и esp-пакеты. Это есть в (3).

Итак – конфигурация готова , запускаем демон примерно так :

 

На последние сообщения о ошибках внимания можно не обращать J

Все , с стороны OpenBSD IPSec соединение готово и ждет подключения клиента .

 

 

Конфигурация IPSec Windows 2000.

 

Для экспериментов с Windows 2000 был использован более передовой компьютер Celeron 1800/256RAM/100Мб сетевая карта , версия Prof с SP2 .

Настройка IPSec штатными средствами Win2000 исчерпывающе описана на сайте самого MS (4) , на русском языке кратко в (5), однако процедура эта многоступенчатая и временами двусмысленная – начинающим легко запутаться .  К счастью, в процессе поисков я обнаружил замечательную  программу IPSEC.exe (6) от Marcus Müller's .Суть ее в том , что используя программу IPSECPOL.EXE из MS ResKit , она сама производит настройку IPSec Policy на основе входного текстового файла . Формат этого конфигурационного файла аналогичен формату config-a Freeswan из Линукса и весьма несложен  .  Таким образом настройка IPSec сильно упрощается J .

Итак, необходимо скачать и установить ipsecpol (7) и ipsec (6).

Затем займемся созданием входного файла . На основе примера был создан след. файл ipsec.conf

conn Andy

     left=%any

     right=213.27.18.0

     rightsubnet=10.0.1.00/255.255.255.0

     presharedkey=секретный пароль – такой же как на OpenBSD

     network=lan

     auto=start

     pfs=yes

Комментарий .

left – это наша локальная машина с Windows 2000 , в данном примере это означает любой адрес .

right – это адрес машины OpenBSD

rightsubnet – это сетка ЗА  OpenBSD , к которой будет установлено защищенное соединение .

Таким образом , мы соединяем по IPSec клиента Win 2000 с удаленной сетью , для которой OpenBSD является шлюзом .

Запускаем IPSEC.EXE

 

 

И проверяем доступность удаленной сети при помощи Ping

 

 

Первые пинги не прошли – это особенность реализации 2000  IPSec .

Со второго раза защищенное соединение установилось , и мы видим удаленную сеть ! Для того , чтобы окончательно развеять сомнения , посмотрим обмен на другой стороне - OpenBSD при помощи tcpdump-a:

 

Действительно , налицо все признаки защищенного трафика J

Итак , защищенное IPSec соединение установлено , а свойства получившегося соединения будут рассмотрены во 2 части .

Пара очевидных замечаний по настройке , которые обычно пропускают при чтении J .

1.Само собой ,  IPSEC Services должен быть запущен на 2000.

2.Данный сервис очень чувствителен к ошибкам/неточностям в настройке локального подключения к сети – например в  Default gateway .

3.На машинах с работающим IPSEC Services/ISAKMPD маршрутизация к удаленным сетям устанавливается автоматически указанными сервисами/демонами .На подключаемых к туннелю раб. станциях маршрутизацию надо настраивать самостоятельно .

 

Вторая часть Результаты

SSH Sentinel - Настройка и результаты

ISAKMPD на FreeBSD – тут .

Список материалов Ссылки

 

 

 

Сайт управляется системой uCoz