Тестовый стенд: Solaris 11.1/11.2, ipsec transport mode with preshared keys
Настройка IPSec состоит из 2-х частей: настройка IPSec’a и непосредственно настройка обмена ключами (ike).
Имеем самую обычную схему Solaris (10.5.5.219) <—> (10.5.5.220) Solaris
В данной статье подразумевается настройка полностью с нуля.
Solaris 11.1
1) Настройка IPSec’a.
– 10.5.5.219
Приводим содержимое файла /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}
– 10.5.5.220
Приводим содержимое файла /etc/inet/ipsecinit.conf к такому виду:
{laddr 10.5.5.220 raddr 10.5.5.219} ipsec {encr_algs 3des encr_auth_algs md5 sa shared}
После этого перечитываем конфиг через svcadm.
2) Настройка ike
– 10.5.5.219
Приводим содержимое файла /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 f47cb0f432e14480951095f82b735ba80a9467d08f92c88068b6a40e
}
Ключ у нас в зашифрованном виде. Ниже несколько методов, как можно получиться эту строку:
$ od -X -A n /dev/random | head -2 f47cb0f4 32e14480 951095f8 2b735ba8 0a9467d0 8f92c880 68b6a40e 0efe067d $ /bin/echo "papiermache with cashews and\c" | od -tx1 | cut -c 8-55 | \ tr -d '\n' | tr -d ' ' | awk '{print}' 7061706965726d616368652077697468206361736865777320616e64
Теперь перечитываем конфиг ike и запускаем его:
# svcadm refresh svc:/network/ipsec/ike:default
# svcadm enable svc:/network/ipsec/ike:default
Так же можно посмотреть статистику:
# ikeadm get stats Phase 1 SA counts: Current: initiator: 1 responder: 0 Total: initiator: 1 responder: 0 Attempted: initiator: 1 responder: 0 Failed: initiator: 0 responder: 0 initiator fails include 0 time-out(s)
– 10.5.5.220
Приводим содержимое файла /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.220-10.5.5.219"
local_addr 10.5.5.220
remote_addr 10.5.5.219
p1_xform
{ auth_method preshared oakley_group 2 auth_alg md5 encr_alg 3des }
p2_pfs 5
}
Теперь переходим у указанию ключевой фразы – preshared key. Приводим файл /etc/inet/security/ike.preshared к такому виду:
{
localidtype IP
localid 10.5.5.220
remoteidtype IP
remoteid 10.5.5.219
key f47cb0f432e14480951095f82b735ba80a9467d08f92c88068b6a40e
}
Выполняем проверки на правильность конфига и запускаем. После успешного запуска, можно увидеть такое:
# ikeadm get stats Phase 1 SA counts: Current: initiator: 0 responder: 1 Total: initiator: 0 responder: 1 Attempted: initiator: 0 responder: 1 Failed: initiator: 0 responder: 0 initiator fails include 0 time-out(s)
Solaris 11.2
1) Настройка ipsec
Приводим файл /etc/inet/ipsecinit.conf на машине 10.5.5.219 к такому виду:
{laddr 10.5.5.219 raddr 10.5.5.220} ipsec {encr_algs aes encr_auth_algs sha512 sa shared}
Здесь мы использовали sha512 (так как в md5 уже много коллизий) и aes, так как он быстрее и надёжнее, чем 3des. На 10.5.5.220 – соответственно так:
{laddr 10.5.5.220 raddr 10.5.5.219} ipsec {encr_algs aes encr_auth_algs sha512 sa shared}
Все остальные действия по включению и проверке ipsec выполняем так же, как и в 11.1
2) Настройка IKE.
В отличии от 11.1, здесь уже есть возможность использовать ikev2, собственно его и будем использовать:
– 10.5.5.219:
Файл /etc/inet/ike/ikev2.config приводим к виду:
ikesa_lifetime_secs 3600
{ label "10.5.5.219-10.5.5.220"
auth_method preshared
local_addr 10.5.5.219
remote_addr 10.5.5.220
ikesa_xform { dh_group 21 auth_alg sha512 encr_alg aes }
}
В файл /etc/inet/ike/ikev2.preshared вводим preshared-key (в открытом виде):
{
label "10.5.5.219-10.5.5.220"
key "very-very-super-super-key"
}
Проверяем конфигурацию:
# /usr/lib/inet/in.ikev2d -c
Включаем ikev2:
# svcadm enable ipsec/ike:ikev2
– 10.5.5.220 (аналогично):
/etc/inet/ike/ikev2.config:
ikesa_lifetime_secs 3600
{ label "10.5.5.220-10.5.5.219"
auth_method preshared
local_addr 10.5.5.220
remote_addr 10.5.5.219
ikesa_xform { dh_group 21 auth_alg sha512 encr_alg aes }
}
/etc/inet/ike/ikev2.preshared:
{
label "10.5.5.220-10.5.5.219"
key "very-very-super-super-key"
}
Проверяем конфигурацию и включаем:
# /usr/lib/inet/in.ikev2d -c
# svcadm enable ipsec/ike:ikev2
ПС. Есть так же возможность использовать разные ключи на разных концах:
– 10.5.5.219:
#…
{ label "10.5.5.219-10.5.5.220"
local_key "P-LongISH key Th@t m^st Be Ch*angEd \'reguLarLy)"
remote_key "E-CHaNge lEyeGhtB+lBs et KeeS b4 2LoOoOoOoOng"
}
– 10.5.5.220:
#…
{ label "10.5.5.220-10.5.5.219"
local_key "E-CHaNge lEyeGhtB+lBs et KeeS b4 2LoOoOoOoOng"
remote_key "P-LongISH key Th@t m^st Be Ch*angEd \'reguLarLy)"
}
3) Проверка.
Обязательно нужно, что бы параметры шифрования в IPSec и IKE совпадали, иначе связь не установиться.
Пустим пинг на 10.5.5.220 и паралельно будем “слушать” трафик
# snoop -d net0 host 10.5.5.220
Using device net0 (promiscuous mode)
10.5.5.219 -> 10.5.5.220 ESP SPI=0x6a312920 Replay=746
10.5.5.220 -> 10.5.5.219 ESP SPI=0x1434de3e Replay=746
10.5.5.220 -> 10.5.5.219 ESP SPI=0x1434de3e Replay=747
10.5.5.219 -> 10.5.5.220 ESP SPI=0x6a312920 Replay=747
Как видно, трафик у нас шифруется, что видно из используемого протокола ESP. Если нужна детализация, то выполняем:
# snoop -d net0 -v host 10.5.5.220 ... ETHER: ----- Ether Header ----- ETHER: ETHER: Packet 48 arrived at 1:57:17.24808 ETHER: Packet size = 134 bytes ETHER: Destination = 8:0:27:df:f1:f3, PCS Computer Systems GmbH ETHER: Source = 8:0:27:af:8c:71, PCS Computer Systems GmbH ETHER: Ethertype = 0800 (IP) ETHER: IP: ----- IP Header ----- IP: IP: Version = 4 IP: Header length = 20 bytes IP: Type of service = 0x00 IP: xxx. .... = 0 (precedence) IP: ...0 .... = normal delay IP: .... 0... = normal throughput IP: .... .0.. = normal reliability IP: .... ..0. = not ECN capable transport IP: .... ...0 = no ECN congestion experienced IP: Total length = 120 bytes IP: Identification = 50146 IP: Flags = 0x4 IP: .1.. .... = do not fragment IP: ..0. .... = last fragment IP: Fragment offset = 0 bytes IP: Time to live = 255 seconds/hops IP: Protocol = 50 (ESP) IP: Header checksum = 97b0 IP: Source address = 10.5.5.219, 10.5.5.219 IP: Destination address = 10.5.5.220, 10.5.5.220 IP: No options IP: ESP: ----- Encapsulating Security Payload ----- ESP: ESP: SPI = 0x6a312920 ESP: Replay = 103 ESP: ....ENCRYPTED DATA....