Настройка встроенного фаервола Proxmox VE Firewall

Встроенный в Proxmox файервол можно использовать как для защиты самого хоста (кластера) гипервизора, так и для изоляции виртуальных машин (контейнеров) и сегментации виртуальных подсетей. Proxmox Firewall удобное средство для организации централизованного управление правилами межсетевого экранирования, позволяет использовать группы и шаблоны для удобного гибкого назначения правил файервола на разных уровнях. В этой статье мы рассмотрим особенности настройке файервола и создания правил в Proxmox.

Файервол в Proxmox работать на трех иерархических уровня:

УровеньОбласть действияМестоположение настройки
DatacenterВсе нодыDatacenter -> Firewall
НодаОтдельный хост ProxmoxNode -> Firewall
ВМ или контейнерОтдельная виртуальная машинаVM -> Firewall

Технически в качестве средства фильтрации используется iptables (либо можно переключиться на nftables ). Благодаря тому, что большинство операций управления файерволом Proxmox выполнятся через веб-интерфейс или API, для администратора не будет разницы какой нижележащий файервол используется.

Также обратите внимание, что правила уровня датацентра применяются (наследуется) на все ноды, но не на уровень отдельной ВМ или контейнера. Трафик к ВМ фильтруется прямо на виртуальном мосту ( vmbr ), минуя цепочки правил хоста

Как включить файервол в Proxmox VE?

По умолчанию, при установке файервол в Proxmox установлен ( pve-firewall ), но не включен. Если вы хотите использовать файервол Proxmox для настройки правил для отдельной ВМ, вам придется последовательно включить файервол на всех трех уровнях: на уровне Датацентра, хоста и затем на уровне конкретной ВМ.

Важно! Прежде чем включать файервол на уровне датацентра или ноды, создайте как минимум разрешающе правила, которые позволят вам сохранить доступ к самим хостам Proxmox (Web UI + SSH). Иначе вы можете потерять доступ к своей инфраструктуре, и не сможете перенастроить правила файервола. Потому-что по умолчанию весь входящий трафик будет запрещен.

В файерволе Proxmox можно (и нужно) создать логические группы для более удобного управления правилами. Вместо использования в правилах конкретных IP адресов, лучше создать для них псевдонимы (Aliases) или списки адресов (IP Set):

  • Alias – позволяет задать текстовое имя для одного IP адреса или IP сети
  • IP Set – список, который может содержать множество IP-адресов, подсетей и созданных ранее Aliases

Создадим для примера несколько алиасов для хостов PVE и локальных подсетей. Перейдите в раздел Datacenter -> Firewall -> Aliases и создайте новые элементы.

Создать алиасы для Proxmox Firewall

Отдельные алиасы можно объединить в группы (Datacenter -> Firewall -> IPSet).

IPSet - группы IP адресов/подсетей/хостов для файервола

Прежде чем включать файервол на любом из уровней, нужно создать разрешающие правила, которые позволят вам сохранить доступ к управлению серверам (веб интерфейсу Proxmox + SSH) после включения файервола.

Для создания часто используемых правил рекомендуем использовать Security Groups. Такие правила представляют шаблоны из нескольких перенастроенных правил файервола, которые удобно назначать на отдельные ноды или ВМ в зависимости от их задач. Например, для виртуальных контроллеров домена можно создать группы Windows_DC, в которой содержатся правила для всех портов, которые используются клиентами при обращении к инфраструктуре AD. Эти правила потом можно назначить глобально на уровне датацентра или виртуальных машин, на которых запущены контроллеры домена.

Перейдите в раздел Security Group и создайте новую группу, которая будет содержать правила, разрешающие входящий трафик к управляющим интерфейсам хостов Proxmox из локальной сети (хотя более безопасным будет оставить доступ только с IP адресов рабочих станций администраторов/серверов управления): порты TCP 8006 (веб интерфейс) и TCP 22 (SSH).

  1. Datacenter -> Firewall -> Security Group
  2. Создайте новую группу, например prox_management
  3. Добавьте в нее правило: Add
  4. Direction: in (входящий трафик)
  5. Action: ACCEPT (разрешить)
  6. Source: выберите источник, с которого разрешен трафик. В моем примере это все локальные сети.
  7. Destionation: назначение – группа, содержащая все хосты PVE
  8. Dest port: разрешенные порты. Я указал 8006 и 22 через запятую.
  9. Отметьте галку в поле Enable, чтобы активировать правила.
  10. Добавьте описание правила, чтобы его смогли понять ваши коллеги.
  11. Нажмите Add.
В правиле можно указать как отдельные порты, список портов ( 80,443,8080 ), или диапазон ( 5000:5010 ). Можно совмещать эти варианты в одном правиле: 80,443,8080 , 5000:5010 .

Создать правило файервола в Promox для доступа к Web UI и SSH

Вместо указания конкретных портов, можно выбрать из списка макрос. Это предопределенные правила для типовых сетевых протоколов и сервисов. Например, DHCP, Git, IMAP, Rsync и так далее.

Макросы (правила) в Proxmox Firewall

Если используется кластер Proxmox, создайте соответствующие правила, которые обеспечат взаимодействие между узлами. Список портов ниже:

ОписаниеПротоколПорты
Web interfaceTCP8006
VNC Web consoleTCP, WebSocket5900 – 5999
SPICE proxyTCP3128
sshdTCP22
rpcbindUDP111
corosync cluster trafficUDP5405 – 5412
live migrationTCP60000 – 60050

