Skocz do zawartości

[Poradnik] Jak zabezpieczyć stronę na wordpress przed wirusami


mysc

Rekomendowane odpowiedzi

Opublikowano

 Jak zabezpieczyć stronę na wordpress przed wirusami

 

Spis treści:

1. Wpływ wirusów na pozycjonowanie stron

2. Jak usunąć szkodliwe podstrony dodane przez wirusa?

3. Najważniejsze zabezpieczenia Wordpress

4. Jak skonfigurować wtyczkę "All In One WP Security"

 

 

1. Wpływ wirusów na pozycjonowanie stron

Jeśli swoją stronę i pracę nad nią traktujemy poważnie, powinniśmy zadbać o jej odpowiednie zabezpieczenie. Niektóre typy wirusów potrafią kompletnie zniszczyć nasze wysiłki i osiągnięcia w SEO. Zabezpieczenie stron to podstawa... ale też nie zawsze o tym wiedziałem.

Przez długi czas nie przejmowałem się w ogóle "jakimiś tam wirusami WP". Byłem ignorantem, ale wszystko się zmieniło gdy spotkałem się z działaniem takiego wirusa. Moja strona została zawirusowana poprzez luki w kodzie darmowej wersji wtyczki "Contact Form" (starszej wersji niż obecna), ale tego typu szkodliwe oprogramowanie najczęściej możemy złapać ściągając scrackowane wtyczki czy szablony wordpress z losowych stron w internecie (tzw. "nulledy"), zamiast kupić je u oficjalnego źródła.

W moim przypadku wirus był w formie ukrytego skryptu generującego tysiące podstron z losowymi adresami url oraz tekstem i backlinkami do innych stron w internecie. Osobiście doświadczyłem wirusa który utworzył ponad 254 TYSIĄCE ZAINDEKSOWANYCH PODSTRON i około 50 tysięcy takich które się jeszcze nie zdążyły zaindeksować. Łącznie stworzył więc ponad 300 tys. spamowych, śmieciowych podstron na mojej domenie.

Nie muszę chyba mówić jak taka ogromna liczba śmieciowych zawirusowanych stron może wpłynąć na ogólną kondycję naszej strony? Google przy ocenie ogólnej jakości strony patrzy na proporcje. Stąd jeśli mamy 2000 stron wysokiej jakości oraz 10 stron niskiej jakości - nie mamy się czego obawiać. Sytuacja zmienia się kiedy mamy do czynienia z odwrotną proporcją. U mnie wyglądało to dokładnie tak:

Indeksowanie seo stron wordpress

 

2. Jak usunąć szkodliwe podstrony dodane przez wirusa?

Jeżeli dopadł nas wirus, w pierwszej kolejności należy go usunąć. Niestety nie ma standardowej metody by go znaleźć - z tym polecam się zwrócić do specjalisty. W usługach mysca jest programista i do niego na pewno można się zgłaszać z takimi problemami (także w celu sprawdzenia czy dana wtyczka/szablon nulled są bezpieczne).

Następnie usuwamy stworzone przez niego podstrony, najlepiej bezpośrednio z bazy danych - bo ciężko zrobić to przecież ręcznie. Tutaj również przydatny może być programista, przynajmniej ja bym tego sam nie robił.

Gdy wirus zostanie usunięty, trzeba naprawić szkody SEO które nam wyrządził. W tym celu powinniśmy usunąć niechciane adresy URL z "Google Search Console". Jeśli tych linków jest dużo, co jest prawdopodobne, nie ma sensu bawić się w to ręcznie. Z pomocą przyjdzie nam rozszerzenie do przeglądarki  Google Chrome o nazwie "Google Webmaster Tools Bulk Url Removal". Za jego pomocą usuniemy wszystkie zbędne podstrony automatycznie, co w tym przypadku jest niezwykle przydatne:

Usuwanie szkodliwych backlinków w GSC

Obsługa tego rozszerzenia jest bardzo prosta. W celu usunięcia niechcianych linków:

1) logujemy się do Google Search Console,

2) kopiujemy listę niechciane linków

3) wklejamy listę do zwykłego pliku tekstowego

4) uploadujemy plik do rozszerzenia - skrypt sam zacznie przesyłać wybrane linki do usunięcia

 

W ten sposób przesłałem ponad 1400 stron, po 25 linków:

image.png.221287178b8aee77a3def61433b7a3ff.png

 

3. Najważniejsze zabezpieczenia Wordpress

