- Что такое Virtualmin?
- Возможности Virtualmin
- Системные требования Virtualmin
- Установка Virtualmin
- Установка Virtualmin с nginx
- Установка Virtualmin c Apache
- Данные для входа в Virtualmin
- Мастер настройки Virtualmin
- Использование памяти (Memory use)
- Использование антивируса ClamAV для электронной почты
- Фильтрация спама (Spam filtering)
- Серверы баз данных (Database servers)
- Пароль MariaDB
- Конфигурация DNS
- Настройки Virtualmin
- Русификация Webmin
- Добавление сайта
- Удаление сайта
- Смена версии PHP
- Для Ubuntu
- Для Debian
- Настройка второй версии PHP в Virtualmin
- Установка phpMyAdmin
- Обновление Virtualmin
- Настройки безопасности Webmin и phpMyAdmin
- Смена стандартного порта Webmin
- Смена пользователя root
- Установка Fail2Ban в Webmin
- Настройка фаервола в Webmin. Отключение FirewallD и установка UFW
- Доступ по IP
- Доступ из сети Wireguard VPN
Что такое Virtualmin?
Virtualmin — это программное обеспечение для управления веб-хостингом, которое обеспечивает удобный и простой способ управления виртуальными хостингами, доменами, почтовыми ящиками, базами данных, SSL-сертификатами и другими важными компонентами веб-сервера.
Панель доступна в версии с открытым исходным кодом, поддерживаемой сообществом, и в более функциональной версии с премиальной поддержкой. Кроме того, Virtualmin — одна из самых популярных и наиболее полных панелей управления с открытым исходным кодом, установленная более чем в 150 000 раз по всему миру.
Возможности Virtualmin
Основные возможности Virtualmin включают:
- Управление виртуальными хостингами: Virtualmin позволяет создавать, удалять и изменять виртуальные хостинги с помощью простого и интуитивно понятного интерфейса. Каждый виртуальный хостинг имеет отдельный каталог для файлов, базы данных и почтовые ящики.
- Управление доменами: Virtualmin позволяет создавать, удалять и изменять домены и поддомены. Кроме того, вы можете управлять DNS-записями и настраивать почтовые домены.
- Управление почтовыми ящиками: Virtualmin обеспечивает полный контроль над почтовыми ящиками, позволяя создавать, удалять и изменять их. Вы можете устанавливать ограничения на размер почтовых ящиков и сообщений, а также настраивать спам-фильтры и автоответчики.
- Управление базами данных: Virtualmin поддерживает множество СУБД, включая MySQL (MariaDB), PostgreSQL и SQLite. Вы можете создавать, удалять и изменять базы данных, а также управлять пользователями баз данных.
- Управление SSL-сертификатами: Virtualmin позволяет установить и настроить SSL-сертификаты для каждого виртуального хостинга и домена.
- Отчетность и мониторинг: Virtualmin обеспечивает детальную отчетность о действиях пользователей, а также мониторинг системных ресурсов, таких как использование процессора и памяти.
- Система резервного копирования: Virtualmin позволяет создавать резервные копии файлов, баз данных и других компонентов веб-сервера.
- Управление FTP-аккаунтами: Virtualmin позволяет создавать, удалять и изменять FTP-аккаунты для каждого виртуального хостинга.
Эти и многие другие функции делают Virtualmin мощным и гибким инструментом для управления веб-хостингом.
Системные требования Virtualmin
- Ubuntu 20.04 LTS и 22.04 LTS с архитектурой i386 или amd64
- Debian 10 и 11 с архитектурой i386 или amd64
- CentOS 7 x86_64
- Alma и Rocky 8 и 9 x86_64
- Rhel 8 и 9 x86_64
Рекомендуемые характеристики сервера:
2 ядра процессора и 2 гб оперативной памяти.
В идеале 2 ядра процессора и 4 гб оперативной памяти
Virtualmin с одним ядром работать будет, но нестабильно. Также 1 гб оперативной памяти теоретически достаточно, но только что настроенная система из коробки уже будет занимать 1 гб оперативной памяти. Потому считаю минимальными требованиями к серверу 2 ядра процессора и 2 гб оперативной памяти (желательно 4 гб оперативной памяти).
Хостинг:
В качестве хостинга VPS рекомендую Aéza, по моей реферальной ссылке вы можете получить дополнительно на счет 15% от суммы его пополнения
Установка Virtualmin
Рекомендуемый способ установки Virtualmin — использовать сценарий автоматической установки virtualmin-install.sh, который можно найти на странице загрузки Virtualmin.com. Чтобы получить стек LEMP, который включает nginx вместо Apache, используйте ключ —bundle LEMP при установке. Также рекомендуется использовать ключ —minimal для исключения полного стека обработки почты (серверы IMAP/POP, SpamAssassin и ClamAV). Сценарий установки следует запускать на только что установленной поддерживаемой ОС без предварительной настройки или включенных сторонних репозиториев.
Стек LEMP устанавливает Virtualmin с плагинами nginx и nginx-ssl, nginx, BIND, Postfix, MariaDB, PHP и т. д. и настраивает их для использования в среде общего виртуального хостинга. Ключ —minimal также работает с установкой LEMP.
Добавляем репозиторий для самой последней версии Nginx:
add-apt-repository ppa:ondrej/nginx-mainline && apt update -y
Добавляем репозиторий для самой последней версии PHP:
add-apt-repository ppa:ondrej/php && apt update -y
Обновляем репозитории и пакеты:
apt update -y &&
apt upgrade -y
Установка Virtualmin с nginx
https://www.virtualmin.com/documentation/web/nginx/
https://github.com/virtualmin/virtualmin-nginx
Скачиваем скрипт
cd /tmp
wget https://software.virtualmin.com/gpl/scripts/virtualmin-install.sh
chmod +rx /tmp/virtualmin-install.sh
Запустите скрипт для установки и следуйте указаниям скрипта:
/tmp/virtualmin-install.sh --minimal --bundle LEMP
Далее перейдите по ссылке указанной в результатах скрипта для входа в панель управления Virtualmin, https://ip_вашего_сервера:10000/
В браузере появится предупреждение о том что сайт возможно использует недействительный сертификат безопасности, игнорируем его, данное сообщение связано с тем что вы используете самоподписной сертификат
Установка Virtualmin c Apache
https://www.virtualmin.com/download/
https://github.com/virtualmin/virtualmin-nginx
Нельзя одновременно установить Apache и Nginx в Virtualmin. Если уже выполнили установку по пункту 1.1. то пункт 1.2. вам не нужен.
Скачайте установочный скрипт:
cd /tmp
wget https://software.virtualmin.com/gpl/scripts/virtualmin-install.sh
chmod +rx /tmp/virtualmin-install.sh
Запустите скрипт для установки и следуйте указаниям скрипта:
/tmp/virtualmin-install.sh --minimal
Остальные действия будут аналогичны установке Virtualmin с nginx
После установки перейдите по ссылке указанной в результатах скрипта для входа в панель управления Virtualmin, https://ip_вашего_сервера:10000/
Данные для входа в Virtualmin
После того как вы завершите установку Virtualmin, его панель управления будет использовать адрес https://ip_вашего_сервера:10000/
Данные для входа по умолчанию будут следующими:
Имя пользователя: root
Пароль: Ваш пароль от учетной записи root сервера
Мастер настройки Virtualmin
После установки и авторизации в панели управления Virtualmin вам будет необходимо осуществить его базовую настройку в мастер настройки.
Вы можете принять стандартные настройки нажав кнопку «Cancel» или осуществить детальную настройку под вашу систему кнопкой «Next»
Далее я буду описывать настройку после нажатия кнопки «Next» и предложу перевод интерфейса мастера установки с моими комментариями.
Информация на моих скриншотах более расширенная, так как использовалась установка без ключа —minimal
Использование памяти (Memory use)
Первой настройкой будет использование памяти,
Virtualmin можно настроить для повышения производительности пользовательского интерфейса и обработки электронной почты, но за счет увеличения использования памяти. Лучший выбор зависит от того, как будет использоваться ваша система.
Предварительно загрузить библиотеки Virtualmin?
- Да, более быстрый пользовательский интерфейс с использованием большего объема оперативной памяти (≈40 МБ)
- Нет, более медленный пользовательский интерфейс с меньшим использованием оперативной памяти, но большей загрузкой процессор
Я всегда выбираю ответ Да на этот вопрос чтобы получить более быстрый интерфейс панели управления.
Запустить сервер поиска почтового домена?
- Да, более быстрая обработка почты с использованием большего объема оперативной памяти (≈70M)
- Нет, более медленная обработка почты с меньшим использованием оперативной памяти, но большей загрузкой процессора
Выбираем ответ в зависимости от того будете ли вы использовать собственный почтовый сервер на вашем VPS. Я обычно выбираю нет, так как преимущественно использую сторонние почтовые сервисы для сайтов.
Использование антивируса ClamAV для электронной почты
Если в вашей системе будут размещаться домены, которые будут получать большое количество электронной почты, сканирование входящих сообщений на наличие вирусов может привести к высокой нагрузке на ЦП. Поскольку сканирование выполняется с помощью сервера сканирования ClamAV, он будет потреблять оперативную память, даже если не обрабатывает электронную почту. Если в вашей системе не будет размещаться электронная почта, сканирование на вирусы можно отключить.
Включить поиск вирусов с помощью ClamAV?
- Да, использует до 2 ГБ оперативной памяти
- Нет, электронная почта не будет фильтроваться
Я выбираю Нет, так как не использую собственный почтовый сервер в Virtualmin.
Фильтрация спама (Spam filtering)
Если в вашей системе будут размещаться домены, которые будут получать большое количество электронной почты, фильтрация входящих сообщений на наличие спама может привести к значительной нагрузке на ЦП. Это связано с использованием ЦП почтовым фильтром SpamAssassin при его запуске, чего можно избежать, запустив spamd сервера фильтрации SpamAssassin в фоновом режиме. Это потребляет ОЗУ, но снижает нагрузку на ЦП и ускоряет обработку почты.
Запустить фильтр сервера SpamAssassin?
- Да, более быстрая обработка почты с использованием большего объема оперативной памяти (≈30M) и отсутствие настроек для каждого домена
- Нет, более медленная обработка почты с меньшим использованием оперативной памяти
Я выбираю Нет, так как не использую собственный почтовый сервер в Virtualmin.
Серверы баз данных (Database servers)
Virtualmin поддерживает серверы баз данных как MariaDB, так и PostgreSQL, но вы можете запустить только один сервер одновременно (или ни один из них) в своей системе. Каждый из них потребляет оперативную память при работе, даже если они не используются.
В зависимости от веб-сайтов и приложений, которые вы планируете размещать, может быть достаточно запуска только MariaDB, поскольку большинство веб-приложений не поддерживают или не требуют PostgreSQL. Если ваша система будет использоваться только для почты или DNS-хостинга, запускать базу данных вообще не нужно.
Запустить сервер базы данных MariaDB?
- Да
- Нет
Запустить сервер базы данных PostgreSQL?
- Да
- Нет
Обычно я запускаю только базу данных MariaDB (более производительный форк чем mysql). PostgreSQL не использую для хостинга сайтов
Пароль MariaDB
Чтобы другие пользователи вашей системы не могли управлять базой данных MariaDB, необходимо установить пароль для пользователя root при входе в MariaDB. В настоящее время пароль MariaDB не установлен, что крайне небезопасно.
Установить пароль MariaDB (будет использоваться при входе в phpmyadmin)
Конфигурация DNS
Чтобы DNS-зоны, созданные Virtualmin, можно было разрешить, для записи первичного сервера имен для каждой зоны должно быть задано значение, которое само по себе может быть разрешено другими системами в Интернете.
Основной сервер имен
Пропустить проверку на разрешимость
Вторичные серверы имен (необязательно)
Мастер настройки завершил работу. Нажимаем «Return to Virtualmin» и осуществляем дальнейшие настройки самостоятельно.
Настройки Virtualmin
Русификация Webmin
Нажмите Webmin -> Change Language and Theme.
Выберете пункт Personal choice и укажите в нем русский язык выбрав его из выпадающего списка. Затем нажмите «Make Changes» и обновите страницу
Будет применена частичная русификация, так как переведется только часть с Webmin, а Virtualmin перевода не имеет.
Добавление сайта
Нажмите на кнопку «Create Virtual Server» в левой панели Virtualmin
Введите имя вашего домена и пароль для ftp доступа к папке сайта. Если вам не нужна почта для сайта на вашем сервере, то снимите галки «Принять почту для домена» и «Setup spam filtering»
Затем нажмите кнопку «Добавить $1» ($1 на кнопке не знаю для чего указан, ни на что не влияет)
Дождитесь применения настроек.
Удаление сайта
Нажмите на кнопку «Disable and Delete» в левой панели Virtualmin
Затем подтвердите удаление нажатием кнопки «Да, удалить» в центре появившегося окна.
Дождитесь завершения удаления и нажмите кнопку «Вернуться к списку виртуальных серверов»
Смена версии PHP
https://www.virtualmin.com/documentation/web/multiplephp/
Если у вас установлено несколько версий PHP, Virtualmin позволяет вам выбрать режим выполнения и версию PHP, используемую для данного домена. Доступные режимы выполнения: FPM (рекомендуется) и CGI/FCGId. Последний режим позволяет вам устанавливать разные версии PHP для каждого каталога.
То есть вам необходимо дополнительно установить необходимую версию PHP.
Для Ubuntu
Добавьте репозиторий от ondrej/php:
LC_ALL=C.UTF-8 add-apt-repository -y ppa:ondrej/php && apt-get update
Установите необходимую версию PHP и дополнительные пакеты, вместо php7.4 укажите нужную версию:
apt-get install php7.4-{cgi,cli,fpm,pdo,gd,mbstring,mysqlnd,opcache,xml,zip}
Для Debian
Добавьте репозиторий от sury/php:
apt-get -y install apt-transport-https lsb-release ca-certificates curl && curl -sSL -o /etc/apt/trusted.gpg.d/php.gpg https://packages.sury.org/php/apt.gpg && sh -c 'echo "deb https://packages.sury.org/php/ $(lsb_release -sc) main" > /etc/apt/sources.list.d/sury-debian-php-$(lsb_release -sc).list' && apt-get update
Установите необходимую версию PHP и дополнительные пакеты, вместо php7.4 укажите нужную версию:
apt-get install php7.4-{cgi,cli,fpm,pdo,gd,mbstring,mysqlnd,opcache,xml,zip}
Описание установки версий php для других ОС можете посмотреть тут https://www.virtualmin.com/documentation/web/multiplephp/
Настройка второй версии PHP в Virtualmin
Настройка второй версии PHP в Virtualmin
После того, как вы завершили установку второй версии PHP на свой сервер, вы можете убедиться, что Virtualmin видит ее, войдя в Virtualmin и нажав в левой панели «System Settings» → «Re-Check Configuration». Вы должны увидеть что-то вроде этого:
The following PHP versions are available : 7.4.33 (/bin/php-cgi7.4), 8.1.2 (/bin/php-cgi8.1)
The following PHP-FPM versions are available : 7.4.33 (php7.4-fpm) 8.1.2 (php8.1-fpm)
Вы можете настроить, какая из этих версий PHP будет использоваться по умолчанию на новых виртуальных серверах. По умолчанию используется самая новая из доступных. Вы можете изменить это значение по умолчанию в разделе «System Settings» → «Шаблоны сервера» → «Default Settings» → «PHP Options».
Настройка PHP для отдельных сайтов (виртуальных серверов)
Вы можете настроить версию PHP, используемую для определенного виртуального сервера, выбрав «Server Configuration» → «PHP Options».
Установка phpMyAdmin
Скачиваем архив с установочными файлами с официального сайта phpmyadmin.net
Распаковываем скачанный архив в папку /var/www/pma
Создаем /etc/nginx/sites-available/pma.conf для нового виртуального хоста nginx
Содержимое файла /etc/nginx/sites-available/pma.conf должно быть таким:
server {
listen ip_servera:10050 ssl default_server;
server_name _;
ssl_certificate /etc/nginx/ssl/server.crt;
ssl_certificate_key /etc/nginx/ssl/server.key;
root /var/www/pma;
index index.php;
location / {
try_files $uri $uri/ /index.php?$args;
}
location ~ \.php$ {
include fastcgi_params;
fastcgi_pass unix:/run/php/php7.4-fpm.sock;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
}
}
Вместо ip_servera укажите непосредственно внешний ip вашего VPS сервера.
Создаём самоподписные сертификаты в /etc/nginx/ssl/:
mkdir /etc/nginx/ssl && cd /etc/nginx/ssl && openssl req -newkey rsa:2048 -nodes -keyout server.key -x509 -days 365 -out server.crt
Проверяем конфигурации nginx на ошибки:
nginx -t
Если ошибок нет, то перезагружаем nginx:
systemctl reload nginx
Phpmyadmin должен быть доступен по адресу: https://ip_servera:10050/
Вместо ip_servera укажите непосредственно внешний ip вашего VPS сервера.
Обновление Virtualmin
Нажмите на кнопку «Панель» в левой панели Virtualmin, затем нажмите рядом с «Обновления пакетов»
Настройки безопасности Webmin и phpMyAdmin
Настройки безопасности для Webmin, phpMyAdmin и Nginx могут варьироваться в зависимости от требований конкретного проекта, но вот некоторые общие рекомендации:
- Webmin
- Смените стандартный порт 10000 на свой собственный порт чтобы избежать автоматических атак
- Не используйте учетную запись root для входа в Webmin, создайте отдельного пользователя с ограниченными правами;
- Настройте фаервол таким образом, чтобы Webmin был доступен только с определенных IP-адресов;
- Настройте двухфакторную аутентификацию для повышения безопасности.
- phpMyAdmin
- Измените имя входа на что-то отличное от «admin» или «root»;
- Установите сложный пароль для входа в phpMyAdmin;
- Запретите доступ к phpMyAdmin извне, например, с помощью фаервола;
- Используйте HTTPS для шифрования трафика между браузером и сервером;
- Ограничьте доступ к phpMyAdmin только с определенных IP-адресов;
- Обновляйте phpMyAdmin до последней версии и следите за обновлениями безопасности.
Эти рекомендации могут быть расширены в зависимости от конкретных требований безопасности вашего проекта.
Смена стандартного порта Webmin
Чтобы изменить порт Webmin через веб-интерфейс, выполните следующие шаги:
- Войдите в систему под учетной записью, имеющей права администратора, и откройте Webmin в вашем веб-браузере.
- В левой панели выберите раздел «Webmin» и затем выберите «Настройка Webmin».
- В меню «Настройка Webmin» выберите «Порт и адрес».
- Найдите опцию «Слушать на IP-адресах и портах» и выберите «Указанный port..» (если она не выбрана).
- Введите новый номер порта в поле «Указанный port..», например, «8080».
- Также измените порт на новый в поле «Слушать широковещательные запросы по UDP порту»
- Нажмите кнопку «Сохранить» для сохранения изменений.
- Перезапустите службу Webmin, чтобы применить изменения. Для этого выберите «Webmin» в левой панели, затем «Настройка Webmin» и нажмите «Перезапустить Webmin».
После выполнения этих шагов порт Webmin будет изменен на выбранный вами. Обратите внимание, что новый порт должен быть открыт в брандмауэре вашей системы и доступен извне, если вы хотите получить к Webmin удаленный доступ.
Смена пользователя root
Для смены пользователя root на нового в Webmin необходимо выполнить следующие шаги:
- Войдите в Webmin под учетной записью, имеющей права администратора.
- В левой панели выберите раздел «Webmin» и затем выберите «Пользователи Webmin».
- Найдите учетную запись «root» в списке пользователей и нажмите на ее имя.
- В настройках учетной записи «root» выберите пункт «Копировать».
- Введите новое имя пользователя в поле «Имя пользователя».
- Установите новый пароль для нового пользователя в поле «Пароль».
- Установите необходимые разрешения для нового пользователя, выбрав соответствующие опции в списке «Доступные модули Webmin».
- Нажмите кнопку «Создать» для создания новой учетной записи.
- Выходите из Webmin и заново входите под учетной записью нового пользователя, чтобы убедиться, что все работает корректно.
- Вернитесь в раздел «Пользователи Webmin» из п.2 и удалите пользователя «root».
После выполнения этих шагов вы сможете использовать новую учетную запись вместо учетной записи «root» для доступа к Webmin. Обратите внимание, что новый пользователь должен иметь достаточные права для управления вашей системой.
Установка Fail2Ban в Webmin
Для установки fail2ban вы можете воспользоваться интерфейсом webmin перейдя во вкладку Система → Менеджер ПО, затем ввести Fail2Ban в поле Пакеты из APT и нажать кнопку Устновить.
Webmin имеет веб-интерфейс для Fail2Ban. Найти панель управления Fail2Ban можно в Неиспользуемые модули → Fail2Ban Intrusion Detector.
Сразу же после установким вы можете запустить Fail2Ban в указанной панели и настроить ему запуск при старте системы
Также для установки Fail2Ban вы можеет воспользоваться командой:
apt-get install fail2ban
Для запуска службы Fail2Ban вводим следующие команды (для справки, т.к. Fail2Ban должен запуститься автоматически):
systemctl enable fail2ban
systemctl start fail2ban
Для проверки работоспособности службы Fail2Ban:
systemctl status fail2ban
Также вы можете скопировать готовые настройки Fail2Ban в файл /etc/fail2ban/jail.local:
nano /etc/fail2ban/jail.local
Удалите все старые строки из файла и скопируйте в него это содержимое:
[sshd]
enabled = true
port = ssh
maxretry = 3
findtime = 10800
bantime = 86400
action = ufw
[ssh-ddos]
enabled = true
port = ssh,sftp
filter = sshd-ddos
maxretry = 3
findtime = 10800
bantime = 86400
action = ufw
[webmin-auth]
enabled = true
port = 10000
maxretry = 3
findtime = 10800
bantime = 86400
action = ufw
[proftpd]
enabled = true
port = ftp,ftp-data,ftps,ftps-data
maxretry = 3
findtime = 10800
bantime = 86400
action = ufw
[postfix]
enabled = true
port = smtp,465,submission
logpath = /var/log/mail.log
maxretry = 5
findtime = 10800
bantime = 86400
action = ufw
[dovecot]
enabled = true
port = pop3,pop3s,imap,imaps,submission,465,sieve
logpath = /var/log/mail.log
maxretry = 5
findtime = 10800
bantime = 86400
action = ufw
[postfix-sasl]
enabled = true
port = smtp,465,submission,imap3,imaps,pop3,pop3s
logpath = /var/log/mail.log
maxretry = 5
findtime = 10800
bantime = 86400
action = ufw
Эта конфигурация защищает SSH-сервер, FTP-сервер и почтовый сервер от атак со стороны ботов. Если мы возьмем в качестве примера первый раздел (sshd), дополнительные строки, сообщают Fail2Ban, что нужно искать неудачные попытки входа в систему за последние 3 часа, и если кто-то превысит 3 неудачных попытки входа, то заблокирует IP злоумышленника на 24 часа с помощью UFW.
Вы можете поиграть с этими настройками самостоятельно и настроить Fail2Ban так, как вам нужно. А когда вы закончите настройку джейлов, активируйте их, перезапустив Fail2Ban.
service fail2ban restart
Настройка фаервола в Webmin. Отключение FirewallD и установка UFW
Вы можете сделать доступными панели Virtualmin, Webmin и Phpmyadmin только с определенных IP адресов или из определенных подстетей при помощи правил фаервола ufw (в моем случае из подстети Wireguard VPN)
Virtualmin по умолчанию использует фаервол FirewallD nftables и крайне не рекомендуется использовать фаерволы iptables и ufw совместно с virtualmin при включенном FirewallD. Использование сразу 2-х файрволлов, может привести к конфликтам и блокировке вашего сервера.
Самым простым и эффективным способом настройки фаервола я считаю отключение FirewallD и установку UFW. На мой взгляд UFW гораздо легче управлять чем FirewallD.
Останавливаем FirewallD:
service firewalld stop
FirewallD настроен на запуск при загрузке системы. Это будет конфликтовать с UFW. Итак, давайте отключим FirewallD при загрузке.
systemctl disable firewalld
Устанавливаем UFW:
apt install ufw
UFW — это программа с простым набором команд. Начать работу с UFW действительно проще, чем с iptables. После установки UFW по умолчанию выключен, и прежде чем включить его, сначала мы должны добавить правила брандмауэра или, по крайней мере, разрешить соединения через порт SSH, прежде чем включать UFW. В противном случае мы заблокируем доступ к нашему же VPS.
Давайте разрешим несколько программ, которые мы собираемся использовать. Следующие команды откроют порты 22, 80, 443, 10000 и 10050 в брандмауэре.
Закомментированные команды могут понадобиться опциаонально в зависимости от использованных вами сервисов (копия стандартных правил FirewallD)
#Основные правила
ufw allow ssh
ufw allow 'Nginx Full'
ufw allow webmin
#phpmyadmin port
ufw allow 10050/tcp
#Другие стандартные порты и сервисы webmin
#ufw allow dhcpv6-client
#ufw allow dns
#ufw allow dns-over-tls
#ufw allow ftp
#ufw allow imap
#ufw allow imaps
#ufw allow mdns
#ufw allow pop3
#ufw allow pop3s
#ufw allow smtp
#ufw allow smtp-submission
#ufw allow smtps
#ufw allow 2222/tcp
#ufw allow 20000/tcp
#ufw allow 49152:65535/tcp
Более подробную документацию по UFW смотрим тут https://www.digitalocean.com/community/tutorials/how-to-set-up-a-firewall-with-ufw-on-ubuntu-20-04-ru
Доступ по IP
Для доступа в интерфейс Virtualmin/Webmin только с определенных IP используйте следущее правило:
ufw allow from vash_ip to any port 10000
ufw allow from vash_ip to any port 10050
Также не забудьте удалить ранее созданное правило разрешающее доступ к порту 10000 и 10050:
ufw delete allow webmin
ufw delete allow 10050/tcp
Доступ из сети Wireguard VPN
Для доступа в интерфейс Virtualmin/Webmin только из локальной сети WireGuard используйте следущее правило:
ufw allow from 10.2.0.0/24 to any port 10000
ufw allow from 10.2.0.0/24 to any port 10050
Также не забудьте удалить ранее созданное правило разрешающее доступ к порту 10000 и 10050:
ufw delete allow webmin
ufw delete allow 10050/tcp
Wireguard рекомендую устанавливать из статьи по DWG и использовать сборку DWG-CLI
Сам я использую панель управления сайтами FastPanel https://openode.ru/topic/350-fastpanel-neveroyatno-bystraya-i-nadezhnaya-panel-upravleniya-saytami-rekomenduem/
VIrtualmin конечно очень хорош и функционален, но отнимает уйму в времени в освоении LEMP и LAMP, потому перешел на FastPanel которая чрезвычайно быстра и стабильна