LINUX.ORG.RU

Объясните чайнику на пальцах... как VirtualBox обходит все запреты Gufw Firewall

 , ,


0

2

Вот тут ставлю запретить все входящие и исходящие (на основной, хостовой системе).

http://gufw.org/img/slide/slide1.jpg

Но на гостевую машину, работающую в режиме сетевого моста это никак не влияет. Почему?

По скриншоту гадать бесполезно, но вообще VBox может самостоятельно управлять файрволлом, и ему побоку твои правила. Это не приложение какое-то, а гипервизор с полным фаршем.

anonymous
()
Ответ на: комментарий от anonymous

А в чем тогда смысл файрвола, если его можно так запросто отключить? Нет, вот реально, я просто хочу понять... Если речь о том, что когда я поставил VirtualBox, то согласился, что он будет иметь права root-а, то где гарантия, что любой другой пакет также не пропишет для себя права такое сверх привилегии?

debian-xfce
() автор топика
Ответ на: комментарий от debian-xfce

Нет никаких гарантий. Думай, чем пользуешься и кому что разрешаешь. Например, если поставишь Docker и выключишь в нём управление iptables, то половина функциональности не будет работать без ручного добавления нужных правил. Если ты параноишь из-за такой фигни, то нужен внешний файрволл. Но вообще лучше разобраться, что и как работает, а не гоняться за тем, что тебе кажется безопасностью.

anonymous
()
Ответ на: комментарий от Vsevolod-linuxoid

Модули ядра для этого не нужны, достаточно запускаться под рутом. Много чего так запускается.

anonymous
()
Ответ на: комментарий от Vsevolod-linuxoid

Вопрос, как убедиться в том, что у него нет собственных модулей ядра. Есть приложение, «инсталлятор» которого весит почти два гига. При этом исходный код закрыт и поди разберись, что там есть и чего там нет.

debian-xfce
() автор топика
Ответ на: комментарий от anonymous

Да нужно. Согласен. Но тут даже не знаешь с чего начать.

debian-xfce
() автор топика

Файрвол в линуксе встроен в ядро, к нему есть интерфейсы через которые можно назначать правила из userspace. У тебя графическая утилита которая какие-то правила создала и отправила в ядро. А vbox это системное приложение которое тоже свои правила отправила ядру. Для ядра никакой разницы между ними нет, ему просто из двух мест поступили правила.

anonymous
()
Ответ на: комментарий от anonymous
vsevolod@hp15linux:~$ ps aux | grep -i vbox
root         950  0.0  0.0      0     0 ?        I<   12:18   0:00 [iprt-VBoxWQueue]
root         951  0.0  0.0      0     0 ?        S    12:18   0:00 [iprt-VBoxTscThr]
vsevolod    9936  0.5  0.0  84844 15668 ?        S    20:52   0:00 /usr/lib/virtualbox/VBoxXPCOMIPCD
vsevolod    9942  1.4  0.1 905788 28840 ?        Sl   20:52   0:00 /usr/lib/virtualbox/VBoxSVC --auto-shutdown
vsevolod   10046  0.0  0.0  19412   728 pts/0    S+   20:53   0:00 grep --color=auto -i vbox
vsevolod@hp15linux:~$ ps aux | grep -i virtualbox
vsevolod    9917  6.2  1.3 1838748 222840 ?      Sl   20:52   0:02 /usr/lib/virtualbox/VirtualBox
vsevolod    9936  0.5  0.0  84844 15668 ?        S    20:52   0:00 /usr/lib/virtualbox/VBoxXPCOMIPCD
vsevolod    9942  1.3  0.1 905788 28840 ?        Sl   20:52   0:00 /usr/lib/virtualbox/VBoxSVC --auto-shutdown
vsevolod    9983 20.0  2.5 3078084 418892 ?      Sl   20:53   0:02 /usr/lib/virtualbox/VirtualBoxVM --comment Linux --startvm c500568a-8e75-4785-8527-055884c347f4 --no-startvm-errormsgbox
vsevolod   10048  0.0  0.0  19412   728 pts/0    S+   20:53   0:00 grep --color=auto -i virtualbox

 — я думаю, дело все же в модулях — как видно, с root только они.

