Rozmowa o bezpieczeństwie strony firmowej zwykle zaczyna się od zdania, że przecież nikomu nie zależy na małej firmie z kilkuset odwiedzającymi miesięcznie. To nieporozumienie wynikające z wyobrażenia, że po drugiej stronie siedzi człowiek, który wybiera ofiarę. W praktyce po drugiej stronie siedzi program, który przegląda cały internet i sprawdza jedną rzecz naraz.
Kto i po co atakuje małe strony
Automat nie wie, czyja jest strona, i nie interesuje go branża. Szuka konkretnej podatności, zwykle w popularnej wtyczce albo w starej wersji systemu zarządzania treścią, i próbuje jej na wszystkim, co znajdzie. Przejęta strona rzadko bywa celem samym w sobie. Zwykle staje się narzędziem:
- serwerem rozsyłającym spam, przez co domena trafia na czarne listy;
- hostingiem stron wyłudzających dane, podszywających się pod banki;
- miejscem, w którym doklejony kod przekierowuje odwiedzających na inne serwisy;
- elementem sieci używanej do kolejnych ataków;
- źródłem danych z formularzy kontaktowych, które można sprzedać.
Najbardziej dotkliwy skutek nie jest techniczny, tylko wizerunkowy. Przeglądarka wyświetla ostrzeżenie przy wejściu, wyszukiwarka oznacza stronę jako niebezpieczną, a odzyskanie zaufania trwa znacznie dłużej niż usunięcie samego kodu.
Aktualizacje, czyli powód numer jeden
Zdecydowana większość udanych włamań wykorzystuje luki, które były znane i załatane wcześniej, czasem wiele miesięcy wcześniej. Opublikowanie poprawki jest jednocześnie informacją dla atakujących, gdzie szukać, więc okno między łatką a falą prób włamania jest dziś liczone w godzinach.
Praktyczne wnioski są proste, choć niewygodne:
- Aktualizuj system, motyw i wszystkie rozszerzenia regularnie, a nie wtedy, gdy przypomni się przy okazji.
- Usuwaj to, czego nie używasz. Wyłączona wtyczka nadal leży na serwerze i nadal bywa podatna.
- Im mniej zewnętrznych komponentów, tym mniejsza powierzchnia ataku. Każde dodatkowe rozszerzenie to kod, którego nie pisałeś i którego nie kontrolujesz.
- Sprawdzaj, czy komponent jest nadal rozwijany. Wtyczka bez aktualizacji od dwóch lat to nie jest wtyczka stabilna, tylko porzucona.
Kopie zapasowe, czyli jedyne realne zabezpieczenie
Wszystkie pozostałe środki zmniejszają prawdopodobieństwo. Kopia zapasowa jest jedyną rzeczą, która ratuje sytuację, gdy prawdopodobieństwo się ziści. Zasady, które warto potraktować poważnie:
- Kopia musi obejmować pliki i bazę danych. Sama baza bez plików albo same pliki bez bazy nie pozwolą odtworzyć serwisu.
- Kopia nie może leżeć wyłącznie tam, gdzie strona. Jeżeli ktoś przejmie konto hostingowe, przejmie też kopie, które są na tym koncie.
- Kopia, której nigdy nie odtworzyłeś, nie jest kopią. To najczęściej pomijany punkt. Odtworzenie warto przećwiczyć zawczasu, a nie w dniu awarii.
- Zachowuj kilka wersji wstecz. Włamanie bywa zauważone po tygodniach, a wtedy najnowsza kopia zawiera już zainfekowane pliki.
Hostingodawcy zwykle oferują własne kopie z ostatnich kilku dni. To dobra podstawa, ale nie plan awaryjny, bo znika razem z kontem i zwykle sięga zbyt krótko wstecz.
Dostęp do panelu
Adres panelu administracyjnego w popularnych systemach jest powszechnie znany, więc każda taka strona dostaje próby logowania praktycznie bez przerwy. Kilka rzeczy, które w tym miejscu robią największą różnicę:
- Logowanie dwuskładnikowe. Zdecydowanie najskuteczniejszy pojedynczy środek. Samo hasło, choćby najlepsze, może wyciec przy zupełnie innej okazji.
- Menedżer haseł zamiast pamięci. Hasło unikalne dla każdej usługi oznacza, że wyciek w jednym miejscu nie otwiera wszystkich pozostałych.
- Ograniczenie liczby prób logowania. Blokada po kilku nieudanych próbach zamyka drogę atakom słownikowym.
- Konta osobne dla każdej osoby, z uprawnieniami dopasowanymi do roli. Osoba, która dodaje wpisy na bloga, nie potrzebuje prawa do instalowania rozszerzeń.
- Usuwanie kont po zakończeniu współpracy. Konto byłego wykonawcy bywa otwarte latami.
Szyfrowanie połączenia
Certyfikat jest dziś darmowy i nie ma żadnego powodu, żeby go nie mieć. Warto jednak sprawdzić trzy rzeczy, o których często się zapomina:
- czy wersja bez szyfrowania faktycznie przekierowuje na szyfrowaną, a nie tylko obie działają równolegle;
- czy certyfikat obejmuje także wariant adresu z przedrostkiem www;
- czy odnawia się automatycznie i czy ktoś dostanie powiadomienie, gdy tego nie zrobi.
Warto też pamiętać o mechanizmie, który każe przeglądarce używać wyłącznie połączenia szyfrowanego przez określony czas. Jest bardzo skuteczny, ale ma ostrze obosieczne: jeżeli certyfikat kiedyś nie odnowi się na czas, strona stanie się niedostępna i nie da się tego obejść wejściem po nieszyfrowanym połączeniu. Włączać go warto dopiero wtedy, gdy odnawianie jest pewne.
Nagłówki bezpieczeństwa
To zestaw informacji, które serwer wysyła przeglądarce razem ze stroną i które mówią jej, na co wolno pozwolić. Kosztują kilka linii konfiguracji, a zamykają całe klasy ataków:
- polityka określająca, skąd wolno wczytywać skrypty i style, co uniemożliwia wykonanie kodu doklejonego przez atakującego;
- zakaz osadzania strony w ramce na cudzej witrynie, co chroni przed podstawianiem fałszywych przycisków;
- zakaz zgadywania typu pliku przez przeglądarkę;
- ograniczenie informacji o tym, skąd użytkownik przyszedł;
- wyłączenie dostępu do kamery, mikrofonu i lokalizacji, jeśli strona ich nie używa.
Warto to skonfigurować i zaraz potem sprawdzić, czy strona nadal działa poprawnie. Zbyt restrykcyjna polityka potrafi po cichu zablokować własny arkusz stylów, a przeglądarka nie pokaże o tym żadnego komunikatu użytkownikowi.
Formularze i dane osobowe
Każdy formularz na stronie jest jednocześnie wejściem dla danych, których nie kontrolujesz. Podstawowe zasady:
- Dane z formularza nigdy nie mogą trafiać wprost do zapytania do bazy. Zapytania parametryzowane rozwiązują problem raz na zawsze.
- Treść wpisana przez użytkownika, która później pojawia się na stronie, musi być przefiltrowana. To dotyczy także treści wpisywanych w panelu administracyjnym.
- Każdy formularz zmieniający coś na serwerze potrzebuje zabezpieczenia przed wysłaniem go z obcej strony.
- Ochrona przed automatami nie musi oznaczać zagadki dla użytkownika. Ukryte pole, którego człowiek nie wypełnia, zatrzymuje większość prostych botów.
- Zbieraj tylko te dane, które są naprawdę potrzebne. Dane, których nie masz, nie mogą wyciec.
Do tego dochodzi obowiązek informacyjny wobec osób, których dane zbierasz. Formularz kontaktowy i zapis do newslettera bez informacji o administratorze danych i bez polityki prywatności to nie jest drobne niedopatrzenie, tylko realna luka zgodności.
Pliki wgrywane na serwer
Możliwość wgrania pliku to jedna z najczęściej wykorzystywanych dróg wejścia. Jeżeli Twoja strona na to pozwala, sprawdź trzy rzeczy: czy typ pliku jest weryfikowany na podstawie zawartości, a nie nazwy, czy pliki lądują w katalogu, z którego serwer nie wykonuje kodu, oraz czy nazwa pliku jest nadawana przez system, a nie przejmowana od użytkownika.
Monitorowanie, czyli jak zauważyć, że coś się stało
Przejęta strona rzadko wygląda na przejętą. Doklejony kod bywa widoczny wyłącznie dla odwiedzających z wyszukiwarki albo tylko na telefonach, właśnie po to, żeby właściciel go nie zauważył. Warto:
- podpiąć stronę do narzędzia dla webmasterów, które ostrzega o wykryciu złośliwego kodu;
- okresowo sprawdzać, jak strona wygląda w wynikach wyszukiwania, bo doklejone treści często ujawniają się właśnie tam;
- ustawić prosty monitoring dostępności, który powiadomi o awarii wcześniej niż klient;
- zaglądać do logów serwera, zwłaszcza do nieudanych prób logowania.
Plan na wypadek, gdy już się stanie
Warto mieć go spisany zawczasu, bo w trakcie incydentu nikt nie myśli spokojnie. Kolejność działań, która sprawdza się najczęściej:
- Odłącz stronę od odwiedzających, żeby przestała szkodzić im i reputacji domeny.
- Zmień wszystkie hasła: hosting, baza danych, panel, konta FTP, poczta.
- Zabezpiecz kopię stanu po włamaniu, zanim cokolwiek zaczniesz kasować. Będzie potrzebna do ustalenia, którędy weszli.
- Odtwórz serwis z kopii sprzed incydentu, a nie z tej najnowszej.
- Załataj to, przez co weszli, zanim wrócisz online. Inaczej wrócą tą samą drogą.
- Zgłoś prośbę o ponowne sprawdzenie strony w narzędziach dla webmasterów.
- Jeżeli wyciekły dane osobowe, sprawdź obowiązki zgłoszeniowe. Terminy są krótkie.
Minimum, które warto mieć
Jeżeli miałbyś zrobić tylko pięć rzeczy, niech będą to te:
- automatyczne kopie zapasowe trzymane poza serwerem strony i przynajmniej raz odtworzone na próbę;
- logowanie dwuskładnikowe do panelu i do hostingu;
- regularne aktualizacje i usunięcie wszystkiego, czego nie używasz;
- wymuszone szyfrowanie połączenia z pewnym odnawianiem certyfikatu;
- podstawowe nagłówki bezpieczeństwa i przefiltrowane formularze.
To nie jest lista dla korporacji z działem bezpieczeństwa. To minimum, które da się wdrożyć na stronie małej firmy w jeden dzień i które zatrzymuje zdecydowaną większość tego, co dzieje się w internecie automatycznie, bez udziału człowieka.