Что умеет WardPane 2.0
WardPane 2.0 размещает статические, PHP и Node.js сайты, сам выпускает сертификаты и работает с Cloudflare. Защита и управление трафиком настраиваются для каждого сайта и работают внутри веб-сервера. В большинстве из восьми панелей со страницы сравнения для этого нужен ModSecurity или платное дополнение.
Для новичков и для опытных администраторов
Новичку достаточно одной команды: сертификаты выпускаются сами, сайты работают в песочницах, а настройки объяснены простыми словами. Опытному администратору доступны все параметры, терминал в браузере, PM2 на владельца, .htaccess, правила каждого сайта в известном порядке, Cloudflare API, экспорт и импорт, контрольные суммы выпусков и исходный код.
Хостинг
Папки сайтов устроены как в ISPmanager, и у каждого сайта есть владелец, пользователь Linux. Запросы на портах 80 и 443 обслуживает сам WardPane.
- Сайты и псевдонимы
- Сайт состоит из домена и до 99 псевдонимов (сертификат Let's Encrypt вмещает не больше 100 имён). Псевдоним отдаёт основной сайт или, если у него есть своя папка, эту папку. Сайтам можно дать отображаемое имя.
- Схема владельцев
- Файлы лежат в /var/www/<owner>/data/www/<domain>, журналы и временные файлы рядом. Владелец по умолчанию www-root: пользователь Linux, которого создаёт WardPane. Сайты из 1.x остаются в своих прежних папках.
- Три обработчика
- Без обработчика (статический хостинг), PHP или Node.js: выбирается для каждого сайта и меняется в любой момент. Настройки других обработчиков сохраняются, поэтому при возврате они восстанавливаются.
- Статические файлы
- Режим SPA (неизвестные пути ведут на index.html), своя страница 404.html, строгие ETag и докачка, перенаправление с HTTP на HTTPS и символические ссылки, которые никогда не выходят за пределы папки сайта.
- Среды выполнения
- Панель показывает версии PHP, установленные на сервере, и поддерживаемые основные версии Node.js: 20, 22, 24 и 26, по умолчанию 24 (поддержка 20 закончилась в апреле 2026 года). Сборки Node.js берутся с nodejs.org и сверяются с опубликованными суммами SHA256.
- Меню у каждого сайта
- В каждой строке таблицы сайтов есть меню со всеми действиями для этого сайта. Переключатель в строке выключает сайт и включает его обратно, ничего не удаляя.
- Терминал в браузере
- Терминал открывается в панели: оболочка root в сеансе root или оболочка владельца сайта в папке сайта. Для сайтов на Node.js в нём работают pm2 list и pm2 restart.
- Экспорт и импорт
- Все сайты со всеми настройками и общий чёрный список попадают в один файл JSON. Импорт объединяет или заменяет данные, сначала проверяет весь файл и никогда не трогает файлы в /var/www.
PHP и Node.js
Каждый динамический сайт работает от своего пользователя Linux в песочнице systemd. Сломанный или взломанный сайт не прочитает файлы соседей.
- Свой пул php-fpm у каждого сайта
- Пул, opcache и сессии у сайтов не общие. Код PHP может только читать; писать можно в tmp/, logs/, data/ и указанные вами папки, а PHP-файлы из этих папок не исполняются.
- Строгая песочница PHP
- Вся файловая система доступна только для чтения и смонтирована с noexec, кроме самого php-fpm, задан open_basedir, отключены exec, system, shell_exec, proc_open, popen и putenv, системные вызовы фильтруются.
- .htaccess без Apache
- Правила перезаписи, перенаправления, правила доступа, Basic auth, заголовки и кеширование из реальных сайтов работают как есть: WordPress, Laravel и обычные перенаправления на HTTPS и www. Строки, которые применить нельзя, панель показывает отдельно.
- Node.js с PM2
- Выберите основную версию Node.js, npm-скрипт или файл запуска, переменные окружения и лимиты. Приложения запускает один демон PM2 на владельца, поэтому pm2 работает из терминала владельца.
- Прокси перед приложением
- Файлы из public/ при желании отдаются напрямую, остальное уходит в приложение с настоящим IP посетителя в X-Forwarded-For и X-Real-IP. WebSocket-соединения проходят после тех же проверок защиты.
- Перезапуск, npm install и журналы
- На вкладке «Обработчик» есть кнопки перезапуска и npm install (npm ci, если есть lock-файл), журналы вывода, ошибок и установки и список скриптов из package.json.
Сертификаты и Cloudflare
Сертификаты выпускаются и продлеваются без ручных шагов, в том числе для сайтов за Cloudflare.
- Let's Encrypt полностью автоматически
- Один сертификат на сайт со всеми его псевдонимами, продление, когда остаётся треть срока. Имена, чей DNS не указывает на сервер, пропускаются и добавляются, как только начнут указывать, а панель показывает причину.
- IPv6 тоже проверяется
- Let's Encrypt сначала пробует IPv6, поэтому каждая AAAA-запись должна указывать на сервер. WardPane проверяет их до того, как заказать сертификат.
- Сертификат для IP
- IP сервера получает краткосрочный сертификат, который продлевается каждые несколько дней. Панель по адресу https://<ip>:1500 открывается без предупреждения.
- Лимиты Let's Encrypt
- Панель не заказывает повторный сертификат, сообщает обо всех неудачных именах заказа сразу, после каждой ошибки ждёт дольше и заменяет деактивированный аккаунт ACME.
- Токен Cloudflare в один щелчок
- Кнопка «Создать токен Cloudflare» открывает Cloudflare с уже заполненными нужными правами. Вставьте токен обратно, и панель сможет проверять и исправлять зоны ваших сайтов.
Защита
У каждого сайта свои проверки. Они работают внутри веб-сервера, до того как запрос увидят PHP или Node.js. Адрес банится только за явную атаку.
- Лимит запросов и баны
- По умолчанию каждый адрес может отправить 150 запросов за 10 секунд. Сверх лимита адрес получает 404 и бан на заданное вами число минут. IPv6-посетители считаются и банятся по своей сети /64, так что смена адреса не помогает. У каждого сайта есть белый список.
- Bot Fight
- Блокирует ИИ-краулеры, SEO-краулеры, сканеры уязвимостей, скрипты и headless-браузеры, пустой User-Agent и ваш собственный список. Поисковики и превью ссылок блокируются, только если вы их выберете. Сервисы мониторинга и RSS-читалки он не трогает.
- Пробы и атаки в URL
- Запросы к /.env, /.git, /wp-login.php и похожим именам, которых на сайте нет, банят адрес. Явные SQL-инъекции, XSS, обход пути и Log4Shell в URL приводят к бану; неоднозначные случаи лишь отклоняют этот запрос.
- Обнаружение сканирования
- Много промахов подряд (по умолчанию 25 за 60 секунд) похоже на gobuster или ffuf, и адрес банится. Отсутствующая картинка считается за десятую часть промаха, поэтому старая страница с битыми картинками не сойдёт за сканирование.
- Проверенные краулеры
- Google, Bing, DuckDuckGo, Apple, OpenAI, Anthropic, Perplexity и Ahrefs публикуют свои диапазоны IP. WardPane ежедневно загружает их и банит любого, кто выдаёт себя за одного из них с другого адреса. Эти краулеры можно и заблокировать по IP, даже если они прячутся за User-Agent браузера.
- Публичные списки IP
- Spamhaus DROP, FireHOL level 1 и blocklist.de обновляются ежедневно и включаются для сайта одним переключателем.
- Гео с группами
- Разрешайте или запрещайте страны по одной или группами: бывший СССР, СНГ, ЕАЭС, ЕС, ЕЭЗ, Шенген, НАТО, G7, G20, ОЭСР, БРИКС, ШОС, АСЕАН, Лига арабских государств, МЕРКОСУР, континенты и другие. Добавляйте исключения и смотрите итоговый список стран.
- Сети хостингов и номера AS
- Блокируйте запросы из AWS, Azure, Google Cloud, Hetzner, OVH, DigitalOcean, Vultr и других облаков, откуда идёт большая часть автоматического трафика, или из любых указанных вами номеров AS.
- Фильтр по языку
- Разрешайте или запрещайте по языку браузера. Для запросов вообще без языка есть отдельный переключатель. Язык дополняет страну, например когда посетитель за VPN.
- Устройства
- Пропускайте только Windows, macOS, Linux, Android, iOS или другие выбранные системы. Так отсеиваются клиенты, не похожие на обычный браузер.
- Только по ссылке
- Обязательные параметры URL: сайт открывается только тем, кто пришёл по вашей ссылке, например ?ref=metaads из рекламы. Подписанная cookie и, по желанию, IP посетителя сохраняют за ним доступ. Пути для вебхуков и платёжных уведомлений остаются открытыми.
- Пароль
- Вход через HTTP Basic для черновиков и тестовых копий сайта. Пароли хранятся как хеши scrypt и проверяются вне основного потока, после всех остальных фильтров.
- Защита от хотлинка
- Чужие сайты не смогут вставлять ваши картинки и файлы. Выберите расширения, разрешённые сайты (работают маски) и что делать с запросами без Referer.
- Заголовки безопасности
- X-Frame-Options, Referrer-Policy, HSTS с includeSubDomains и preload, Content-Security-Policy и Permissions-Policy для каждого сайта.
- Ловушка
- Путь, запрещённый в robots.txt. Человек его не откроет, поэтому тот, кто его запросил, сразу получает бан.
- Свои страницы блокировки
- Ваша страница и код ответа (404, 403 или 200) для блокировок по устройствам, ботам, гео и ссылке, с заголовком no-store.
- Общий чёрный список
- Адреса и сети, заблокированные на всех сайтах, хранятся на диске и сохраняются после перезапусков. Список действует даже там, где у сайта защита выключена.
Управление трафиком
Для каждого сайта вы решаете, кого пускать и что показать заблокированному посетителю. Правила применяются в порядке, приведённом ниже.
Порядок проверок для каждого запроса
- Cloudflare: настоящий IP посетителя, режим «только через Cloudflare»
- Общий чёрный список, затем белый список сайта
- Лимит запросов и действующие баны
- Bot Fight: User-Agent, проверенные краулеры, списки IP, пробы, атаки в URL, сканирование, ловушка
- Гео: страны и группы, сети хостингов, номера AS, язык браузера
- Устройства
- Заголовки безопасности и защита от хотлинка
- Только по ссылке
- Пароль
- Правила .htaccess, затем обработчик: файлы, PHP или Node.js
- Настоящий IP с учётом Cloudflare
- Адрес посетителя берётся из CF-Connecting-IP, только если соединение действительно пришло от Cloudflare. Список сетей ежедневно обновляется с cloudflare.com.
- Только через Cloudflare
- Прямые запросы на IP сервера получают 404, поэтому никто не обойдёт CDN и его правила.
- Если переключатель выключен
- Сайт за Cloudflare, не отмеченный как таковой, никогда не банит адреса Cloudflare и даёт каждому серверу Cloudflare в десять раз больший лимит. Журнал подсказывает, как это исправить.
- Cloudflare Workers
- Запросы от Worker считаются по его зоне с обычными лимитами и банами; Worker вашей собственной зоны считается частью Cloudflare.
- Коды страницы блокировки
- Выберите 404, чтобы адрес выглядел пустым, 403, чтобы сообщить об отказе, или 200 со своей страницей. Превысившие лимит и забаненные клиенты всегда получают простую 404.
- Ответы, безопасные для кеша
- Ответы, зависящие от пропуска по ссылке, получают Cache-Control: private и Vary: Cookie, поэтому CDN никогда не отдаст их тому, у кого нет ссылки.
Безопасность панели
Панель работает от непривилегированного пользователя wardpane, а у её страницы входа свои лимиты против перебора паролей.
- Вход под root
- При желании можно входить под root с паролем root сервера. Его проверяет unix_chkpwd через небольшой помощник с правами root, доступный по сокету, который может открыть только панель. По умолчанию выключено.
- Защита от перебора
- 5 неудачных попыток блокируют адрес (для IPv6 его сеть /64) на 15 минут, а 50 блокируют его /48. Волна неудачных попыток с множества адресов закрывает вход для незнакомых адресов на 5 минут. Адреса, с которых входили за последние 30 дней, продолжают работать.
- Белый список IP
- Если задан PANEL_ALLOW_IPS, панель вообще не отвечает другим адресам. Список, который отрезал бы адрес, с которого вы работаете, она не примет.
- Изоляция помощника root
- Панель записывает желаемое состояние, а помощник с правами root, запущенный systemd, заново проверяет каждое значение, прежде чем создавать пользователей, папки и юниты.
- PHP и Node.js в песочнице
- Отдельные пользователи Linux для каждого сайта, система только для чтения, свой /tmp, запрет новых привилегий, лимиты памяти и CPU, по желанию запрет исходящих соединений.
- Контрольные суммы выпусков
- Каждый архив публикуется со своей контрольной суммой SHA-256 и содержит полный исходный код. Установщик скачивает его по HTTPS и сверяет SHA-256, прежде чем что-либо запускать.
- Обновления можно отменить
- Каждое обновление создаёт резервную копию со скриптом восстановления, проверяет, что новая версия запускается, и само откатывается, если она не запустилась.
- Восстановление доступа
- Если вы заблокировали себе доступ, одна команда на сервере сбрасывает вход в панель и список разрешённых IP и снимает блокировки входа.
Попробуйте на свободном сервере
Установка на чистую Ubuntu 24.04 занимает несколько минут.