WordPress to system CMS najczęściej wybierany nie tylko przez osoby zajmujące się SEO. Jak wynika z ogólnodostępnych danych np. w serwisie w3techs.com w kategorii system CMS: WordPress ma udział na poziomie prawie 60 procent. Niestety prócz dużą dostępnością dodatków mało kto kieruje się bezpieczeństwem systemu.
Czy WordPress jest bezpieczny?
Nie. Żaden system CMS nie jest bezpieczny. Każdy należy zabezpieczyć by minimalizować ryzyko. Praktycznie każdy WordPress jest atakowany metodą słownikową średnio kilka razy na dobę w każdym tygodniu.
Zagrożenia
WordPress ma długą i bogatą historię wykrytych podatności. Większość dostępna jest na specjalnej stronie o której pisałem w tym artykule.
Podstawowe zagrożenia:
- Atak na stronę logowania/słabe hasła
- Luki w motywach i wtyczkach
- Błędy w systemie CMS
- Spam
- i wiele innych…
Jak zabezpieczyć WordPressa?
Procedura zabezpieczenia systemu WordPress:
1. Środowisko
Podstawowym miejscem jest bezpieczne środowisko. Czyli baza danych, ftp i cała usługa jak apache2 czy inne wybrane środowisko.
W przypadku serwerów współdzielonych mamy mniej pracy. Ponieważ za bezpieczeństwo środowiska odpowiada dostawca usługi. Jednak my też nie możemy spocząć na laurach. O czym poniżej. W przypadku serwerów VPS, niestety musimy sami zadbać o konfiguracje i zmianę domyślnych ustawień serwera Apache2, wgranie certyfikatów SSL czy użycie chociażby prostego firewall’a do zabezpieczenia portów i dostępu do naszego serwera.
W celu zabezpieczenia bazy danych upewnij się, czy na swoim VPS’ie masz skonfigurowane logowanie administratora bazy danych w sposób właściwy – Czyli np. system phpmyadmin jest dodatkowo zabezpieczony logowaniem i np. dopuszczony do logowania tylko konkretny adres ip z którego najczęściej łączysz się do bazy.
2. Instalacja
Podczas instalacji musimy pamiętać o zastosowaniu specyficznej nazwy użytkownika: Nie może to być nazwa domeny, tytuł strony. Najlepiej jeśli sformułujemy ją opierając o nasze inicjały i dodając dodatkowe znaki. Następnie musimy użyć KONIECZNIE własnego mocnego hasła. Nie sugeruj się wygenerowanym ciągiem znaków przez WordPressa, sam ustal hasło równie silne.
W przypadku bazy danych, ustalając nazwę prefixu pamiętajmy by nie zawierał nazwy strony czy domeny.
3. Wtyczki wspomagające bezpieczeństwo
Po instalacji WordPressa należy dokonać kilkunastu czynności w celu jego zabezpieczenia. W pierwszej kolejności możesz zainstalować dodatek np.
Wordfence Security – Firewall, Malware Scan, and Login Security
W wersji darmowej informuje nas o wymaganych aktualizacjach, wysyła ostrzeżenia o logowaniu do panelu, o próbach ataku na stronę logowania i blokuje także adresy IP, które przekroczą normę prób nieudanych logowań.
4. Domyślne ustawienia
Konfiguracja
Jedną z pierwszych rzeczy, którą warto zmienić zaraz po zainstalowaniu WordPressa, jest wyłączenie możliwości rejestrowania się nowych użytkowników. Można to zrobić poprzez panel zarządzania, przechodząc do zakładki Ustawienia, a następnie -> Ogólne
W kolejnym kroku warto pomyśleć czy chcemy, aby komentarze do wpisów oraz podstron dodawać mogły tylko osoby zalogowane jako użytkownicy. Opcję odpowiedzialną za wymuszenie takiego zachowania znajdziemy, przechodząc do zakładki Ustawienia -> Dyskusja.
Dodatkowym zabezpieczeniem przed Spamem będzie implementacja wtyczki z Google reCapcha np.
Google Captcha (reCAPTCHA) by BestWebSoft
Niezalogowani użytkownicy nie mogą dodawać komentarzy – czy … aby jesteś tego pewien?
No nie. Należy pamiętać o tym, że jeżeli w szablonie chcemy całkowicie wyłączyć możliwość dodawania komentarzy, nie możemy ograniczyć się tylko do usunięcia z kodu formularza z pliku php. Mimo, że użytkownik nie będzie widział formularza to WordPress dalej będzie miał aktywny mechanizm odbierający komentarze i na nasze nieszczęście będzie zapisywał je w bazie. Będziemy narażeni na skanowanie po footprintach i ataki spamerskie. Dlatego zadbaj o wyłączenie komentowania w ustawieniach głównych systemu oraz w szablonie. Można to oczywiście zweryfikować w panelu administracyjnym, przechodząc do zakładki Komentarze.
XML-RPC – WordPress
Ogranicz dostęp przez domyślne włączone (WordPress od wersji 3.5) API ( XML-RPC ), za pomocą wtyczki:
lub dopisując to:
add_filter('xmlrpc_enabled', '__return_false');
Do pliku function.php. Pamiętaj jednak, że przy aktualizacji szablonu plik może zostać nadpisany.
Zbędne zasoby
Po pomyślnej instalacji i konfiguracji WordPressa warto również zweryfikować listę domyślnie zainstalowanych wtyczek oraz motywów. Usuń wszystkie, których nie używasz. Nawet te które masz zamiar używać w przyszłości usuń. Nazwę zapamiętaj i zainstaluj w momencie kiedy będziesz jej potrzebował.
Nie ujawniaj za dużo
Ukryj wersję CMS, jaką masz na pokładzie. Uwaga, ukrycie wersji nie powinno zwalniać nas od dbania o to, by zawsze wykorzystywać najnowszą stabilną wersję i instalować aktualizacje. WordPress ujawnia wykorzystywaną wersję w kilku miejscach:
Plik readme.html w głównym katalogu aplikacji, Meta tag generator w źródle strony, Kanały RSS, Wartość parametru version (ver) dodawanego do adresów URL stylów CSS oraz skryptów JavaScript.
5. Logowanie
Czy prócz mocnego hasła i oderwanego od tematyki i nazwy domeny, wyświetlanej nazwy loginu mogę coś jeszcze zrobić? Tak. Możemy logować się do WordPressa za pomocą Konta Google. Dzięki temu „zyskamy” dwuetapową weryfikacje. Jednak jest lepsze rozwiązanie.
W bazie wtyczek WordPress możemy znaleźć sporo rozwiązań pozwalających dodać 2 etapowie uwierzytelnienia. Jednym z takich jest wtyczka Google Authenticator , która pozwala wykorzystać możliwości, jakie dostarcza projekt o tej samej nazwie czyli– Google Authenticator for Android. Aplikacja dostępna jest na Android i iOS. Dzięki temu zyskujemy weryfikacje dwuetapową.
Logowanie możemy zabezpieczyć także po przez założenie hasła na stronę logowania i ograniczenia dostępu dla określonych hostów
order allow,deny allow from 80.XX.XX.78 order deny,allow allow from 80.XX.XX.78 Lub założenie hasła z wykorzystaniem: HTTP Basic Authentication. <Directory "/var/www/html/ "> AuthType Basic AuthName "tell me something" AuthUserFile /etc/apache2/.htpasswd Require valid-user AllowOverride All Allow from All
Mniej widoczni
Dodatkowo możemy umieścić pliki bloga w folderze domena.pl/CiasteczkowyPotwor/, a następnie skonfigurować wyświetlany adres na domena.pl. Dzięki czemu ukryjemy nazwę folderu w którym umieszczony jest nasz blog na serwerze.
Wartą rozważenia jest również opcja zmiany domyślnych ścieżek, pod którymi WordPress udostępnia swoje najważniejsze zasoby.
Cała operacja sprowadza się do dodania odpowiednich wpisów w pliku wp-config.php. Możemy zdefiniować ścieżkę dla całego katalogu wp-content lub jeżeli preferujemy wskazać konkretne ścieżki osobno dla wtyczek, osobno szablonów oraz plików wgrywanych na serwer. Oczywiście nie uchroni nas to przed podatnościami. Jednak liczne boty skanujące sieć, będą nas omijać.
define( 'WP_CONTENT_DIR’, dirname(__FILE__) . '/blog/assets’ );
define( 'WP_CONTENT_URL’, 'http://example.com/blog/assets’ );
6. Aktualizacje
Koniecznie bądź na bieżąco z wszystkimi podatnościami WordPressa i aktualizuj swój system na bieżąco. Rób także kopie bezpieczeństwa. Popularna wtyczka do kopii zapasowych: Updraftplus, BackWPup.
Pamiętaj, by przed każdą aktualizacją dokonać kopii. Staraj się wykonywać je natychmiast po uzyskaniu informacji o nowej stabilnej wersji WordPressa / wtyczki czy szablonu. Nie zaniedbuj tego.
Uwaga, pamiętaj! Aby zachować trwałości zmian, które wprowadzamy. Pamiętaj, że pliki konfiguracyjne serwera oraz plik wp-config.php nie są nadpisywane w wyniku aktualizacji, ALE już plik functions.php TAK, ponieważ stanowi on część wybranego przez nasz szablonu i może zostać nadpisany!!
Weryfikacja bezpieczeństwa
Jak sprawdzić czy mój blog jest bezpieczny? Można to zrobić za pomocą skanera podatności dedykowanego dla WordPress – wpscan. Skrypt ten domyślnie można znaleźć w dystrybucji Kali Linux lub na repozytoriach GitHuba.
Jeżeli już wcześniej zainstalowaliśmy wpscan, wtedy przed wykonaniem kolejnego skanu warto uruchomić skrypt i zaktualizować bazy (tak jak robimy to w antywirusie).
wpscan --update
Podstawowy skan wykonuje się, wskazując adres naszego WordPressa:
wpscan --url
Podsumowanie
WordPress to wspaniałe narzędzie i bardzo elastyczne w rozbudowie. Jednak należy być bardzo ostrożnym przy wdrażaniu go jako poważne serwisy jak sklepy gdzie przechowywane są dane osobowe. Zadbaj o bezpieczeństwo swojego CMS’a już na etapie instalacji i konfiguracji środowiska. Bądź na bieżąco. Nie oszukuj samego siebie. Instaluj aktualizacje i dbaj o bezpieczeństwo swoich użytkowników.
Źródło: https://thethemefoundry.com/blog/wordpress-security/
Fajny wpis, choć dużo jest już takich fajnie zawsze przeczytać coś w tym temacie bo wiedzy nigdy mało
Fajny artykuł, fajnie że zawarłeś w nim podstawowe informacje.
Dodaję
add_filter(’xmlrpc_enabled’, '__return_false’);
Do functions.php w moim szablonie – zgadza się ?
Tak, dokładnie tak jak opisałem to powyżej. Wklejasz ten kod do pliku functions.php 🙂
Bardzo pomocny artykuł. Jak wiadomo WordPress nie ma takich zabezpieczeń jak chociażby Joomla, więc należy dbać o wszelkie szczegóły. Dzięki!
Dzięki!