Po pierwsze - należy też dbać o bezpieczeństwo konta hostingowego (koniecznie ustawić kody sms do logowania) i samego komputera, którego używamy do połączeń FTP. Samo zabezpieczenie wordpress'a to nie wszystko.
 

3.1. Pirackie szablony i wtyczki nie są bezpieczne

Zabezpieczanie WP to w pierwszej kolejności instalowanie tylko szablonów i wtyczek z bezpiecznego źródła. Pirackie dodatki mogą być zainfekowane - możemy np. nieświadomie postawić stronę phsingową lub podrzucać cookies naszym użytkownikom. Więcej o ryzyku można poczytać na zagranicznym forum BHW: https://www.blackhatworld.com/seo/danger...me.618548/.
 

3.2. Konfiguracja .htaccess

1. Poprzez FTP należy pobrać z folderu głównego Twojej domeny (na której jest postawiony wordpress) plik .htaccess i otworzyć go w notatniku lub czymś bardziej przejrzystym, np. w notepad++.

2. Najpierw zabezpieczymy plik konfiguracyjny "wp-config.php". W tym celu do .htaccess, przed linijką (ponad) "# BEGIN WordPress", należy dopisać poniższy kod:

<files wp-config.php>
Require all denied
</files>
<files wp-config.php>
order allow,deny
deny from all
</files>
 
Tutaj drobna uwaga - niektóre wtyczki muszą dodać do "wp-config" linijki kodu, dlatego polecam wstawić to dopiero po zainstalowaniu wszystkich niezbędnych wtyczek i PAMIĘTAĆ o takiej blokadzie przy instalacji kolejnych.

3. Teraz zabezpieczymy sam plik .htaccess. W tym celu do .htaccess, przed linijką (ponad) "# BEGIN WordPress", należy dopisać poniższy kod:

<files ~ "^.*\.([Hh][Tt][Aa])">
order allow,deny
deny from all
satisfy all
</files>

4. Dodatkowym urudnieniem dla ew. atakującego jest uniemożliwienie dostępu do przeglądania katalogu strony. W tym celu do .htaccess, przed linijką (ponad) "# BEGIN WordPress", należy dopisać poniższy kod:

# directory browsing
Options All -Indexes
 

3.3. Anty-spam

W sieci działa ogromna ilość botów spamujących w komentarzach stron i blogów opartych o WORDPRESS. Aby się tego pozbyć teoretycznie wystarczy włączyć w panelu administracyjnym konieczność zatwierdzania komentarzy przez administratora. Praktycznie problem polega na tym, że spamowych komentarzy będzie bardzo dużo - wobec czego ciężko to ręcznie przefiltrować.

Z pomocą przyjdzie nam wtyczka "Akismet Anti-Spam". Ta wtyczka, po włączeniu, wszelkie komentarze podejrzane o bycie spamem umieści do przejrzenia w folderze "Spam". Działa bardzo dobrze.
 

3.4. Zmiana strony logowania

Standardowa strona logowania do każdego wordpress'a jest taka sama, tj.:

https://domena.pl/wp-admin

To powoduje stosunkową łatwość możliwości zgadywania hasła do panelu przez osoby trzecie.

1. W pierwszej kolejności polecam zmienić swój nick do logowania - nie używaj standardowego "admin".

2. Następnie zmienimy ścieżkę do panelu. W tym celu zainstaluj wtyczkę "WPS Hide Login". Po włączeniu, w ustawieniach ogólnych WP, pojawi się pole do wpisania nowego adresu do logowania. Polecam zapisać sobie ten adres na kartce żeby uniknąć ew. problemów - nie tak łatwo się zalogować gdy się go zapomni.

3. Zmiana adresu nie uchroni nas jednak przed wszystkimi botami zgadującymi hasło - są odporne na tą wtyczkę zmieniającą adres do logowania. Żeby jak najbardziej uniemożliwić próby zgadywania hasła, zainstalujemy jeszcze wtyczkę "Limit Login Attempts". Dzięki temu ograniczymy możliwości prób zgadywania hasła i będziemy mieć pełną historię nieudanych prób logowania + adresy IP z których były dokonywane próby.

Polecane ustawienia i przykładowy log: 

 WPS Hide Login - konfiguracja wtyczki
 
WPS Hide Login - raport blokad prób logowań

Widoczne na screenie próby logowania są stosunkowo niegroźne. Boty automatycznie próbują odgadywać hasło do "admin", "Admin", "nazwa-domeny". Problem zaczyna się dopiero gdy próby dotyczą faktycznie używanego w WP loginu - którego boty nie powinny znać.

