Jak zabezpieczyć stronę przed atakiem hakerskim w Magento

Jak zabezpieczyć stronę przed atakiem hakerskim w Magento?

Dariusz Sadkowski - Senior Magento Developer
6 minutes read

Magento 2 to jedna z najpopularniejszych i największych na świecie platform e-commerce typu OpenSource. Posiada ogromny wachlarz zastosowań (a w rękach wprawnych deweloperów – nieograniczone możliwości). Od prostych „single product store”, przez sklepy specjalistyczne, aż po duże, wielobranżowe marketplace’y. Niestety popularność M2 ma też swoją cenę – podobnie jak inne powszechnie wykorzystywane platformy (Wordpress czy OpenCart), jest łakomym kąskiem dla użytkowników Internetu, których intencje są wątpliwe.

Zarządzanie magazynami, produktami, kategoriami, wyglądem strony, zamówieniami i wszystkim tym, co powinna posiadać platforma e-commerce, możemy znaleźć w Magento 2 „out of the box”. Wystarczy odrobina samozaparcia, by dostosować sklep do swoich potrzeb, używając dostępnych modułów i szablonów. Dzięki temu Magento 2 znajdzie zastosowanie u małych i dużych przedsiębiorców.

Każda platforma, wybijająca się nieco wyżej w statystykach użytkowania narażona jest na ataki hakerskie, których z dnia na dzień przybywa – a Magento 2 nie jest wyjątkiem. Czy istnieją sprawdzone sposoby, które pozwolą zminimalizować ryzyko związane z atakiem? Oczywiście, że tak! Przedstawiam kilka prostych kroków, które pomogą Ci zabezpieczyć stronę przed atakiem hakerskim w Magento 2.

Właściwy serwer

Magento 2 wymaga odpowiedniego serwera do działania. Jego parametry zależą od targetu (liczby potencjalnych użytkowników czy zamówień składanych w momencie największego ruchu na stronie). Jednak poza dobrymi parametrami, musimy zwrócić uwagę na to, by był odpowiednio zadbany i zabezpieczony.

Dodatkowo warto upewnić się, czy posiadamy wystarczające doświadczenie, by samodzielnie zarządzać serwerem, zadbać o poprawną konfigurację i pamiętać o aktualizacjach oprogramowania. Nic nie stoi na przeszkodzie, by wynająć odpowiednio wyszkolonego administratora, który będzie sprawował pieczę nad naszym serwerem – musimy mieć pewność, że osoba opiekująca się maszyną wie co robi.

Należy również sprawdzić, czy dostawca serwera przestrzega standardów bezpieczeństwa (OWASP), dba o szkolenie pracowników oraz certyfikacje. W sieci wyszukamy tysiące ofert hostingu (tych tańszych i droższych), dzięki czemu szybko znajdziemy kilka opcji, spełniających nasze wymagania.

Kolejna istotna kwestia to wsparcie – często deklarowane „24/7 phone support”, jest tylko chwytem marketingowym, który w razie problemu o niestandardowej porze kończy się rozmową z botem po drugiej stronie słuchawki.

Niestety, w kwestiach serwerowych tańszy często oznacza gorszy. Dostawca usługi musi opłacić administratorów, wsparcie techniczne i konserwatorów sprzętu. Wyższej jakości usługi wymagają liczniejszych zasobów ludzkich, dodatkowych szkoleń, kursów dla pracowników czy opłacenia egzaminów certyfikacyjnych. To wszystko generuje koszty, a to zwiększa cenę wynajmu serwerów.

Dobry hosting powinien cechować się wysokiej jakości wsparciem technicznym, szybko reagującym na zgłoszone problemy oraz zapewnieniem Klientowi bezpiecznego cyklu życia oprogramowania. Mile widziana jest również możliwość zlecenia konfiguracji serwera specjalnie pod Magento 2. Część serwerowni pełni nieodpłatnie takie usługi, wystarczy kilka kliknięć i mamy pewność, że wszystko zostało odpowiednio skonfigurowane.

Zabezpiecz środowisko

Kiedy wybierzemy już serwer pod nasz sklep, nie możemy zapomnieć, że wymaga on pewnej konfiguracji, byśmy mogli poczuć się bezpieczniej. Należy wyeliminować tak wiele wektorów ataku, jak to tylko możliwe.

– Upewnij się, że na serwerze znajduje się jedynie niezbędne oprogramowanie. Każda dodatkowa aplikacja to potencjalne ryzyko – nigdy nie wiadomo, w której znajdą się jakieś luki, pozwalające na ominięcie zabezpieczeń.

– Niezależnie, czy używasz Apache czy Nginx, upewnij się, że wszystkie pliki i foldery mają odpowiednie uprawnienia, oraz że path traversal jest niemożliwy. Wystarczy mały błąd (jak nieustawienie MAGENTO_ROOT na folder /pub i zbyt szerokie uprawnienia) by narobić sobie kłopotów. 

– Utwórz i zaaplikuj listę numerów IP, które mają dostęp do panelu administracyjnego Magento 2.

– Wyłącz dostęp przez FTP, protokół ten jest przestarzały i niebezpieczny. W razie konieczności, korzystaj z SFTP.

