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

Как применить правила брандмауэра proxmox к виртуальным машинам?

Это мой текущий сценарий:

У меня в облаке проксмокс сервер. Я установил 2 виртуальные машины с разными IP-адресами (не в той же подсети, что и основной сервер proxmox - см. ЭТОТ чтобы понять почему).

На самой машине proxmox я установил список правил iptables, которые отлично работают.

# Allow localhostinterface
/sbin/iptables -A INPUT -i lo -j ACCEPT

#icmp
/sbin/iptables -A INPUT -p ICMP -j ACCEPT

#home network
/sbin/iptables -A INPUT -s xx.xx.xx.xx -j ACCEPT

# Allow already established connections
/sbin/iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
/sbin/iptables -A FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT

# Set default policies
/sbin/iptables -P INPUT DROP
/sbin/iptables -P FORWARD DROP
/sbin/iptables -P OUTPUT ACCEPT

#LOG IPTABLES
/sbin/iptables -N LOGGING
/sbin/iptables -A INPUT -j LOGGING
/sbin/iptables -A LOGGING -m limit --limit 2/min -j LOG --log-prefix "IPTables-Dropped: " --log-level 4
/sbin/iptables -A LOGGING -j DROP

Однако по какой-то причине эти правила не применяются к виртуальным машинам, которые находятся вне системы безопасности вообще. Есть ли способ применить те же правила, действующие на сервере proxmox, к vms?

Сегодня утром у меня была точно такая же проблема, потом я нашел и ваш вопрос.

В соответствии с эта документация, мы можем установить правила для всей виртуальной машины только с помощью брандмауэра PVE, создав группу безопасности с глобальными правилами для всех машин, а затем добавив ее к каждой виртуальной машине на узле. Таким образом, после изменения группы безопасности изменения коснутся всех виртуальных машин, которые ее используют.

Мне это немного неудобно, потому что я думаю, что любые правила, определенные в /etc/pve/nodes/<nodename>/host.fw должен также повлиять на его виртуальные машины, так как уже существует перекрывающаяся зона под названием «Datacenter» (или «кластер», поскольку правила в /etc/pve/firewall/cluster.fw появляются именно в разделе Datacenter графического интерфейса), и я также подозреваю, что это архитектурная проблема, которая будет исправлена ​​/ изменена в ближайшем будущем.

В Документация по брандмауэру говорит:

Включение брандмауэра для виртуальных машин и контейнеров

Каждое виртуальное сетевое устройство имеет собственный флаг включения брандмауэра. Таким образом, вы можете выборочно включить брандмауэр для каждого интерфейса. Это требуется в дополнение к общей опции включения брандмауэра.

Брандмауэр требует специальной настройки сетевого устройства, поэтому вам необходимо перезапустить виртуальную машину / контейнер после включения брандмауэра на сетевом интерфейсе.

Итак, если вы уже сделали следующее:

  1. вы включили брандмауэр для Дата центр и ВМ [или контейнер] (включение брандмауэра для узла не обязательно)

… Вам по-прежнему необходимо выполнить следующие действия:

  1. включить брандмауэр для виртуальное сетевое устройство виртуальной машины: в веб-интерфейсе перейдите к виртуальной машине Network config откройте Edit всплывающее окно для устройства (например, net0) и включите Firewall флажок
  2. перезапустить виртуальную машину

(Решение найдено Вот.)