Ukrywanie wersji WordPress, PHP i serwera – praktyczne techniki hardeningu

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ć:

  • w php.ini ustaw:
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.

KROK 1 Z 4

Z CZYM POTRZEBUJESZ POMOCY?