Создание
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 соединение готово и ждет подключения клиента .
Для экспериментов с 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 – тут .
Список материалов Ссылки