Blog

WordPress 10 problemów związanych z bezpieczeństwem oraz sposoby jak je naprawić

Niewątpliwie WordPress jest jednym z najpopularniejszych systemów CMS na świecie. Jest zbudowany i zaprojektowany w taki sposób, aby podnieść standardy sieciowe, estetykę oraz użyteczność. Właśnie to sprawia, że WordPress jest najczęściej wybieranym CMS wśród blogerów, projektantów i właścicieli firm. Jednak przy takim masowym użyciu wciąż krąży zły mit w branży, że jedynie dodanie certyfikatu SSL zapewni, że strona z WordPressem będzie bezpieczna.

Naszym zdaniem około połowa luk w platformie WordPressa występuje przez nieuwagę  użytkownika. To czyni ich łatwym celem do ataków. Istnieją niektóre sprawdzone metody, które pomogą wzmocnić bezpieczeństwo WordPressa. W tym artykule przedstawimy zarówno podstawowe informacje oraz kilka mniej popularnych porad dotyczących problemów związanych z zabezpieczeniami systemu WordPress.

Dzięki nim możemy zaoszczędzić sobie kłopotów związanych z bezpieczeństwem stron internetowych opartych na WordPress, a zamiast tego skupić się na rozwijaniu oraz ulepszaniu swojego projektu.

Wskazówki bezpieczeństwa WordPress

  1. Odpowiedni hosting – już na samym początku możemy znacząco zwiększyć bezpieczeństwo naszej strony wybierając bezpieczniejsze i stabilniejsze rozwiązanie hostingowe. Istnieją cztery rodzaje rozwiązań hostingowych:
  • hosting współdzielony– na jednym serwerze znajduje się wiele różnych użytkowników. Każdy z klientów otrzymuje dostęp do panelu administracyjnego, jest on stosunkowo prosty nawet dla laików. Zaletami tego typu rozwiązania jest zarówno łatwe użytkowanie oraz niska cena. Natomiast jeśli chodzi o wady to najistotniejszą jest jego niska stabilność oraz ograniczone zasoby. Jeśli którekolwiek z kont zostanie pomyślnie zhackowane, cały serwer zostanie uznany za zagrożony.
  • serwer VPS– jest to wirtualna dedykowana maszyna instalowana na serwerze. Każdy użytkownik otrzymuje dedykowane zasoby RAM oraz HDD. Jeśli chodzi o CPU jest one współdzielone, jednak im większy pakiet tym współdzielenie jest mniejsze. Użytkownik otrzymuje czysty system operacyjny z dostępem ssh, serwer należy skonfigurować we własnym zakresie. Niewątpliwą zaletą zatem jest niezależność od pozostałych użytkowników, natomiast konieczne jest posiadanie umiejętności potrzebnych do obsługi serwera. Należy we własnym zakresie wykonywać kopię zapasową, pamiętać o wszelkich aktualizacjach itd.
  • hosting dedykowany– jest to serwer VPS z administracją. Tutaj nie musimy się martwić, jeśli nie posiadamy ww umiejętności, ponieważ otrzymujemy w pełni skonfigurowany, gotowy do pracy system ( z bazą danych MySQL, PHP, serwerem poczty, serwerem FTP), z panelem administracyjnym DirectAdmin. W przypadku tej usługi nie musimy się martwić o bieżące aktualizacje, gdyż są one wykonywane po naszej stronie. Dodatkowo wykonywany jest codzienny backup, serwer jest również podpięty pod monitoring, dzięki któremu w porę wychwytywane są ewentualne awarie.

2.   Regularne kopie zapasowe – dzięki temu będziemy mieli pewność, że nawet jeśli zdarzy nam się jakiś błąd, zawsze możemy przywrócić swoją stronę do czasu sprzed wprowadzania zmian. Dlatego pamiętajmy, aby w miarę możliwości wykonać backup przed wprowadzeniem nowych zmian. 

Można go wykonać na dwóch poziomach:  

  • Offsite WordPress Backup- tworzenie kopii zapasowej jest dość łatwe. Dzięki wtyczce UpdraftPlus, która tworzy kopię zapasową witryny WordPress do pamięci zewnętrznej, takiej jak Dropbox, Dysk Google, Amazon S3 itd. 
  • kopie zapasowe wykonane przez dostawcę hostingowego– przed wprowadzeniem zmian musimy zapoznać się z polityką tworzenia kopii zapasowej naszej firmy hostingowej i zlecić bądź wykonać ją samodzielnie.

