As Secure As Possible - bezpieczny e-commerce

Paweł Detka-small-image
Paweł DetkaCTO, Monogo
Poruszane tematy
Udostępnij ten wpis

Zakupy online zyskują coraz większą popularność, ale rosnąca liczba cyberataków sprawia, że ochrona danych klientów jest priorytetem. Bezpieczeństwo systemów IT jest zagadnieniem złożonym i skomplikowanym - ściśle technicznym. Łącząc świat biznesu i technologii zapraszam Cię do rozmowy o bezpieczeństwie, do której nie będziemy potrzebować słownika IT.

Z tego artykułu dowiesz się:

  1. Czym jest bezpieczeństwo systemów IT?
  2. Jak zadbać o bezpieczeństwo aplikacji?
  3. Kluczowe obszary dla bezpiecznej infrastruktury
  4. Dlaczego warto wykonywać kopie zapasowe systemu?

Czym jest bezpieczeństwo systemów IT?

Od ponad 13 lat mojej pracy w IT współpracuję ze średnimi i dużymi organizacjami. Obserwuję niektóre projekty i czasami odnoszę wrażenie, że sprawy związane z bezpieczeństwem mają niski priorytet. Byłem świadkiem sytuacji, gdy niska świadomość (niewynikająca ze złej woli) doprowadzała do incydentów bezpieczeństwa i narażała biznes na straty finansowe oraz utratę zaufania klientów. Oczywiście nie musi tak się wydarzyć, ale prowadząc biznes wolimy mieć kontrolę niż być zaskakiwanymi, prawda?

Według badań przeprowadzonych przez Instytut Badań Rynkowych i Społecznych IBRiS więcej niż trzech na czterech Polaków martwi się o bezpieczeństwo swoich danych osobowych online (78 proc.). Blisko połowa z nas wyraża brak zaufania do cyberzabezpieczeń (45 proc.). A czego boimy się najbardziej? Największym strachem pozostaje utrata środków finansowych – obawia się tego aż 70 proc. Polaków. Drugą poważną obawą jest ryzyko wyłudzenia kredytu lub zaciągnięcia zobowiązań na kradzione dane, co niepokoi 58 proc. badanych. Poza tym blisko połowa z nas martwi się utratą danych osobowych (45 proc.).

Na potrzeby tego artykułu przyjmijmy na początku kilka założeń. Jestem managerem średniej wielkości sklepu internetowego sprzedającego części motoryzacyjne. Firma ma stałych klientów i wyrobioną, rozpoznawalną markę. Zespół tworzy 4 developerów rozwijających aplikację i 1 administrator serwerów. Wykorzystuję usługi chmurowe jednego z większych dostawców cloud, ale mój zespół jest odpowiedzialny za całość. Korzystam z dedykowanego silnika eCommerce Magento w wersji open source. Zamówienia i dane Klientów zarządzane są z dodatkowych systemów klasy ERP (Enterprise Resources Planning) i CRM (Customer Relationship Management). Magazyn korzysta z wbudowanego modułu WMS (Warehouse Management System), który zarządza stanami magazynowymi i wysyłkami.

Bezpieczeństwo Aplikacji Magento

Aby usługa eCommerce mogła zarabiać na siebie, jako manager potrzebuję aplikacji, która realizuje taką funkcjonalność. Wybrany system - Magento - opisywany jest jako stabilny, kompleksowy i przede wszystkim bezpieczny silnik. I to wszystko jest prawdą. Adobe raz na kwartał publikuje poprawki bezpieczeństwa i nowe funkcjonalności. Jednak aktualizacja systemu jest czasochłonna, wymaga testów i nierzadko dodatkowych prac programistycznych, aby system działał zgodnie z wymaganiami. Co kwartał, razem z wydanymi poprawkami publikowane na stronie są również informacje na temat wykrytych i naprawionych zagrożeń Magento. Oznacza to, że potencjalne luki bezpieczeństwa w systemie są publiczne i jeśli posiadamy wystarczającą wiedzę, możemy je wykorzystać.

Ale skąd ktokolwiek będzie wiedział, że mam Magento i w jakiej wersji? Przecież nigdzie tego nie publikuję. Otóż rozpoznanie Magento na podstawie kodu HTML w przeglądarce jest bardzo proste: strona zawiera charakterystyczne struktury, które na pierwszy rzut oka wręcz krzyczą, że jest to Magento.
Jeżeli sklep jest obsługiwany przez zespół z mniejszym doświadczeniem, często pomijane jest ukrycie wersji systemu, która standardowo dostępna jest pod adresem /magento_version

Jak zadbać o bezpieczeństwo aplikacji?

