Strona otwiera się bez problemu, w pasku adresu jest kłódka, więc można spać spokojnie? Niestety nie. Certyfikat SSL szyfruje połączenie, ale nic nie mówi o wtyczce, której nikt nie aktualizował od dwóch lat, o bazie danych dostępnej z internetu ani o skrypcie dopisanym do plików po włamaniu. Zdarza się, że właściciel dowiaduje się o takich rzeczach jako ostatni - od klienta albo z ostrzeżenia w przeglądarce.
Dobra wiadomość jest taka, że podstawowe kontrole da się zrobić za darmo i bez wiedzy specjalisty. Poniżej znajdziesz 10 darmowych narzędzi do sprawdzania bezpieczeństwa strony internetowej: od testów, w których wystarczy wpisać domenę, po skanery uruchamiane z terminala. Przy każdym opisujemy, co faktycznie testuje i czego nie zobaczy. Wszystkie są bezpłatne, choć przy paru z nich trzeba liczyć się z limitami albo ograniczeniami licencji.
SSL Labs - bezpieczeństwo certyfikatu SSL i połączenia HTTPS
Od SSL Labs - SSL Server Test najlepiej zacząć. Test sprawdza znacznie więcej niż datę ważności certyfikatu: analizuje poprawność samego certyfikatu i całego łańcucha, obsługiwane wersje protokołu TLS, algorytmy szyfrowania oraz znane słabe konfiguracje.
Wpisujesz domenę, czekasz kilka minut i dostajesz raport z oceną, która w najlepszym przypadku wynosi A+. Najwięcej uwagi poświęć problemom z łańcuchem certyfikatów, przestarzałym protokołom i słabym szyfrom. Jeśli HTTPS dopiero konfigurujesz, przyda się poradnik jak zainstalować darmowy certyfikat SSL Let’s Encrypt.
HTTP Observatory - analiza nagłówków bezpieczeństwa
HTTP Observatory rozwija Mozilla. Narzędzie sprawdza, jakie nagłówki bezpieczeństwa wysyła serwer, czyli jakie instrukcje dostaje przeglądarka na temat tego, jak ma traktować stronę. Kilka z nich:
- Content-Security-Policy (CSP) - określa, skąd strona może ładować zasoby, i zmniejsza ryzyko niektórych ataków XSS.
- Strict-Transport-Security (HSTS) - przez ustalony czas każe przeglądarce łączyć się wyłącznie przez HTTPS.
- X-Frame-Options - blokuje osadzanie strony w ramkach, co utrudnia clickjacking.
- Referrer-Policy - kontroluje, ile informacji o odwiedzanym adresie trafia do innych witryn.
Podajesz domenę i dostajesz ocenę razem z listą testów, które przeszły i które nie. Brak nagłówka niekoniecznie oznacza dziurę, czasem to po prostu zabezpieczenie, z którego jeszcze nie korzystasz. Uważaj za to z CSP: zbyt restrykcyjna i niesprawdzona potrafi zablokować skrypty, które powinny działać, i popsuć stronę. Najpierw przetestuj ją na kopii testowej.
Internet.nl - test konfiguracji domeny i nowoczesnych standardów
Dobrym uzupełnieniem dwóch poprzednich testów jest Internet.nl. Sprawdza, czy domena i serwer obsługują nowoczesne standardy: IPv6, DNSSEC, aktualne ustawienia HTTPS, a także RPKI, czyli zabezpieczenie routingu.
Na stronie wybierasz test witryny i wpisujesz domenę. Wynik dostajesz w procentach, razem z opisem testów, które przeszły i które wymagają uwagi. Nie każda czerwona pozycja to od razu podatność: brak IPv6 oznacza, że strona jest mniej nowoczesna, ale nikt jej przez to nie przejmie. Natomiast uwagi dotyczące HTTPS i DNS lepiej przeczytać dokładnie.
Google Safe Browsing - czy Google oznacza stronę jako niebezpieczną?
Google Safe Browsing to baza, z której korzystają niektóre przeglądarki, żeby ostrzegać przed groźnymi witrynami. Wpisujesz adres domeny i sprawdzasz, czy Google wiąże ją z phishingiem albo rozsiewaniem złośliwego oprogramowania. Jeśli tak, część odwiedzających zobaczy ostrzeżenie, zanim w ogóle wejdzie na stronę.
Takie oznaczenie może znaczyć, że ktoś umieścił na stronie złośliwy kod, podejrzane przekierowanie albo fałszywy formularz. Wtedy przejrzyj pliki aplikacji, historię zmian i logi serwera. Czysty wynik cieszy, ale niczego nie gwarantuje, bo Safe Browsing nie szuka podatności i nie zastąpi audytu bezpieczeństwa.
Sucuri SiteCheck - poszukiwanie złośliwego kodu
SiteCheck od Sucuri skanuje stronę z zewnątrz, tak jak widzi ją każdy odwiedzający. Szuka znanych wzorców złośliwego kodu, podejrzanych skryptów i przekierowań, sprawdza też, czy witryna nie trafiła na listy ostrzeżeń i czy nie widać po niej przestarzałego oprogramowania. Wystarczy wpisać adres i uruchomić skan, a w wyniku dostajesz listę wykrytych problemów z rekomendacjami. Skan zewnętrzny jest darmowy; Sucuri sprzedaje oczywiście płatne dodatki, ale do samego sprawdzenia nie są potrzebne.
Pamiętaj tylko, że to skan zewnętrzny. Sucuri nie ma dostępu do plików ani procesów na Twoim serwerze, więc kod ukryty poza publicznie widoczną stroną może mu umknąć. Przy podejrzeniu włamania trzeba przejrzeć także sam serwer. Jeśli strona działa na WordPressie, zajrzyj do poradnika jak usunąć wirusa ze strony WordPress.
VirusTotal - weryfikacja reputacji domeny i adresów URL
VirusTotal zbiera w jednym miejscu werdykty kilkudziesięciu silników antywirusowych i skanerów reputacji. Wybierasz analizę adresu URL, wklejasz adres i patrzysz, ile z nich uznaje go za phishing, malware lub inne zagrożenie. Szczególnie przydaje się wtedy, gdy użytkownicy skarżą się, że ich antywirus ostrzega przed Twoją stroną.
Pojedynczy alarm bywa fałszywy, zwłaszcza gdy reszta silników milczy. Jeśli jednak ostrzega kilka niezależnych, sprawę trzeba sprawdzić dokładniej.
Jedno zastrzeżenie: to, co tam wyślesz, może zostać udostępnione w ramach usługi. Nie wklejaj więc adresów z tokenami dostępu, haseł ani poufnych plików. Z serwisu można korzystać za darmo w zastosowaniach niekomercyjnych, przy innym użyciu może być potrzebna licencja.
Google Search Console - ostrzeżenia o naruszeniu bezpieczeństwa
Google Search Console kojarzy się głównie z SEO, ale ma też raport bezpieczeństwa. Jeśli Google wykryje na stronie złośliwe oprogramowanie, podejrzane podstrony, próby wyłudzania danych albo inne ślady przejęcia, tam właśnie da o tym znać właścicielowi.
Najpierw trzeba potwierdzić własność domeny, a potem otworzyć Bezpieczeństwo i ręczne działania → Problemy dotyczące bezpieczeństwa. Jeśli widnieje tam zgłoszenie, przejrzyj przykładowe adresy i ustal przyczynę. Po usunięciu zagrożenia możesz poprosić o ponowną weryfikację. Narzędzie jest darmowe, ale nie traktuj go jak skanera podatności: raport pokazuje wyłącznie to, co Google samo wykryło.
WPScan - wykrywanie znanych podatności WordPressa
Dla witryn na WordPressie powstał WPScan. Skaner rozpoznaje wersję systemu oraz zainstalowane wtyczki i motywy, a następnie sprawdza je w bazie znanych podatności. Uruchamia się go z terminala:
wpscan --url https://twoja-domena.pl
Żeby zobaczyć informacje o lukach z bazy WPScan, trzeba skonfigurować token API. Bez niego skaner nadal działa, ale nie sprawdzi komponentów pod kątem znanych podatności z tej bazy. Darmowy dostęp do API dla zastosowań niekomercyjnych ma limit 25 zapytań dziennie, a przy użyciu komercyjnym obowiązują osobne warunki.
W wynikach najbardziej liczą się nieaktualne wtyczki i motywy, szczególnie te z publicznie opisanymi lukami, które pozwalają przejąć stronę albo dobrać się do danych. Pamiętaj, że skaner widzi tylko to, co da się wykryć z zewnątrz, więc lista komponentów może być niepełna.
Nmap - sprawdzenie otwartych portów serwera
Dotąd patrzyliśmy na samą stronę, teraz czas na serwer, na którym stoi. Nmap to klasyczny skaner sieciowy, a nam posłuży do sprawdzenia, które porty odpowiadają na połączenia z internetu. Typowa strona wystawia na zewnątrz porty 80 (HTTP) i 443 (HTTPS), a w zależności od konfiguracji także 22 (SSH). Baz danych i systemów cache raczej nie powinno być widać z internetu, chyba że jest ku temu wyraźny powód.
Skan uruchamiaj na własnym serwerze albo za zgodą jego administratora:
nmap -sT -Pn -p 21,22,80,443,3306,6379 twoja-domena.pl
Polecenie sprawdza FTP (21), SSH (22), HTTP (80), HTTPS (443), MySQL (3306) i Redis (6379). Jeśli MySQL albo Redis odpowiada z internetu, zastanów się, czy na pewno tak ma być. Otwarty port sam w sobie nie jest podatnością, ale każda dodatkowa usługa to kolejny element, który trzeba zabezpieczać i aktualizować.
Jedna uwaga: jeżeli domena stoi za CDN-em lub reverse proxy, wyniki mogą dotyczyć serwera pośredniczącego, a nie tego, na którym działa aplikacja.
OWASP ZAP - analiza bezpieczeństwa aplikacji internetowej
Na koniec najcięższy kaliber. OWASP ZAP służy do testowania aplikacji WWW i robi coś innego niż skanery certyfikatów czy reputacji: analizuje zachowanie samej aplikacji i jej odpowiedzi HTTP. Może wskazać potencjalne luki typu XSS i SQL Injection, niebezpieczną konfigurację sesji i ciasteczek, brakujące zabezpieczenia HTTP oraz część błędów w działaniu aplikacji.
Zainstaluj ZAP, uruchom przeglądarkę skonfigurowaną do pracy przez jego serwer proxy i przeklikaj swoją stronę. Na początek skorzystaj ze skanowania pasywnego, które tylko analizuje przechwycony ruch i nie wykonuje prób ataku.
ZAP zgłasza potencjalne podatności, więc część wyników okaże się fałszywymi alarmami i trzeba je sprawdzić ręcznie. Testy aktywne to już prawdziwe próby ataku - mogą obciążyć stronę i zmodyfikować dane, dlatego uruchamiaj je wyłącznie na środowisku testowym i tylko w aplikacjach, do których testowania masz uprawnienia.
Porównanie narzędzi do sprawdzania bezpieczeństwa stron
Wszystkie dziesięć w jednym miejscu:
| Narzędzie | Co sprawdza? | Poziom trudności |
|---|---|---|
| SSL Labs | Certyfikaty SSL i konfigurację TLS | 🟢 Łatwy |
| HTTP Observatory | Nagłówki bezpieczeństwa HTTP | 🟢 Łatwy |
| Internet.nl | Konfigurację domeny i standardy internetowe | 🟢 Łatwy |
| Google Safe Browsing | Reputację domeny i znane zagrożenia | 🟢 Łatwy |
| Sucuri SiteCheck | Widoczne oznaki infekcji i malware | 🟢 Łatwy |
| VirusTotal | Reputację domen i adresów URL | 🟢 Łatwy |
| Google Search Console | Problemy bezpieczeństwa wykryte przez Google | 🟢 Łatwy |
| WPScan | Znane podatności komponentów WordPressa | 🟡 Średni |
| Nmap | Otwarte porty i dostępne usługi | 🟡 Średni |
| OWASP ZAP | Potencjalne podatności aplikacji WWW | 🔴 Zaawansowany |
Jak sprawdzić bezpieczeństwo strony w 15 minut?
Nie trzeba od razu zaczynać od zaawansowanego skanowania. Podstawowy przegląd zajmie kwadrans:
- SSL Labs - certyfikat i konfiguracja TLS.
- HTTP Observatory - nagłówki bezpieczeństwa.
- Google Safe Browsing - reputacja domeny.
- Sucuri SiteCheck - widoczne ślady infekcji.
- Google Search Console - raport bezpieczeństwa.
Jeśli wszystko wypada dobrze, to dobry początek, ale jeszcze nie dowód, że aplikacja jest wolna od podatności. Skrypty, formularze logowania, autoryzacja użytkowników i zapytania do bazy danych wymagają osobnych testów, do których przyda się na przykład ZAP.
Co zrobić, jeśli narzędzie wykryje zagrożenie?
Najpierw ustal, z czym masz do czynienia. Brak nagłówka HTTP to zaniedbanie, a znaleziony złośliwy kod albo podatność umożliwiająca przejęcie serwera to już poważny problem. Wiele ostrzeżeń dotyczy po prostu niespełnionej dobrej praktyki.
Przy poważnym problemie zacznij od weryfikacji wyniku i ustalenia, które podstrony lub komponenty są zagrożone. Następnie oceń ryzyko: czy grozi utrata danych, włamanie albo niedostępność usługi. Zanim cokolwiek zmienisz, zrób kopię zapasową i zabezpiecz logi. Przy podejrzeniu włamania przydadzą się też jako materiał do analizy incydentu. Dopiero potem usuń przyczynę - zaktualizuj oprogramowanie, popraw konfigurację albo napraw kod - i powtórz test, żeby sprawdzić, czy zmiany zadziałały.
Nie poprzestawaj na usunięciu widocznych objawów. Jeśli strona została zainfekowana, ustal też, w jaki sposób atakujący uzyskał dostęp, bo inaczej wróci tą samą drogą.
Jak często sprawdzać bezpieczeństwo strony?
Pojedynczy skan pokazuje stan na dziś. Nawet dobrze zabezpieczona strona może stać się podatna, gdy w bibliotece, wtyczce albo CMS-ie pojawi się nowa luka. Dlatego powtarzaj testy po większych aktualizacjach i zmianach konfiguracji, a poza tym co jakiś czas, na przykład raz w miesiącu - wystarczy do tego opisane wyżej 15 minut. Do tego dochodzą regularne aktualizacje i kopie zapasowe.
Między ręcznymi testami część kontroli można zautomatyzować. W Ping.pl robi to monitor typu Kondycja, który raz dziennie sprawdza ważność domeny i certyfikatu SSL, a do tego bezpieczeństwo strony. Adres jest weryfikowany w Google Web Risk, czyli komercyjnym odpowiedniku Safe Browsing, więc jeśli Google oznaczy go jako phishingowy albo rozsiewający złośliwe oprogramowanie, dostaniesz powiadomienie. Kondycja jest dostępna we wszystkich planach poza bezpłatnym.
Osobna sprawa to monitorowanie dostępności. Nie wykrywa podatności, ale szybko pokaże, że strona przestała odpowiadać albo działa inaczej, niż powinna. Ping.pl wykonuje też automatyczny monitoring dostępności strony z kontrolą nawet co minutę. Gdy coś padnie, dostaniesz powiadomienie, zanim zgłoszą to klienci.
Monitoring może pomóc wychwycić skutki niektórych incydentów, ale sam włamania ani nie potwierdzi, ani nie wykluczy. Kondycja też nie skanuje kodu ani serwera, tylko informuje, że Google oznaczyło adres jako niebezpieczny. Traktuj monitoring jako uzupełnienie aktualizacji, skanowania i innych zabezpieczeń.