Jak zabezpieczyć WordPress?

Strona internetowa to często bezpośrednie źródło dochodu, np. sklep internetowy, blog lub strona firmowa reklamująca nasze usługi. Bardzo ważnym aspektem jest więc odpowiednie zabezpieczenie witryny przed atakami oraz wyciekiem danych naszych klientów. Aby dobrze zabezpieczyć stronę na WordPress, warto znać sposoby, na jakie strony www są hackowane, a także wiedzieć, jakie są słabe punkty WordPress’a.

Najczęściej występujące główne drogi udanych prób włamania to:

  • luka w platformie hostingowej
  • za pośrednictwem “dziurawych” szablonów WordPress
  • “dziurawe” wtyczki WordPress
  • słabe dane logowania

Co więc możemy zrobić, aby wzmocnić te “słabe punkty” naszej strony internetowej?

Zastosowanie poniższych środków bezpieczeństwa może znacznie poprawić ochronę przed większością ataków, ale trzeba sobie też zdawać sprawę z faktu, że praktycznie nie ma systemu nie do złamania.

Bezpieczny komputer

Bezpieczeństwo Twojej strony internetowej zaczyna się od sprzętu, z którego korzystasz. Jeśli Twój komputer jest zainfekowany, może to wpłynąć na Twoje działania w sieci. W związku z tym ważne jest przestrzeganie podstawowych zasad bezpieczeństwa.

  • Zainstaluj dobry program antywirusowy na swoim komputerze i regularnie skanuj wszystkie pliki. Ważna jest też jego stała aktualizacja.
  • Skonfiguruj zaporę sieciową.
  • Nie loguj się do swojej strony WordPress za pośrednictwem publicznego wifi lub niezabezpieczonego połączenia. Jeśli to zrobisz, twoje dane uwierzytelniające mogą być śledzone. Uważaj także, aby nikt nie widział twojego ekranu podczas logowania.
  • Podczas uzyskiwania dostępu do serwera użyj FTPS (File Transfer Protocol Secure) zamiast niezabezpieczonego FTP, aby zapobiec monitorowaniu połączenia.

Bezpieczny hosting

Wybierz dobry hosting, tu nie warto oszczędzać lub korzystać z darmowych hostingów. To twoja pierwsza linia obrony i dobrze żebyś wybrał taką firmę hostingową, która poważnie traktuje bezpieczeństwo stron internetowych.

Czym charakteryzuje się dobra platforma hostingowa dla WordPress?

  • obsługuje najnowsze wersje podstawowych technologii internetowych, takich jak PHP i MySQL
  • oferuje hosting zoptymalizowany dla WordPress, np. Light Hosting
  • ma firewall, który jest również dostosowany do WordPressa (np. ochrona WAF)
  • oferuje skanowanie w poszukiwaniu złośliwego oprogramowania i wykrywanie włamań
  • oferuje regularne wykonywanie kopii zapasowych plików i baz danych
  • umożliwia separację domen – w  razie włamania na Twoją stronę atakujący nie zyskuje automatycznego dostępu do innych Twoich stron, uruchomionych pod innymi domenami
  • łatwa integracja z CDN, np. Cloudflare – chroni nasze usługi www przed atakami DDoS. Ataki typu DDoS (ang. distributed denial of service, w wolnym tłumaczeniu: rozproszona odmowa usługi) są jednymi z najczęściej występujących ataków hakerskich, które kierowane są na systemy komputerowe lub usługi sieciowe i mają za zadanie zajęcie wszystkich dostępnych i wolnych zasobów w celu uniemożliwienia funkcjonowania całej usługi w sieci Internet (np. Twojej strony internetowej i poczty znajdującej się na hostingu).

Zmień prefiks tabeli WordPress podczas instalacji

Oprócz umieszczenia witryny na dobrym hostingu, jest kilka spraw, które możesz zrobić podczas instalacji, aby uczynić WordPress bardziej bezpiecznym. Jednym z nich jest ustawienie niestandardowego przedrostka tabeli bazy danych.