Pamiętajcie, że ustawione limity prób logowań obejmują również Was - jeśli ustawimy za ostre limity, sami możemy mieć problem z logowaniem!
 

3.5. Blokada pingback

W teorii pingback służy do informowania o nowych linkach przychodzących do Twojej strony. Oczywiście tego typu informowanie zajdzie tylko pomiędzy stronami, które wspierają tą technologię - czyli np. opartymi właśnie o WP.

W praktyce niestety pingback może posłużyć do wykonania ataków ddos, dlatego zalecam by go wyłączyć. W tym celu należy zainstalować i włączyć wtyczkę "Disable XML-RPC Pingback".
 

3.6. Anti-Malware

Kolejną wtyczką jest "Anti-Malware Security and Brute-Force Firewall". Dzięki temu narzędziu będziemy mogli skanować zawartość WP w poszukiwaniu znanych zagrożeń, a także pozostaniemy pod stałą ochroną "firewalla". Wtyczka jest takim odpowiednikiem komputerowego anty-wirusa, tj. chroni przez znanymi wirusami - stosunkowo nowych typów zagrożeń nie rozpozna. Mimo tego polecam mieć to zainstalowane i włączyć wszystkie opcje firewalla.

Przy wykonywaniu skanu, koniecznie należy wpisać katalogi subdomen i katalogi niezwiązane z WP w polu: "Skip directories with the following names". Proszę NIE USUWAĆ w ciemno znalezionych zagrożeń, raczej traktować je informacyjnie. Taką podstawową zasadą jest nie usuwanie niczego, czego nie znamy. Każde znalezione zagrożenie polecam googlować i upewniać się, że faktycznie jest zagrożeniem - niestety wtyczka całkiem normalne, a nawet bardzo ważne, pliki również może oznaczyć jako zagrożenie, więc trzeba na to uważać.
 

3.7. Kopie zapasowe

Utrzymywanie kopii zapasowych pozwoli nam zachować zaplecze w przypadku prawie każdej ewentualności. W przypadku gdy coś zepsujemy - możemy wgrać kopię, w przypadku gdy ktoś nam coś zepsuje - możemy wgrać kopię, w przypadku gdy nawali hosting - możemy wgrać kopię na inny hosting, w przypadku gdy zechcemy postawić tą samą stronę po przerwie, np. na innej domenie - możemy wgrać kopię.

Istnieje szereg możliwości przechowywania kopii, ale najpewniejsze jest pobieranie ich na dysk i trzymanie OFFLINE, np. na pendrive'ie lub dysku zewnętrznym.

Po stronie wordpressa kopie możemy tworzyć bardzo łatwo dzięki wtyczce "UpdraftPlus - Backup/Restore"

Działanie wymienionej wtyczki doskonale wyjaśnia poniższy filmik:

 

3.8. Ręczna akceptacja komentarzy użytkowników

System zarządzania treścią Wordpress, w swojej podstawowej wersji nie jest odporny na różnego rodzaju ataki. Jego domyślne ustawienia pozwalają na wstrzykiwanie złośliwego kodu m.in. do sekcji komentarzy, umożliwiając atakującemu przechwycenie dowolnych danych, w tym plików cookies użytkownika. Aby zabezpieczyć się przed takim procederem, przechodzimy do ustawień Wordpress:

Konfiguracja wordpress - moderacja komentarzy

Następnie odwzorowujemy ustawienia dla zakładek "Ogólne" i "Dyskusje":

Konfiguracja wordpress - moderacja komentarzy

Konfiguracja wordpress - moderacja komentarzy

Po odwzorowaniu powyższych ustawień klikamy przycisk Zapisz zmiany i pierwszy krok zabezpieczenia jest za nami.

Co właściwie zrobiliśmy? W związku z wcześniej poruszonym tematem możliwości wstrzykiwania złośliwego kodu do niemoderowanych komentarzy, założyliśmy zabezpieczenie w postaci manualnej akceptacji komentarzy pod wpisami. Od teraz sami jesteśmy w stanie weryfikować, który komentarz powinien zostać wyświetlony, a który jest spamem, czy próbą ataku na naszą witrynę.

Dodatkowo przydzieliliśmy domyślną rolę użytkownika jako Subskrybent, czyli taką, która w zasadzie nie daje mu żadnych praw poza przeglądaniem strony internetowej i komentowaniem wpisów.
 

3.9. Hasło i nazwa administratora

