[about] [index] [prev] [2019-01-19 19:48:17+03:00] [24201fecf0f3fc0be741c2d382ff02fc8470df30]
Topics: [bsd][ipsec][tip]

Аккуратнее с 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-трафик?)

[leave comment]