Jeśli zajrzysz do bazy danych WordPress standardowej instalacji, zobaczysz, że wszystkie tabele zaczynają się od wp_.

Nie zmieniając tego prefiksu sprawisz, że Twoja strona będzie bardziej podatna na infekcje SQL, ponieważ dla tego rodzaju ataku hakerzy muszą znać prefiks tabeli. Oczywiście standardowe ustawienie WordPressa jest powszechnie znane.

Prostym sposobem na zwiększenie bezpieczeństwa WordPressa jest zmiana prefiksu “wp_” na coś losowego, np. “mbgkjbg_”. Możesz to zrobić podczas instalacji lub, jeśli masz już istniejącą witrynę, zmieniając poniższe ustawienia w wp-config.php.

$table_prefix  = 'wp_';

Następnie musisz zaktualizować prefiks w swojej bazie danych. Jednym z łatwiejszych sposobów jest użycie wtyczki bezpieczeństwa, takiej jak np.  iThemes Security.

Używaj szablonów i wtyczek wysokiej jakości

“Dziurawe” wtyczki i szablony do WordPress są powodem ponad połowy wszystkich zhakowanych stron internetowych.

Jak zminimalizować niebezpieczeństwo?

  • Miej tylko to, czego potrzebujesz – Posiadanie dziesiątek wtyczek aktywnych w Twojej witrynie nie tylko zmniejsza wydajność strony internetowej, ale także czyni ją mniej bezpieczną. Im więcej masz komponentów, tym większe ryzyko. Dlatego regularnie sprawdzaj, czy możesz dezaktywować i usunąć wtyczki i motywy.
  • Szukaj aktualnych wtyczek i motywów – jeśli szablon lub wtyczka nie zostały zaktualizowane od dłuższego czasu, istnieje duże prawdopodobieństwo, że zawiera niezałatane luki w zabezpieczeniach lub po prostu zły kod, który sprawia, że ​​witryna jest bardziej podatna na ataki. Z tego powodu przed instalacją należy zwrócić uwagę na poziom wsparcia ze strony twórców.
  • Bardzo ważne jest, aby nie pobierać szablonów czy wtyczek z nieznanych źródeł. Nie wszystkie z nich mają na względzie twój interes. W najlepszym przypadku otrzymasz tandetnie wykonaną wtyczkę lub motyw, który sprawia, że ​​witryna jest niezabezpieczona. W najgorszym przypadku producent celowo umieścił złośliwy kod w celu złamania zabezpieczeń witryny. Jest to bardzo prawdopodobne, jeśli pobierasz wtyczki premium „za darmo”. Dlatego najlepiej jest trzymać się źródeł jakości, takich jak katalog WordPress i sprawdzonych dostawców.

Aktualizuj WordPress i jego komponenty

Nowe wersje WordPressa nie tylko wprowadzają nowe funkcje i ulepszenia, ale także naprawiają luki w zabezpieczeniach zidentyfikowane we wcześniejszych wersjach. Dotyczy to zwłaszcza drobnych aktualizacji.

W związku z tym sprawą najwyższej wagi jest jak najszybsze zastosowanie nowych wersji w witrynie.

Małe aktualizacje WordPress są wdrażane automatycznie. Funkcja ta została dodana, aby zapewnić aktualność stron internetowych pod względem bezpieczeństwa. Jednak główne aktualizacje w dalszym ciągu spoczywają na Tobie. Zrób kopię zapasową i zaktualizuj swoją stronę www, gdy tylko zobaczysz ostrzeżenie w kokpicie. Podobnie rzecz ma się z wtyczkami i szablonami WordPress.

