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