Drugim, prostym, oczywistym i skutecznym zabezpieczeniem jest zastosowanie silnego hasła. Jako, że WP jest najpopularniejszym systemem CMS, w internecie roi się od skryptów wpisujących na stronach losowe, najpopularniejsze hasła, np. "admin/admin", "admin/haslo123", "admin/haslo", itd. Proste hasło, to niepotrzebna furtka dla tego typu botów.

Podczas instalacji Wordpress'a możemy skorzystać z generatora silnego hasła w kreatorze i zapisać je na przyszłość. Jeżeli pominęliśmy ten krok - nic nie szkodzi, w każdej chwili możemy wygenerować nowe hasło na przykład za pomocą: https://passwordsgenerator.net/.

Tak wygenerowane hasło zapisujemy i przechodzimy do zakładki "Użytkownicy", a następnie "Wszyscy użytkownicy":

image.png.65f66524212033477be093c6825d909e.png

Na ekranie powinniśmy teraz zobaczyć listę wszystkich naszych użytkowników. W tym momencie warto się zatrzymać i wspomnieć o dodatkowej rzeczy jaką jest nazwa użytkownika. Jeżeli podczas instalacji Wordpress'a nie zmieniliśmy nazwy użytkownika na inną, niż domyślna (admin) - jesteśmy podatni na atak. "admin" to zdecydowanie najczęstsza nazwa użytkownika i boty próbujące się włamać do WP nagminnie ją sprawdzają.  

W tej samej zakładce, klikamy w przycisk "Dodaj nowego":

wordpress - dodawanie nowego użytkownika

Następnie, wypełniamy wszystkie wymagane pola, stosując wcześniej wygenerowane silne hasło oraz niestandardową nazwę użytkownika (admin/administrator - odpada). Rolę nowego użytkownika ustawiamy na "Administrator":

wordpress dodawanie użytkownika w wp-admin

Po zapisaniu nowego konta użytkownika, wylogowujemy się z domyślnego - i logujemy na to nowo-założone. Następnie ponownie przechodzimy do zakładki "Użytkownicy" i usuwamy domyślne (stare) konto admin. Od tej pory logujemy się tylko i wyłącznie nowo-utworzonym kontem z silnym hasłem i niestandardową nazwą użytkownika.
 

3.10. Zabezpieczenia FTP

Logujemy się do FTP i znów przechodzimy do głównego katalogu Wordpress. W tym katalogu odnajdujemy plik wp-config.php. Klikamy na niego prawym przyciskiem myszy i otwieramy w dowolnym edytorze tekstowym. Nie trzeba otwierać pliku na serwerze, można go też pobrać - edytować - i wrzucić w to samo miejsce z powrotem :)

W pierwszej kolejności wyłączamy debugowanie błędów w środowisku produkcyjnym. Dlaczego?

Ponieważ często zdarza się, że jakaś zainstalowana wtyczka wyrzuci od czasu do czasu błąd przed lub po aktualizacji. Zazwyczaj błędy pokazują dokładną ścieżkę i strukturę katalogów na serwerze, a przecież nie chcielibyśmy, aby atakujący wiedział jak dokładnie wygląda rozmieszczenie naszych plików, prawda? W tym celu użyjemy poniższego kodu:

error_reporting(0);

Tą linijkę należy wkleić przed pierwszym 'define', zazwyczaj linijka 20-23 w pliku wp-config.php. Jakby ktoś miał problem, poniżej wrzucam screen obrazujący gdzie ją umieścić:

wordpress - edycja wp-config

 

W drugiej, a zarazem ostatniej, kolejności - wyłączamy domyślny edytor plików bezpośrednio z panelu administratora. Dzięki temu, w momencie ewentualnego przechwycenia danych do logowania, atakujący będzie miał związane ręce. Domyślnie ktoś mógłby sobie zainstalować wtyczkę typu "File Manager" i grzebać w naszym FTP. My to zablokujemy :)

W pliku wp-config.php, odszukujemy linijkę:

define( 'DB_COLLATE', '' );

Następnie, zaraz pod nią, zazwyczaj linia 40-42, dodajemy poniższy fragment kodu:

/** Disable File Edit */
define( 'DISALLOW_FILE_EDIT', true );

wordpress - konfiguracja wp-config

To wszystko. Zapisujemy plik wp-config.php i nadpisujemy go na serwerze.

 

4. Jak skonfigurować wtyczkę "All In One WP Security"?

W celu ostatecznego zabezpieczenia witryny, posłużymy się genialną wtyczką jaką jest "All In One WP Security". Przejdźmy od razu do ustawień.