Uwaga! Przed każdą aktualizacją należy sprawdzić kompatybilność zastosowanych wtyczek i motywów. Może się okazać, że na chwilę obecną nie możemy dokonać aktualizacji, bez utraty ważnych funkcjonalności na stronie. Dlatego też tak ważne jest wykonanie kopii zapasowej strony przed jakąkolwiek aktualizacją.

Ogranicz dostęp do strony

Dostęp do strony powinny mieć tylko zaufane firmy lub osoby. I tylko wtedy, gdy istnieje taka konieczność.

Nawet te osoby, powinny mieć przypisane tylko takie role i możliwości, których absolutnie potrzebują. W ten sposób prawdopodobieństwo wypadków (lub celowych szkodliwych działań) jest znacznie zmniejszone.

Nawiasem mówiąc, ta sama zasada powinna być stosowana w przypadku dostępu do konta hostingowego, serwera FTP i innych poufnych informacji.

Mocne hasło i login

Mocne hasło i login to podstawa bezpieczeństwa każdego systemu. Zwykle skutecznie udaremnia ataki brute force, gdy hakerzy automatycznie testują setki różnych kombinacji nazwy użytkownika i hasła za pomocą skryptu, dopóki nie zadziała.

W konsekwencji najlepiej jest przestrzegać tych najlepszych praktyk:

  • Nie używaj nazwy użytkownika admin lub administrator – we wcześniejszych wersjach WordPressa admin była domyślną nazwą użytkownika administratora. Hakerzy uznali to za łatwy cel, więc został zmieniony. Jednak niektórzy ludzie nadal wpisują tę nazwę użytkownika ręcznie. Nie! Jest to jedna z pierwszych rzeczy, które sprawdzają hakerzy.
  • Nie używaj wszędzie tego samego hasła i loginu.
  • Osobne konto do publikowania – pamiętaj o zachowaniu tajności nazwy użytkownika. Dobrze jest mieć osobne konta do administrowania i publikowania treści. Jeśli opublikujesz artykuły z kontem administratora, nazwa użytkownika pojawi się w adresie URL archiwum autora. Poza tym posiadanie osobnych kont dla treści i administracji zmniejsza również ryzyko wypadków.
  • Wybierz silne hasło – WordPress zaproponuje silne hasło podczas instalacji i kiedy chcesz je zmienić. Oczywiście, możesz też wprowadzić hasło wybrane przez siebie, warto jednak wtedy zwrócić uwagę na wskaźnik bezpieczeństwa hasła.
  • Jeśli masz w swojej witrynie inne osoby z wysokimi poziomami uprawnień, zadbaj, aby one także korzystały z bezpiecznych danych logowania.

Ogranicz ilość prób błędnych logowań

Silne dane logowania to tylko jedna część równania. Mając wystarczająco dużo czasu i prób, ktoś może go złamać.

Ograniczenie liczby możliwych prób połączenia, zablokowanie adresu IP, aby uniemożliwić użytkownikowi z tym adresem IP ponowienie próby po przekroczeniu określonego limitu w wyniku nieudanych prób, komplikuje życie hakerów.

Wdroż uwierzytelnianie dwuskładnikowe

Uwierzytelnianie dwuskładnikowe to nic innego, jak utworzenie dodatkowego kroku dla użytkowników, aby zalogować się do witryny. Może to być coś w rodzaju konieczności wprowadzenia kodu dostarczonego na ich telefon komórkowy lub określonego słowa kluczowego. Skutecznie blokuje automatyczne ataki.

Ukryj stronę logowania

Innym sposobem na zabezpieczenie strony logowania do WordPressa jest jej ukrycie. Standardowo stronę logowania WordPress znajdziemy pod adresem twojadomena.com/wp-admin lub twojadomena.com/wp-login.php.

Przeniesienie logowania na inny adres oznacza, że zautomatyzowane skrypty będą trafiać w niewłaściwe miejsce, co także skutecznie ograniczy włamania typu brute force.

Skonfiguruj SSL i HTTPS