Wiedząc o cyklicznych wydaniach poprawek publikowanych na oficjalnej stronie Adobe mogę zaplanować z moim zespołem testy i aktualizacje. Takie podejście minimalizuje czas potrzebny na wdrożenie poprawek bezpieczeństwa i eliminuje element zaskoczenia w kontekście zasobów i budżetu. Świadoma rezygnacja z aktualizacji, znając luki bezpieczeństwa, które zostały wykryte i naprawione, jest dopuszczalna w określonych sytuacjach, ale wysoce niezalecana. Tylko ode mnie zależy, czy biorę to ryzyko na siebie. Cykliczne aktualizacje aplikacji na pierwszy rzut oka nie wnoszą większej wartości biznesowej do systemu. Ich brak może jednak spowodować skompromitowanie systemu, wyciek danych klientów, instalację złośliwego oprogramowania, a w najgorszym przypadku całkowite unieruchomienie usługi lub nawet kary finansowe (hello RODO). Muszę też pamiętać, że nawet po aktualizacji bezpieczeństwa nikt nie gwarantuje, że przez kolejny kwartał nic się nie wydarzy. Co więcej mogę zrobić?

Narzędzia do monitorowania bezpieczeństwo?

Aktualizuję Magento zgodnie z harmonogramem. Mój zespół jest przygotowany na kolejne wydania. Mój system jest bezpieczny. Mając z tyłu głowy wiedzę, że nie ma systemów perfekcyjnie zabezpieczonych, muszę sobie odpowiedzieć na pytania:

  • Skąd mam wiedzieć, że zastosowane poprawki bezpieczeństwa przyniosły zamierzony efekt?
  • Jak sprawdzić, czy aplikacja nie zawiera dodatkowych podatności bezpieczeństwa?

Z odpowiedzią na to pytanie przychodzą sprawdzone narzędzia. Oto kilka z nich:

Web Application Security Testing


Jest to klasa wyspecjalizowanych narzędzi, które skanują w sposób automatyczny sklep i aktywnie informują o wykrytych problemach. Przykładem takiego systemu jest Acunetix.

źródło: Acunetix Scan Dashboard

Co mi to da?

  • Cykliczne skany bezpieczeństwa (np. raz na tydzień, co każde wydanie nowej wersji przygotowanej przez mój zespół)
  • Przejrzyste raporty pokazujące kondycję mojego sklepu
  • Dokładne wskazówki dla mojego zespołu technicznego, jak szybko naprawić problemy.

Wybierając rozwiązanie dla siebie zwróć uwagę na to, czy skaner wykonuje proof of exploit. Mniej dopracowane skanery potrafią w raportach wskazywać setki pozycji, które mogą być potencjalnie groźne, ale nie zostały niepotwierdzone - tak zwany False Positive. Często jest to niepotrzebny szum.

IDS/IPS

Intrusion Detection Systems, czyli swojego rodzaju alarm, jak w samochodzie. Głównym zadaniem tego narzędzia jest wykrycie próby włamania i poinformowanie o tym odpowiednich osób.
Intrusion Prevention Systems, czyli, korzystając z tej samej analogii, pies przy samochodzie. Są to rozwiązania, których zadaniem jest wykrywanie ataków oraz ich blokowanie. Często są powiązane z IDS.
Inne ciekawe możliwości realizowane przez tego typu narzędzia to:

  • File Integrity Monitoring – sprawdzanie, czy pliki systemowe oraz pliki aplikacji zostały zmodyfikowane w nieuprawniony sposób.
  • Malware Detection - "antywirus" dla aplikacji webowych.

Narzędzia klasy Web Application Security Testing oraz IPD/IDS uzupełniają się wzajemnie i stanowią relatywnie łatwy sposób na monitorowanie zagrożeń i potencjalnych incydentów.

WAF i Firewall

Opisane wcześniej systemy monitorowania w żaden sposób nie zabezpieczają mnie przez zagrożeniami. Wykryte problemy muszą zostać rozwiązane przez odpowiednie osoby techniczne. Co zatem zrobić, aby ograniczyć atakującym osobom i botom pole manewru? Jednym z dostępnych rozwiązań są firewalle sieciowe oraz ich wersja dla aplikacji: Web Application Firewall. Są to systemy, które na podstawie predefiniowanych reguł weryfikują ruch do naszego eCommerce i blokują go, jeżeli zostanie spełniony warunek w regułach.

Dla przykładu: chcę zablokować ruch do mojego sklepu wszystkich botów innych niż zbierających dane dla określonych wyszukiwarek.

Co mogą blokować systemy WAF? Na przykład niektóre ataki typu XSS, SQL Injection, ruch szkodliwych botów.
Ponieważ powstają coraz to nowsze metody ataków, coraz bardziej wyrafinowane i trudniejsze do wykrycia, bardziej zaawansowane systemy WAF posiadają algorytmy Machine Learning i częste aktualizacje predefiniowanych reguł. Możemy również ograniczyć ruch do naszego systemu bazując na geolokalizacji - na przykład jeżeli sprzedajemy wyłącznie do klientów z Polski.

