Fail-closed: запрет передачи в обход ГОСТ IPsec¶
Fail-closed означает, что при отсутствии туннеля защищённый IP не должен уходить через физическую сеть. На испытанной НАЙС.ОС это обеспечивается адресными правилами iptables, а не магически самим фактом установки strongSwan.
1. Адресная защита¶
На каждой стороне сначала установите адресные правила по пошаговой инструкции firewall, а затем убедитесь, что запрещён обход ipsec0:
# Узел А:
iptables -S OUTPUT | grep -- '-d 10.200.2.1/32' | grep REJECT
# Узел Б:
iptables -S OUTPUT | grep -- '-d 10.200.1.1/32' | grep REJECT
Для реальной защищаемой подсети замените лабораторный /32 на собственный префикс и отдельно защитите FORWARD/IPv6. Одного запрета для localhost-to-remote недостаточно для шлюза, пропускающего клиентский трафик.
2. Проверка защиты¶
На узле А (в окно обслуживания):
swanctl --terminate --ike gost-x509
swanctl --list-sas
ip route get 10.200.2.1
ping -c 5 10.200.2.1
iptables -S OUTPUT | grep 10.200.2.1
В проверенном испытании маршрут при отсутствии SA переходил на eth0, но iptables блокировал пакеты (ping: ... Operation not permitted). Такой отказ — ожидаемый PASS, если соответствующее правило установлено и не было обходных путей. Для строгой приёмки дополнительно подтвердите отсутствие чистого трафика на физическом интерфейсе tcpdump.
3. Восстановление¶
Для PSK используйте профиль gost. После восстановления ip route get должен показывать ipsec0 и правильный src.
4. Ограничения¶
Адресное правило OUTPUT защищает локально создаваемые пакеты к одному адресу, но не заменяет общую политику на шлюзе; транзитный FORWARD, контейнеры, IPv6, другие route tables и namespace требуют отдельного аудита. Проверка здесь не подтверждает все возможные пути утечки.