Czy WordPress jest bezpieczny?
Olbrzymia popularność WordPress powoduje, że jest wartościowym celem dla zautomatyzowanych ataków hakerskich. Z punktu widzenia osoby, która chce uzyskać korzyści np. w postaci wykradania danych, stworzenia botnetu, albo umieszczania spamerskich linków, napisanie bota przeszukującego internet i wykorzystującego błędy w milionach stron jest niezwykle korzystna. Raz napisany program będzie sukcesywnie i automatycznie włamywał się do stron i robił to, do czego został stworzony, przynosząc korzyści swojemu autorowi. Chyba że załatamy dziurę lub zabezpieczymy się na inne sposoby i nie pozwolimy robotowi na swobodny dostęp do strony.
Statystycznie duża liczba ataków przeprowadzana na WordPress nie wynika z kiepskiej jakości kodu, ale raczej z połączenia popularności, nierzadko amatorskiego podejścia do zarządzania systemem, losowej jakości dodatków oraz kiepskich hostingów. Nie oznacza to jednak, że WordPress nie jest bezpieczny. Aktualizacje bezpieczeństwa są publikowane na bieżąco, instalują się automatycznie i dotyczą nawet starszych wersji systemu. Firmy hostingowe coraz chętniej oferują dedykowane oprogramowanie, filtrujące niepożądane działania, a ponadto dostępne są wtyczki dodające do CMS niestandardowe zabezpieczenia.
Popularny skaner malware dla WordPress
Ponad dwa miliony aktywnych użytkowników — taką liczbą instalacji może pochwalić się wtyczka Wordfence Security, będąca dla wielu podstawową linią obrony i zabezpieczania WordPressa. Jest też jedną z pierwszych w wynikach wyszukiwania oficjalnego repozytorium wtyczek na hasła „firewall”, „security” oraz „antivirus”. Nic dziwnego — jej użyteczność, nawet w darmowej wersji, jest bardzo wysoka.
Wordfence Security w wersji darmowej oferuje między innymi:
- Web Application Firewall, czyli zaporę ogniową działającą na poziomie serwera, przed wykonaniem kodu WordPress, która na bazie aktualizowanych okresowo reguł, pozwala na filtrowanie działań uznawanych za niebezpieczne;
- Wbudowany skaner plików źródłowych CMS, wtyczek oraz szablonów, a nawet innych plików umieszczonych w folderze i podfolderach gdzie zainstalowany jest WordPress. Co istotne, skaner nie tylko informuje o zmienionych plikach, ale potrafi także porównać je z oryginałem, a także zaproponować ich usunięcie (jeżeli są zbędne) lub zamianę;
- Zabezpieczenie przed atakami typu brute force, co w praktyce oznacza możliwość ustalania limitów dla prób logowania, przypomnienia hasła, a także ograniczenie dostępności do strony niechcianym robotom;
- Filtr antyspamowy dla komentarzy;
- Natychmiastowe lub cykliczne powiadomienia oraz raporty e-mail z działania Wordfence zawierające informacje o atakach, nieudanych logowaniach, zmianach w plikach, nowych użytkownikach, etc.;
- Kilka dodatkowych, drobnych narzędzi, wyłączających np. możliwość wykonywania kodu w folderze uploads, gdzie WordPress domyślnie gromadzi przesłane pliki.
Nowy interfejs Wordfence w wersji 7.0
Ostatnia wersja tej popularnej wtyczki doczekała się kompletnie nowego interfejsu graficznego. Co prawda, u wielu doświadczonych użytkowników ta zmiana powoduje frustracje, ponieważ w konsekwencji doprowadziła do totalnej reorganizacji wszystkich ustawień. Z mojego punktu widzenia jest to jednak bardzo dobre posunięcie. Wyspecjalizowane funkcje posiadają teraz swoje odrębne ekrany — Firewall, Skaner, Narzędzia dodatkowe oraz Ogólne ustawienia wtyczki.
W nagłówku każdej podstrony zobaczymy proste liczniki obrazujące stopień wdrożonych zabezpieczeń. Warto zauważyć, że dla wielu z tych opcji osiągnięcie 100% jest niemożliwe bez zakupienia wersji premium. Odnoszę jednak wrażenie, że autorzy wtyczki podchodzą do tematu bezpieczeństwa w sposób odpowiedzialny i większość opcji premium dotyczy ustawień precyzyjnych, które w wersji darmowej są niedostępne lub zautomatyzowane (nie mamy na przykład możliwości ustawienia harmonogramu automatycznych skanów — Wordfence zadecyduje za nas, kiedy je uruchomić). Odświeżona szata graficzna zyskała na czytelności. Jest bardziej dostępna dla użytkowników, wprowadza wyraźny podział na sekcje strony i korzysta ze spójnej komunikacji za pomocą jednakowych kolorów oraz ikonografii. Cieszy również ograniczenie maksymalnej szerokości interfejsu, co docenią użytkownicy bardzo dużych monitorów.
Jak skonfigurować Wordfence Security?
Choć wtyczka zaprojektowana jest w taki sposób, aby większość jej funkcji działała od razu po instalacji, niektóre wymagają ręcznego włączenia.
Po aktywowaniu wtyczki powinniśmy zobaczyć komunikat wyświetlany na górze strony zapleczowej, zachęcający do skonfigurowania Web Application Firewall. Choć zapora działa od razu po uruchomieniu wtyczki, domyślnie ładuje się jako część systemu WordPress. Zaawansowana konfiguracja tego modułu umożliwia filtrowanie niektórych ataków jeszcze przed uruchomieniem podstawowych funkcji systemu, jest więc bardziej efektywna.
Jeżeli zdecydujemy się na zaawansowaną konfigurację, konfigurator poprowadzi nas przez ten proces, wykrywając rodzaj oprogramowania serwerowego, z którego korzystamy oraz oferując wykonanie kopii zapasowej plików. htaccess, oraz php.ini. Zmiany, które zostaną następnie wprowadzone dotyczą konfiguracji serwera – jeżeli nie mamy dostępu do systemu plików strony przez protokół FTP lub nie wiemy jak w razie awarii przywrócić zmiany w plikach php.ini lub. htaccess — lepiej nie decydujmy się na ten krok, ponieważ może on spowodować, że stracimy dostęp do zaplecza strony. W tym wypadku warto poprosić o pomoc eksperta.
Na szczęście pozostałe funkcje wtyczki możemy konfigurować bez przeszkód korzystając z interfejsu graficznego. Poszczególne ustawienia powinny być dopasowane do naszych potrzeb — niezależnie od tego, warto zmienić domyślne wartości, o których piszę poniżej:
Włączenie skanowania wtyczek oraz szablonów
Domyślnie skaner analizuje tylko pliki związane bezpośrednio z CMS WordPress, wykluczając ze skanu zainstalowane wtyczki oraz szablony. Na szczęście w wersji darmowej możemy skorzystać ze skanu również i tych obszarów systemu. Aby zmienić ustawienia skanowania, musimy:
- Przejść do podstrony Scan;
- Wybrać Scan Options and Scheduling;
- W sekcji General Options włączyć Scan theme files against repository versions for changes oraz Scan plugin files against repository versions for changes;
- Zapisać zmiany klikając Save Changes w prawym, górnym rogu strony.
Przy następnym skanie Wordfence będzie analizował nie tylko główne pliki systemu, ale także pliki szablonów oraz wtyczek w poszukiwaniu złośliwego kodu.
Włączenie raportów e-mail
Wordfence może przesyłać raporty cykliczne lub natychmiastowe alerty dotyczące bieżących zdarzeń na stronie. Warto włączyć raporty tygodniowe — oferują rozsądny przegląd stanu strony, informując na przykład o nieaktualnych wtyczkach. W celu włączenia raportów musimy:
- Kliknąć Global Options na stronie głównej (Wordfence Dashboard);
- W zakładce Global Wordfence Options odnaleźć Where to e-mail alerts i tam podać adres e-mail, na który chcemy otrzymać powiadomienia;
- W zakładce Alert Preferences włączyć interesujące nas obszary. Sugeruję Alert on critical problems oraz Alert me when there’s a large increase in attacks detected on my site;
- W zakładce Activity Report włączyć Enable e-mail summary, a z rozwijanego menu wybrać Once a week.
- Zapisać zmiany klikając Save Changes w prawym, górnym rogu strony.
Przy tak wykonanej konfiguracji, co tydzień na naszej skrzynce e-mail znajdziemy czytelne podsumowanie stanu strony www.
Wyłączenie wykonywania kodu dla folderu uploads
Istnieją rodzaje ataków, które pozwalają na załadowanie dowolnego pliku do folderu uploads, gdzie WordPress domyślnie przechowuje przesłane przez użytkownika pliki. Można jednak zablokować wykonywanie jakiegokolwiek kodu umieszczonego w tym folderze. Aby to zrobić, należy:
- Kliknąć Global Options na stronie głównej (Wordfence Dashboard);
- W zakładce Global Wordfence Options włączyć Disable Code Execution for Uploads directory;
- Zapisać zmiany klikając Save Changes w prawym, górnym rogu strony.
Wprowadzone zmiany uniemożliwiają uruchomienie jakiegokolwiek skryptu z poziomu folderu uploads.
Ograniczenie prób logowania — zabezpieczenie przed atakami typu brute force
Zamiast instalować dodatkową, popularną wtyczkę Limit Login Attempts, można skorzystać z opcji wbudowanych w Wordfence. Firewall pozwala na blokowanie zbyt wielu prób logowania oraz resetowania hasła z możliwością określenia czasu blokowania oraz ilości prób. W celu skonfigurowania blokady należy:
- Przejść do podstrony Firewall;
- Kliknąć All Firewall Options;
- W zakładce Brute Force Protection odnaleźć Lock out after how many login failures oraz Lock out after how many forgot password attempts i ustawić próg, po którego przekroczeniu użytkownik zostanie zablokowany;
- W tej samej zakładce odnaleźć Count failures over what time period i ustawić czas, przez który liczone są próby (sugeruję godzinę) oraz niżej w Amount of time a user is locked out ustawić na jak długi czas będzie obowiązywać blokada (sugeruję 24 godziny);
- Zapisać zmiany klikając Save Changes w prawym, górnym rogu strony.
W tym samym obszarze możesz również włączyć automatyczne blokowanie po wpisaniu określonych loginów. Wiele skryptów zaczyna atak od próby zalogowania na konto „admin”, „administrator” lub „root”. Wpisanie tych loginów pomoże zablokować niechciane działania jeszcze przed osiągnięciem limitu. Jeżeli Twoje konto posiada taki login, powinieneś rozważyć jego zmianę na bardziej niestandardową i trudną do odgadnięcia.
Podsumowanie
Wordfence Security to doskonałe narzędzie uszczelniające WordPress oraz informujące administratorów o zagrożeniach. Warto przy tym pamiętać, że żadna wtyczka nie stanowi panaceum i nie zabezpieczy nas przed każdym możliwym atakiem. Na nic zdadzą się nawet najbardziej wyrafinowane zabezpieczenia, jeżeli logujemy się poprzez konto „admin”, a nasze hasło to „administrator”. Również firmy hostingowe nie pozostają bez winy. Posiadanie dużej ilości skryptów na jednym koncie hostingowym bez domyślnego ograniczenia w postaci „open_basedir” może prowadzić do wzajemnej infekcji i rozprzestrzeniania się złośliwego oprogramowania w obrębie konta hostingowego — nie wszystkie firmy blokują takie działania w standardzie. W takim wypadku zabezpieczanie i czyszczenie jednego systemu z malware jest bezcelowe, skoro złośliwe skrypty mogą radośnie buszować po innych stronach.
Instalacja i konfiguracja tej wtyczki dodaje podstawową warstwę bezpieczeństwa do strony www i co równie ważne — oferuje mailowe raportowanie o napotkanych problemach, umożliwiając przeprowadzenie manualnych działań.
Wordfence nie jest oczywiście jedynym rozwiązaniem tego typu dedykowanym dla CMS WordPress. Jeżeli korzystasz z konkurencyjnego produktu, daj znać, co o nim sądzisz np. w porównaniu do Wordfence. Chętnie przeczytam jakie techniki bezpieczeństwa stosujesz w obrębie swojej strony internetowej.