Zabezpieczenie WordPress. Checklist dla administratora
Hardening WordPress od podstaw: aktualizacje, 2FA, nagłówki bezpieczeństwa, uprawnienia plików, wp-login, XML-RPC, REST API i monitoring. Konkretne komendy i konfiguracje.

WordPress napędza ponad 40% stron w internecie. To czyni go najczęstszym celem ataków, nie dlatego, że jest niebezpieczny, ale dlatego, że jest popularny. Większość włamań wynika z zaniedbań administratora, nie z luk w samym WordPressie.
Poniżej znajdziesz konkretne kroki zabezpieczenia instalacji WordPress, które stosuję u każdego klienta.
1. Aktualizacje, pierwszy i najważniejszy krok
Ponad 50% włamań na WordPressa wynika z nieaktualnych wtyczek. Gdy twórca wtyczki łata lukę i publikuje aktualizację, informacja o podatności staje się publiczna. Boty zaczynają skanować internet w poszukiwaniu niezaktualizowanych instalacji w ciągu godzin.
# Sprawdź dostępne aktualizacje
wp core check-update
wp plugin list --update=available
wp theme list --update=available
# Zaktualizuj wszystko
wp core update
wp plugin update --all
wp theme update --all
Rekomendacja: Automatyczne aktualizacje dla mniejszych wtyczek. Duże wtyczki (WooCommerce, Elementor) aktualizuj ręcznie po przetestowaniu na stagingu.
2. Silne dane logowania
- Login administratora: zmień z
adminna coś unikalnego - Hasło: minimum 16 znaków, generowane losowo (np. przez menedżer haseł)
- Nie używaj tego samego hasła do wp-admin, FTP, bazy danych i panelu hostingowego
# Zmiana hasła przez WP-CLI
wp user update admin --user_pass="$(openssl rand -base64 24)"
3. Dwuskładnikowe uwierzytelnianie (2FA)
2FA eliminuje 99% ataków brute-force. Nawet jeśli ktoś pozna hasło, nie wejdzie bez kodu z telefonu.
Rekomendowane wtyczki:
- Two-Factor (oficjalna, minimalistyczna)
- WP 2FA (więcej opcji, wymuszanie na użytkownikach)
Obsługiwane metody: TOTP (Google Authenticator, Authy), klucze sprzętowe (YubiKey), kody zapasowe.
4. Ograniczenie dostępu do wp-login.php
Limit prób logowania
# Zainstaluj wtyczkę Limit Login Attempts Reloaded
wp plugin install limit-login-attempts-reloaded --activate
Zmiana URL logowania (opcjonalnie)
# WPS Hide Login, zmienia /wp-login.php na własny adres
wp plugin install wps-hide-login --activate
Ograniczenie po IP (jeśli masz stałe IP)
W .htaccess:
<Files wp-login.php>
Order Deny,Allow
Deny from all
Allow from 123.45.67.89
</Files>
5. Wyłączenie XML-RPC
XML-RPC to stary interfejs API WordPressa, który jest najczęstszym wektorem ataków brute-force i DDoS. Jeśli nie używasz aplikacji mobilnej WordPress lub Jetpacka, wyłącz go:
W .htaccess:
<Files xmlrpc.php>
Order Deny,Allow
Deny from all
</Files>
Lub w functions.php:
add_filter('xmlrpc_enabled', '__return_false');
6. Uprawnienia plików i katalogów
# Katalogi: 755
find /var/www/wordpress -type d -exec chmod 755 {} \;
# Pliki: 644
find /var/www/wordpress -type f -exec chmod 644 {} \;
# wp-config.php: 600 (tylko właściciel)
chmod 600 wp-config.php
# .htaccess: 644
chmod 644 .htaccess
wp-config.php z uprawnieniami 600 jest czytelny tylko przez serwer WWW. Nikt inny na serwerze nie odczyta haseł do bazy danych.
7. Nagłówki bezpieczeństwa
Dodaj do .htaccess lub konfiguracji serwera:
Header set X-Content-Type-Options "nosniff"
Header set X-Frame-Options "SAMEORIGIN"
Header set X-XSS-Protection "1; mode=block"
Header set Referrer-Policy "strict-origin-when-cross-origin"
Header set Permissions-Policy "camera=(), microphone=(), geolocation=()"
8. Wyłączenie edytora plików w panelu
WordPress ma wbudowany edytor plików motywów i wtyczek. Jeśli ktoś przejmie konto admina, może edytować PHP bezpośrednio z przeglądarki. Wyłącz to:
// wp-config.php
define('DISALLOW_FILE_EDIT', true);
9. Ukrycie wersji WordPress
Informacja o wersji WordPress w meta tagach i nagłówkach RSS ułatwia atakującym dobranie exploita:
// functions.php
remove_action('wp_head', 'wp_generator');
10. Monitoring i skanowanie
Regularne skanowanie strony pod kątem złośliwego kodu i nieautoryzowanych zmian. Narzędzia:
- Wordfence: firewall + skaner malware (darmowa wersja wystarczy)
- WP-CLI checksum: weryfikacja integralności plików core:
wp core verify-checksums
wp plugin verify-checksums --all
Jeśli wynik zawiera Warning: File was modified, ktoś zmienił pliki WordPress. Zbadaj lub przywróć z backupu.
Podsumowanie, checklist
- WordPress, wtyczki i motywy zaktualizowane
- Silne, unikalne hasło + 2FA na koncie admina
- Limit prób logowania aktywny
- XML-RPC wyłączony
- Uprawnienia plików: 644/755, wp-config.php: 600
- Edytor plików w panelu wyłączony
- Nagłówki bezpieczeństwa skonfigurowane
- Nieużywane wtyczki i motywy usunięte (nie dezaktywowane, usunięte)
- Regularne skanowanie malware
- Backup automatyczny, offsite, testowany
Potrzebujesz pomocy?
Mogę zająć się tym za Ciebie — bezpiecznie, z backupem i bez przestojów.
Napisz do mnie