Теперь перейдите в раздел Firewall. Здесь вы можете создать нужные правила вручную, или добавить существующие правила из Security Group. Я добавил правило, разрешающее доступ к управлению хостами (Insert: Security Group), и для примера вручную создал правило, которое блокируют любой другой входящий трафик. Обратите внимание, что порядок правил имеет значение. Правила применяются сверху вниз. Поднимите разрешающие правила (и исключения) вверх по списку. Правила файервола перемещаются в списке простым перетягиванием.

Порядок применения правил файервола в Proxmox

После того, как вы настроили базовые правила инфраструктурного взаимодействия между хостами, можно включить файервол на уровне датацентра. Перейдите в Datacenter -> Firewall -> Options и измените значение Firewall на Yes.

Здесь же настраивается поведение по- умолчанию для файервола. Из коробки все входящие подключения разрешены (Output Policy: ACCEPT ), а входящие запрещены (Input Policy: DROP ).

Включить Proxmox Firewall

Список активных правил файервола в консоли хоста Proxmox можно вывести с помощью команды iptables-save . Также в Proxmox файерволе есть ряд предопределенных правил, которые не отображается в веб интерфейсе https://pve.proxmox.com/wiki/Firewall#pve_firewall_default_rules, но фактически применятся, даже если вы изменили политику по-умолчанию на DROP или REJECT.

Настройка файервола для виртуальной машины (контейнера) в Proxmox

После того, как вы включили файервол на уровне датацентра, можно настроить и включить файервол для каждой виртуальной машины.

Откройте свойства ВМ и перейдите на вкладку Firewall. Создайте правила доступа к этой виртуальной машины.

В моем примере это виртуальная машина с Windows Server. На уровне датацетра я сформировал несколько глобальных типовых групп безопасности для Windows хостов, которые обеспечивают доступ к контроллерам домена, а также RDP доступ. Таким образом, я могу быстро предоставить типовые доступа любой виртуальной машине с Windows на гипервизоре Proxmox.

Дополнительно вручную я создам два правила, которые обеспечивают доступ к этой машине через SSH с компьютеров администраторов и управляющих машин (на встроенный OpenSSH сервер Windows), а также доступ к веб серверу IIS на 80 порту.

Создать правила файервола для виртуальной машины Proxmox

После того, как все правила файрвола сформированы, перейдите на вкладку Options и включите файервол для этой виртуальной машины.

Включить файервол для ВМ в Proxmox

Затем в свойствах ВМ перейдите в раздел оборудования и выберите виртуальный сетевой адаптер ВМ (Hardware -> Network Device). Включите опцию Firewall для сетевого адаптера (без этой опции правила фильтрации будут игнорироваться, даже если файервол включен для машины).

Включить файервол в настройках виртуальной сетевой карты

Теперь эта виртуальная машина Windows будет доступна только по портам и для адресов-источников, которые вы описали в правилах.

Для каждого правила файервола можно включить логирование доступа по нему в файл. Можно логировать как срабатывание Accept, так и Drop правил. Это бывает нужно для отладки. Уровень логирования настраивается в свойствах правила в параметре Log level. Логи пишутся в лог файл /var/log/pve-firewall.log . Логи pve-firewall

Как временно остановить Proxmox Firewall?

Если вы ошиблись в правилах, и не можете попасть на веб интерфейс управления Proxmox, можно временно отключить файервол на хосте, подключившись к нему через KVM или консоль.

Чтобы отключить файервол на уровне датацентра, откройте конфигурационный файл:

# nano /etc/pve/firewall/cluster.fw

Измените опцию Enable на 0.

Отключить Proxmox Firewall через конфиг файл

После того, как вы сохраните файл, Proxmox автоматически увидит изменения и полностью отключит защиту файерволом.

Чтобы временно отключить Proxmox VE firewall на конкретной ноде, выполните:

# systemctl stop pve-firewall

systemctl stop pve-firewall

Правила файрвола кластер хранятся в файле:

/etc/pve/firewall/cluster.fw

Правила хоста:

/etc/pve/nodes/<nodename>/host.fw

Правила файервола отдельной ВМ или контейнера:

/etc/pve/firewall/<VMID>.fw

Файл /etc/pve/firewall/VMID.fw с правилами файервола

С помощью этих файлов можно временно отключить файервол на конкретном уровне (датацентра, хоста или ВМ), или управлять правилами в текстовом конфиге.

Ну и несколько базовых рекомендаций при создании межсетевых правил:

  • Начинайте настройку с разрешающих правил
  • Используйте алиасы, группы IP Set и шаблоны типовых правил в Security Group для упрощения управления правилами межсетевого экранирования.
  • Сложные правила тестируйте пошагово
  • Помните про порядок обработки правил файервола в Proxmox (iptables)
  • В целях безопасности минимизируйте доступ к узлам мини
Некоторые администраторы предпочитают использовать только собственные файерволы внутри гостевых ОС в ВМ и контейнерах, ограничиваясь только файерволами на внешнем шлюзе (будь то програмный или аппаратный). Но, на самом деле, централизованная настройка правил межсетевого экранирования в кластере Proxmox с помощью встроенного файервола позволяет создать более надежные и тонкие настройки фильтрации с возможностью реальной сегментации подсетей, ВМ и трафика между ними.

С помощь правил файервола в Promox можно строить сложные микро сегментированные конфигурации, в которых вы можете разделить подсети, виртуальные машины на разные уровни безопасности (внешняя сеть, DMZ, защищенный сегмент и т.д.). Правила файервола можно применять как для защиты самих хостов, так и для ограничения доступа на/к виртуальным машинам. Возможность централизованно создавав глобальные группы хостов и шаблонные правила доступа значительно упрощает настройку правил файервола в Proxmox даже в сложных сценариях.


Предыдущая статья Следующая статья


Комментариев: 0 Оставить комментарий

Оставить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *

Я не робот( Обязательно отметьте)