Заблокировать все входящий трафик на гостевую виртуальную машину VBox, за исключением УСТАНОВЛЕННОЙ и СВЯЗАННОЙ

У меня есть хост-машина, на которой работает Virtualbox, и одна гостевая виртуальная машина. Допустим, у хоста есть интерфейс br0 с IP 1.2.3.4 и гостевой иметь eth0 с IP 1.2.3.5 .

Гость использует 1.2.3.5 в качестве общедоступного IP (мостовой интерфейс, через br0 на хосте). Я хочу, чтобы у него был доступ Интернет, но хотите полностью заблокировать все попытки доступа к нему извне. Он ничего не обслуживает, он может быть полностью заблокирован вне Интернета, если не тот факт, что ему нужно время от времени загружать что-то или два .. .

Как сделать это на хосте, не влияя на хост? Не на гостевой, а на хосте . Я хочу, чтобы хост был доступен из внешнего мира, из Интернета. Но гость должен только получать пакеты, связанные с подключениями, установленными гостем. Никаких попыток входа в систему по ssh, ничего не инициировано извне (я знаю, я могу использовать другие инструменты для защиты гостя, например sshd_config на гостевой системе, и я использую их, но я хочу также использовать iptables).

Я попытался сначала заблокировать все, что связано с гостем, а затем проделал свой путь до исключения СВЯЗАННЫХ и УСТАНОВЛЕННЫХ , но даже если я добавлю правила DROP с 1.2.3.5 в качестве источника и назначения для всех цепочек на хосте ( INPUT , FORWARD , OUTPUT ), Я все еще могу пинговать 1.2.3.5 из внешнего мира. Что я делаю неправильно? Да, я добавил эти правила в начало цепочек ( -I ). iptables ведут себя по-разному, когда я делаю это на хосте, а трафик предназначен для виртуальной машины / гостя? Или это из-за того, что я использую мост br0?

Так что я даже не могу отбросить все, что приходит с и на 1.2.3.5 (IP-адрес гостевой виртуальной машины), хотя tcpdump на хосте показывает 1.2.3.5 в качестве источника и назначения, когда я запускаю его для перехвата пакетов ICMP, пока я пингую 1.2.3.5 из внешнего мира.

0
задан 9 September 2020 в 16:06
1 ответ

Хотя вы можете управлять трафиком, проходящим через мост, я не уверен, что вы можете отслеживать соединения (СВЯЗАННЫЕ/УСТАНОВЛЕННЫЕ).

Местом для этого будет цепочка FORWARD.

Что дает вам sysctl -a|grep -E "bridge-nf-call-ip.*tables"? Если вы установите, например, net.bridge.bridge-nf-call-iptables на 1 и выполните iptables -P FORWARD DROP, гость должен больше нет интернета. Вы можете взять это оттуда и посмотреть, сможете ли вы больше.

1
ответ дан 9 September 2020 в 14:07

Теги

Похожие вопросы