Перейти к содержимому

cockpit-ufw-module: Uncomplicated Firewall в Cockpit

UFW на домашнем или небольшом сервере обычно настраивают по SSH: ufw status numbered, затем ufw allow 443/tcp. cockpit-ufw-module закрывает тот же цикл в браузере: пакет, статус, политики, правила. Это одна из панелей группы cockpit-modules — пункт UFW в разделе Tools.

Интерфейс на русском, в стиле PatternFly v5. Нужны Cockpit 264+ и права администратора для записи. Лицензия MIT, актуальный релиз — тег v.1.0.1.

Зачем панель, если есть ufw

Клиент уже есть: системный ufw. Не хватает обзора без терминала и безопасного ввода: порт, CIDR, номер правила.

Панель не подменяет iptables своим движком. HTML и JS вызывают хостовые команды через cockpit.spawn массивом аргументов, без shell-строк. Ввод проверяется на клиенте: порт (включая диапазон и список), IPv4/IPv6 и CIDR, действие allow / deny / reject / limit. Без прав администратора Cockpit операции с пакетом и правилами не проходят.

Что видно на странице

Четыре блока, сверху вниз:

БлокЧто делает
Пакет ufwустановлен / нет, версия, менеджер (APT, DNF, YUM, Pacman), установка и удаление
Состояниеactive / inactive, уровень логирования, политики incoming/outgoing, включить / выключить / reload
Правилатаблица из ufw status numbered: номер, куда, действие, откуда, удаление
Добавить правилодействие, протокол, порт, источник IP/CIDR

Пока файервол выключен, таблица правил скрыта: UFW их не применяет, хотя записи в конфиге могут быть. Счётчик тогда пишет «N правил (неактивны)».

Установка модуля

Через магазин — если он уже стоит. Иначе вручную:

git clone https://gitlab.com/cockpit-modules/cockpit-ufw-module.git
cd cockpit-ufw-module
sudo ./install.sh

Файлы копируются в /usr/share/cockpit/ufw. Обновите страницу Cockpit — в Tools появится UFW.

Для текущего пользователя без root:

./install.sh --user

Модуль окажется в ~/.local/share/cockpit/ufw.

Примечание

install.sh ставит только панель. Пакет ufw ставится уже из UI, кнопкой Установить ufw.

Типичный сценарий на чистом хосте

Порядок важнее кнопок. После установки пакета модуль сам делает ufw --force reset, ставит политики allow на входящие и исходящие, открывает 22/tcp и включает unit ufw в systemd. Сам файервол не включает — это отдельная кнопка с предупреждением про SSH.

  1. Tools → UFW → Установить ufw. Подтвердите. На APT сначала идёт apt-get update.
  2. Добавьте явные правила для того, чем управляете с этого хоста. Cockpit слушает 9090/tcp — после установки пакета этого правила нет, только SSH 22. Если позже поставить incoming в deny без 9090, панель отвалится.
  3. Нужные сервисы: 80/tcp, 443/tcp, диапазон вроде 8000:8010. Источник можно сузить CIDR, например 10.0.0.0/8.
  4. Перед добавлением UI показывает превью команды (ufw allow 443/tcp) — это тот же argv, который уйдёт на хост.
  5. Включить. Пока default incoming — allow, доступ не режется: сработают только явные deny/reject/limit.
  6. Когда SSH, Cockpit и сайты на месте — смените входящую политику на deny. Исходящую обычно оставляют allow.

Примеры того, что принимает форма:

22/tcp
443,80
8000:8010
from 10.0.0.0/8 to any port 443 proto tcp

limit — это rate-limit UFW на новые соединения, полезно на 22. reject отвечает ICMP/TCP reset, deny молча отбрасывает.

Предупреждение

Установить ufw делает ufw --force reset. Существующие правила на хосте будут сброшены. На уже настроенном файерволе пакет ставьте руками, панель используйте только для статуса и точечных правок.

Что панель не делает

Это не полный ufw из man. Из UI нет:

  • профилей приложений (ufw allow OpenSSH, ufw app list);
  • привязки к интерфейсу (on eth0);
  • комментариев к правилам;
  • направления in/out в форме добавления — новые правила идут как входящие;
  • смены уровня логирования (строка Логирование только читается);
  • политики routed, хотя ufw status verbose её парсит.

Удаление пакета выключает UFW (ufw --force disable) и снимает его через менеджер системы, для APT — с --purge.

Локальная проверка без боя на хосте — Docker Compose из репозитория: privileged-контейнер с systemd, Ubuntu, Cockpit и ufw, по умолчанию http://localhost:9090, логин admin / admin. Это демо, не образец для production.

Исходники, issues и теги — в gitlab.com/cockpit-modules/cockpit-ufw-module. Соседние панели той же группы: fail2ban, cron, CertManager.