– Dostęp przez SSH ogranicz tylko do zaufanych adresów IP, które muszą łączyć się z serwerem.

– Zrezygnuj z haseł dla SSH na rzecz kluczy.

– Upewnij się, że tylko uprawnione osoby mają wgląd do terminali z dostępem do serwera.

– Używaj skanera malware oraz antywirusa na sprzętach z dostępem do serwera.

– Zautomatyzuj deployment tak, jak to tylko możliwe, używając szyfrowanych transferów danych – im rzadziej trzeba będzie łączyć się z serwerem bezpośrednio, tym lepiej.

Tych kilka zabiegów znacznie ograniczy liczbę zagrożeń, z którymi musi zmierzyć się serwer. Nie jest to jednak pełna lista (bowiem taka prawdopodobnie nie istnieje) – zabezpieczenia serwera to temat, który warto zgłębić.

Zabezpiecz Magento

Zabezpieczony serwer powinien skutecznie obronić się przed większością ataków. Pamiętajmy jednak, że jednym z warunków bezpiecznego serwera jest także bezpieczne oprogramowanie, które na nim instalujemy. Nie inaczej jest w przypadku Magento 2. Część czytelników pewnie pamięta niesławny CVE-2019-7139, który wywołał panikę. Dlatego ważne jest, by aplikować na swoim sklepie wszystkie łatki bezpieczeństwa jak najszybciej, najlepiej w momencie premiery. Minusem oprogramowania OpenSource jest fakt, że każdy ma pełen dostęp do kodu, co ułatwia znalezienie luk w zabezpieczeniach. Plusem – że osoby szukające tych luk, często stoją po “jasnej stronie mocy” i dzielą się poprawkami 🙂

Dobrym nawykiem jest zmiana domyślnej ścieżki do panelu administracyjnego na coś mniej oczywistego niż /admin. Teoretycznie wydaje się to błahostką, która ostatecznie w niczym nie pomoże. Jest jednak nieco inaczej. Załóżmy, że mamy moduł, w którym wykryta zostaje podatność na ataki od strony panelu administracyjnego. Potencjalny atakujący wie, że nasz sklep stoi w oparciu o Magento 2 i widzi, że wykorzystujemy wspomniany moduł (przykładowo po charakterystycznym CSS czy JS dodawanym przez moduł na stronie głównej). Aby uruchomić podatność wystarczy udać się pod /admin/podatnymodul/index/search?ajax=true&q=TU_WSTAW_SQL_INJECTION. W tym momencie może zacząć się koszmar – jeśli jednak zmieniliśmy ścieżkę do panelu administratora, możemy zyskać trochę cennego czasu na zaaplikowanie odpowiednich poprawek, lub usunięcie wadliwego modułu, zanim błąd zostanie przez kogoś wykorzystany.

Bezwarunkowo należy korzystać z two–factor authentication dla wszystkich kont mających dostęp do panelu administracyjnego. Dzięki temu, nawet jeśli ktoś pozna nasze hasło, wciąż będzie musiał wpisać jednorazowy kod z aplikacji.

Wszystkie bramki płatności, jakich używasz (lub chcesz użyć) powinny spełniać standardy PCI – bezpieczeństwo danych Twoich klientów jest równie ważne jak bezpieczeństwo sklepu.

Magento 2 mimo ogromnych możliwości, czasami nie jest w stanie sprostać samodzielnie wszystkim wymaganiom jakie przed nim stawiamy. Tutaj z pomocą przychodzą przeróżne rozszerzenia – integracje z systemami ERP, API zewnętrznych systemów mailingowych, rozbudowane systemy promocji, poleceń, czy po prostu moduły upiększające frontend naszego sklepu, które pozwalają rozbudować jego funkcjonalność i dostosować go pod konkretne wymagania.

Dodatki do Magento 2 powinniśmy czerpać jedynie ze sprawdzonych źródeł, często poprzedzając zakup i instalację małymi badaniami na temat interesującego nas produktu. Należy sprawdzić, jak często dany moduł jest aktualizowany, czy oferowane jest wsparcie w razie kłopotów, jak szybko producent reaguje na zgłoszone bugi oraz czy wiadomo o istniejących i nienaprawionych lukach bezpieczeństwa.

Liczbę zainstalowanych modułów, podobnie jak w przypadku oprogramowania serwera, powinniśmy ograniczyć do minimum – tak by finalnie spełnić wszystkie nasze oczekiwania. Wynika to z faktu, że każdy dodatkowy moduł, to kolejna rzecz do sprawdzenia pod kątem bezpieczeństwa, śledzenia aktualizacji i ewentualny problem w przypadku braku dalszego wsparcia producenta. Nieużywane moduły powinny być jak najszybciej usuwane (oczywiście przy uprzednim sprawdzeniu, czy usunięcie danego modułu nie wpłynie na funkcjonalność pozostałych).

