Установка Webmin на Ubuntu Server: веб-панель управления и её безопасность
Webmin даёт браузерный интерфейс к настройкам сервера: пользователи, сервисы, фаервол, cron, диски. Ставим его из официального репозитория, закрываем доступ к порту 10000 и разбираем главное — панель работает с правами root, поэтому вопрос её защиты важнее вопроса установки.
Webmin — веб-панель, через которую сервером управляют из браузера: заводят пользователей, правят конфиги, перезапускают сервисы, смотрят логи и настраивают фаервол. Полезна, когда с сервером работают люди без опыта в терминале или когда нужно быстро что-то посмотреть с телефона. Ставится за пять минут, но требует внимания к безопасности — панель выполняет команды от имени root.
Прежде чем ставить
Webmin — это, по сути, веб-интерфейс с правами суперпользователя. Всё, что можно сделать в терминале под sudo, можно сделать и через панель. Отсюда простое следствие: получивший доступ к Webmin получает сервер целиком.
Поэтому вопрос «как поставить» второстепенен по сравнению с вопросом «кто сможет достучаться до порта». Правильная схема — панель доступна только из доверенной сети или через SSH-туннель, а не выставлена в интернет.
Если задача — просто перезапускать пару сервисов, безопаснее обойтись без панели: выдать пользователю точечные права через sudoers. Как это делается, разобрано в статье про настройку сервера после установки.
Устанавливаем
У Webmin есть официальный репозиторий и скрипт для его подключения:
sudo apt update
sudo apt install -y curl
curl -fsSL https://raw.githubusercontent.com/webmin/webmin/master/webmin-setup-repo.sh -o webmin-setup-repo.sh
Скрипт скачан, но не выполнен — перед запуском стоит посмотреть, что внутри:
less webmin-setup-repo.sh
Это общее правило для любого curl | sh из интернета: сначала читаем, потом запускаем. Дальше подключаем репозиторий и ставим пакет:
sudo sh webmin-setup-repo.sh
sudo apt install -y webmin --install-recommends
Установка подтянет модули Perl и займёт пару минут. По завершении служба запускается сама:
systemctl is-active webmin
sudo ss -tulpn | grep 10000
Панель слушает порт 10000 по HTTPS с самоподписанным сертификатом — браузер предупредит о недоверенном соединении, это ожидаемо.
Закрываем доступ
Сразу после установки порт открыт для всех интерфейсов. Первым делом ограничиваем его.
Разрешаем только свою подсеть через UFW:
sudo ufw allow from 192.168.1.0/24 to any port 10000 proto tcp
sudo ufw status verbose
Дублируем ограничение на уровне самого Webmin — в /etc/webmin/miniserv.conf:
allow=127.0.0.1 192.168.1.0/24
sudo systemctl restart webmin
Два уровня защиты лучше одного: если фаервол однажды окажется выключен, Webmin всё равно откажет чужому адресу.
Самый надёжный вариант — не открывать порт вообще. Привязываем панель только к localhost, добавив в тот же файл:
bind=127.0.0.1
и подключаемся через SSH-туннель:
ssh -N -L 10000:localhost:10000 user@server
После этого панель открывается на https://localhost:10000 вашей машины, а снаружи порт закрыт полностью. Про ключи для SSH — в статье про SSH-ключи.
Первый вход
Открываем https://адрес-сервера:10000 и входим под системным пользователем с правами sudo — теми же логином и паролем, что и по SSH. Отдельной учётной записи Webmin не создаёт.
Если вход по паролю в системе отключён (а на защищённом сервере он обычно отключён), пароль пользователя всё равно должен существовать — Webmin проверяет его через PAM. Задать:
sudo passwd deploy
При неудачных попытках входа Webmin временно блокирует адрес — это встроенная защита от перебора, её параметры настраиваются в «Webmin → Webmin Configuration → Authentication».
Включаем двухфакторную аутентификацию
Панель с правами root заслуживает второго фактора. Настраивается в «Webmin → Webmin Configuration → Two-Factor Authentication»: выбираем провайдера TOTP, сохраняем, затем каждый пользователь включает 2FA у себя в «Webmin → Webmin Users → выбрать пользователя → Two-Factor Authentication» и сканирует QR-код приложением-аутентификатором.
Отдельно стоит выключить неиспользуемые модули: чем меньше кода доступно из браузера, тем меньше поверхность атаки. Делается в «Webmin → Webmin Configuration → Webmin Modules».
Нормальный сертификат вместо самоподписанного
Постоянные предупреждения браузера — не только неудобство: к ним привыкают и перестают отличать настоящую ошибку сертификата от подделки. Если у сервера есть домен, панель проще выпустить наружу через nginx как reverse proxy с сертификатом Let's Encrypt.
Привязываем Webmin к localhost и отключаем его собственный SSL в /etc/webmin/miniserv.conf:
bind=127.0.0.1
ssl=0
sudo systemctl restart webmin
Конфиг nginx:
server {
listen 443 ssl http2;
server_name panel.example.com;
# ограничение по адресам — панель не для всего интернета
allow 192.168.1.0/24;
deny all;
location / {
proxy_pass http://127.0.0.1:10000;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
}
}
sudo nginx -t && sudo systemctl reload nginx
Теперь панель доступна по https://panel.example.com с валидным сертификатом, а её собственный порт наружу не выставлен. Блок allow/deny оставляет доступ только доверенной сети — без него вы просто перенесли проблему с порта 10000 на 443.
Что умеет панель
Основные разделы, ради которых Webmin обычно и ставят:
| Раздел | Что делает |
|---|---|
| System → Users and Groups | Пользователи, группы, пароли |
| System → Software Packages | Установка и удаление пакетов |
| System → Bootup and Shutdown | Управление systemd-юнитами |
| System → Scheduled Cron Jobs | Задания cron через форму |
| System → System Logs | Просмотр журналов |
| Networking → Linux Firewall | Правила iptables |
| Hardware → Partitions on Local Disks | Разделы и файловые системы |
| Others → File Manager | Файловый менеджер |
| Others → Command Shell | Выполнение команд |
Полезно понимать, что панель не заменяет знание системы, а лишь показывает те же настройки в формах. Правки через Webmin ложатся в те же конфиги: задание cron окажется в crontab (см. статью про cron), а перезапуск сервиса — обычный вызов systemd, разобранный в статье про systemctl enable.
Отдельно существует Usermin — облегчённая панель для обычных пользователей без прав root, и Virtualmin — надстройка для хостинга с виртуальными хостами и почтой.
Обновление и удаление
Панель обновляется вместе с системой, репозиторий уже подключён:
sudo apt update && sudo apt upgrade
Обновления Webmin стоит ставить без задержек: уязвимость в панели с правами root — это компрометация всего сервера.
Если панель не пригодилась, снимаем её вместе с конфигами:
sudo apt purge -y webmin
sudo rm -rf /etc/webmin
sudo ufw delete allow 10000/tcp
Проверяем, что порт больше не слушается:
sudo ss -tulpn | grep 10000
Пустой вывод означает, что панели на сервере не осталось.
Частые вопросы
На каком порту работает Webmin?
По умолчанию 10000, по HTTPS с самоподписанным сертификатом — поэтому браузер показывает предупреждение о недоверенном соединении.
Порт меняется параметром port в /etc/webmin/miniserv.conf. Смена порта сама по себе защитой не является: сканеры находят панель на любом порту, ограничивать доступ нужно фаерволом.
Безопасно ли открывать Webmin в интернет?
Нет. Панель работает с правами root, и получивший к ней доступ получает сервер целиком. Порт 10000 постоянно сканируют.
Правильные варианты: ограничить доступ доверенной подсетью через UFW и allow в miniserv.conf, либо привязать панель к 127.0.0.1 и ходить через SSH-туннель. Если доступ снаружи необходим, ставьте перед ней nginx с TLS, ограничением по IP и включайте двухфакторную аутентификацию.
Какой логин и пароль у Webmin?
Своих учётных записей Webmin не создаёт — вход выполняется под системным пользователем с правами sudo, тем же логином и паролем, что и по SSH.
Если пароль пользователя не задан (вход только по ключу), Webmin не пустит: задайте пароль командой sudo passwd имя_пользователя.
Чем Webmin отличается от cPanel и ISPmanager?
Webmin — бесплатная панель системного администрирования: пользователи, сервисы, диски, фаервол. Она не заточена под хостинг и не управляет клиентскими аккаунтами.
cPanel и ISPmanager — коммерческие хостинг-панели с биллингом, почтой и виртуальными хостами. Ближайший аналог из мира Webmin — Virtualmin, надстройка для хостинговых задач.
Заменяет ли Webmin работу в терминале?
Нет. Панель показывает те же настройки в формах и записывает изменения в те же конфиги, но диагностика нештатных ситуаций всё равно идёт через логи и командную строку.
Практично рассматривать Webmin как дополнение: рутинные операции — через браузер, разбор проблем — через SSH и journalctl.
Что запомнить
- Webmin выполняет команды с правами root: вопрос ограничения доступа важнее вопроса установки.
- Порт 10000 закрывают на двух уровнях — правилом UFW и параметром
allowвminiserv.conf. - Надёжнее всего
bind=127.0.0.1плюс SSH-туннель: снаружи порт не виден вообще. - Для доступа по домену используйте nginx с сертификатом Let's Encrypt и ограничением по IP, а не самоподписанный сертификат панели.
- Обновления Webmin ставьте сразу: уязвимость в панели равна компрометации сервера.