Zainstalowanie certyfikatu SSL zapewni bezpieczną transmisję danych między przeglądarką użytkownika i serwerem. Jeśli masz sklep e-commerce lub inne rzeczy, które wymagają ochrony danych, także danych logowania, jest to niezbędne.

Dodaj klucze bezpieczeństwa

Klucze bezpieczeństwa WordPress, zwane także SALT, szyfrują informacje przechowywane w ciasteczkach przeglądarki. W ten sposób chronią hasła i inne poufne informacje. Same klucze są wyrażeniami używanymi do randomizacji tych informacji i przechowywane wewnątrz wp-config.php:

define('AUTH_KEY',         'unikalny klucz bezpieczeństwa');
define('SECURE_AUTH_KEY',  'unikalny klucz bezpieczeństwa');
define('LOGGED_IN_KEY',    'unikalny klucz bezpieczeństwa');
define('NONCE_KEY',        'unikalny klucz bezpieczeństwa');
define('AUTH_SALT',        'unikalny klucz bezpieczeństwa');
define('SECURE_AUTH_SALT', 'unikalny klucz bezpieczeństwa');
define('LOGGED_IN_SALT',   'unikalny klucz bezpieczeństwa');
define('NONCE_SALT',       'unikalny klucz bezpieczeństwa');

Musisz je dodać ręcznie. Na szczęście nie ma potrzeby samodzielnego wymyslania fraz. Zamiast tego wystarczy przejść do generatora kluczy https://api.wordpress.org/secret-key/1.1/salt/ i skopiować oraz wkleić znalezione tam elementy. Będzie to wyglądać mniej więcej tak:

define('AUTH_KEY',         'wsIntw(gaf_!K+Y@OqiQpqkK=jhh$%ntt+bwU)>PMWrziF)L,#;|-`+-|_%PHW%Q');
define('SECURE_AUTH_KEY',  '=}U_ND}Dn$qarklK(Gab}e{Q`J;K^2-#0D+xWw+;Xs6+b>>.T+aq16O|PYV/+.n#');
define('LOGGED_IN_KEY',    'Iu84[~qJWkshvH{;3KVu7x+7~F.`SZP-FE<9(I1rr|YT}Z9U}}f!0%EDg|uyTWW<');
define('NONCE_KEY',        'm}H *YW3|6t|Il*-4nj&]d05a-SK5<2-}~!6B1WkoY|=UB+sN]65Y xxKw#g|&Y6');
define('AUTH_SALT',        'h0:UO|+PCIs-W(=i-h+Dw`x!JLI9,{0+JGKNy8dj0>&l6*i?))QTB+lXNhiYpXYt');
define('SECURE_AUTH_SALT', 'jWWQO06@|N={| -fx8^lgNMm[@jj$zLiK?!1~j8#+f)V;p4TT+ZsWkr%jGBlz{p!');
define('LOGGED_IN_SALT',   'kA@<+:lz-%rVT: Kz}Mm7m.sTw&m0QEBeHxg|cBqI=1`l!RHW6)Jul-W3bu@)=FV');
define('NONCE_SALT',       '|ED3Yu[<[Y(X?iIi,Iw,9QCmzlg$h(eyl-E82{Mg6W5ivnv >-#^[~f`gRd-Q|x+');

Wyłącz Edytor motywów i wtyczek

WordPress zawiera wewnętrzny edytor plików motywów i wtyczek, który umożliwia wprowadzenie zmian w plikach z poziomu panelu administracyjnego strony. Chociaż może być przydatny w niektórych sytuacjach, jest również bardzo ryzykowny.

Jeśli ktoś uzyska dostęp do zaplecza witryny, może użyć edytora do pobrania witryny lub zmiany plików strony bez konieczności dostępu do serwera ftp.

Aby tego uniknąć, wyłącz edytor, dodając ten wiersz do pliku wp-config.php:

define('DISALLOW_FILE_EDIT', true);

Chroń ważne pliki przed dostępem

