Тестовый стенд: Solaris 11.1, Debian Linux 6 (kernel 3.2), ipsec transport mode with preshared keys
Настройка IPSec состоит из 2-х частей: настройка IPSec’a и непосредственно настройка обмена ключами (ike).
Имеем самую обычную схему Solaris (10.5.5.219) <—> (10.5.5.78) Linux
В данной статье подразумевается настройка полностью с нуля.
Solaris
1) Настройка IPSec’a.
Приводим содержимое файла /etc/inet/ipsecinit.conf к такому виду:
{laddr 10.5.5.219 raddr 10.5.5.220} ipsec {encr_algs 3des encr_auth_algs md5 sa shared}
Здесь мы указываем для каких хостов будет действовать правило, а так же указываем соответственно какие алгоритмы шифрования использовать при собственно шифровании и аутентификации.
После этого проверяем конфиг на ошибки:
# ipsecconf -f -c /etc/inet/ipsecinit.conf
IPsec configuration does not contain any errors.
IPsec policy was not modified.
и только после этого (если есть ошибки — исправляем) перечитываем конфиг черезsvcadm (и если не запущен — запустим его):
# svcadm refresh svc:/network/ipsec/policy:default
# svcadm enable svc:/network/ipsec/policy:default
Налету политики можно добавить так:
# ipsecconf -a /etc/inet/ipsecinit.conf
Текущие политики можно посмотреть так:
# ipsecconf
#INDEX 154
{laddr 10.5.5.219 raddr 10.5.5.220} ipsec {encr_algs 3des encr_auth_algs md5 sa shared}
2) Настройка ike
Приводим содержимое файла /etc/inet/ike/config к такому виду:
p1_lifetime_secs 14400
p1_nonce_len 40
p1_xform
{ auth_method preshared oakley_group 5 auth_alg sha encr_alg des }
p2_pfs 5
{ label "10.5.5.219-10.5.5.220"
local_addr 10.5.5.219
remote_addr 10.5.5.220
p1_xform
{ auth_method preshared oakley_group 2 auth_alg md5 encr_alg 3des }
p2_pfs 5
}
Проверяем синтаксис:
# /usr/lib/inet/in.iked -c -f /etc/inet/ike/config
in.iked: Configuration file /etc/inet/ike/config syntactically checks out.
Теперь переходим у указанию ключевой фразы — preshared key. Приводим файл/etc/inet/security/ike.preshared к такому виду:
{
localidtype IP
localid 10.5.5.219
remoteidtype IP
remoteid 10.5.5.220
key "Very-Very-Secret-Key-1234567890"
}
Ключ у нас в НЕ зашифрованном виде.
Теперь перечитываем конфиг ike и запускаем его:
# svcadm refresh svc:/network/ipsec/ike:default
# svcadm enable svc:/network/ipsec/ike:default
Linux
Ставим racoon:
# apt-get install racoon
После установки будет задан вопрос о том, что использовать: direct или ipsec-tools:
Configuration mode for racoon IKE daemon.
Выбираем direct
После это можно переопределить, выполнив команду:
# dpkg-reconfigure racoon
После установки приводим файл /etc/ipsec-tools.conf к такому виду (это исполняемый скрипт)
#!/usr/sbin/setkey -f
flush;
spdflush;
spdadd 10.5.5.78 10.5.5.219 any -P out ipsec esp/transport//require;
spdadd 10.5.5.219 10.5.5.78 any -P in ipsec esp/transport//require;
Вписываем парольную фразу в файл /etc/racoon/pks.txt:
10.5.5.219 Very-Very-Secret-Key-1234567890
Обязательно ставим права на файл psk.txt 0600 и владельца root. Без этого соединение не установиться, а racoon будет ругаться.
Приводим главный файл /etc/raccon.conf к такому виду:
path include "/etc/racoon"; path pre_shared_key "/etc/racoon/psk.txt"; log debug; remote 10.5.5.219 { exchange_mode main; proposal { encryption_algorithm 3des; hash_algorithm md5; authentication_method pre_shared_key; dh_group 2; lifetime time 8 hour; } } sainfo anonymous{ pfs_group 5; lifetime time 8 hour; encryption_algorithm 3des; authentication_algorithm hmac_md5; compression_algorithm deflate; }
Почему-то у меня не стартовал racoon через стартовые скрипты, поэтому пришлось добавлять в /etc/rc.local такие строки.
/etc/init.d/setkey start
/etc/init.d/racoon start
После успешного поднятия IPSec’a посмотрим статистику обмена:
# setkey -D 10.5.5.78 10.5.5.219 esp mode=transport spi=2870989852(0xab1fd41c) reqid=0(0x00000000) E: 3des-cbc 1d51101d 703954e3 855f6877 8bb5f44d 6d163841 fdc9c119 A: hmac-md5 dc2d1faf 4f190125 c641e65c c6a25a4c seq=0x00000000 replay=4 flags=0x00000000 state=mature created: Dec 16 07:05:38 2013 current: Dec 16 07:08:04 2013 diff: 146(s) hard: 28800(s) soft: 23040(s) last: Dec 16 07:05:39 2013 hard: 0(s) soft: 0(s) current: 9280(bytes) hard: 0(bytes) soft: 0(bytes) allocated: 145 hard: 0 soft: 0 sadb_seq=1 pid=2131 refcnt=0 10.5.5.219 10.5.5.78 esp mode=transport spi=21730685(0x014b957d) reqid=0(0x00000000) E: 3des-cbc aa59d451 4e11c9f1 e68952aa 6082fd81 ce0701ab a4b56784 A: hmac-md5 58e2404d 3fdfbda7 f87b52ae b37a48f0 seq=0x00000000 replay=4 flags=0x00000000 state=mature created: Dec 16 07:05:38 2013 current: Dec 16 07:08:04 2013 diff: 146(s) hard: 28800(s) soft: 23040(s) last: Dec 16 07:05:39 2013 hard: 0(s) soft: 0(s) current: 9280(bytes) hard: 0(bytes) soft: 0(bytes) allocated: 145 hard: 0 soft: 0 sadb_seq=0 pid=2131 refcnt=0
И традиционно проверить через snoop, что всё шифруется:
snoop -d net0 host 10.5.5.78 10.5.5.219 -> 10.5.5.78 ESP SPI=0x14b957d Replay=157 10.5.5.78 -> 10.5.5.219 ESP SPI=0xab1fd41c Replay=156 10.5.5.219 -> 10.5.5.78 ESP SPI=0x14b957d Replay=158 10.5.5.78 -> 10.5.5.219 ESP SPI=0xab1fd41c Replay=157