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 правил (неактивны)».
Установка модуля
Через магазин — если он уже стоит. Иначе вручную:
Файлы копируются в /usr/share/cockpit/ufw. Обновите страницу Cockpit — в Tools появится UFW.
Для текущего пользователя без root:
Модуль окажется в ~/.local/share/cockpit/ufw.
install.sh ставит только панель. Пакет ufw ставится уже из UI, кнопкой Установить ufw.
Типичный сценарий на чистом хосте
Порядок важнее кнопок. После установки пакета модуль сам делает ufw --force reset, ставит политики allow на входящие и исходящие, открывает 22/tcp и включает unit ufw в systemd. Сам файервол не включает — это отдельная кнопка с предупреждением про SSH.
- Tools → UFW → Установить ufw. Подтвердите. На APT сначала идёт
apt-get update. - Добавьте явные правила для того, чем управляете с этого хоста. Cockpit слушает 9090/tcp — после установки пакета этого правила нет, только SSH 22. Если позже поставить incoming в
denyбез 9090, панель отвалится. - Нужные сервисы:
80/tcp,443/tcp, диапазон вроде8000:8010. Источник можно сузить CIDR, например10.0.0.0/8. - Перед добавлением UI показывает превью команды (
ufw allow 443/tcp) — это тот же argv, который уйдёт на хост. - Включить. Пока default incoming —
allow, доступ не режется: сработают только явные deny/reject/limit. - Когда SSH, Cockpit и сайты на месте — смените входящую политику на
deny. Исходящую обычно оставляютallow.
Примеры того, что принимает форма:
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.