Vsevolod-linuxoid ★★★★★
()
Ответ на: комментарий от Vsevolod-linuxoid

sudo ./install.run

Это установка с правами root?
По крайней мере, после этого запрашивался лишь пароль пользователя. Не рута.

debian-xfce
() автор топика
Ответ на: комментарий от debian-xfce

sudo повышает привилегии пользователя до root. Опция не обязательная, пользователь должен состоять в группе wheel или sudo, чтобы уметь так. Но во многих дистрибутивах это по умолчанию.

Так что да, с правами root.

Vsevolod-linuxoid ★★★★★
()
Ответ на: комментарий от debian-xfce

Нет, vbox модулем ядра добавляет свою виртуальную сетевую карту (NIC), бридж скорее всего соединяем этот виртуальный NIC с физическим NIC. Как ходит между ними трафик определяет ядро линукса, этим можно управляеть встроенным в ядро файрволом называемым netfilter.

GUFW это графическая надстройка над UFW, а UFW это удобный CLI над iptables, в свою очередь iptables это userspace CLI для управления netfilter, а netfilter это уже файрвол встроенный в ядро.

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

sudo iptables -nvL --line-numbers
sudo iptables -nvL --line-numbers -t nat

Ты увидишь цепочки правил, циферки в колонках pkts и bytes укажут по какой цепочки идет трафик. Просто вызываешь несколько раз вышеназванные команды и смотришь где цифры инкрементятся.

После того когда ты разберешься как и что происходит с трафиком, куда он «течет» и как обходит правила GUFW, ты сможешь понять может ли gufw сделать то что ты хочешь или нет, если нет то придется разобраться с iptables для внесения своих кастомных правил через эту утилиту.

anonymous
()

Вот тут ставлю запретить все входящие и исходящие (на основной, хостовой системе).

Приведи вывод команды ‘iptables -L -v -n’.

wrangler2020
()
Ответ на: комментарий от anonymous
s%/цепочки/цепочке/g
s%/предаться/придется/g
anonymous
()
Ответ на: комментарий от wrangler2020

Кстати да, у ТС еще наверное включен форвардинг

cat /proc/sys/net/ipv4/ip_forward

Если вернет 1 то host играет роль шлюза между всеми подсетями на которые можно увидеть выполнив ip r или route.

Выруби его и никто из vbox или docker не выберется из своих подсететей:

sysctl -w net.ipv4.ip_forward=0

или (под рутом):

echo 0 > /proc/sys/net/ipv4/ip_forward
anonymous
()
Ответ на: комментарий от wrangler2020





$ iptables -L -v -n
iptables v1.6.0: can't initialize iptables table `filter': Permission denied (you must be root)
Perhaps iptables or your kernel needs to be upgraded.

---------------

От рута:

Chain INPUT (policy DROP 0 packets, 0 bytes)
pkts bytes target prot opt in out source destination
4165 320K ufw-before-logging-input all  — * * 0.0.0.0/0 0.0.0.0/0
4165 320K ufw-before-input all  — * * 0.0.0.0/0 0.0.0.0/0
4 1312 ufw-after-input all  — * * 0.0.0.0/0 0.0.0.0/0
0 0 ufw-after-logging-input all  — * * 0.0.0.0/0 0.0.0.0/0
0 0 ufw-reject-input all  — * * 0.0.0.0/0 0.0.0.0/0
0 0 ufw-track-input all  — * * 0.0.0.0/0 0.0.0.0/0

Chain FORWARD (policy DROP 0 packets, 0 bytes)
pkts bytes target prot opt in out source destination
0 0 ufw-before-logging-forward all  — * * 0.0.0.0/0 0.0.0.0/0
0 0 ufw-before-forward all  — * * 0.0.0.0/0 0.0.0.0/0
0 0 ufw-after-forward all  — * * 0.0.0.0/0 0.0.0.0/0
0 0 ufw-after-logging-forward all  — * * 0.0.0.0/0 0.0.0.0/0
0 0 ufw-reject-forward all  — * * 0.0.0.0/0 0.0.0.0/0
0 0 ufw-track-forward all  — * * 0.0.0.0/0 0.0.0.0/0

Chain OUTPUT (policy DROP 0 packets, 0 bytes)
pkts bytes target prot opt in out source destination
4161 318K ufw-before-logging-output all  — * * 0.0.0.0/0 0.0.0.0/0
4161 318K ufw-before-output all  — * * 0.0.0.0/0 0.0.0.0/0
0 0 ufw-after-output all  — * * 0.0.0.0/0 0.0.0.0/0
0 0 ufw-after-logging-output all  — * * 0.0.0.0/0 0.0.0.0/0
0 0 ufw-reject-output all  — * * 0.0.0.0/0 0.0.0.0/0
0 0 ufw-track-output all  — * * 0.0.0.0/0 0.0.0.0/0

Chain ufw-after-forward (1 references)
pkts bytes target prot opt in out source destination

Chain ufw-after-input (1 references)
pkts bytes target prot opt in out source destination
0 0 ufw-skip-to-policy-input udp  — * * 0.0.0.0/0 0.0.0.0/0 udp dpt:137
0 0 ufw-skip-to-policy-input udp  — * * 0.0.0.0/0 0.0.0.0/0 udp dpt:138
0 0 ufw-skip-to-policy-input tcp  — * * 0.0.0.0/0 0.0.0.0/0 tcp dpt:139
0 0 ufw-skip-to-policy-input tcp  — * * 0.0.0.0/0 0.0.0.0/0 tcp dpt:445
4 1312 ufw-skip-to-policy-input udp  — * * 0.0.0.0/0 0.0.0.0/0 udp dpt:67
0 0 ufw-skip-to-policy-input udp  — * * 0.0.0.0/0 0.0.0.0/0 udp dpt:68
0 0 ufw-skip-to-policy-input all  — * * 0.0.0.0/0 0.0.0.0/0 ADDRTYPE match dst-type BROADCAST

Chain ufw-after-logging-forward (1 references)
pkts bytes target prot opt in out source destination

Chain ufw-after-logging-input (1 references)
pkts bytes target prot opt in out source destination

Chain ufw-after-logging-output (1 references)
pkts bytes target prot opt in out source destination

Chain ufw-after-output (1 references)
pkts bytes target prot opt in out source destination

Chain ufw-before-forward (1 references)
pkts bytes target prot opt in out source destination
0 0 ACCEPT all  — * * 0.0.0.0/0 0.0.0.0/0 ctstate RELATED,ESTABLISHED
0 0 ACCEPT icmp — * * 0.0.0.0/0 0.0.0.0/0 icmptype 3
0 0 ACCEPT icmp — * * 0.0.0.0/0 0.0.0.0/0 icmptype 4
0 0 ACCEPT icmp — * * 0.0.0.0/0 0.0.0.0/0 icmptype 11
0 0 ACCEPT icmp — * * 0.0.0.0/0 0.0.0.0/0 icmptype 12
0 0 ACCEPT icmp — * * 0.0.0.0/0 0.0.0.0/0 icmptype 8
0 0 ufw-user-forward all  — * * 0.0.0.0/0 0.0.0.0/0

Chain ufw-before-input (1 references)
pkts bytes target prot opt in out source destination
4161 318K ACCEPT all  — lo * 0.0.0.0/0 0.0.0.0/0
0 0 ACCEPT all  — * * 0.0.0.0/0 0.0.0.0/0 ctstate RELATED,ESTABLISHED
0 0 ufw-logging-deny all  — * * 0.0.0.0/0 0.0.0.0/0 ctstate INVALID
0 0 DROP all  — * * 0.0.0.0/0 0.0.0.0/0 ctstate INVALID
0 0 ACCEPT icmp — * * 0.0.0.0/0 0.0.0.0/0 icmptype 3
0 0 ACCEPT icmp — * * 0.0.0.0/0 0.0.0.0/0 icmptype 4
0 0 ACCEPT icmp — * * 0.0.0.0/0 0.0.0.0/0 icmptype 11
0 0 ACCEPT icmp — * * 0.0.0.0/0 0.0.0.0/0 icmptype 12
0 0 ACCEPT icmp — * * 0.0.0.0/0 0.0.0.0/0 icmptype 8
0 0 ACCEPT udp  — * * 0.0.0.0/0 0.0.0.0/0 udp spt:67 dpt:68
4 1312 ufw-not-local all  — * * 0.0.0.0/0 0.0.0.0/0
0 0 ACCEPT udp  — * * 0.0.0.0/0 224.0.0.251 udp dpt:5353
0 0 ACCEPT udp  — * * 0.0.0.0/0 239.255.255.250 udp dpt:1900
4 1312 ufw-user-input all  — * * 0.0.0.0/0 0.0.0.0/0



debian-xfce
() автор топика
Ответ на: комментарий от wrangler2020



Chain ufw-before-logging-forward (1 references)
pkts bytes target prot opt in out source destination

Chain ufw-before-logging-input (1 references)
pkts bytes target prot opt in out source destination

Chain ufw-before-logging-output (1 references)
pkts bytes target prot opt in out source destination

Chain ufw-before-output (1 references)
pkts bytes target prot opt in out source destination
4161 318K ACCEPT all  — * lo 0.0.0.0/0 0.0.0.0/0
0 0 ACCEPT all  — * * 0.0.0.0/0 0.0.0.0/0 ctstate RELATED,ESTABLISHED
0 0 ufw-user-output all  — * * 0.0.0.0/0 0.0.0.0/0

Chain ufw-logging-allow (0 references)
pkts bytes target prot opt in out source destination

Chain ufw-logging-deny (2 references)
pkts bytes target prot opt in out source destination

Chain ufw-not-local (1 references)
pkts bytes target prot opt in out source destination
0 0 RETURN all  — * * 0.0.0.0/0 0.0.0.0/0 ADDRTYPE match dst-type LOCAL
0 0 RETURN all  — * * 0.0.0.0/0 0.0.0.0/0 ADDRTYPE match dst-type MULTICAST
4 1312 RETURN all  — * * 0.0.0.0/0 0.0.0.0/0 ADDRTYPE match dst-type BROADCAST
0 0 ufw-logging-deny all  — * * 0.0.0.0/0 0.0.0.0/0 limit: avg 3/min burst 10
0 0 DROP all  — * * 0.0.0.0/0 0.0.0.0/0

Chain ufw-reject-forward (1 references)
pkts bytes target prot opt in out source destination

Chain ufw-reject-input (1 references)
pkts bytes target prot opt in out source destination

Chain ufw-reject-output (1 references)
pkts bytes target prot opt in out source destination

Chain ufw-skip-to-policy-forward (0 references)
pkts bytes target prot opt in out source destination
0 0 DROP all  — * * 0.0.0.0/0 0.0.0.0/0

Chain ufw-skip-to-policy-input (7 references)
pkts bytes target prot opt in out source destination
4 1312 DROP all  — * * 0.0.0.0/0 0.0.0.0/0

Chain ufw-skip-to-policy-output (0 references)
pkts bytes target prot opt in out source destination
0 0 DROP all  — * * 0.0.0.0/0 0.0.0.0/0

Chain ufw-track-forward (1 references)
pkts bytes target prot opt in out source destination

Chain ufw-track-input (1 references)
pkts bytes target prot opt in out source destination

Chain ufw-track-output (1 references)
pkts bytes target prot opt in out source destination

Chain ufw-user-forward (1 references)
pkts bytes target prot opt in out source destination

Chain ufw-user-input (1 references)
pkts bytes target prot opt in out source destination

Chain ufw-user-limit (0 references)
pkts bytes target prot opt in out source destination
0 0 REJECT all  — * * 0.0.0.0/0 0.0.0.0/0 reject-with icmp-port-unreachable

Chain ufw-user-limit-accept (0 references)
pkts bytes target prot opt in out source destination
0 0 ACCEPT all  — * * 0.0.0.0/0 0.0.0.0/0

Chain ufw-user-logging-forward (0 references)
pkts bytes target prot opt in out source destination
0 0 RETURN all  — * * 0.0.0.0/0 0.0.0.0/0