Zastosowanie WAF ogranicza w znaczący sposób szkodliwy ruch i limituje poziom wystąpienia incydentów bezpieczeństwa. Należy jednak pamiętać, żeby używać ich z głową. Nie chcemy przecież blokować najszej platformy eCommerce dla klientów i dobrych botów (bramki płatności, Google)

Przykładowa reguła Firewall

Izolacja kluczowych usług

Posiadając system eCommerce muszę być świadomy, że pewna część usług, które są wymagane do prawidłowego działania, nie powinna być dostępna publicznie. Warto na przykład sprawdzić, czy panel administracyjny nie znajduje się pod domyślnym adresem /admin i dodatkowo wprowadzić ograniczenie adresów IP, które mogą mieć dostęp (IP restriction) lub nawet prosty system Basic Authentication (dodatkowy login i hasło).

Z perspektywy biznesu może to być pewnego rodzaju przeszkoda - jestem na wakacjach i chcę się dostać do raportów albo w trakcie podróży służbowej chcę zobaczyć, ile mam nowych zamówień. Dobrym remedium na to jest posiadanie systemu Virtual Private Network (VPN), który umożliwi nam dostęp do ukrytych przed światem zewnętrznym zasobów z każdego miejsca. Aktualne systemy VPN pozwalają na instalację na niemal każdym urządzeniu (laptop, telefon, tablet) i są łatwe w obsłudze.

Kluczowe obszary bezpiecznej infrastruktury

Wróćmy do naszego eCommerce. Aktualizacje są, monitoring jest, mam WAF, który chroni mój sklep. Czas porozmawiać o infrastrukturze.

W nocy z 9 na 10 marca 2021 roku w Strasburgu spłonęło centrum danych należące do dużego europejskiego dostawcy serwerów dedykowanych. Wiele usług w Polsce i innych krajach Unii, a w przypadku niektórych stron - globalnie, przestało działać; część z nich nie podniosła się do dnia dzisiejszego.

Jakie wnioski można wyciągnąć z tego zdarzenia?

Żaden operator serwerów dedykowanych i hostingu, niezależnie od wielkości, nigdy nie da 100% gwarancji na dostępność swoich usług. Teoretycznie może tak napisać, ale życie pokazuje, że jest to niemożliwe. Rozważmy zatem kilka aspektów tego, co można zrobić, żeby ustrzec się przed długą przerwą w działaniu mojego sklepu.

Architektura High Availability (dalej zwana HA)

Jest to tak zaprojektowana architektura infrastruktury i aplikacji, która umożliwia prawidłowe działanie, nawet w przypadku awarii komponentów systemu. W większości przypadków kluczowe komponenty są zwielokrotniane w trybie High Availability i w czasie normalnej pracy nie biorą udziału w dostarczaniu usług. Możemy tutaj również wspomnieć o rozproszonym HA, którego komponenty są rozmieszczone w różnych datacenter (serwerowniach), różnych krajach czy nawet kontynentach. Budując architekturę klasy HA musimy się liczyć z jej znacznym kosztem. Wspomniana duplikacja usług oraz wysoki koszt utrzymania powodują, że nie wszystkie organizacje mogą się w całości zaopatrzyć w takie rozwiązania.

Infrastructure as a Code

Innym sposobem na szybkie przywrócenie w pełni funkcjonalnej infrastruktury jest Infrastructure as Code.
W dużym skrócie: nie tworzymy zasobów z panelu administracyjnego danego operatora, zamiast tego piszemy odpowiednią definicję infrastruktury, reszta robiona jest automatycznie. Zaczynając od maszyn, sieci, dysków, a na domenach i zaawansowanej konfiguracji kończąc.
W skrócie: praca, która normalnie wymaga kilku czy nawet kilkunastu dni na konfigurację, trwa kilkanaście minut. Oprócz tego jest powtarzalna i przewidywalna.

Kopie zapasowe systemu gwarancją bezpieczeństwa

,, Ludzie dzielą się na dwa typy - tych, którzy już robią backupy oraz tych, którzy będą je robić". Podchodząc do zagadnienia kopii zapasowych należy sobie zadać kilka pytań:

  • Jakie dane są dla mnie ważne?
  • Czy posiadając kopie zapasowe, przykładowo samej bazy danych, będę w stanie odtworzyć działanie sklepu?