Nigdy nie powinniśmy szukać, a tym bardziej instalować płatnych modułów, pobranych za darmo z nie do końca legalnych źródeł. Pomijając już aspekt prawny i moralny takiego czynu, jest to narażanie się na kłopoty. Oczywiście, moduł może działać poprawnie i spełniać nasze oczekiwania, jednak nigdy nie ma pewności, czy w kodzie nie zostały zaszyte jakieś backdoory, exploity i inny złośliwy kod – a właściwie możemy mieć pewność, że takie coś się tam znajdzie 🙂 Dodajmy, że nie mamy w tym momencie wsparcia producenta, ani okresu darmowych aktualizacji. Z perspektywy czasu zaoszczędzenie kilku tysięcy złotych wydaje się marnym zyskiem, w porównaniu ze stratami jakie może spowodować złośliwy kod. 

Bądź zawsze na bieżąco (update’y)

Wspomniałem, że Magento 2 musi być zawsze aktualne. Podobnie ma się sprawa z modułami i templatkami. Każde z nich należy aktualizować na bieżąco, a w przypadku poprawek w zabezpieczeniach – natychmiastowo. Moduły, choć bardzo pożyteczne, również mogą zawierać swoje błędy, niezależne od Magento 2. Trzeba o tym pamiętać i zawczasu przeciwdziałać potencjalnym problemom.

Monitoring

Zabezpieczenia, aktualizacje, ograniczenie ryzyka do minimum – to wciąż za mało. Całą naszą platformę powinniśmy na bieżąco monitorować pod kątem podejrzanych aktywności. 

– Sprawdzaj spójność plików Magento 2 na serwerze – czasami nawet prosty „git status” pozwala wykryć, że ktoś kombinował w plikach.

– Cyklicznie kontroluj logi serwera pod kątem nietypowych aktywności, czy adresów IP występujących na czarnych listach.

– Sprawdzaj czy nie przybyło administratorów w Magento 2, których sam nie dodałeś.

– Monitoruj każde logowanie do serwera, niezależnie od użytego protokołu czy połączenia.

– Zainstaluj moduł zapisujący wszystkie wykonywane akcje w panelu administracyjnym.

– Korzystaj z Magento Security Scan – to darmowe narzędzie, pozwalające wykryć część luk i problemów w zabezpieczeniach. Wystarczy ustawić w jakich godzinach ma odbyć się skanowanie, a później już tylko przeglądać raporty, wysyłane na skrzynkę mailową.

Plan awaryjny

Choćby nasz serwer był prawdziwym Fortem Knox, otoczonym przez Pentagon i pole minowe, zawsze trzeba się liczyć z możliwością porażki. Dlatego konieczne jest posiadanie planu awaryjnego, który zakłada, że cały system po prostu padnie:

– Zaimplementuj system automatycznych kopii zapasowych, w tym nie tylko plików serwera, ale także baz danych.

– Przechowuj bazy danych na zewnętrznej maszynie lub nośniku niezależnym od serwera, na którym stoi Magento 2.

– Cyklicznie upewniaj się, że kopie zapasowe da się poprawnie przywrócić oraz skanuj je pod kątem złośliwego kodu.

– Posiadaj więcej niż jedną kopię zapasową w niejednej lokalizacji – niektóre ataki zostają wykryte po dłuższym czasie i istnieje możliwość, że część kopii zapasowych zawiera już wstrzyknięty przez atakującego kod.

– W przypadku wykrycia ataku – niezależnie jak małego, zmień wszystkie dane dostępowe dla administratorów, kont SFTP, SSH, baz danych, a także bramek płatności.

– Zautomatyzuj przywracanie kopii zapasowych – przez większość czasu do niczego się to nie przyda, jednak w razie problemów pozwoli na zaoszczędzenie czasu, przez który nasi klienci nie mogą dokonać zakupu, więc i zmniejszyć wygenerowane straty.

To w sumie dopiero podstawy. O zabezpieczeniu swojej platformy e-commerce można napisać całą encyklopedię, a prawdopodobnie za kilka tygodni i to byłoby za mało. Codziennie mamy do czynienia z nowymi atakami, hackami, formami wymuszeń i wykradania danych.

 

Nawet najlepsze zabezpieczenia i legion techników pilnujących serwera w dzień i w nocy na nic się nie zdadzą, jeśli sami nie wykażemy się ostrożnością i rozwagą w naszym postępowaniu. Gdy nie mamy pewności, że wszystko skonfigurowane jest w odpowiedni sposób, lub po prostu brakuje nam doświadczenia – warto zastanowić się nad zatrudnieniem specjalistów, którzy zdejmą z naszych barków ten ciężar i zrobią wszystko, by nasza platforma była bezpieczna.

On-demand webinar: Moving Forward From Legacy Systems

We’ll walk you through how to think about an upgrade, refactor, or migration project to your codebase. By the end of this webinar, you’ll have a step-by-step plan to move away from the legacy system.

Watch recording
moving forward from legacy systems - webinar

Latest blog posts

See more

Ready to talk about your project?

1.

Tell us more

Fill out a quick form describing your needs. You can always add details later on and we’ll reply within a day!

2.

Strategic Planning

We go through recommended tools, technologies and frameworks that best fit the challenges you face.

3.

Workshop Kickoff

Once we arrange the formalities, you can meet your Polcode team members and we’ll begin developing your next project.