Chain ufw-user-logging-input (0 references)
pkts bytes target prot opt in out source destination
0 0 RETURN all  — * * 0.0.0.0/0 0.0.0.0/0

Chain ufw-user-logging-output (0 references)
pkts bytes target prot opt in out source destination
0 0 RETURN all  — * * 0.0.0.0/0 0.0.0.0/0

Chain ufw-user-output (1 references)
pkts bytes target prot opt in out source destination

debian-xfce
() автор топика
Ответ на: комментарий от anonymous

cat /proc/sys/net/ipv4/ip_forward

вернуло ноль, причем даже из под рута

debian-xfce
() автор топика
Ответ на: комментарий от debian-xfce

Ты чего хочешь? Чтобы в виртуалке сети не было? Удали в её настройках виртуальную сетевую карту или переведи её подключение в никуда.

Vsevolod-linuxoid ★★★★★
()
Ответ на: комментарий от Vsevolod-linuxoid

хочу, чтобы сеть была только в виртуалке, оно вроде по факту так и есть, но хотелось бы, чтобы это было вот прям железобетонно! ))

debian-xfce
() автор топика
Ответ на: комментарий от wrangler2020

Это же значит что исходящий трафик разрешён.

нет, я запретил и входящий и исходящий, просто привел скриншот интерфейса

debian-xfce
() автор топика
Ответ на: комментарий от debian-xfce

Как уже писали — нужно файрволл настроить, и не базовый, как ты пробовал, а iptables или nftables — в новых дистрибутивах iptables уже нет, просто команды транслируются.

Как по мне, так это проще всего реализовать на связке virsh + firewalld, которые тоже попросту обвязки над qemu-kvm и nftables. И да — это все не имеет продвинутого GUI и нужно читать уйму документации — я и сам сходу, без подготовки такое не сделаю.

Vsevolod-linuxoid ★★★★★
()
Ответ на: комментарий от Vsevolod-linuxoid

Спасибо! Сейчас, конечно, это темный лес, но на будущее сохраню.

А песочница тут не поможет? Если да, то есть ли надежная и с GUI?

debian-xfce
() автор топика
Ответ на: комментарий от Vsevolod-linuxoid

— я думаю, дело все же в модулях — как видно, с root только они.

```$ ps aux | grep -i vbox
root 5481 0.0 0.0 0 0 ? I< 20:00 0:00 [iprt-VBoxWQueue]
root 5508 0.0 0.0 0 0 ? S 20:00 0:00 [iprt-VBoxTscThr]
demo 6349 0.0 0.1 197908 13788 ? S 20:03 0:04 /usr/lib/virtualbox/VBoxXPCOMIPCD
demo 6355 0.1 0.2 948712 26912 ? Sl 20:03 0:14 /usr/lib/virtualbox/VBoxSVC --auto-shutdown
demo 8007 0.0 0.0 48060 988 pts/0 S+ 22:14 0:00 grep -i vbox
```
P.S. не пойму в чем дело, но даже апостофы не срабатывают :(

debian-xfce
() автор топика
Ответ на: комментарий от Vsevolod-linuxoid

Я сомневаюсь, что гипервизор удастся запустить в песочнице.

Нет, не гипервизор, а именно непроверенный софт. Или речь идет о том, что да, песочница может быть решением?

debian-xfce
() автор топика
Ответ на: комментарий от Vsevolod-linuxoid

У тебя не LORCODE, случайно? Я для Markdown писал.

и, кстати, да, разметка не работала из-за того, что выбран был другой параметр в настройках форума (User line break)
debian-xfce
() автор топика
Ответ на: комментарий от debian-xfce

Ты сперва почитай, что это и как с ним работать. Вкратце: приложения запускаются внутри виртуалок для изоляции друг от друга и от основной ОС.

Vsevolod-linuxoid ★★★★★
()

если у тебя виртуалбок в мосте, то это L2, а выключил ты на L3. Соответственно или выключай на L2 или выключай в виртуалке тоже.

slapin ★★★★★
()
Ответ на: комментарий от anonymous

ЗЫ: в нормальных виртуалках, qemu например.

anonymous
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.