Ciągłe ataki typu “Brute Force” oraz wszędobylski spam skutecznie uprzykrza nam życie i obsługę administracyjną WordPressa. Bazując na własnych, wieloletnich doświadczeniach jakie wdrażałem na stronach swoich klientów, okazuje się, że nawet najprostsze rozwiązania są skuteczne. I nie trzeba być jakimś specjalistą, aby samemu je zastosować. Oczywiście nigdy nie będzie 100% zabezpieczenia, bo takie nie istnieją. Jest tylko kwestią czasu jak znalezione kolejne “dziury czy luki” zostaną wykorzystane do ataku. Wychodzę z założenia, że “co człowiek stworzy to i człowiek jest w stanie złamać”.

WordPress ma już w tej chwili wielką rzeszę użytkowników i dlatego jest najczęstszym celem wszelkich ataków hakerskich, które z roku na rok wzmagają się. I nie dotyczą to tylko dużych serwisów. W internecie można znaleźć wiele rozwiązań mniej lub bardziej zaawansowanych. Jednak zastosowanie prostych zasad, o których mowa jest poniżej, sprawia, że można uniknąć większości problemów.

1. Przede wszystkim aktualizacje i backup.

Naprawdę wiele problemów można uniknąć przez same aktualizacje oraz usunięcie starych pluginów czy motywów. Są powodem m.in. zawirusowania całego systemu, a nawet i konta hostingowego. Z zainfekowanym WordPress’em można sobie jeszcze poradzić, ale jeżeli oberwały pliki na całym serwerze, to już jest poważny kłopot. Czasochłonny i kosztowny. W tej sytuacji w większości usługodawcy hostingu dają możliwość przeskanowania konta i zapisania raportu. Wówczas mamy ułatwione zadanie z wyszukaniem zainfekowanych plików i usunięciem lub wgraniem nowego. I najważniejszy moim zdaniem element to backup, backup i jeszcze raz backup! Naprawdę niewiele trzeba zrobić, aby wdrożyć regularną kopię bezpieczeństwa.

Wystarczy skorzystać z jednego z darmowych plugin’ów: BackWPup lub UpdraftPlus i odpowiednio skonfigurować harmonogram. Kopie są zapisywane albo lokalnie albo na zewnętrznym serwerze czy to ftp czy w chmurze. Częstotliwość tworzenia kopii bezpieczeństwa jest uzależniona od tego, jak często dokonujemy zmian w swoim serwisie.

2. Ochrona przed spamem.

Nie będę opisywał szczegółów czym jest, bo już na ten temat bardzo dużo napisano. W sieci można znaleźć wiele artykułów czy poradników. Podczas wdrażania strony osobiście zawsze instaluję i zalecam Anti-Spam usuwając przy tym Akismet, który jest płatny, a przy tym potrafi oznaczyć jako spam dobre komentarze. Anti-Spam jest sprawdzony, skuteczny, co potwierdzają opinie w repozytorium i przede wszystkim bezpłatny. Jak do tej pory na wszystkich stronach, gdzie zainstalowałem nie ma problemów ze spamem.

3. Ataki typu Brute Force.

Z tego typu atakiem jest już dużo gorzej, gdyż polega na próbie logowania się do panelu administracyjnego. Najczęściej skrypty wykorzystują domyślnego użytkownika jakim jest “admin” oraz hasła: “admin” lub “123456” albo “qwerty” czy “password”. Jest to najczęściej popełniany błąd podczas instalacji systemu. A działo się tak dlatego, że to sam WordPress narzucał użytkownika “admin” w wersjach wcześniejszych niż 3.0. Efektem tego typu ataków jest nadmierne obciążenie serwera, co w konsekwencji może dojść do zablokowania “wyłączenia” strony przez usługodawcę hostingu. A skutki udanego włamania się do panelu mogą być naprawdę opłakane. W związku z tym zastosuj się do poniższych prostych, podstawowych zaleceń:

  • nigdy nie korzystaj z autoinstalatorów,
  • zawsze twórz unikalnego użytkownika, nigdy admin!,
  • ustaw trudne, długie hasło (obecnie WP automatycznie generuje silne hasła),
  • stosuj inny prefix tabel niż domyślny “wp”,
  • zawsze należy stosować trudne, indywidualne hasła, a przy dużej ilości użytkowników wręcz wymuszać poprzez odpowiedni plugin,
  • korzystaj z bezpiecznego połączenia SSL (większość dobrych hostingów udostępnia darmowy Let’s Encrypt),
  • dodaj blokadę na katalog wp-admin w panelu serwera,
  • ustaw dodatkowe zabezpieczenie na wp-login.php w panelu serwera, jeżeli nie prowadzisz bloga i nie korzystasz z komentarzy,
  • zmień sposób logowania się bez wykorzystywania wp-login.php poprzez zastosowanie reguł w .htaccess,
  • zainstaluj wtyczkę Limit Login AttemptsMath Captcha,
  • jeżeli nie prowadzisz bloga czy też inni użytkownicy nie muszą się rejestrować – wyłącz rejestrowanie się i komentowanie,
  • jeżeli masz stały adres IP, to rozważ dostęp do panelu tylko ze swojego adresu lub puli adresów,
  • wyłącz edytor, który jest dostępny w panelu: Wygląd/Edytor dodając wpis w pliku wp-config.php:
    define( 'DISALLOW_FILE_EDIT', TRUE );
  • skasuj obowiązkowo pliki tekstowe typu readme.txt, readme.html, license.txt po każdej aktualizacji,
  • usuń wszelkie informacje o WP m.in. wersji albo poprzez plugin albo wstawiając poniższą funkcję w pliku functions.php (oczywiście robimy to w motywie potomnym):
    function wpartg_secure_generator( $generator, $type ) {
    	return '';
    }
    add_filter( 'the_generator', 'wpartg_secure_generator', 10, 2 );
    
  • usuń wszelkie opisy czy komentarze z plików motywu czy pluginów np. za pomocą wtyczki Autoptimize, który jednocześnie zoptymalizuje kod strony,
  • zabezpiecz się przed indeksowaniem ważnych katalogów w pliku robots.txt np. dodając taki wpis:
    User-agent: *
    Disallow: /wp-admin
    Disallow: /wp-includes
    Disallow: /wp-content
    
  • wgraj do każdego katalogu pusty plik index.html (tak, ma być html).

Jest to tylko część rozwiązań jakie można wdrożyć we własnym zakresie. Przy każdej nowo uruchamianej stronie czy sklepie wykonuję to standardowo oraz wdrażam jeszcze inne mechanizmy związane m.in. z wp-config.php, blokowaniem xmlrpc.php i wiele innych.

4. Wnioski.

Jest takie mądre powiedzenie, że “lepiej zapobiegać niż leczyć“. I to dotyczy nie tylko nas ludzi, ale także systemów operacyjnych czy CMS’ów. Usunięcie tylko samych objawów bez dodatkowych zabiegów, da tylko pozorny efekt usunięcia problemu. I będzie to na krótką metę. Należy wziąć pod uwagę, że infekcja nie zawsze jest od razu widoczna. Może upłynąć wiele dni, tygodni czy nawet miesięcy, a do tego czasu, może oberwać nawet serwer. I to już wówczas będzie “pozamiatane” … Jeżeli nie będziesz mógł sobie z tym poradzić, to zapraszam do kontaktu. Te w/w i inne dodatkowe zabezpieczenia będziesz miał wdrożone w ciągu 1 dnia zanim nie będzie za późno. Nie warto zwlekać!