Создание IPSec соединения между Windows 2000, OpenBSD и FreeBSD


Оригинал: ipsec-conn.narod.ru

 

Автор Озоль Андрей. 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 клиент для Win 98/ NT 4 и опять же это не 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 и установлена на достаточно древний компьютер 200 MMX c 132 M б памяти и 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/256 RAM /100Мб сетевая карта , версия Prof с SP 2 .

Настройка IPSec штатными средствами Win 2000 исчерпывающе описана на сайте самого 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 части .

 

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

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