Jeśli jesteś klientem STATNET, jesteś w dobrych rękach. Wykonujemy codzienną kopię zapasową. W razie problemu wystarczy napisać w zgłoszeniu a kopia zostanie wgrana na serwer. 

3.  Silne hasło- tworzenie silnego hasła jest absolutnym obowiązkiem. Zapewnia żelazną ochronę przed lukami w WordPress. Staraj się tworzyć hasła trudne do odgadnięcia (używaj liter alfabetu, liczb, znaków interpunkcyjnych).             

4.  Ograniczona ilość prób logowania- domyślnie WordPress pozwala użytkownikowi spróbować zalogować się wiele razy, co pozwala w prosty sposób na ataki typu Brute Force (technika łamania haseł polegająca na sprawdzeniu wszystkich możliwych kombinacji). Możemy utworzyć dodatkową warstwę zabezpieczeń dla swojej witryny WordPress, instalując wtyczkę ograniczającą próbę logowania (WP Limit Login Attempts). Narzędzie to blokuje adres IP hakera, który próbuje dostać się do panelu administracyjnego WordPress. Dodatkowo możemy ograniczyć także liczbę nieudanych prób logowania dla użytkownika.

  • Użyjmy uwierzytelniania dwuetapowego – WordPress oferuje uwierzytelnianie dwuskładnikowe za pomocą wtyczek, które wymagają dodatkowych czynników identyfikacyjnych ,np: unikalne hasło wysyłane przez SMS/email, kod QR, powiadomienie push.

5.  Zmiana adresu URL logowania WordPress oraz domyślna nazwa użytkownika.

  • Zmiana adresu URL logowania WordPress– sugerujemy zmianę domyślnego adresu URL logowania do WP-admin, aby utrudnić hakerom odgadnięcie i przeprowadzenie ataku Brute Force. (np. zamiast www.mojastrona.pl/wp-admin możemy ustawić www.mojastrona.pl/logowanie) W tym celu należy skorzystać z wtyczki WPS Hide Login. 
  • Zmiana domyślnej nazwy użytkownika WordPress– zmiana nazwy użytkownika można wykonać za pomocą wtyczki Username Changer. Natomiast jeśli nie chcemy korzystać z wtyczki, możemy wykonać to w prosty sposób wchodząc w pulpit nawigacyjny, tworząc nowego użytkownika i przypisując mu rolę “Administratora”.

6.  Aktualizacja WordPressa– należy pamiętać o regularnych aktualizacjach. Pamiętajmy o tym, aby aktualizować zarówno samego WordPressa jak również wtyczki oraz szablony, dzięki temu nasza strona będzie działała stabilniej.

7.  Usuwanie nieużywanych wtyczek lub motywów– zachęcamy do testowania nowych motywów oraz wtyczek dzięki którym ulepszymy działanie naszej strony. Jednak po przetestowaniu bardzo często dezaktywujemy wtyczkę zamiast odpowiednio ją odinstalować. Niestety nieużywane i nieaktywne wtyczki oraz motywy stanowią potencjalne zagrożenie dla naszej strony. Różnica między dezaktywacją a deinstalacją jest prosta. Dezaktywacja tylko ‘wyłącza’ wtyczkę i zatrzymuje ją na wypadek, gdyby znowu była potrzebna, natomiast deinstalacja usuwa ją na stałe.

Poniżej przedstawiamy kilka z najlepszych praktyk stosowanych przez programistów, dzięki którym podniesiemy poziom bezpieczeństwa naszego WordPressa. 

8. Jak zapobiec iniekcji kodu SQL oraz hakowaniu adresów URL – atak iniekcji SQL polega na tym, że hakerzy umieszczają polecenia w polu URL użytkownika lub polu komentarza użytkownika, aby wywołać określone zachowanie w ich bazie SQL, będące językiem poleceń używanych w bazie danych MySQL. Jeśli zostanie poprawnie przekształcony w ‘zastrzyk’, może ujawnić poufne informacje o konkretnej bazie danych użytkowników. 

Wiele z dzisiejszych cyberataków na stronie internetowej odbywa się za pomocą różnych zastrzyków SQL. Ponieważ większość instalacji WordPressa jest hostowanych na serwerze WWW Apache, a do definiowania reguł dostępu używa pliku .htaccess. Niewielkie zmodyfikowanie kodu .htaccess może uratować użytkownika przed tego typu atakami. 

