Категорії
Solaris

IPSec: Solaris <--> Solaris

Тестовый стенд: 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....

Залишити відповідь

Ваша e-mail адреса не оприлюднюватиметься. Обов’язкові поля позначені *

Домашняя страничка Andy
Записки молодого админа
Самостоятельная подготовка к Cisco CCNA
Самостоятельная подготовка к Cisco CCNP
Powered by Muff