Jednym z pierwszych kroków w zabezpieczaniu strony WordPress jest ograniczenie informacji, jakie serwer i CMS ujawniają światu zewnętrznemu. Numery wersji WordPressa, PHP czy serwera WWW są cenną wskazówką dla botów i automatycznych skanerów podatności. Im mniej informacji ujawnia strona, tym trudniej dobrać odpowiedni wektor ataku.
Dlaczego ukrywanie wersji oprogramowania zwiększa bezpieczeństwo
Większość ataków na WordPressa jest zautomatyzowana. Boty:
- skanują strony w poszukiwaniu konkretnej wersji WordPressa,
- sprawdzają nagłówki HTTP serwera,
- analizują kod HTML w poszukiwaniu meta tagów.
Jeśli atakujący widzi konkretną wersję WordPressa lub PHP, może od razu użyć znanych luk bezpieczeństwa, bez dodatkowego rozpoznania.
Usuwanie informacji o wersji WordPress z kodu strony
WordPress domyślnie ujawnia swoją wersję w kilku miejscach.
Najważniejsze kroki:
- usunięcie meta tagu
generator,
- usunięcie wersji z plików CSS i JS,
- ukrycie wersji w RSS.
Przykład kodu:
remove_action('wp_head', 'wp_generator');
add_filter('the_generator', '__return_empty_string');
function remove_wp_version_strings($src) {
global $wp_version;
parse_str(parse_url($src, PHP_URL_QUERY), $query);
if (!empty($query['ver']) && $query['ver'] === $wp_version) {
$src = remove_query_arg('ver', $src);
}
return $src;
}
add_filter('style_loader_src', 'remove_wp_version_strings', 9999);
add_filter('script_loader_src', 'remove_wp_version_strings', 9999);
Ukrywanie wersji PHP w nagłówkach HTTP
PHP często ujawnia swoją wersję w nagłówku X-Powered-By.
Aby to wyłączyć:
expose_php = Off
Jeśli nie masz dostępu do php.ini, możesz spróbować:
php_flag expose_php Off
w pliku .htaccess (jeśli serwer na to pozwala).
Ukrywanie informacji o serwerze (Apache / Nginx / LiteSpeed)
Serwer WWW również ujawnia swoją wersję w nagłówkach.
Apache
W pliku konfiguracyjnym:
ServerSignature Off
ServerTokens Prod
Nginx
W konfiguracji:
server_tokens off;
Po zmianach zawsze wykonaj restart serwera.
Sprawdzanie nagłówków HTTP po wprowadzeniu zmian
Po zastosowaniu hardeningu warto sprawdzić, czy dane faktycznie nie są ujawniane.
Możesz użyć:
curl -I https://twojadomena.pl
Nagłówki nie powinny zawierać:
- wersji PHP,
- wersji serwera,
- informacji o WordPressie.
Ukrywanie wersji WordPressa w REST API
WordPress REST API również może ujawniać informacje o wersji systemu.
Przykład:
add_filter('rest_endpoints', function ($endpoints) {
if (isset($endpoints['/wp/v2'])) {
unset($endpoints['/wp/v2']);
}
return $endpoints;
});
Uwaga: stosuj to tylko wtedy, gdy nie korzystasz z REST API w frontendzie lub aplikacjach zewnętrznych.
Ukrywanie wersji WordPressa przed skanerami bezpieczeństwa
Automatyczne skanery sprawdzają:
- pliki
readme.html,
- odpowiedzi 404,
- katalogi systemowe.
Zalecane działania:
- usuń
readme.html,
- zablokuj dostęp do plików konfiguracyjnych,
- wyłącz listowanie katalogów.
Czy ukrywanie wersji wystarczy do zabezpieczenia WordPressa
Ukrywanie wersji to element hardeningu, nie pełne zabezpieczenie.
Nie zastąpi:
- aktualizacji systemu,
- silnych haseł,
- zabezpieczeń logowania,
- monitoringu plików.
Jednak znacząco ogranicza ataki automatyczne i masowe skanowanie podatności.
Najczęstsze błędy przy hardeningu WordPressa
- poleganie wyłącznie na ukrywaniu wersji,
- ukrywanie wersji bez aktualizacji systemu,
- wyłączanie REST API bez analizy skutków,
- stosowanie fragmentów kodu bez testów.
Hardening powinien być przemyślany i testowany.
Podsumowanie
Ukrywanie wersji WordPressa, PHP i serwera to prosta, ale skuteczna technika ograniczania powierzchni ataku. W połączeniu z aktualizacjami, monitoringiem i kontrolą dostępu pozwala znacząco zwiększyć bezpieczeństwo strony i utrudnić pracę automatycznym botom.