Ludzie pracujący na WordPressie często popełniają trzy błędy związane z bezpieczeństwem. Nie zabezpieczają WP w ogóle, bo przecież „jakieś hejkery” nawet nie spojrzą na moją stronę, a co dopiero będą się włamywać. Drugi błąd to skupianie się na bezpieczeństwie w postaci magicznej wtyczki, która rzekomo ochroni nas przede wszystkim, a w tym czasie złe BOTY są z JSONem na kawie. 😉 Trzeci błąd to dobrze zabezpieczony CMS, ale zapominamy o hostingu. I dzisiaj pokaże Ci, jak sprawdzić swój hosting pod względem bezpieczeństwa, zanim umieścisz na nim swoją stronę opartą o WordPressa. I nie musisz mieć wiedzy pentestera czy hackera. Do dzieła.
Uwierzytelnianie dwuskładnikowe, czyli 2FA
Panel admina jest tym miejscem, gdzie skupiamy wszystkie potrzebne narzędzia do konfiguracji naszego konta, dlatego wymaga ono szczególnej ochrony. Jedną z popularnych i uniwersalnych praktyk jest dodawanie kolejnego składnika podczas logowania. Składnika, który powinniśmy znać tylko my i powinien się zmieniać okresowo. Właśnie tak działa 2FA oparte o TOTP, czyli generator kodów opartych o tajną wartość i czas.
DirectAdmin i cPanel mają od pewnego czasu zaimplementowane takie rozwiązania, ale autorski panel firmy hostingowej niekoniecznie, dlatego dopytaj swojego usługodawcę o tę funkcję.
Jest ona bardzo pomocna, bo jeśli nawet ktoś ma nasz login i hasło, to nie będzie miał tego trzeciego składnika i nic złego nam nie zrobi. Jak działa 2FA, bardzo dobrze opisał w poniższym filmie Kacper Szurek:
Jeśli firma, którą wybrałeś korzysta z narzędzi cPanel lub DirectAdmin, a mimo to nie będzie tam opcji włączenia 2FA, to wniosek jest prosty. W firmie pracują retromaniacy i pewnie nie widzą potrzeby aktualizacji. Przecież nie potrzebujesz dodatkowych zabezpieczeń, prawda?
Certyfikaty SSL
Szczególnie promowaną praktyką wśród twórców i adminów stron jest szyfrowanie połączenia między serwerem, a końcowym użytkownikiem. Może nawet dojść do tego, że Twoja strona bez szyfrowania zostanie oznaczona przez wyszukiwarkę lub przeglądarkę jako niebezpieczna, dlatego warto zainstalować ważny certyfikat SSL.
W związku z optowaniem za tą zdroworozsądkową praktyką pojawiły się takie projekty jak Let’s Encrypt, dzięki którym możesz mieć taki certyfikat za darmo. Część firm hostingowych wspiera to rozwiązanie i oferuje automatyczne generowanie i odnawianie certyfikatu. Ewentualnie sprowadza się to do bardzo prostej procedury.
Jeśli Twój hostingowy usługodawca nie supportuje tego rozwiązania, to polecam się zastanowić nad tą firmą, bo prawdopodobnie będzie oferować Ci płatne usługi. Wniosek nasuwa się sam: płać, a Twoje bezpieczeństwo to już drugorzędna sprawa…
Warto pamiętać, że możesz sobie wygenerować taki darmowy certyfikat na zerossl.com, ale to procedura dla bardziej zaawansowanych użytkowników i polecam automatyzację z pozycji panelu admina.
Więcej o certyfikatach SSL w filmie Kacpra Szurka:
Zabezpieczenia protokołu FTP
Jak pisałem w trzeciej części tego poradnik, protokół FTP jest jednym z podstawowych serwisów, jaki powinien zapewnić nam usługodawca i ciężko mi sobie wyobrazić serwer bez tej funkcji.
W zasadzie nie ma się co tu rozpisywać, bo zabezpieczenie FTP powinno się ograniczać do dwóch podstawowych rzeczy. Korzystania z protokołu FTP z jedynego wybranego adresu IP, czyli domyślnie naszego, np. domowego/firmowego albo ewentualnie wyłączanie logowania z zagranicznych adresów. Drugim krokiem jest szyfrowane połączenie w tym standardzie, czyli tzw. „FTP over TLS” lub SFTP . TLS oznacza Transport Layer Security i praktycznie działa tak samo jak SLL dla domen.
Po naszej stronie zostaje stworzenie silnego hasła, przetrzymywanie go w bezpiecznym miejscu oraz aktualizowanie naszego klienta FTP, czyli programu, który połączy nas z serwerem.
Jeśli usługodawca nie oferuje chociażby TLSa, to uciekamy i się nie zastanawiamy!??♀️
Shodan.io, czyli szukamy dziur na serwerze
Shodan, zwany często Googlem Hakerów, jest zaawansowaną wyszukiwarką internetową, która pokazuje urządzenia podłączone do netu z podatnościami na znane exploity. Jeśli Twoja inteligentna lodówka z połączeniem WiFi ma jakiś exploit, to Shodan wyświetli ją w wynikach wyszukiwania.
Exploit to inaczej dziura lub błąd w oprogramowaniu urządzenia, który może wykorzystywać atakujący lub bot do niecnych celów. Wszystkie takie bugi opisuje się wg standardu Common Vulnerabilities and Exposures (CVE), który jest swoistym numerem seryjnym dziury systemowej. Takie uporządkowanie daje pewność, że wymieniając z kimś informacje o błędzie, macie ten sam exploit na myśli.
Żeby być pewnym czy Shodan pokazuje nam nasz serwer, musimy dysponować jego adresem IP. Najłatwiej taki dostać z serwisów WHOIS wpisując swoją domenę lub subdomenę. Odczyt z DNS pokaże ci adres IP serwera, na którym masz zaparkowany URL. Nie będzie to działać, jeśli chowamy swoją stronę za serwisami typu Cloudflare.
Dodatkowym źródłem informacji o IP naszego serwera może być konsola admina albo zapytanie pomocy technicznej.
Zatem jeśli dysponujesz już adresem IP serwera, to możesz go wpisać w oknie serwisu Shodan.io i dostaniesz informacje o wszystkich znalezionych bugach lub ich braku. Przykładowy wynik wrzucam poniżej.
Oczywiście nie musisz znać się na security IT, ale sama obecność niezałatanych dziur w serwerze powinna dać ci do myślenia. Jeśli Shodan nie znajdzie nic, to nie będzie w ogóle wyświetlał sekcji Vulnerabilites.
Gdy chcesz więcej informacji na temat danej podatności, to skorzystaj z wyszukiwarki na stronie organizacji The MITRE Corporation, która zarządza CVE, a link masz tutaj: https://cve.mitre.org/cve/search_cve_list.html
Spam i scamming
Psiałem już w pierwszej części tego poradnika o spammerach i scammerach wykorzystujących darmowe hostingi do swoich bezprawnych procederów. Jednak okazuje się, że tak samo jest to spory problem dla płatnych serwerowni, tylko z tą różnicą, że w darmowym hostingu nie masz komu zgłosić problemu, bo masz tylko wsparcie społeczności. W profesjonalnych firmach hostingowych teoretycznie możesz zaraportować taki problem kompetentnym osobom z pomocy technicznej. O sprawdzaniu poziomu usług helpdeska mogłeś przeczytać w trzeciej części, więc skupmy się na sprawdzaniu, czy na naszym serwerze nie zagnieździli się cyberprzestępcy.
Pierwszy krok to sprawdzenie, czy serwer nie jest na czarnych listach spammerów i scammerów, a najprościej zrobić to pod tym linkiem https://whatismyipaddress.com/blacklist-check. Sprawdzi on dla nas kilkadziesiąt najbardziej popularnych list z adresami IP spammerów oraz cyfrowych oszustów i powie nam, czy jesteśmy na danej liście.
Jeśli pojawiamy się na jednej albo dwóch, to raczej nie ma problemu, bo nie wszystkiemu da się zapobiec. Ale jeśli na czerwono zapala się więcej niż połowa ostrzeżeń, to znaczy, że usługodawca udaje firmę hostingową i powinien zająć się zbieraniem rzepaku w Wielkiej Brytanii.
Pamiętaj, że cyfrowi dranie, z którymi współdzielisz przestrzeń dyskową, mogą też próbować zaszkodzić „serwerowym sublokatorom”, więc również Twoja strona jest zagrożona.
Dzisiaj większość spammerów i scammerów na target bierze social media, dlatego można też ich użyć do sprawdzania naszego usługodawcy. Różnica polega na tym, że nie potrzebujesz adresu ip serwera, ale domenę firmy hostingowej, u której testujesz usługi. Bierzesz np. facebookowego messengera i próbujesz wysłać – najlepiej do siebie – link w postaci www.przykładowanazwafirmyhostingowej.pl.
Jeśli Facebook blokuje tę domenę jako spam lub scam, to zobaczysz takie okienko.
A to oznacza, że ataki na osoby korzystające z mediów społecznościowych miały z serwerów tej firmy hostingowej taką skalę, że zmusiła Facebooka do blokowania ich niczym zawodowych oszustów. Nie muszę chyba dodawać, że lepiej takie przedsiębiorstwo unikać?
Abuse IP
Adresy IP określane po angielsku jako Abuse IPs dotyczą głównie adresów, skąd – głównie boty – przeprowadzają atak na web aplikacje (np. WordPressa) lub szukają w nich podatności. Na tych listach znajdziesz też spammerów, ale głównie dotyczą one ataków sieciowych. Główną bazą, którą polecam jest https://www.abuseipdb.com/, gdzie po wpisaniu adresu IP dowiesz się kiedy i w jaki sposób atakowano z tego adresu.
Jeśli adres IP Twojego serwera występuje kilkadziesiąt razy, a raportowane ataki są np. sprzed kilku dni, to oznacza, że firma hostingowa zatrudnia studentów mongolskiego, a nie specjalistów od IT. Pakujemy zabawki i uciekamy!
Testujemy Web App Firewall
Wep App Firewall to „system obronny”, który sprawdza dane wejściowe pochodzące od użytkowników pod kątem bezpieczeństwa. Dobry WAF potrafi odsiać 95% niebezpiecznych zapytań do naszej strony internetowej.
Najprostszym sposobem sprawdzenia skuteczności WAF jest mały atak tzw. SQL Incetion.
https://www.twojaprzykładowastronawww.pl/?a=b%20AND%201=1
Skopiuj powyższy kod i zmień adres na swoją stronę. Jeśli WAF działa to powinniśmy dostać błąd 403 (brak dostępu) lub komunikat, że zostaliśmy zablokowani.
Jeśli zapytanie przejdzie przez serwer bez mrugnięcia okiem i dostaniemy nieuprawnioną odpowiedź z bazy danych, to oznacza, że Twoja strona będzie bardziej bezpieczna w lokalnym warzywniaku u Pani Krystyny, a nie w tej firmie. Żegnamy się z personelem i uciekamy!
Dlaczego nie warto lekceważyć np. ataków SQL Injection, które powinien blokować WAF dowiesz się ponownie od Kacpra Szurka!
Innym sposobem na sprawdzenie jakość WAF jest prosty atak XSS. Spróbuj u siebie na stronie wpisać w wyszukiwarkę takie zapytanie <scirpt>alert(„Hello World!”)</script>. Jeśli w wynikach wyszukiwania zobaczysz mały popup z napisem „Hello World” oznacza to, że WAF jest jak bramkarz alkoholik, który śpi za bramką…
O atakach XSS więcej będzie w poradniku o zabezpieczaniu WordPressa.
Plik .htaccess
Pisałem już wcześniej, że jedną z podstawowych rzeczy, którą powinien obsługiwać serwer to plik .htaccess. Jest to plik, który w formie tekstowej zapisuje ustawienia Twojego konta hostingowego i jest jednym z podstawowych narzędzi do ochrony Twojej strony internetowej. Np. z jego poziomu możesz blokować adresy ip atakujących lub boty po user agencie. W uproszczeniu User Agent to nagłówek w protokole HTTP, dzięki któremu Twoja przeglądarka mówi stronie np. „Hej, jestem Firefox”.
Szczerze, to nie pamiętam hostingu bez obsługi .htaccess, ale może się zdarzyć misconfiguration serwera i informatycy zapomną włączyć jego obsługę po ostatniej konserwacji i aktualizacji. Takie niedopatrzenia zdarzają się dosyć często, bo jesteśmy tylko ludźmi.
Najłatwiej przetestować plik .htaccess kodem poniżej.
order deny,allow
allow from all
deny from xx.xx.xx.xx
Wklej powyższy kod do pliku i zapisz go. Możesz to zrobić z konta administratora albo wrzucając taki plik przez FTP. Iksy oznaczają Twój adres ip (lub inny, który chcesz zablokować). Jeśli już dodasz adres ip, z którego wchodzisz na stronę i zapiszesz plik poprawnie, to po wejściu na Twoją domenę powinieneś dostać błąd 403. Odblokujesz wszystko, usuwając kod z pliku.
W internecie znajdziesz masę przydatnych przykładów jak używać .htaccess do zabezpieczania swojej strony. Podobne poradniki niebawem pokażą się też na naszym blogu.
Sprawdzamy wersję PHP
Najnormalniej na świecie wersję PHP można sprawdzić w ofercie albo w panelu administracyjnym. Jednak czasem zdarza się tak, że firma hostingowa z różnych powodów nie chwali się jaką wersję PHP wspiera Twoje konto albo nieznajomość kokpitu admina utrudnia sprawę.
Jest pewien alternatywny i jednocześnie łatwy sposób. Wrzucenie pliku *.php poniższym kodem na serwer i wywołanie go linkiem.
<?php
phpinfo();
?>
Możesz go nazwać jak chcesz, ale ważne, żeby miał rozszerzenie *.php. Jeśli zrobisz wszystko poprawnie, to powinieneś dostać wynik podobny do tego na grafice poniżej, a aktualnie obsługiwana wersja PHP na Twoim koncie zostanie wyświetlona na samej górze.
Pamiętaj, żeby nie trzymać tego pliku na stałe na dysku serwera, bo pokazuje on całą konfigurację maszyny i może ułatwić niepotrzebny atak.
Na moment pisania tego poradnika najnowszą oficjalnie wydawaną wersją jest 7.4.4. Oczywiście nie każdy hosting dzień po publikacji dokumentacji najnowszej wersji będzie aktualizować serwery. Jednak dobrze, jeśli zrobi to w miarę szybko, bo najnowszy PHP to bezpieczniejsza i szybsza strona internetowa.
Obecną wersję PHP sprawdzisz tutaj https://www.php.net/
Słowem podsumowania
Jeśli dotarłeś do tej części, to jest mi niezmiernie miło, bo mam nadzieję, że ten poradnik pomógł Ci choć trochę.
Zdaję sobie sprawę, że tylko w idealnym uniwersum będą firmy, u których będą działać wzorcowo wszystkie rzeczy o których piszę – zwłaszcza w części 3 i 4. Jednak jeśli dasz radę większości usług wystawić 4+, to już będzie dobrze, a Ty sam finalnie zdecydujesz na co zwrócisz szczególną uwagę.
Jeśli masz do mnie jakieś pytania, to zadaj je w komentarzu. Postaram się pomóc.