Utrzymanie bezpieczeństwa w systemach opartych o WordPress
Zhackowana strona to strata czasu, nerwów, energii i pieniędzy. To również obniżenie autorytetu i reputacji, zwłaszcza jeśli jej użytkownicy dostali rykoszetem. Nie mówiąc już o udanych atakach na strony rządowe, zwłaszcza takich jak strona Centrum Projektów Polska Cyfrowa, na WordPress stojąca właśnie.
WordPress jest szczególnie podatny na ataki ze względu na swoją popularność. Opłaca się go atakować bo istnieje duże prawdopodobieństwo, że w przypadku sukcesu zadziała on na masową skalę – WordPress to jakieś 40 procent stron w sieci. Lepiej przygotować się na potencjalny atak, dbając na przykład o podstawowe zasady higieny swojego WordPressa.
Zapobiegaj nieautoryzowanym logowaniom
Jest to atak typu brute force – w kryptografii atak brute-force polega na tym, że atakujący podaje wiele haseł lub fraz z nadzieją, że w końcu odgadnie prawidłową kombinację. Atakujący systematycznie sprawdza wszystkie możliwe loginy i hasła, dopóki nie znajdzie właściwego.
Alternatywnie, atakujący może spróbować odgadnąć klucz, który jest zwykle tworzony na podstawie hasła za pomocą funkcji wyprowadzania klucza. Nazywa się to gruntownym wyszukiwaniem kluczy.
Dictionary attack – „atak słownikowy” jest formą techniki ataku typu brute force, mającego na celu pokonanie szyfru lub mechanizmu uwierzytelniania poprzez określenie klucza deszyfrującego lub hasła za pomocą tysięcy lub milionów prób prawdopodobnych możliwości, takich jak słowa w słownikach lub wcześniej używanych haseł, często z list uzyskanych z wcześniejszych włamów. Służą do tego też specjalne biblioteki z kombinacjami haseł i loginów, które zaskakująco często się powtarzają.
Przykład #1 – login i hasło do rządowej strony www.premier.gov.pl:
- Login – ADMIN
- Hasło – ADMIN1
- Źródło: rmf24.pl
Przykład #2
Login i hasło do laptopa z którego korzystał premier Donald Tusk:
- Login: rmuser43 (rm = rada ministrów?)
- Hasło: Niebieski7
- Źródło: niebezpiecznik.pl
Przykład #3
Żeby nie było nam smutno, że tylko w Polsce są ludzie niekompetentni – hasło do skrzynki prezydenta Syrii to 12345. Jak podaje niebezpiecznik.pl, jest to jedno z najpopularniejszych haseł na świecie, ale nie w Polsce — my mamy więcej rozumu w głowie! Przypomnijmy, że w Polsce najpopularniejszym hasłem jest 123456…
Przykład #4
Mój ulubiony – tajna wideokonferencja ministrów obrony Unii Europejskiej, do której dołączył przypadkowy dziennikarz. Hasło i login pozyskał z Twittera duńskiego ministra. Więcej: Dutch reporter gatecrashes EU defense ministers’ videoconference
You know you have been jumping into a secret conference of the (…)– Zakładam, że dziennikarz to doskonale wie. Pytanie, czy do ministrów to dotarło…
Jak bronić się przed atakami brute force?
Zmień domyślny login do panelu admina
Domyślny adres to */wp-admin lub */wp-login.php. Nie zmieniając go dajesz na tacy punkt wejścia potencjalnemu atakującemu.
Pro-tip: zmiana na /admin1 nie podniesie drastycznie bezpieczeństwa.
Używaj złożonych, długich haseł
Za bezpieczeństwem stoi matematyka. Rzuć okiem na to zestawienie z Don’t Be Cracked: The Math Behind Good Online Passwords:
Bezpieczeństwo to matematyka – kombinacja w haśle 12 małych i wielkich liter ze znakami specjalnymi i liczbami to przeszło 15 milionów lat zgadywania dla ataku typu brute force.
Ściągnij managera haseł
Długie i złożone hasła, każde inne do innego konta to problem dla (normalnego) mózgu. O ile nie jesteś Profesorem Charlesem Xavierem – a nawet on potrzebował Cerebro bo nie dawał rady wszystkiego ogarnąć – zainwestuj w porządny menedżer haseł.
Link do aktualnego przeglądu najlepszych managerów haseł: The Best Password Managers for 2022
Teraz musisz pamiętać tylko hasło do managera.
Włącz dwustopniową weryfikację
Aktywuj ją jeśli tylko możesz. Wymusza potwierdzenie logowania na drugim, niezależnym urządzeniu (SMS na telefon z kodem lub inne). Dwustopniową weryfikację wprowadza coraz więcej aplikacji, np. GitHub.
Opóźnij ponowne logowanie
Nawet o 0.1 sekundę – użytkownik tego nie odczuje, natomiast takie spowolnienie bardzo szybko się kumuluje dla atakującego, o ile nie zabezpieczył się przed nim próbami równoległymi.
Wymuś walidację captcha po wielokrotnie nieudanych próbach logowania
Użytkownik może po prostu zapomnieć hasła i wprowadzić je ponownie, przy okazji rozwiązując nowoczesną captchę. Jest to natomiast znaczna obstrukcja dla atakującego, spowalniająca atak brute force do stopnia, w którym traci on sens. Nowoczesne captche wymagają też często manualnego (boty sobie z tym radzą) wprowadzenia rozwiązania (z tym już niekoniecznie).
Zablokuj konto
System można ustawić tak, aby blokował sie np. po 10 nieudanych próbach logowania. Skrajnym przykładem jest iPhone, który po 10 nieudanych próbach czyści swoją zawartość (być może przez serię wycieków prywatnych zdjęć celebrytek w negliżu).
Odświeżaj i dywersyfikuj hasła
Kwestia dyskusyjna – niebezpiecznik.pl zdaje się stoi na stanowisku, że zmiana haseł niewiele daje. Natomiast dywersyfikacja (czyli różne hasła dla różnych kont) zapobiega w przypadku ujawnienia jednego dostępu łańcuchowi włamów do wszystkich naszych kont.
Odświeżanie haseł jest uciążliwe i kończy się zazwyczaj inkrementacją już istniejących.
Patrz: rmuser43, niebieski7.
Ułatwia to włam, a nie utrudnia.
Monitoruj wszelkie anomalie
Otwiera to możliwości automatycznej reakcji: zamknięcie podejrzanego konta, zablokowanie adresu IP, kontakt z użytkownikiem, kontrolowane śledzenie aktywności atakującego.
Automatycznie wylogowywuj nieaktywnych użytkowników
Prosty zabieg stosowany między innymi przez strony bankowe. Po określonym czasie (np. 10 minutach) nieaktywności zostajesz wylogowany z systemu, co zapobiega nieautoryzowanym wejściom.
Jak jeszcze można wzmocnić bezpieczeństwo WordPressa?
WordPress jest od lat najczęściej atakowanym CMS. Wynika to poniekąd z faktu, że używa go około 36 procent witryn w sieci, czyli jakieś 400 milionów. Znalezienie przez hackera luki w popularnym pluginie sprawi więc, że dostanie się on do ogromnej liczby witryn bez dodatkowego nakładu pracy.
Żródło: https://sucuri.net/reports/19-sucuri-2018-hacked-report.pdf
Zablokuj egzekwowanie funkcji PHP dla niezaufanych folderów
Tylko niektóre foldery w WP egzekwują funkcje PHP. Jeśli próbuje robić to jakiś inny folder – „to wiedz, że coś się dzieje”. Ataki hackerskie często tworzą bowiem własne folderyz kodem PHP lub wstrzykują go w istniejące, ale normalnie go nie wykonujące.
Ostrzeżenie!
To już bardziej zaawansowane metody zabezpieczania WordPressa, znane jako Complex WordPress Hardening Methods, które wymagają odpowiedniej wiedzy programistycznej.
Gmeranie na backendzie i bazach danych może się źle skończyć, gdy nie do końca wiesz co robisz.
EDIT: właściwie, to na pewno skończy się to źle. Poniżej jednak ogólny mechanizm, jak to zrobić:
- Uzyskaj dostęp do plików swojej witryny za pomocą cPanel> Menedżer plików. Jeśli nie masz dostępu do cPanel, możesz użyć klienta FTP, takiego jak FileZilla. Będziesz potrzebować swoich danych logowania FTP, aby uzyskać dostęp do swoich plików.
- Przejdź do public_html, a zobaczysz trzy foldery o nazwach wp-includes, wp-admin i wp-content.
- Następnie poszukaj pliku .htaccess. Jeśli nie istnieje, możesz go utworzyć, otwierając edytor tekstu, np. Notatnik, i zapisując go jako .htaccess.
- Wklej następujący kod do pliku .htaccess:
<Files *.php>
deny from all
</Files>
- Jeśli tworzysz nowy plik, musisz przesłać go do dwóch folderów: wp-includes i wp-content/uploads
Wyłącz edytor motywu w panelu admina
Powód:
jeśli hacker dostanie się do panelu admina to właśnie przez tą furtkę zaaplikuje Ci wstrzyknięcie SQL, SEO Spam i bardzo popularny Japanese SEO Spam, czyli „krzaczki” na stronie. Oprócz tego może edytować pluginy i motyw.
- W menedżerze plików znajdź plik wp-config, kliknij prawym na myszy i edytuj go.
- Znajdź Button „Disable Encoding Check”
- Otworzy się coś czego prawdopodobnie nie rozumiesz. Przescrolluj w dół aż znajdziesz linię z komentarzem: /* That’s all, stop editing! Happy publishing. */
- Dodaj nad nią: define( ‘DISALLOW_FILE_EDIT’, true );
- Zapisz zmiany. Prawdopodobnie wyłączyłeś edytor. Gotowe.
Jeśli nie masz dostępu do cPanel możesz to zrobić poprzez klienta FTP, np. Filezilla.
Zmień sposób przechowywania danych na metodę szyfrowaną
WordPress przechowuje różne dane, np. do logowania, aby nie trzeba było za każdym razem ich wpisywać. Istotne jest w tym to, jak je przechowuje. Moze to robić bowiem w formie stringów (typ danych w formie zwykłego tekstu) lub np. zaszyfrować je. Wówczas nawet w przypadku dostania się do nich bardzo trudno cos z nich wywnioskować i zastosować przeciw stronie.
Służy do tego znów – odpowiedni zapis w pliku wp-config.php
Nie będę go tu jednak przytaczać, gdyż znów jest to gmeranie w kodzie, którym nie powinna zajmować się osoba nie mająca z tym wcześniej do czynienia. Zamiast tego zaznaczę tylko szerszy temat jakim są WordPress Salts and Security Keys (dla zainteresowanych).
Aktualizuj oprogramowanie
WordPress jest aktualizowany mniej więcej co 4 miesiące. Aktualizacje nie są zautomatyzowane, więc o nich nie zapominaj. Zwłaszcza, że przegapienie kilku (a nawet kilkunastu) może powodować kolizje, np. z pluginami. Ciężko wtedy dojść do ładu z własną stroną. Z punktu widzenia tego artykułu najważniejsze jednak jest to, że nieaktualizowany WP to większe ryzyko skutecznego ataku. Update’y WordPressa dotyczą przeważnie właśnie kwestii bezpieczeństwa.
Zdefiniuj role użytkowników panelu admina strony
Domyślnie WordPress ma sześć ról dla użytkowników, jednak możesz zdefiniować własne nazwy i zakresy uprawnień. Zabezpieczy to stronę przed działaniami osób bez odpowiednich kompetencji, które mogłyby skutkować np. wgraniem plugina z ryzykownego źródła lub wyłączeniem zabezpieczeń.
Przeterminowane motywy i pluginy to też problem dla bezpieczeństwa
Twoja strona na WordPressie składa się z wielu pluginów i wybranego motywu. To wszystko są oddzielne programy, które starają się ze sobą współpracować i nie wchodzić w kolizje. Każdy z nich jest, lub nie, aktualizowany przez twórcę aby nadążyć za standardami, dopasować się do aktualizacji najpopularniejszych motywów, reagować na wykryte luki w bezpieczeństwie. Każdy z osobna. Wystarczy, że jeden z tych elementów tego nie zrobi lub ty zapomnisz o aktualizacji – i już jest potencjalna luka w bezpieczeństwie.
Złośliwe oprogramowanie
Malware – (od ang. malicious i software) to dość szerokie pojęcie na oprogramowanie, które z zasady robi rzeczy nieporządane. Najczęściej dociera do witryny poprzez wgranie nieautoryzowanych pluginów i motywów lub zaprzestanie aktualizacji tychże, czy to przez twórcę czy admina. Niektóre pluginy powstają tylko po to aby przemycić malware, niektóre imitują te znane i popularne, motywy podszywają się pod te sprawdzone i bezpieczne. Wszystko po to aby umieścić szkodliwy kod na stronie.
Paradoksalnie rozwiązaniem tego problemu są… między innymi pluginy dotyczące bezpieczeństwa, jak bardzo popularny Wordfence.
Wstrzykiwanie SQL
Structured Query Language (SQL) Injections – to już klasyk wśród włamów – SQL służy do obsługi baz danych (w duzym skrócie). Gdy taki atak się powiedzie, hacker zyskuje możliwość tworzenia nowych kont, dodawać nieautoryzowaną zawartość, w tym linki, wysyłać, edytować i usuwać dane. Ataki są przeprowadzane przez źle zabezpieczone pola formularzy.
Aby temu zapobiec, należy przede wszystkim wyłączyć możliwość przesyłu znaków specjalnych używanych do pisania kodu. I znowu – z pomocą przychodzą pluginy, które zadbają o walidację formularzy pod kątem poprawności i bezpieczeństwa.
Search Engine Optimization Spam
SEO Spam – ten typ ataku celuje w najlepiej rankujące strony witryny wypełniając je spamowymi frazami kluczowymi, które bardzo ciężko wypromować bo są zwalczane przez algorytm, wstrzykuje pop-upy (również zwalczane), oraz umieszcza linki przekierowujące na inną stronę.
Pod SEO Spam podchodzić może również atak polegający na przekierowaniu stron na inną stronę.
Cross-Site Scripting
XSS to atak na funkcjonalność strony polegający na umieszczeniu szkodliwego kodu na backendzie. Efektem może być np. podmiana formularza kontaktowego w celu kradzieży danych użytkownika. Główną furtką do takiego ataku są nieaktualizowane pluginy i szablony.
DoS & DDoS
DoS – atak ma na celu zablokowanie dostępu do strony użytkownikom oraz adminom poprzez „zapchanie” ruchem serwera. Jesli na serwerze jest hostowanych więcej stron, atak dotyczy ich wszystkich. Można więc przyjąć, że jest to atak bardziej na serwer niż na stronę.
DDoS – polega na tym samy co DoS, różni się jednak skalą zaangażowanych zasobów. Jest przeprowadzany przez wiele zsynchronizowanych maszyn formujących się w botneta, dodatkowo ukrywając źródło spamowego ruchu. DDoS jest więc taką bardziej paskudną formą DoS.
Zabezpieczyć przed takim atakiem można się poprzez nieoszczędzanie na dostawcy serwera. Wybierz takiego o dobrej reptacji, który konkuruje jakością i bezpieczeństwem, a nie ceną.
Phishing
Phishing to łowienie nieuważnych użytkowników na przynętę, najczęściej w postaci linka w niemoderowanym komentarzu. Zabezpieczeniem jest ReCaptcha bazująca na machine learning, które rozpoznaje schematy postowania i odfiltrowuje te szkodliwe.
Hotlinking grafik
Hotlinking polega na osadzaniu na innej stronie twojej treści, zwłaszcza graficznej. Zabezpieczeniem są pluginy dodające znak wodny z twoim logo lub adresem witryny na grafikach. Nie zabezpiecza to przed takim atakiem (lub raczej niecną praktyką), jednak sprawia, iż jest on mało sensowny.
WordPress nie jest złą czy ryzykowną platformą. Wręcz przeciwnie, jego zalety przyczyniły sie do jego popularności i dominacji w sieci – i jako celebryta jest celem ataków. Pamiętaj o aktualizacjach i zasadach bezpieczeństwa wymienionych w tym artykule, a szansa na infekcję twojej witryny spada diametralnie.
Jeśli masz więcej pytań – śmiało się z nami skontaktuj.