Три уровня файрвола в Proxmox VE
Файрвол Proxmox VE работает поверх iptables/nftables и настраивается сразу на трёх уровнях: датацентр, узел и отдельная виртуальная машина или контейнер. Правила датацентра применяются ко всем узлам кластера, правила узла — к трафику конкретного сервера, а правила VM — только к сетевым интерфейсам этой машины.
Такая иерархия удобна: общие правила безопасности задаются один раз на датацентре, а точечные ограничения — на уровне VM. Итоговое поведение пакета определяется суммой правил всех трёх уровней, поэтому перед включением файрвола стоит понимать, где и что уже настроено.
Как включить файрвол на датацентре и узле
Включение выполняется в разделе Datacenter → Firewall → Options: параметр enable переводится в значение Yes. То же самое нужно сделать в разделе Firewall на уровне каждого узла — иначе правила датацентра не применятся к трафику сервера.
Перед включением обязательно добавьте правило, разрешающее доступ к веб-интерфейсу на порту 8006 и SSH на порту 22 с ваших рабочих адресов. Иначе после активации политики DROP по умолчанию панель управления станет недоступна. Дополнительно панель стоит защитить через двухфакторную аутентификацию.
Правила Security Group: создание и применение
Security Group — это именованный набор правил, который можно применить сразу к нескольким узлам или VM. Группа создаётся в разделе Datacenter → Firewall → Security Groups и затем подключается к нужному объекту одной строкой.
| Поле | Пример значения | Смысл |
|---|---|---|
| Direction | in | входящий трафик к объекту |
| Action | ACCEPT | разрешить пакет |
| Protocol | tcp | ограничение по протоколу |
| Dest. port | 443 | порт назначения |
- Создать группу с понятным именем, например
web-servers. - Добавить в неё правила ACCEPT для нужных портов и DROP для остального.
- Подключить группу к VM или узлу через кнопку Insert в разделе Firewall объекта.
Файрвол для конкретной VM или контейнера
Индивидуальные правила задаются на вкладке Firewall самой VM или LXC-контейнера. Включите файрвол для машины и добавьте только те порты, которые реально нужны — например 80 и 443 для веб-сервера, остальное закройте политикой DROP по умолчанию.
cat /etc/pve/firewall/100.fw
[OPTIONS]
enable: 1
[RULES]
IN ACCEPT -p tcp -dport 80
IN ACCEPT -p tcp -dport 443
На той же вкладке доступны опции защиты от спуфинга: MAC Filter проверяет, что VM отправляет пакеты только со своего MAC-адреса, а IP Filter — со своих IP. Доступ к настройке файрвола стоит ограничить через роли и ACL, чтобы менять правила могли только администраторы.
IP-сеты для групп адресов
IPSet объединяет список IP-адресов или подсетей под одним именем и позволяет ссылаться на них в правилах вместо перечисления каждого адреса. Это удобно для списка офисных IP или адресов мониторинга.
cat /etc/pve/firewall/cluster.fw
[IPSET management]
203.0.113.10
203.0.113.0/28
[RULES]
IN ACCEPT -p tcp -dport 22 -source +management
Запись +management в правиле означает ссылку на IPSet с этим именем. При изменении списка адресов достаточно отредактировать один IPSet — все правила, которые на него ссылаются, обновятся автоматически.
Как проверить правила и не заблокировать себя
Перед включением строгой политики DROP протестируйте доступ с резервного канала: через IPMI, консоль в веб-интерфейсе гипервизора или физический доступ к серверу. Если самостоятельно закрыли себе SSH и веб-интерфейс, вернуть доступ можно через консоль узла командой pve-firewall stop, которая временно останавливает применение правил.
После каждого изменения проверяйте статус модуля командой pve-firewall status и просматривайте журнал в разделе Firewall → Log — там видно, какие пакеты были отброшены и по какому правилу.
Чек-лист безопасной настройки файрвола
- Правило доступа к портам 8006 и 22 добавлено до включения DROP по умолчанию.
- Файрвол включён и на датацентре, и на каждом узле.
- Для групп серверов созданы Security Group вместо дублирования правил.
- На VM с публичными сервисами открыты только реально нужные порты.
- Есть резервный канал доступа на случай ошибки в правилах.
Файрвол дополняет сетевую изоляцию на уровне мостов: базовые принципы разделения сетей описаны в статье про сетевые мосты и VLAN.