У меня есть доступ к VPN с использованием OpenVPN, и я пытаюсь создать безопасную машину, которая не пропускает трафик через интерфейсы, отличные от VPN. Используя межсетевой экран UFW, я пытаюсь добиться следующего:
В настоящее время я использую следующие правила (sudo ufw status):
To Action From
-- ------ ----
192.168.42.11 9999/tcp ALLOW Anywhere # allow web-interface
Anywhere on tun0 ALLOW Anywhere # out only thru tun0
Anywhere ALLOW OUT Anywhere on tun0 # in only thru tun0
Моя проблема в том, что машина изначально не может установить OpenVPN-соединение, поскольку разрешен только tun0, который еще не установлен (проблема с куриным яйцом)
Как мне разрешить создание OpenVPN-соединения и с этого момента заставить каждый отдельный пакет проходить через VPN-туннель?
Разрешить доступ служебному приложению. На данный момент у меня нет доступного окна OpenVPN, но я думаю, вы сможете разрешить доступ с помощью такой команды, как:
ufw allow OpenVPN
Вы можете проверить, можете ли вы использовать открытый VPN таким образом, запустив:
ufw app list
Это покажет те служебные приложения, о которых знает ufw.
В случае отсутствия профиля OpenVPN вы можете попробовать использовать ufw, чтобы разрешить исходящие соединения на этом интерфейсе только на порт 1194 (или любой другой порт, на котором сервер OpenVPN принимает соединения). Что-то вроде:
sudo ufw deny out to any sudo ufw allow out 1194/udp
(при условии стандартной настройки OpenVPN.)
Это не ограничивает его только OpenVPN ... но единственной возможностью утечки будет что-то еще, использующее этот порт и UDP ... и шансы на это довольно низкие.
Чтобы обеспечить более надежную фильтрацию портов, вам придется использовать что-то более существенное, чем ufw. Я полагаю, что AppArmor или SELinux будут вашим следующим шагом, без необходимости переходить на настоящие брандмауэры уровня 7.