W pierwszej kolejności oczywiście instalujemy wtyczkę, a następnie przechodzimy do zakładki WP Security i odwzorowujemy kolejno każde ustawienie według poniższych screenów:

- Zakładka Settings > WP Version Info

konfiguracja wtyczki ALL IN ONE SECURITY

- Zakładka User Accounts

Ta zakładka nas nie interesuje, ponieważ zmieniliśmy już nazwę użytkownika i ustawiliśmy mocne hasło w poprzednim punkcie tego poradnika.

- Zakładka User Login > Login Lockdown

konfiguracja wtyczki ALL IN ONE SECURITY - login lockdown

- Zakładka User Registration > Manual Approval

konfiguracja wtyczki ALL IN ONE SECURITY - manual approval

- Zakładka User Registration > Registration Captcha

(Uwaga! Ustawienie może spowodować brak możliwości zalogowania się do WP. W związku z tym, można je pominąć.)

konfiguracja wtyczki ALL IN ONE SECURITY - captcha

- Zakładka Database Security

Ta zakładka nas nie interesuje, ponieważ wdrożyliśmy już ochronę bazy danych w postaci zmiany prefixu oraz kopii zapasowej we wcześniejszych podpunktach tego poradnika.
 

- Zakładka Filesystem Security > Disable PHP File Editing

konfiguracja wtyczki ALL IN ONE SECURITY - disable php file editing

- Zakładka Filesystem Security > WP File Access

konfiguracja wtyczki ALL IN ONE SECURITY - wp file access

- Zakładka Firewall > Basic Firewall Rules

konfiguracja wtyczki ALL IN ONE SECURITY - firewall rules

- Zakładka Firewall > Advanced Firewall Rules

konfiguracja wtyczki ALL IN ONE SECURITY - advanced firewall rules

image.png.ba81eea92c2d5393ed4214b43805e635.png

- Zakladka Firewall > Internet Bots

konfiguracja wtyczki ALL IN ONE SECURITY - bots

- Zakładka Brute Force > Rename Login Page

W miejsce zmiennej "nazwa" - wpisz nazwę zakończenie ścieżki adresowej, pod którą chcesz się logować do panelu WP. Domyślnie jest to nazwa-strony.pl/wp-admin. Domyślny adres jest natomiast znany każdemu użytkownikowi WP. Są oczywiście boty, które i tak wykryją nową ścieżkę do logowania, ale to i tak spore utrudnienie dla mniej obeznanych "hackerów".

konfiguracja wtyczki ALL IN ONE SECURITY - rename login page

- Zakładka Brute Force > Login Captcha

konfiguracja wtyczki ALL IN ONE SECURITY - login captcha

login captcha wordpress

- Zakładka SPAM Prevention > Comment SPAM

image.thumb.png.ea25199b7e459cd5a63732433336b7ed.png

- Zakładka Miscellaneous > Frames

image.png.5c2354c2011b3cd3bb5b1cfb02a16d92.png

 

Po zastosowaniu wszystkich powyższych korków, Twój Wordpress będzie bezpieczny - a przynajmniej o wiele bezpieczniejszy od standardowego.

Warto zadbać też o odpowiednią optymalizację:

Zarejestruj się za darmo i zacznij zarabiać online!

  • Darmowe poradniki pokazujące krok po kroku jak zarabiać w Internecie
  • Sposoby zarabiania niepublikowane nigdzie indziej
  • Aktywna społeczność, która pomoże Ci rozwiązać problemy i doradzi
  • Profesjonalne treści na temat e-commerceSEO, social media, afiliacji, kryptowalut, sztucznej inteligencji, freelancingu i wiele więcej!
  • Bezpośredni dostęp do Get Paid 2.0 w ramach jednego konta na make-cash.pl!

Jeśli chcesz dodać odpowiedź, zaloguj się lub zarejestruj nowe konto

Tylko zalogowani użytkownicy mogą dodawać komentarze.

Zarejestruj nowe konto

Załóż nowe konto. To bardzo proste!

Zarejestruj się

Zaloguj się

Posiadasz już konto? Zaloguj się poniżej.

Zaloguj się

spacer.png

Mentoring Get Paid 2.0

×
×
  • Dodaj nową pozycję...

Powiadomienie o plikach cookie

Ta strona korzysta z ciasteczek, aby świadczyć usługi na najwyższym poziomie. Dalsze korzystanie z witryny oznacza zgodę na ich wykorzystanie. Polityka prywatności .