Linux

Webmin на Debian и Ubuntu: безопасная установка и удалённое управление сервером

Webmin полезен, когда сервером приходится управлять не только через SSH: посмотреть службы, быстро проверить диск, изменить расписание cron или создать пользователя. Но панель работает с системными настройками и фактически обладает административными правами, поэтому ставить её «на всякий случай» и открывать всему интернету — плохая идея.

Ниже настроим Webmin на Debian/Ubuntu так, чтобы он был доступен только из административной сети. Заодно разберём, что именно даёт каждый шаг, как проверить TLS и журналы и как полностью удалить панель без следов.

Что получим в итоге

  • Webmin из официального репозитория;
  • панель на HTTPS-порту 10000;
  • доступ только из административной сети;
  • отдельного администратора без прямого входа root;
  • резервную копию конфигурации;
  • понятную диагностику и rollback.

1. Проверяем сервер до установки

hostnamectl
ip -br addr
ip route
ss -lntup
df -h
free -h

Нас интересуют реальный IP сервера, занятые порты и свободное место. Если порт 10000 уже используется, это нужно выяснить заранее, а не после установки.

2. Создаём резервную точку

mkdir -p /root/webmin-backup
cp -a /etc/apt /root/webmin-backup/apt-before
nft list ruleset > /root/webmin-backup/nftables-before.txt 2>/dev/null || true
iptables-save > /root/webmin-backup/iptables-before.txt 2>/dev/null || true

Webmin ещё не установлен, но мы уже сохраняем состояние репозиториев и firewall. Это позволяет отделить проблемы панели от изменений, которые существовали раньше.

3. Подключаем репозиторий и устанавливаем Webmin

apt update
apt install -y curl ca-certificates gnupg
curl -fsSL https://download.webmin.com/jcameron-key.asc | gpg --dearmor -o /usr/share/keyrings/webmin.gpg
echo 'deb [signed-by=/usr/share/keyrings/webmin.gpg] https://download.webmin.com/download/repository sarge contrib' > /etc/apt/sources.list.d/webmin.list
apt update
apt install -y webmin

После установки пакет создаёт службу Webmin и обычно начинает слушать TCP 10000. Сразу проверяем не только статус systemd, но и фактический сокет.

systemctl status webmin --no-pager
ss -lntp | grep ':10000'
curl -kI https://127.0.0.1:10000/

Ответ HTTP подтверждает, что веб-сервис поднялся локально. Ключ -k используется только для первичной проверки, потому что стартовый сертификат может быть самоподписанным.

4. Создаём отдельного администратора

adduser webadmin
usermod -aG sudo webadmin
id webadmin

Вход под отдельной учётной записью лучше прямого использования root: действия проще отслеживать, пароль можно заменить отдельно, а доступ — быстро отозвать. В самой панели проверьте, что пользователь получает только необходимые модули.

5. Ограничиваем доступ к панели

Допустим, администраторы работают из сети 192.168.1.0/24. Открывать порт 10000 всему интернету не нужно: Webmin — не публичный сайт, а ключ от сервера.

ufw allow from 192.168.1.0/24 to any port 10000 proto tcp
ufw status numbered

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

6. Ограничиваем адреса внутри Webmin

cp -a /etc/webmin /root/webmin-backup/webmin-etc
printf '%s
' 'allow=127.0.0.1 192.168.1.0/255.255.255.0' >> /etc/webmin/miniserv.conf
systemctl restart webmin
systemctl status webmin --no-pager

Это второй слой защиты. Даже если firewall когда-нибудь изменят неудачно, сам miniserv будет принимать подключения только от разрешённых адресов. Перед добавлением проверьте, нет ли в файле уже существующей директивы allow=.

7. Настраиваем нормальный сертификат

Для внутреннего сервера можно использовать сертификат корпоративного CA. Для публичного DNS-имени — сертификат ACME, но саму панель всё равно лучше не открывать всему миру.

openssl s_client -connect 127.0.0.1:10000 -servername webmin.example.ru </dev/null 2>/dev/null | openssl x509 -noout -subject -issuer -dates

Команда показывает, кому выдан сертификат, кем он подписан и когда истекает. После замены сертификата повторите проверку и откройте панель браузером без предупреждения о недоверенном соединении.

8. Проверяем основные сценарии

  • вход под webadmin;
  • просмотр загрузки CPU, памяти и дисков;
  • просмотр состояния systemd-службы;
  • чтение системных журналов;
  • проверка cron без изменения критичных задач;
  • выход из сессии и повторный вход.

Проверка нужна не ради красивой панели. Она подтверждает, что Webmin видит системные службы, а пользователь получил ровно тот уровень доступа, который планировался.

9. Смотрим журналы и активность

journalctl -u webmin --since '30 min ago' --no-pager
tail -n 100 /var/webmin/miniserv.log
tail -n 100 /var/webmin/webmin.log
ss -tnp | grep ':10000'

miniserv.log помогает понять, кто подключался и почему вход был отклонён. webmin.log показывает действия внутри панели. Эти журналы стоит включить в резервное копирование и мониторинг свободного места.

10. Обновления без сюрпризов

apt update
apt list --upgradable 2>/dev/null | grep -i webmin || true
apt-cache policy webmin

Перед крупным обновлением сохраните /etc/webmin и проверьте changelog. Панель затрагивает много системных модулей, поэтому обновление лучше выполнять в обычное окно обслуживания, а не за минуту до отпуска.

11. Типовые проблемы

  • Порт не слушает: проверьте systemctl status webmin и journalctl -u webmin.
  • Локально открывается, из LAN нет: проверяйте firewall и директиву allow=.
  • Браузер ругается на TLS: проверьте имя сертификата, цепочку и срок.
  • Вход успешен, но модулей нет: проверяйте права пользователя Webmin.
  • Панель медленная: смотрите DNS, загрузку CPU, диск и журналы.

12. Удаление и откат

systemctl disable --now webmin
apt remove --purge -y webmin
rm -f /etc/apt/sources.list.d/webmin.list /usr/share/keyrings/webmin.gpg
apt update
ss -lntp | grep ':10000' || true

После удаления порт 10000 не должен слушаться. Конфигурацию из /root/webmin-backup храните до тех пор, пока не убедитесь, что панель больше не нужна.

Критерий успеха: Webmin открывается по HTTPS только из административной сети, вход выполняется отдельным пользователем, журналы фиксируют действия, а с внешнего адреса порт недоступен.

Добавить комментарий

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