Co robi WardPane 2.0
WardPane 2.0 hostuje strony statyczne, PHP i Node.js z automatycznymi certyfikatami i obsługą Cloudflare. Ochrona i kontrola ruchu działają osobno dla każdej strony wewnątrz serwera WWW. W większości z ośmiu paneli ze strony porównania zapewnia je ModSecurity albo płatny dodatek.
Dla początkujących i dla doświadczonych administratorów
Początkujący dostają jedno polecenie do instalacji, certyfikaty, które wystawiają się same, strony w piaskownicach i ustawienia wyjaśnione prostymi słowami. Doświadczeni administratorzy dostają każdą opcję, terminal w przeglądarce, PM2 na właściciela, .htaccess, reguły każdej strony w znanej kolejności, Cloudflare API, eksport i import, sumy kontrolne wydań i kod źródłowy.
Hosting
Strony są rozmieszczone w układzie podobnym do ISPmanager, należą do użytkownika Linux i są serwowane przez sam WardPane na portach 80 i 443.
- Strony i aliasy
- Strona to domena plus do 99 aliasów (certyfikat Let's Encrypt mieści najwyżej 100 nazw). Alias serwuje stronę główną lub, jeśli ma własny folder, ten folder. Strony mogą mieć nazwę wyświetlaną.
- Układ według właścicieli
- Pliki znajdują się w /var/www/<owner>/data/www/<domain>, a logi i pliki tymczasowe obok nich. Domyślnym właścicielem jest www-root, użytkownik Linux tworzony przez WardPane. Strony z 1.x zachowują swoje dotychczasowe foldery.
- Trzy handlery
- Bez handlera (hosting statyczny), PHP lub Node.js, wybierane dla każdej strony i zmieniane w dowolnym momencie. Ustawienia pozostałych handlerów są zachowywane, więc powrót je przywraca.
- Pliki statyczne
- Tryb SPA (nieznane ścieżki trafiają do index.html), własny 404.html, silne ETagi ze wznawianiem pobierania, przekierowanie z HTTP na HTTPS i dowiązania symboliczne, które nigdy nie wyjdą poza folder strony.
- Środowiska uruchomieniowe
- Panel pokazuje wersje PHP zainstalowane na serwerze oraz obsługiwane główne wersje Node.js: 20, 22, 24 i 26, domyślnie 24 (wsparcie dla 20 zakończyło się w kwietniu 2026). Kompilacje Node.js pochodzą z nodejs.org i są sprawdzane z opublikowanymi sumami SHA256.
- Menu przy każdej stronie
- Każdy wiersz tabeli stron ma menu ze wszystkimi działaniami dla tej strony, a przełącznik wyłącza stronę i włącza ją z powrotem bez usuwania czegokolwiek.
- Powłoka w przeglądarce
- Terminal bezpośrednio w panelu: powłoka roota w sesji roota albo powłoka właściciela strony w jej folderze. Działają w nim pm2 list i pm2 restart dla stron Node.js.
- Eksport i import
- Każda strona ze wszystkimi ustawieniami oraz globalna czarna lista trafiają do jednego pliku JSON. Import scala lub zastępuje, najpierw sprawdza cały plik i nigdy nie dotyka plików w /var/www.
PHP i Node.js
Każda dynamiczna strona działa jako osobny użytkownik Linux w piaskownicy systemd. Uszkodzona lub zhakowana strona nie może czytać swoich sąsiadów.
- Pula php-fpm dla każdej strony
- Bez wspólnej puli, bez wspólnego opcache i sesji. Kod jest dla PHP tylko do odczytu; PHP może zapisywać wyłącznie w tmp/, logs/, data/ i wskazanych przez Ciebie folderach, i nigdy nie jest z nich uruchamiane.
- Ścisła piaskownica PHP
- Cały system plików jest tylko do odczytu i noexec poza samym php-fpm, ustawiony jest open_basedir, wyłączone są exec, system, shell_exec, proc_open, popen i putenv, a wywołania systemowe są filtrowane.
- .htaccess bez Apache
- Reguły przepisywania, przekierowania, reguły dostępu, Basic auth, nagłówki i cache z prawdziwych stron działają bez zmian: WordPress, Laravel i typowe przekierowania na HTTPS i www. Linie, których nie da się zastosować, są pokazywane, a nie zgadywane.
- Node.js z PM2
- Wybierz główną wersję Node.js, skrypt npm lub plik startowy, zmienne środowiskowe i limity. Aplikacje uruchamia jeden demon PM2 na właściciela, więc pm2 działa z powłoki właściciela.
- Proxy przed aplikacją
- Pliki z public/ mogą być serwowane bezpośrednio, a reszta trafia do aplikacji z prawdziwym IP odwiedzającego w X-Forwarded-For i X-Real-IP. WebSockety przechodzą po tych samych kontrolach ochrony.
- Restart, npm install i logi
- Karta Handler ma przyciski restartu i npm install (npm ci, gdy jest plik lockfile), logi wyjścia, błędów i instalacji oraz skrypty z package.json do wyboru.
Certyfikaty i Cloudflare
Certyfikaty są wystawiane i odnawiane bez ręcznych kroków, także dla stron za Cloudflare.
- Let's Encrypt, w pełni automatycznie
- Jeden certyfikat na stronę ze wszystkimi jej aliasami, odnawiany, gdy zostaje trzecia część okresu ważności. Nazwy, których DNS nie wskazuje na serwer, są pomijane i dodawane, gdy zacznie wskazywać, a panel pokazuje dlaczego.
- IPv6 też sprawdzane
- Let's Encrypt najpierw próbuje IPv6, więc każdy rekord AAAA musi wskazywać na serwer. WardPane sprawdza je, zanim zamówi certyfikat.
- Certyfikat dla IP
- IP serwera dostaje krótkoterminowy certyfikat odnawiany co kilka dni. Panel pod https://<ip>:1500 otwiera się bez ostrzeżenia.
- Limity Let's Encrypt
- Panel nie zamawia drugi raz tego samego certyfikatu, zgłasza wszystkie nieudane nazwy zamówienia naraz, po każdym błędzie czeka dłużej i zastępuje dezaktywowane konto ACME.
- Token Cloudflare jednym kliknięciem
- Przycisk Utwórz token Cloudflare otwiera Cloudflare z już wypełnionymi właściwymi uprawnieniami. Wklej token z powrotem, a panel będzie mógł sprawdzać i poprawiać strefy Twoich stron.
Ochrona
Każda strona ma własne kontrole, które działają wewnątrz serwera WWW, zanim PHP lub Node.js zobaczą żądanie. Adres jest blokowany tylko za wyraźny atak.
- Limit żądań i blokady
- Domyślnie każdy adres może wysłać 150 żądań w 10 sekund. Po przekroczeniu limitu dostaje 404 i blokadę na ustawioną liczbę minut. Odwiedzający przez IPv6 są liczeni i blokowani według swojej /64, więc zmiana adresu nie pomaga. Każda strona ma listę dozwolonych adresów.
- Bot Fight
- Blokuje crawlery AI, crawlery SEO, skanery podatności, skrypty i przeglądarki headless, puste user agenty i Twoją własną listę. Wyszukiwarki i podglądy linków tylko, jeśli tak wybierzesz. Monitoring i czytniki RSS są pozostawiane w spokoju.
- Sondy i ładunki
- Żądania o /.env, /.git, /wp-login.php i podobne nazwy, które nie istnieją na stronie, blokują adres. Oczywiste ładunki SQL injection, XSS, path traversal i Log4Shell w URL powodują blokadę; niejednoznaczne tylko odrzucają to jedno żądanie.
- Wykrywanie skanowania
- Wiele chybień z rzędu (domyślnie 25 w 60 sekund) wygląda jak gobuster lub ffuf i blokuje adres. Brakujący obrazek liczy się jako jedna dziesiąta chybienia, więc stara strona z uszkodzonymi obrazkami to nie skanowanie.
- Zweryfikowane crawlery
- Google, Bing, DuckDuckGo, Apple, OpenAI, Anthropic, Perplexity i Ahrefs publikują swoje zakresy IP. WardPane pobiera je codziennie i blokuje każdego, kto podaje się za jednego z nich z innego adresu. Możesz też blokować te crawlery po IP, nawet gdy ukrywają się za user agentem przeglądarki.
- Publiczne listy IP
- Spamhaus DROP, FireHOL level 1 i blocklist.de, odświeżane codziennie, włączane dla każdej strony jednym przełącznikiem.
- Geo z grupami
- Zezwalaj na kraje lub je blokuj pojedynczo albo grupami: byłe ZSRR, WNP, EUG, UE, EOG, strefa Schengen, NATO, G7, G20, OECD, BRICS, SOW, ASEAN, Liga Państw Arabskich, Mercosur, kontynenty i inne. Dodaj wyjątki i zobacz końcową listę krajów.
- Sieci hostingowe i numery AS
- Blokuj żądania z AWS, Azure, Google Cloud, Hetzner, OVH, DigitalOcean, Vultr i innych chmur, skąd pochodzi większość automatyzacji, albo z dowolnego podanego numeru AS.
- Filtr języka
- Zezwalaj lub blokuj według języka przeglądarki, z osobnym przełącznikiem dla żądań, które nie wysyłają żadnego języka. Przydatny dodatkowy sygnał obok kraju, na przykład za VPN.
- Urządzenia
- Wpuszczaj tylko Windows, macOS, Linux, Android, iOS lub inne, jako filtr dla zwykłych przeglądarek.
- Tylko z linkiem
- Wymagane parametry URL: strona otwiera się tylko dla osób, które przyszły z Twoim linkiem, na przykład ?ref=metaads z reklamy. Podpisane ciasteczko i opcjonalnie IP odwiedzającego utrzymują dostęp. Ścieżki dla webhooków i powiadomień o płatnościach pozostają otwarte.
- Hasło
- Logowanie HTTP Basic dla wersji roboczych i testowych kopii strony. Hasła są przechowywane jako skróty scrypt i sprawdzane poza głównym wątkiem, po wszystkich innych filtrach.
- Ochrona przed hotlinkowaniem
- Inne strony nie mogą osadzać Twoich obrazów i plików. Wybierz rozszerzenia, dozwolone strony (działają symbole wieloznaczne) i co robić z żądaniami bez nagłówka Referer.
- Nagłówki bezpieczeństwa
- X-Frame-Options, Referrer-Policy, HSTS z includeSubDomains i preload, Content-Security-Policy i Permissions-Policy dla każdej strony.
- Honeypot
- Ścieżka, której zabrania robots.txt. Człowiek jej nie otworzy, więc każdy, kto o nią poprosi, zostaje od razu zablokowany.
- Własne strony blokady
- Twoja własna strona i kod statusu (404, 403 lub 200) dla blokad urządzeń, botów, geo i trybu tylko z linkiem, serwowane z no-store.
- Globalna czarna lista
- Adresy i sieci blokowane na każdej stronie, zapisane na dysku i zachowywane po restartach. Działa nawet tam, gdzie strona ma wyłączoną ochronę.
Kontrola ruchu
Zdecyduj, kto dociera do każdej strony, w jakiej kolejności działają reguły i co widzi zablokowany odwiedzający.
Kolejność kontroli przy każdym żądaniu
- Cloudflare: prawdziwy IP odwiedzającego, tylko przez Cloudflare
- Globalna czarna lista, potem lista dozwolonych adresów strony
- Limit żądań i aktywne blokady
- Bot Fight: user agenty, zweryfikowane crawlery, listy IP, sondy, ładunki, skanowanie, honeypot
- Geo: kraje i grupy, sieci hostingowe, numery AS, język przeglądarki
- Urządzenia
- Nagłówki bezpieczeństwa i ochrona przed hotlinkowaniem
- Tylko z linkiem
- Hasło
- Reguły .htaccess, potem handler: pliki, PHP lub Node.js
- Prawdziwy IP z uwzględnieniem Cloudflare
- Adres odwiedzającego jest brany z CF-Connecting-IP tylko wtedy, gdy połączenie naprawdę pochodzi z Cloudflare. Lista sieci jest odświeżana codziennie z cloudflare.com.
- Tylko przez Cloudflare
- Bezpośrednie żądania na IP serwera dostają 404, więc nikt nie pominie CDN i jego reguł.
- Gdy przełącznik jest wyłączony
- Strona za Cloudflare, która nie jest tak oznaczona, nigdy nie blokuje adresów Cloudflare i dostaje dziesięć razy wyższy limit na każdy serwer Cloudflare. Log podpowiada poprawkę.
- Cloudflare Workers
- Żądania z Workera są liczone według jego strefy, ze zwykłymi limitami i blokadami; Worker Twojej własnej strefy jest traktowany jak Cloudflare.
- Kody stron blokady
- Użyj 404, aby adres wyglądał na pusty, 403, aby powiedzieć, że żądanie jest odrzucone, albo 200 z własną stroną. Klienci przekraczający limit i zablokowani zawsze dostają zwykłe 404.
- Odpowiedzi bezpieczne dla cache
- Odpowiedzi zależne od przepustki z linku dostają Cache-Control: private i Vary: Cookie, więc CDN nigdy nie przekaże ich komuś bez linku.
Bezpieczeństwo panelu
Panel działa jako nieuprzywilejowany użytkownik wardpane, a jego strona logowania ma własne limity przeciw brute force.
- Logowanie jako root
- Opcjonalnie możesz logować się jako root hasłem roota serwera. Sprawdza je unix_chkpwd za pośrednictwem małego pomocnika z uprawnieniami roota, na gnieździe, które może otworzyć tylko panel. Domyślnie wyłączone.
- Limity przeciw brute force
- 5 nieudanych prób blokuje adres (w IPv6 jego sieć /64) na 15 minut, a 50 nieudanych prób blokuje jego /48. Fala nieudanych prób z wielu adresów zamyka logowanie dla nieznanych adresów na 5 minut. Adresy, z których logowano się w ciągu ostatnich 30 dni, nadal działają.
- Lista dozwolonych IP
- Gdy ustawiono PANEL_ALLOW_IPS, panel w ogóle nie odpowiada innym adresom. Odrzuca listę, która odcięłaby adres, z którego właśnie korzystasz.
- Izolacja pomocnika roota
- Panel zapisuje pożądany stan; pomocnik z uprawnieniami roota uruchamiany przez systemd ponownie sprawdza każdą wartość, zanim utworzy użytkowników, foldery i jednostki.
- PHP i Node.js w piaskownicy
- Osobni użytkownicy Linux dla każdej strony, system tylko do odczytu, prywatny /tmp, brak nowych uprawnień, limity pamięci i CPU oraz opcjonalnie brak połączeń wychodzących.
- Sumy kontrolne wydań
- Każde archiwum jest publikowane razem z sumą kontrolną SHA-256 i zawiera pełny kod źródłowy. Instalator pobiera je przez HTTPS i sprawdza SHA-256, zanim cokolwiek uruchomi.
- Aktualizacje, które można cofnąć
- Każda aktualizacja tworzy kopię zapasową ze skryptem przywracania, sprawdza, czy nowa wersja się uruchamia, a jeśli nie, sama się wycofuje.
- Odzyskiwanie dostępu
- Jeśli zablokujesz sobie dostęp, jedno polecenie na serwerze resetuje logowanie do panelu i listę dozwolonych IP oraz zdejmuje blokady logowania.
Wypróbuj na zapasowym serwerze
Instalacja na czystym Ubuntu 24.04 zajmuje kilka minut.