Чи можна контролювати доступ до мережі VirtualBox до мережі через NAT в Linux?


0

Я використовую VirtualBox як постачальник VM для Vagrant, де як адміністратор я встановив як пакети в системі CentOS 7.2. Я широко довіряю безпеці хост-операційної системи, але мета цих віртуальних машин - дати людям можливість викорінювати і експериментувати з Linux у досить безпечному середовищі.

Я вклав у чорний список vboxnetfltмодуль ядра, і тепер ви не можете запустити VM з мостовою мережею, що залишає користувачеві можливість вибору мереж, які не підключаються за межами хоста, або NAT. При використанні NAT в VM немає інтерфейсу в хост-системі, яку я можу брандмауер, і я хотів би надати лише білий список систем, з якими можуть спілкуватися гості.

(Очевидно, що немає вхідного доступу з-за меж хоста, але я турбуюся про вихідні з'єднання.)

Який найкращий спосіб обмежити те, про що можуть говорити ці гості, враховуючи, що я не можу забезпечити контроль над вмістом гостя?


Але ви зацікавлені в тому, щоб дозволити спілкування з багатьма багатьма хостами чи просто невеликою кількістю?
MariusMatutiae

Відносно невеликі - сервери репо в основному для оновлень через yum.
Іейн Халлам

Відповіді:


0

Чи можна контролювати доступ до мережі VirtualBox до мережі через NAT в Linux?

Ні, ви не можете: аналіз пакетів через tcpdump чітко показує, що вихідні пакети не містять слідів їх походження (від хоста / від гостя), тому немає простого способу відрізнити два.

Що ви можете зробити, - це використовувати адаптер, призначений лише для хоста, а не NAT, включити DHCP-сервер, а потім додати наступний рядок до /etc/rc.local-файлу кожного VM (я розповім, як це зробити в сек):

ip route add default via 192.168.56.1

і видавати наступні команди на хості:

 echo 1 > /proc/sys/net/ipv4/ip_forward
 iptables -t nat -A POSTROUTING -o YourMainInterface -j MASQUERADE

де YourMainInterface = eth0, wlan0, ... , що завгодно.

Щоб створити однакові BM, просто налаштуйте його на свій смак, збережіть його як файл OVA за допомогою File -> Export Appliance , після чого повторно імпортуйте його, змінивши MAC-адреси всіх інтерфейсів (одна проста автоматична опція під час імпорту Appliance ).

Тепер хост має інтерфейс, званий за замовчуванням vbonet0 , за допомогою якого ви можете активувати брандмауер:

iptables -A OUTPUT -o vboxnet0 -p udp --dport 53 -j ACCEPT 
iptables -A OUTPUT -o vboxnet0 -d AllowedIpAddress -j ACCEPT 
iptables -P OUTPUT -o vboxnet0 DROP

Складність полягає в тому, що я не контролюю вміст VM. Я хочу запобігти недбайливим (або, можливо, зловмисним) користувачам, які мають root на VM, можливість спамувати нашу мережу. Якщо можливо обмежити VM, які вони створили, щоб вони знаходилися в режимі лише для хостів (або, можливо, просто відключити NAT), то це може бути здійснено. Я вже видалив модуль ядра vboxnetflt, щоб зупинити їх за допомогою мостів.
Іейн Халлам
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.