Перейти к содержанию

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. Восстановление

swanctl --initiate --child gost-x509
swanctl --list-sas
ping -c 10 10.200.2.1

Для PSK используйте профиль gost. После восстановления ip route get должен показывать ipsec0 и правильный src.

4. Ограничения

Адресное правило OUTPUT защищает локально создаваемые пакеты к одному адресу, но не заменяет общую политику на шлюзе; транзитный FORWARD, контейнеры, IPv6, другие route tables и namespace требуют отдельного аудита. Проверка здесь не подтверждает все возможные пути утечки.