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