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

Обеспечение безопасности гостевой виртуальной машины для предоставления ей доступа в Интернет, но блокирования доступа к локальной сети хоста

У меня есть гостевая виртуальная машина Linux, работающая под управлением Windows. Если я установил сетевой режим на NAT, гость может получить доступ в Интернет (что я хочу), но также может получить доступ к локальной сети хоста (чего я не делаю).

По разным причинам я не могу создать отдельную сеть только для того, чтобы предоставить гостю доступ в Интернет.

Могу ли я использовать брандмауэр Windows или какое-либо программное обеспечение для маршрутизации, чтобы предоставить гостю доступ в Интернет, но заблокировать любой другой доступ?

ИЗМЕНИТЬ - Я получил решение на форумах виртуальных боксов: используйте NAT с брандмауэром Windows, чтобы заблокировать гостя.

Моя ошибка заключалась в попытке настроить правило на хосте, где (программа = все, локальный IP = диапазон гостевых IP-адресов). Правило на самом деле должно быть (local IP = all, program = virtualbox.exe), поскольку NAT уже происходит до того, как он попадет в брандмауэр

Решение - добавьте правило брандмауэра к хосту: блокировать (локальный IP = все, программа = virtualbox.exe, удаленный IP = {диапазон, который вы хотите заблокировать})

Вы говорите Linux, поэтому я предполагаю, что у вас установлен IPtables. Вы можете разрешить входящий / исходящий трафик только через порт 80 (HTTP), порт 443 (HTTPS) и исходящий DNS. Используйте на свой страх и риск, поскольку я не проверял эти правила. Также убедитесь, что вы физическая машина, когда делаете это. Если вы подключаетесь удаленно, вы можете отключиться и не сможете вернуться к аппарату.

#delete all rules
iptables -F

#change default policy to drop everything
iptables -P INPUT DROP
iptables -P FORWARD DROP
iptables -P OUTPUT DROP

#add rules for port 80 and 443 to only allow this traffic
iptables -A OUTPUT -o eth0 -p tcp --dport 443 -m state --state NEW,ESTABLISHED -j ACCEPT
iptables -A INPUT -i eth0 -p tcp --sport 443 -m state --state ESTABLISHED -j ACCEPT
iptables -A OUTPUT -o eth0 -p tcp --dport 80 -m state --state NEW,ESTABLISHED -j ACCEPT
iptables -A INPUT -i eth0 -p tcp --sport 80 -m state --state ESTABLISHED -j ACCEPT

#allow outbound DNS
iptables -A OUTPUT -p udp -o eth0 --dport 53 -j ACCEPT
iptables -A INPUT -p udp -i eth0 --sport 53 -j ACCEPT

#allow loopback
iptables -A INPUT -i lo -j ACCEPT
iptables -A OUTPUT -o lo -j ACCEPT

Список правил:

iptables -L

У меня была связь. Это все еще не сработало, но проверка коробки подключения кабеля (обведена на изображении ниже) устранила мое сетевое соединение. Я не совсем понимаю почему.

Дать совет сложно, потому что вы не указали, какую платформу виртуализации вы используете. Если вы используете Virtualbox, вы можете установить тип сети только для адаптера Host, который разрешит доступ в Интернет и доступ к хосту, на котором вы используете Virtualbox, но не к остальной части сети.

Я столкнулся с той же проблемой (несколько лет спустя). Я нашел очень простое правило iptables:

sudo iptables -I OUTPUT -d 192.168.1.0/24 -j DROP

(Предполагая, что локальная сеть - 192.168.1.x). Он должен быть установлен на гостевой машине.

Но, к сожалению, это также ограничивает все связи. Так что, я думаю, не очень полезно