.htaccess to kolejny ważny plik, który konfiguruje serwer. Między innymi zawiera kod, który umożliwia korzystanie z przyjaznych linków w WordPressie. Może również ustawiać przekierowania i zwiększyć bezpieczeństwo WordPress.

Poniższy kod umieszczony w pliku .htaccess uniemożliwi dostęp do krytycznych plików, takich jak wp-config.php, php.ini, dzienniki błędów i sam plik .htaccess.

<FilesMatch "^.*(error_log|wp-config\.php|php.ini|\.[hH][tT][aApP].*)$">
Order deny,allow
Deny from all
</FilesMatch>

W razie potrzeby dostosuj nazwę pliku php.ini (np. Php5.ini lub php7.ini). Pamiętaj, aby umieścić kod poza #BEGIN WordPress i #END WordPress. Wszystko w tej przestrzeni może być edytowane przez WordPressa i może spowodować utratę zmian.

Ogranicz dostęp do plików PHP

Dodatkowo możesz uniemożliwić innym dostęp do plików PHP i wprowadzanie do nich złośliwego oprogramowania:

RewriteCond %{REQUEST_URI} !^/wp-content/plugins/file/to/exclude\.php
RewriteCond %{REQUEST_URI} !^/wp-content/plugins/directory/to/exclude/
RewriteRule wp-content/plugins/(.*\.php)$ - [R=404,L]
RewriteCond %{REQUEST_URI} !^/wp-content/themes/file/to/exclude\.php
RewriteCond %{REQUEST_URI} !^/wp-content/themes/directory/to/exclude/
RewriteRule wp-content/themes/(.*\.php)$ - [R=404,L]

Zapobiegaj uruchamianiu plików PHP

Powszechnym miejscem dla hakerów do przesyłania złośliwego oprogramowania jest zawartość wp-upload/upload. Aby uniemożliwić im wykonanie złych kodów w przypadku włamania, użyj tego fragmentu kodu:

<Directory "/var/www/wp-content/uploads/">
<Files "*.php">
Order Deny,Allow
Deny from All
</Files>
</Directory>

Zabezpiecz folder wp-includes

Folder wp-includes zawiera pliki podstawowe WordPress, których nikt nie powinien mieć potrzeby modyfikowania. Aby mieć pewność, że tak się nie stanie, użyj następującego kodu:

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^wp-admin/includes/ - [F,L]
RewriteRule !^wp-includes/ - [S=3]
RewriteRule ^wp-includes/[^/]+\.php$ - [F,L]
RewriteRule ^wp-includes/js/tinymce/langs/.+\.php - [F,L]
RewriteRule ^wp-includes/theme-compat/ - [F,L]
</IfModule>

Ogranicz dostęp administratora do określonego adresu IP

Z .htaccess możesz również ograniczyć dostęp do swojej strony logowania WordPress przez adres IP. W ten sposób tylko ty możesz się tam dostać. Aby to osiągnąć, wprowadź do niego następujący kod:

ErrorDocument 401 default
ErrorDocument 403 default
<Files wp-login.php>
Order deny,allow
Deny from all
Allow from 198.101.159.98
</Files>

Pamiętaj, aby zastąpić przykładowe adresy IP tym, do którego chcesz uzyskać dostęp. Możesz także dodać więcej adresów, kopiując i wklejając linię Allow from…. Jeli ktoś spróbuje zalogować się z innego IP, zostanie przekierowany na stronę błędu.

Pamiętaj, że aby dostać się do panelu administracyjnego WordPress z innego adresu IP, musisz najpierw go zmienić lub dodać do pliku.

Zablokuj określone adresy IP

Podobna technika jest dostępna do blokowania adresów IP, które konsekwentnie próbują włamać się do Twojej witryny. Jeśli zauważysz coś takiego (na przykład z dzienników serwera), możesz zablokować je poza witryną, dodając do .htaccess:

order allow,deny
deny from 456.123.8.9
allow from all

Ustaw odpowiednie uprawnienia do plików

Używanie poprawnych uprawnień plików na serwerze to sposób na uniknięcie modyfikacji plików przez nieupoważnione osoby.

WordPress zaleca następujące ustawienia:

  • 755 lub 750 dla katalogów
  • 644 lub 640 dla plików
  • 600 dla wp-config.php

Usuń numer wersji WordPress

Domyślnie WordPress zawiera metatag wewnątrz kodu źródłowego, który wyświetla wersję WordPress Twojej strony www, a także dodaje ją do skryptów załadowanych w sekcji <head>.

Niestety, ta informacja jest bardzo przydatna dla każdego, kto próbuje włamać się na twoją stronę, zwłaszcza jeśli używasz starszej wersji WordPressa, która ma znaną lukę w zabezpieczeniach. Na szczęście usunięcie numeru wersji jest  proste. Dodaj na górze pliku function.php kod:

function remove_wordpress_version_number() {
return '';
}
add_filter('the_generator', 'remove_wordpress_version_number');
function remove_version_from_scripts( $src ) {
    if ( strpos( $src, 'ver=' . get_bloginfo( 'version' ) ) )
        $src = remove_query_arg( 'ver', $src );
    return $src;
}
add_filter( 'style_loader_src', 'remove_version_from_scripts');
add_filter( 'script_loader_src', 'remove_version_from_scripts');

Wyłącz XML-RPC

Funkcja XML-RPC umożliwia zdalne łączenie się z WordPress. Jeżeli do pisania postów na swoim blogu wykorzystujesz wyłącznie wewnętrzne mechanizmy do ich tworzenia (po zalogowaniu się do panelu administracyjnego), z pominięciem innych zewnętrznych programów ta funkcja nie jest Ci do niczego potrzebna.

Wiele automatycznych skryptów wykorzystuje plik xmlrpc.php do przeprwoadzenia ataków typu Brute Force (w celu uzyskania dostępu do Twojego serwera za pomocą słabych haseł).

Zalecane jest zablokowanie lub ograniczenie dostępu do pliku xmlrpc.php dla wybranych adresów IP.

Systematycznie rób kopie zapasowe strony i bazy danych

Zawsze warto mieć aktualną kopię zapasową strony pod ręką, tak na wszelki wypadek. Do automatycznego cyklicznego tworzenia kopii zapasowych możemy wykorzystać np. wtyczkę Updraft Plus. Wtyczka jest darmowa i umożliwia automatyczne robienie kopii zapasowych strony m.in. na Dropbox oraz Google Drive lub przesłanie jej na wybrany adres e-mail. Umożliwia przywrócenie strony z kopii bezpośrednio przez panel WP oraz z poziomu FTP i phpmyadmin, więc w każdej sytuacji można odtworzyć kopię strony, nawet na innym serwerze.

Twoja strona została zhakowana?

Jeśli podejrzewasz, że Twoja strona uległa atakowi lub została zainfekowana, istnieją sposoby, aby się o tym przekonać. Użyj tych narzędzi, aby sprawdzić, czy twoje obawy są uzasadnione (lub po prostu uruchom je jako środek ostrożności):

  • Ogólne problemy z bezpieczeństwem – Użyj Unmask ParasitesWeb Inspector, aby sprawdzić ogólne luki.
  • Spam – MX Toolbox poinformuje Cię, czy Twoja witryna została uwzględniona w ponad stu czarnych listach e-mailowych.
  • Malware – darmowy skaner złośliwego oprogramowania Sucuri Website sprawdzi twoją witrynę pod kątem złośliwego kodu i innych problemów z bezpieczeństwem.

Pamiętaj, że nie musisz podejmować wszystkich powyższych działań. Nawet jeśli wdrożysz połowę, znacznie ograniczysz możliwość zhakowania Twojej strony internetowej.

Zobacz też: