Pisałem dzisiaj krótki poradnik dla klienta, jak prosto zabezpieczyć stronę na WordPress i tak o to powstał niniejszy artykuł, który udostępniam wszystkim czytelnikom, jako że w ostatnich miesiącach na polskie strony idą zmasowane ataki i zabezpieczenie strony jest sprawą priorytetową dla każdego z nas. Przedstawiam mini poradnik do podstawowej ochrony stron na WordPress, który zatrzymuje większość ataków zanim dotrą do strony docelowej. Oczywiście metod na zabezpieczenie WordPress jest znacznie więcej, jednak te są podstawą od której należy zacząć, także w przypadku lepszej jakości stron zapleczowych.
Wtyczka WordPress Firewall
Wtyczka autorstwa seoegghead – Pobierz
Jest też nowa wersja WordPress Firewall 2 autorstwa Matthew Pavkova, jednakże jeszcze jej nie testowałem na WordPressowskich instalacjach – Pobierz
Dlaczego akurat ta wtyczka? Na rynku oprogramowania znajdziemy masę wtyczek, o wiele bardziej kompleksowych. WordPress Firewall oferuje podstawowy aparat filtrowania zapytań (posiada tylko podstawowe opcje konfiguracyjne) ale jednocześnie najmniej obciąża serwer ze wszystkich wtyczek związanych z zabezpieczaniem WordPress. Jeśli zajdzie potrzeba można skorzystać z bardziej rozbudowanych alternatyw jak Wordfence Security lub BulletProof Security (BulletProof to najbardziej zasobożerna wtyczka ze wszystkich, ale oferuje najbardziej rozbudowane funkcje do zabezpieczenia WordPress).
Zabezpieczenie wp-login.php metodą htaccess na UserAgent
Regułka do dodania do pliku .htaccess
<FilesMatch ^((wp-login|admin)\.php$)$>
SetEnvIfNoCase user-Agent ^mojtajnykod [NC] my_bot
Order Deny,Allow
Deny from all
Allow from env=my_bot
</FilesMatch>
Po dodaniu kodu do .htaccess, tylko osoby które legitymują się konkretnym UserAgent String (mojtajnykod), będą mogły zalogować się do strony WordPress. User Agent zmieniamy standardowo poprzez konfigurację przeglądarki na ciąg „mojtajnykod”. Możemy również użyć wtyczek dedykowanych, dla Google Chrome – User-Agent Switcher for Chrome, dla Firefox, Waterfox, Pale Moon – User Agent Switcher for Firefox. Na urządzeniach z Androidem można użyć przeglądarki Dolphin, gdzie można łatwo podmienić User Agent.
W przypadku użycia błędnego User Agent podczas dostępu do strony logowania lub panelu admina, pojawi się błąd jak poniżej…
Oczywiście metoda jest dość nieporęczna i nie każdy klient będzie chciał ją zastosować, niemniej jednak jest bardzo skuteczna przeciw atakom DDOS na stronę logowania wp-login, znacząco zmniejszając ryzyko włamania, jak również minimalizując obciążenie serwera przy zmasowanych próbach ataków (a tych w ostatnim czasie bardzo dużo). Trzeba też pamiętać, by przed wejściem na inne stronki zmienić User Agent na domyślny (spreparowanego użyć tylko do zalogowania się na administrowaną stronę). Hasło oczywiście warto zmieniać co kilka miesięcy, nie zapominając o modyfikacji konfiguracji UserAgent w przeglądarkach używanych do logowania.
Wtyczka Limit Login Attempts
Stara ale jara jak to mówią 🙂 Do blokowania ataków DDOS na wp-login, jak ktoś nawet odgadnie hasło z User Agent to będzie miał do pokonania jeszcze tę zaporę. W zależności od naszej konfiguracji, 3 lub 4-krotna zła próba zalogowania zakończy się zbanowaniem adresu IP na okres 24h, przy kolejnych próbach adres IP może zostać dożywotnio zbanowany.
Limit Login Attempts można pobrać z oficjalnego repozytorium wtyczek – Pobierz. Oczywiście w jej zastępstwie możecie zainstalować inną wtyczkę oferującą podobną funkcjonalność, jednak mam do niej sentyment dlatego rekomenduję 🙂
Blokowanie adresów IP lub podsieci
Blokowanie abusywnych adresów IP i/lub całych podsieci atakujących instalacje WodPressowskie. Jakiś czas temu z uwagi na zmasowane ataki udostępniłem tego typu plik. Więcej informacji znajdziesz na podstronie – https://techformator.pl/plik-htaccess-z-lista-abusywnych-podsieci/
Jego zawartość proszę dodać do istniejącego pliku .htaccess. Wbrew panującym opiniom co niektórych osób dodanie jednej linijki kodu z nawet 1000 adresów podsieci nie powoduje znaczącego obniżenia wydajności serwera, niemniej jednak adresy IP i/lub podsieci można efektywniej blokować dodając regułki do pliku konfiguracji serwera lub bezpośrednio na firewallu. W sieci dostępne są skrypty do zamiany regułek htaccess deny na IPtables, zawsze można też samemu napisać taki skrypt w bashu.
Monitorowanie
Blokowanie jest tylko jedną stroną medalu. Równie istotną rzeczą jest monitorowanie działań użytkowników/botów. Na stronach możemy zainstalować dedykowane wtyczki identyfikujące działalność użytkowników (np. Wordfence Security posiada taką funkcję), warto również co jakiś czas przeglądać logi serwera. Do łatwiejszego przeglądania można użyć komercyjnej aplikacji Apache Logs Viewer. W przypadku wykrycia podejrzanego działania, można zablokować adres IP lub całą podsieć, zablokować abusywne query strings. Istnieją również systemy zbierające dane o atakach i wysyłające do nas mail. W przypadku gdy mamy poinstalowanych wiele zaplecz, można w ten sposób wydobyć sporo cennych informacji, które pozwolą zwiększyć bezpieczeństwo nie tylko u klientów, ale również w sieci blogów zapleczowych.
Jak będzie czas, postaram się napisać bardziej kompleksowy poradnik w zakresie zabezpieczania systemu CMS WordPress.