IPSec: FreeBSD <--> Linux

Тестовый стенд: FreeBSD 9.2, Debian Linux 6 (kernel 3.2), ipsec transport mode with preshared keys

Настройка IPSec состоит из 2-х частей: настройка IPSec’a и непосредственно настройка обмена ключами (ike).

Имеем самую обычную схему FreeBSD (10.5.5.98) <—> (10.5.5.78) Linux

В данной статье подразумевается настройка полностью с нуля.

FreeBSD

Первым делом нужно пересобрать ядро с такими опциями

— обязательные:

options IPSEC #IP security
device crypto

— необязательные:

  • Если желательна поддержка отладки IPsec, должна быть также добавлена следующая строка:

options IPSEC_DEBUG

  • Если хотите использовать IPSec на NAT’ом, тогда потребуется ещё такая опция:

options IPSEC_NAT_T

Ставим racoon версии 1, а точнее ipsec-tools:

# cd /usr/ports/security/ipsec-tools/ && make install clean

После установки приводим файл /etc/ipsec.conf к такому виду (это исполняемый скрипт)

#!/usr/sbin/setkey -f
flush;
spdflush;
spdadd 10.5.5.98 10.5.5.78 any -P out ipsec esp/transport//require;
spdadd 10.5.5.78 10.5.5.98 any -P in ipsec esp/transport//require;

Вписываем парольную фразу в файл /usr/local/etc/racoon/psk.txt:

10.5.5.78 Very-Very-Secret-Key-1234567890

Обязательно ставим права на файл psk.txt 0600 и владельца root. Без этого соединение не установиться, а racoon будет ругаться.

Приводим главный файл /usr/local/etc/racoon/raccon.conf к такому виду:

path include "/usr/local/etc/racoon";
path pre_shared_key "/usr/local/etc/racoon/psk.txt";
log debug;

remote 10.5.5.78 {
        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;
}

Правим /etc/rc.conf:

ipsec_enable="YES"
ipsec_file="/etc/ipsec.conf"
racoon_enable="YES"

Запускаем:

# /etc/rc.d/ipsec start
# /usr/local/etc/rc.d/racoon start

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.98 any -P out ipsec esp/transport//require;
spdadd 10.5.5.98 10.5.5.78 any -P in ipsec esp/transport//require;

Примечание.

Если за шлюзами есть подсети и трафик между подсетями нужно тоже шифровать, тогда дополнительно добавляем такие строки (естественно, что такие строки нужно добавлять с обеих сторон — на второй стороне адреса и подсети меняются перекрёстно):

spdadd 10.102.0.0/24 10.101.0.0/24 any -P out ipsec esp/tunnel/10.5.5.78-10.5.5.98/require;
spdadd 10.101.0.0/24 10.102.0.0/24 any -P in ipsec esp/tunnel/10.5.5.98-10.5.5.78/require;

где подсеть 10.102.0.0/24 находится за роутером 10.5.5.78, а подсеть 10.101.0.0/24 соответственно за  10.5.5.98

Вписываем парольную фразу в файл /etc/racoon/psk.txt:

10.5.5.98 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.98 {
        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.98 
        esp mode=transport spi=97702986(0x05d2d44a) reqid=0(0x00000000)
        E: 3des-cbc  92d5a494 222d9ac5 8791a828 03b81fc3 94ae2cfd b99ab850
        A: hmac-md5  d33b3ded 01693c3b aff84a9e 9e5e6544
        seq=0x00000000 replay=4 flags=0x00000000 state=mature 
        created: Dec 16 12:44:56 2013   current: Dec 16 12:54:45 2013
        diff: 589(s)    hard: 28800(s)  soft: 23040(s)
        last: Dec 16 12:44:57 2013      hard: 0(s)      soft: 0(s)
        current: 37312(bytes)   hard: 0(bytes)  soft: 0(bytes)
        allocated: 583  hard: 0 soft: 0
        sadb_seq=1 pid=2420 refcnt=0
10.5.5.98 10.5.5.78 
        esp mode=transport spi=173444798(0x0a568ebe) reqid=0(0x00000000)
        E: 3des-cbc  5c6a39a6 eb7a71ad 4e80f036 ef309fa0 c10faa5c da21c6e1
        A: hmac-md5  3645a061 6a4ffabc b0dc46ef 55f389de
        seq=0x00000000 replay=4 flags=0x00000000 state=mature 
        created: Dec 16 12:44:56 2013   current: Dec 16 12:54:46 2013
        diff: 590(s)    hard: 28800(s)  soft: 23040(s)
        last: Dec 16 12:44:57 2013      hard: 0(s)      soft: 0(s)
        current: 37312(bytes)   hard: 0(bytes)  soft: 0(bytes)
        allocated: 583  hard: 0 soft: 0
        sadb_seq=0 pid=2420 refcnt=0

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *