Назад | Перейти на главную страницу

Как реализовать killswitch strongSwan в Linux?

Я использую PF в качестве выключателя на macOS (см. этот).

Использование PF возможно, потому что соединение ipsec имеет собственный интерфейс (ipsec0).

Как я могу реализовать что-то подобное в Linux, если соединение ipsec находится на том же интерфейсе, что и Ethernet?

Похоже, вы ищете что-то вроде nftables или iptables или любой брандмауэр, расположенный поверх них, например firewalld или ufw.

Использование Netfilter's политика модуль вы можете легко создавать правила брандмауэра, которые применяются к туннельному или нетуннелированному трафику. Например, чтобы отклонить весь исходящий трафик, который не соответствует никаким политикам IPsec (т.е. не туннелируется), вы можете использовать такое правило:

iptables -A OUTPUT -m policy --pol none --dir out -j REJECT --reject-with icmp-admin-prohibited

В качестве альтернативы вы можете заблокировать весь исходящий трафик по умолчанию (например, установить политику для OUTPUT цепь к DROP), а затем используйте следующее, чтобы явно разрешить туннельный трафик:

iptables -A OUTPUT -m policy --pol ipsec --dir out -j ACCEPT

При необходимости эти правила могут быть конкретизированы (например, ограничены определенными интерфейсами или IP-адресами).

В обоих случаях вам потребуются дополнительные правила, разрешающие трафик IKE (UDP 500/4500) и ESP (протокол 50 или те же порты, что и IKE, если используется инкапсуляция UDP), плюс DNS (если IP-адрес VPN-сервера не задан жестко. ) и, возможно, DHCP.