Ключевые слова:ipsec, tunnel, solaris, cisco, (найти похожие документы)
From: Vsevolod Stakhov <cebka[at]jet[dot]msk[dot]su>
Date: Mon, 5 Dec 2005 14:31:37 +0000 (UTC)
Subject: Организация ipsec туннеля между solaris 9 и Cisco PIX
Оригинал: http://cebka.pp.ru/my/ipsec.htmlГлава 1. Вступление
В данном mini-howto будут описаны операции, которые позволят создать
шифрованный туннель между Cisco [[ http://www.cisco.com/go/pix Pix]] и Solaris При создании
туннеля использовались протоколы и механизмы: ipsec esp,
isakmp, ike.
Глава 2. Схема стенда
При работе мы можем запустить ping как из внутренней машины в сети
PIX, так и из внутренней машины в сети Solaris. Роутинг на
маршрутизаторах между PIX и Solaris должен быть настроен таким
образом, чтобы внешний адрес PIX был доступен из Solaris и наоборот.
Отмечу также, что на месте Pix может быть маршрутизатор cisco, обычный
маршрутизатор на базе BSD, linux с поддержкой isakmp и туннельного
режима ipsec (тестировалась работа с BSD+racoon). Так что эта
небольшая заметка может быть некоторым дополнением к [13]IPsec and IKE
Administration Guide.
Глава 3. Настройка PIX
Во-первых, отмечу замечательное руководство, которое определило многие
пункты при настройке Cisco PIX: [14]Configuring a Simple PIX-to-PIX
VPN Tunnel Using IPSec.
Настраиваем общие параметры машины:
ip address outside 192.168.242.2 255.255.255.0
ip address inside 192.168.241.1
route outside 0.0.0.0 0.0.0.0 192.168.242.1
sysopt connection permit-ipsec
Настраиваем ipsec:
!--- ACL, необходим для инициации ipsec
access-list 101 permit ip 192.168.241.0 255.255.255.0 192.168.240.0 255.255.255.0
!--- Как показала практика без следующего ACL solaris не воспринимает SA
access-list 101 permit ip host 192.168.242.2 host 192.168.90.18
!--- Параметры ipsec SA
crypto ipsec transform-set chevelle esp-des esp-md5-hmac
!--- Настройка SA ipsec
crypto map transam 1 ipsec-isakmp
crypto map transam 1 match address 101
crypto map transam 1 set peer 192.168.90.18
crypto map transam 1 set transform-set chevelle
crypto map transam interface outside
!--- Отключаем NAT для ipsec пакетов - они ходят через туннель
nat (inside) 0 access-list 101
Настраиваем isakmp, устанавливая preshared ключ `blah':
isakmp enable outside
isakmp policy 1 authentication pre-share
isakmp policy 1 encryption des
isakmp policy 1 hash md5
isakmp policy 1 group 1
isakmp policy 1 lifetime 1000
!--- Несмотря на все, PIX _НЕ_ использует адрес, в качестве ID payload
!--- по непонятной причине оно использует hostname, что совершенно
!--- неприемлимо ни для solaris in.iked, ни для racoon.
!--- Следующая строка лечит это врожденное уродство pix'a
isakmp identity address
На этом настройку PIX можно считать завершенной. Хочу лишь отметить,
что PIX наряду с DES поддерживает 3DES, а наряду с MD5 - SHA1.
Глава 4. Настройка Solaris
Замечание
Все сказанное относится к Solaris 9 и старше
Настройка solaris, в принципе, не так сложна, но не лишена некоторых
тонкостей. Первой является формат preshared ключей: в pix и racoon это
просто строка, в solaris - это hex представление данной строки. Для
того, чтобы преобразоватьс строку в preshared key solaris необходимо
выполнить команду:
echo "key" | od -x
При этом важно учесть порядок байт. На sparc можно просто писать
получившийся результат в preshared key, но на x86 необходимо в каждом
слове поменять порядок байт, допустим:
% echo "blah" | od -x
0000000 6c62 6861 000a
нужно представить в виде "626c6168". Более простого способа мне, увы,
неизвестно. Второй тонкостью является фиктивный ip туннель, но о нем
позже (за эту идею отдельное спасибо Максиму и Славе Ольховченко), но
об этом чуть позже.
Итак, перейдем к настройке ipsec в solaris. Во-первых, стоит
убедиться, что роутинг между solaris и pix настроен верно. После чего
необходимо создать файл конфигурации ipsec. По умолчанию он находится
в /etc/inet/ipsecinit.conf и при этом автоматически загружается при
старте. Я категорически не советую трогать этот файл - его кривая
настройка может повлечь недоступность машины даже после перезагрузки.
А посему стоит создать файлик с настройками ipsec где-то в другом
месте. Я предпочитаю /etc/inet/ipsec.conf. Для нашей схемы этот файлик
должен содержать следующее:
# Аналогично PIX правило, описывающее шифрацию трафика внутри туннеля
{saddr 192.168.90.18 daddr 192.168.242.2} ipsec {encr_algs des encr_auth_algs md5}
# Для инициациации шифрования пакетов, приходящих из внутренней сети
{saddr 192.168.240.0/24 daddr 192.168.241.0/24} ipsec {encr_algs des encr_auth_algs md5}
Добавляем туннель:
# ifconfig ip.tun0 plumb
# ifconfig ip.tun0 10.0.0.1 10.0.0.2 \
tsrc 192.168.90.18 tdst 192.168.242.2 encr_algs DES encr_auth_algs MD5
# ifconfig ip.tun0 up
Отмечу, что адреса 10.0.0.1 и 10.0.0.2 являются чисто fake, как и сам
туннель, однако без него solaris работает в транспортном режиме ipsec,
а PIX продолжает работать в туннельном, что приводит к полной
неразберихе. Не стоит забывать и о включении ip forwarding'а:
# ndd -set /dev/ip hme1:ip_forwarding 1
# ndd -set /dev/ip ip.tun0:ip_forwarding 1
А также о настройке роутинга внутренней сети через туннель:
# route add 192.168.241.0 10.0.0.2
После чего можно перейти к настройке isakmp. Этот этап не отличается
особой сложностью, потому особо комментировать его не буду. Для
настройки preshared keys isakmp нас будут интересовать файлы
/etc/inet/ike/config и /etc/inet/secret/ike.preshared. Первый из них
содержит конфигурацию iked, а второй - собственно preshared ключи.
### ike/config file on v60, 192.168.90.18
#
## Параметры по умолчанию для фазы 1 isakmp
p1_lifetime_secs 1000
p1_nonce_len 40
#
## Параметры по умолчанию
p1_xform
{ auth_method preshared oakley_group 5 auth_alg sha encr_alg des }
p2_pfs 2
#
## Правило для работы с PIX, label должен быть уникальным
{ label "v60-pix"
local_addr 192.168.90.18
remote_addr 192.168.242.2
p1_xform
{ auth_method preshared oakley_group 1 auth_alg md5 encr_alg des }
p2_pfs 2
}
Файл /etc/inet/secret/ike.preshared должен содержать, в свою очередь
следующее:
# ike.preshared on v60, 192.168.90.18
#
{ localidtype IP
localid 192.168.90.18
remoteidtype IP
remoteid 192.168.242.2
# partym and enigma's shared key in hex ('blah')
key 626c6168
}
Глава 5. Запуск стенда
На pix записываем конфигурацию:
write mem
На solaris устанавливаем правила ipsec и запускаем iked:
# ipsecconf -f
# ipsecconf -a /etc/inet/ipsec.conf
# /usr/lib/inet/in.iked -d
После чего запускаем ping из одной внутренней машинки другой. Далее
наблюдаем при помощи snoop картинку на внешнем интерфейсе solaris.
После пробегания udp пакетов isakmp должны бегать esp пакеты. Если все
было сделано без ошибок, то проблем возникнуть не должно.
Не получается настроить ipsec_check_global_policy: Policy Failure for the incoming packet (not secure)
если у кого получится настроить все же напишите niarbrnd@ya.ru или просто если будете пробовать напишите на чем затык