From: Sergey Matveev Date: Sat, 19 Jan 2019 16:48:17 +0000 (+0300) Subject: Аккуратнее с IPsec SP в FreeBSD и strongSwan X-Git-Url: http://www.git.stargrave.org/?a=commitdiff_plain;h=24201fecf0f3fc0be741c2d382ff02fc8470df30;p=stargrave-blog.git Аккуратнее с IPsec SP в FreeBSD и strongSwan Прежде я использовать strongSwan с auto=add правилами: при запуске они автоматически добавлялись, но security policy явно не задавались. Точнее было так: на шлюзе, концентраторе-IPsec он сам ничего не предпринимал, а только ждал входящие соединения. Клиенты же сами их инициировали. Это опасно тем, что никто явно нигде не говорит что трафик внутри IPv6-IPsec сети (отдельная выделенная /64 сеть) должна быть зашифрована. Если я везде остановлю strongSwan-ы, то всё будет работать и я даже не замечу что шифрования (+аутентификации) то и нет. Выставление auto=route должно создавать security policy явно говорящие что такой-то трафик обязан быть обезопасен ESP. Но соединения у меня не срабатывали почему-то. Сегодня разобрался почему. Использовать туннельный режим IPsec в FreeBSD проблематично. Я до конца всё так и не понял, но самое нормальное это делать явные туннели: например gif-интерфейсы и их обезопашивать в транспортном режиме. Если я скажу что между fcXX и fcYY адресами должен быть транспортный ESP, то всё по идее должно работать, но нет. Как оказалось, потому-что правило требующее безопасности IP-пакетов между fc/8 адресами препятствует ICMPv6 NDP сообщениям. Я мог бы руками жёстко прописать MAC-адреса IPv6 fc/8 хостов, чтобы NDP не требовался, но геморройно. В итоге пришёл к тому что описано в wiki strongSwan-а: явно разрешить хождению NDP пакетов. conn ndp-ns right=::1 leftsubnet=fc00::/8[ipv6-icmp/135] rightsubney=fc00::/8[ipv6-icmp/135] type=passthrough auto=route conn ndp-na right=::1 leftsubnet=fc00::/8[ipv6-icmp/136] rightsubney=fc00::/8[ipv6-icmp/136] type=passthrough auto=route Для себя я намотал на ус следующее: * лучше использовать родные туннельные протоколы типа gif, создающие отдельный сетевой интерфейс. Лично мне это легче понимать и управлять * про туннельный режим проще забыть, так как туннель всё-равно будет внутри gif-а. Только транспортный. Им же можно и чисто host-to-host безопасность обеспечить * всегда делать auto=route, так как оно явно прописывает security policy (раз мы пишем туда правило, то значит явно хотим только ESP-трафик?) ---