Najczęstszą praktyką w kopiach zapasowych jest wykonywanie kopii baz danych bez informacji o klientach, zamówieniach, produktach oraz wszystkich innych danych dotyczących samego sklepu. Dodatkowo warto wykonywać kopie plików konfiguracyjnych aplikacji oraz pliki mediów (grafiki, filmy, itp.).
Oczywiście każdy eCommerce jest inny, ale odpowiadając sobie na powyższe pytania można w prosty sposób wskazać obszary, które muszą być archiwizowane/objęte polityką kopii zapasowych.

Jak często wykonywać kopie zapasowe?

Planując wykonywanie kopii zapasowych warto odpowiedzieć sobie na dwa pytania:

  • Jak szybko zmieniają się dane w moim sklepie?
  • Ile dziennie dochodzi klientów, zamówień, produktów?

Definiując czas między kopiami zapasowymi musimy mieć świadomość, że rzadko wykonywane są one w locie - to znaczy, że przy poważnej awarii część danych może zostać bezpowrotnie utracona. Systematyka tworzenia backupów uwarunkowana jest potrzebami i zachowaniem klientów rozwiązania eCommerce. Lokalny sklep może pozwolić sobie na włączenie trybu "maintenance" (czyli de facto chwilowym wyłączeniem pełnej funkcjonalności sklepu) w godzinach nocnych, a sklep działający globalnie musi takie same prace przeprowadzać dużo ostrożniej. Nie możemy przecież wyłączyć funkcjonowania sklepu w czasie kiedy klient finalizuje zamówienie. Znając to ryzyko można oszacować, jak utrata danych z kilku lub kilkunastu godzin działania aplikacji dotknie mój biznes. Jeżeli dojdziemy do akceptowalnych wartości - mamy odpowiedź, jak często.

W jaki sposób wykonywać kopie zapasowe?

Nie ma jednoznacznie optymalnego sposobu, w jaki sposób wykonywać kopie zapasowe. Kopie przyrostowe, kopie całościowe, dedykowane aplikacje, snapshoty - wszystko zależy od złożoności architektury oraz konkretnych wymogów klienta i jego budżetu. Jeżeli nie wiesz, od czego zacząć, zacznij od kopii całościowych; na przykład pełnego zrzutu bazy danych i kopii plików sklepu.
Ale pamiętaj: lepszy prosty backup niż żaden.

Kopie zapasowe muszą być składowane w innym miejscu niż oryginalne źródło danych. Co to oznacza?

Dobrą praktyką jest strategia 3-2-1

Trzy kopie danych (źródło danych i dwie kopie), dwa niezależne urządzenia (na przykład dysk i dodatkowy snapshot dysku), przynajmniej jedna z kopii przechowywana w innym miejscu.
Wróćmy na chwilę do pożaru w Strasburgu. Wiele poważnych serwisów bezpowrotnie utraciło dane i kopie zapasowe właśnie dlatego, że były one przechowywany w tylko jednym datacenter.
Strategia 3-2-1 nie jest doskonała, ale nie ma rzeczy doskonałych. Podejście jest dobrą praktyką rekomendowaną przez specjalistów czy instytucje rządowe różnych państw, np. US-CERT (United States Computer Emergency Readiness Team), który opisał zasadę 3-2-1 w swojej publikacji już w 2012 roku.

Czy da się to odtworzyć?

Okresowe testy odtwarzania kopii zapasowych mają równie duże znaczenie jak wykonywanie kopii. Po co nam backup, jeżeli nie da się go wykorzystać?

Niezależnie od tego, czy testy będą wykonywane manualnie czy automatycznie, powinny być przeprowadzane w środowisku nieprodukcyjnym (np. środowisko stage) - nie chcemy przecież uszkodzić danych źródłowych. Dobrą praktyką jest przeprowadzanie odtwarzania z kopii zapasowej w kontrolowanym środowisku co minimum 3 - 4 miesiące.

Wnioski

Omówiliśmy podstawowe zagadnienia dotyczące bezpieczeństwa systemów IT w kontekście eCommerce.

Aby oszacować, które z przedstawionych zagadnień mogą być dla Ciebie szybkie do wdrożenia, zakładając relatywnie niewielki budżet, przygotowałem poniższe zestawienia:

Powyższe diagramy mogą być użyte w większości przypadków jako pomoc do planowania budżetu i specjalistów wdrażających poszczególne zabezpieczenia.

Dodatkowo, proponuję Ci pobranie przygotowanego dokumentu.
Ten Excel pomoże Ci w oszacowaniu ryzyk technicznych i ustaleniu, gdzie na skali bezpieczeństwa znajduje się Twój biznes.

Z tego miejsca chciałbym Cię zaprosić na drugą część tematyki IT Security, w której omawiam zagadnienie obszarów miękkich, związanych z ludźmi w Twojej organizacji - Człowiek największe zagrożenie bezpieczeństwa.

Jeśli masz pytania czekamy na Twój kontakt.

Przypisy