Poniżej przedstawiamy kod, który można wstawić na swojej stronie internetowej. Plik .htaccess zawierający zestaw reguł uniemożliwiających wielu poważnych iniekcji SQL.

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_METHOD} ^(HEAD|TRACE|DELETE|TRACK) [NC]
RewriteRule ^(.*)$ - [F,L]
RewriteCond %{QUERY_STRING} \.\.\/ [NC,OR]
RewriteCond %{QUERY_STRING} boot\.ini [NC,OR]
RewriteCond %{QUERY_STRING} tag\= [NC,OR]
RewriteCond %{QUERY_STRING} ftp\:  [NC,OR]
RewriteCond %{QUERY_STRING} http\:  [NC,OR]
RewriteCond %{QUERY_STRING} https\:  [NC,OR]
RewriteCond %{QUERY_STRING} (\<|%3C).*script.*(\>|%3E) [NC,OR]
RewriteCond %{QUERY_STRING} mosConfig_[a-zA-Z_]{1,21}(=|%3D) [NC,OR]
RewriteCond %{QUERY_STRING} base64_encode.*\(.*\) [NC,OR]
RewriteCond %{QUERY_STRING} ^.*(\[|\]|\(|\)|<|>|ê|"|;|\?|\*|=$).* [NC,OR]
RewriteCond %{QUERY_STRING} ^.*("|'|<|>|\|{||).* [NC,OR]
RewriteCond %{QUERY_STRING} ^.*(%24&x).* [NC,OR]
RewriteCond %{QUERY_STRING} ^.*(%0|%A|%B|%C|%D|%E|%F|127\.0).* [NC,OR]
RewriteCond %{QUERY_STRING} ^.*(globals|encode|localhost|loopback).* [NC,OR]
RewriteCond %{QUERY_STRING} ^.*(request|select|insert|union|declare).* [NC]
RewriteCond %{HTTP_COOKIE} !^.*WordPress_logged_in_.*$
RewriteRule ^(.*)$ - [F,L]
</IfModule>

 9. Jak odmówić dostępu do poufnych plików w WordPress – instalacja WordPress zawiera określone poufne pliki, takie jak wp-config.php, install.php i pliki readme.html. Pliki te w celach bezpieczeństwa powinny być ukryte przed dostępem z zewnątrz.

Oprócz uniemożliwienia dostępu do list katalogów użytkownika, poniższy kod pomoże także w ukrywaniu poufnego serwera oraz plików WordPress.

Options All -Indexes

<files .htaccess>
Order allow,deny
Deny from all
</files>

<files readme.html>
Order allow,deny
Deny from all
</files>

<files license.txt>
Order allow,deny
Deny from all
</files>

<files install.php>
Order allow,deny
Deny from all
</files>

<files wp-config.php>
Order allow,deny
Deny from all
</files>

<files error_log>
Order allow,deny
Deny from all
</files>

<files fantastico_fileslist.txt>
Order allow,deny
Deny from all
</files>

<files fantversion.php>
Order allow,deny
Deny from all
</files>

10. Usuń numer wersji WordPressa- WordPress automatycznie dodaje bieżący numer wersji WordPress. Nie trudno go znaleźć, jest widoczny w kodzie źródłowym strony. Publiczna dostępność wersji ułatwia hakerom wykonanie ataku wykorzystując luki określonej wersji.

 Wystarczy umieścić prosty wiersz kodu do pliku functions.php

remove_action( 'wp_head', 'wp_generator' );

Wybierając usługę Hosting Dedykowany otrzymujemy w pełni skonfigurowany serwer vps. Dodatkowo w celu zwiększenia bezpieczeństwa zapewniamy:

  • Monitorowanie serwera
  • Firewall
  • Zaktualizowany system operacyjny wraz z aktualnymi aplikacjami
  • Kopie zapasowe
  • Możliwość uruchomienia darmowego certyfikatu SSL
  • Wsparcie techniczne 

Wspomniane wyżej wskazówki zapewnią, że nasza strona będzie bezpieczniejsza. Jednak, podobnie jak w przypadku innych form bezpieczeństwa, ochrona witryny WordPress jest procesem ciągłym, który jest często modyfikowany poprzez wprowadzanie nowych kodów, trików i narzędzi.

Sugerujemy, aby zapisywać w dzienniku informacje o tym, co się wydarzyło w WordPressie za pomocą wtyczki audytu bezpieczeństwa, oraz korzystać z wtyczki bezpieczeństwa WordPress.

Masz pytania? Skontaktuj się z nami! Jesteśmy na TAK, żeby Ci pomóc.