Dzisiaj chciałbym poruszyć kwestię związaną z bezpieczeństwem sklepu internetowego. Projektując swój sklep spędzamy godziny nad jego wyglądem czy funkcjonalnością. O bezpieczeństwie myślimy mało lub wcale. Przecież mamy hosting, mamy panel administratora i …. ? No właśnie, ale nie mamy osoby za to odpowiedzialnej, tylko zestaw skryptów, które będą działały tak jak je poustawiamy. Skoro jesteśmy administratorem musimy Naszej witrynie zapewnić kompleksową obsługę w tym bardzo ważnym aspekcie, jakim jest bezpieczeństwo. Poniższy artykuł nie będzie przewodnikiem od A do Z ponieważ zakres tego zagadnienia przekracza zawartość niejednej książki. Postaram się jedynie zasygnalizować pewne aspekty bezpieczeństwa sklepów internetowych.
Serwer
To, w jakim środowisku instalujemy sklep ma niebagatelne znaczenie dla późniejszej stabilności Naszego systemu. Jeśli kupujemy hosting zadajmy sprzedającemu kilka podstawowych pytań:
- Czy na serwerze zainstalowane jest najnowsze wydanie dystrybucji Linux. Jeśli tak to jakie?
- W jaki sposób jest chroniony panel administratora?
- Czy aktualizacje systemu wykonywane są automatycznie. Jeśli nie to, w jaki sposób je wykonać?
- W jaki sposób wykonywane są kopie bezpieczeństwa. Czy kopia zapisywana jest na tej samej maszynie? Co jeśli serwer ulegnie uszkodzeniu? Jaka jest procedura odzyskiwania danych? Dobrym zwyczajem jest pobieranie na komputer kopii bazy danych oraz kopii plików Naszego sklepu. Jak często? Kopię bazy danych powinniśmy pobierać raz dziennie [tam znajdują się wszystkie informacje o zamówieniach klientów]. Kopie plików raz na kilka dni [w zależności od tego jak często aktualizujemy ofertę produktową]. Osobiście wykorzystuję do tego „rsync”. Istnieje też spora liczba programów zarówno bezpłatnych jak i płatnych automatyzująca te czynności np. „PcBackup”.
- Jakie jest zainstalowane oprogramowanie antywirusowe, antyspamowe i firewall. Typowa konfiguracja to: „Clamav”, „Madlet”, „Fail2ban”, „IPTables”, „RKhunter”.
Aplikacje
W tym miejscu poruszymy kwestie związane z aplikacjami zainstalowanymi na Naszym serwerze. Jest to o tyle istotna kwestia, że poprzez „dziurawą” aplikację np. poczty atakujący może dostać się do danych na całym serwerze, a także może zmodyfikować oprogramowanie sklepu i skompromitować Nasz biznes. Zgodnie z zasadą: „im mniej tym lepiej” zastanówmy się, z czego tak naprawdę korzystamy.
Jeśli pobieramy pocztę za pomocą Outlooka to spokojnie możemy wyłączyć pocztę webową. Szczególnie po ostatnich doniesieniach o lukach np. w „Roundcube”. Jeśli możemy wyłączmy całkowicie protokół ftp. Zamiast tego korzystajmy z dostępu po ssh [darmowy WinScp].
Ustawmy dodatkowe zabezpieczenia w postaci haseł za pomocą znanej od lat metody ograniczenia dostępu poprzez plik htaccess i htpasswd. W ten sposób możemy chronić zarówno „phpMyAdmin” jak i zaplecze sklepu [panel administracyjny].
Jeśli nie potrzebujemy dostępu do bazy danych z zewnątrz ustawmy serwer Mysql tak, by odpowiadał tylko na lokalne żądania.
Skonfigurujmy firewall. Typowe porty, które są istotne dla pełnego działania strony i poczty to:
TCP 20,21,25,53,80,110,143,443,587,993,995,8080,8081 ,UDP 53. Jeśli nie mamy dostępu do tych ustawień spytajmy usługodawcę o otwarte porty i sposób ich zabezpieczenia.
Oprogramowanie
Dopiero tutaj docieramy do samego sedna, czyli oprogramowania np. PrestaShop. Na początek musimy sprawdzić, jakie są ustawione uprawnienia zapisu / odczytu plików i folderów. Najczęstszym błędem popełnianym przez administratorów jest ustawienie dostępu na poziomie 0777. Czyli zapis i odczyt dla wszystkich. Wystawione w ten sposób pliki podatne są na modyfikacje z zewnątrz minimalnym nakładem sił i środków. Typowe ustawienia na poprawnie skonfigurowanym serwerze powinny wyglądać jak poniżej:
- 0644 dla plików;
- 0755 dla folderów
Następną niebagatelną kwestią mającą znaczenie w zakresie ochrony jest aktualizacja Naszego oprogramowania. Każde nowe wydanie niesie za sobą z reguły poprawki bezpieczeństwa i modyfikacje mające na celu eliminacje potencjalnych zagrożeń. W przypadku PrestaShop programiści przygotowali specjalny mechanizm pozwalający na aktualizację sklepu bez utraty wprowadzonych zmian. Każda zmiana wprowadzona w sklepie powinna być tak zrobiona, by zmodyfikowane pliki znalazły się w katalogu „override”. W przypadku modułów sprawa jest prostsza, ponieważ modyfikacje ich wyglądu powinny być wprowadzane w katalogu tematu. Zaś informacje o dostępnych aktualizacjach wyświetlają się w zakładce moduły.
Kwestia instalacji modułów czy oprogramowania to także ważne zagadnienie. Po pierwsze instalujmy oprogramowanie tylko z zaufanych źródeł. Po drugie, jeśli posiadamy sklep i dodatkowo instalujemy Blog oparty np. o WordPress zróbmy to na osobnych kontach użytkowników Linux. Taki sposób instalacji zminimalizuje ryzyko włamania z jednego systemu do drugiego.
Kontrola dostępu i hasła
Często podczas napraw sklepów moi klienci podają mi pełne hasła dostępu do serwera, chociaż ich wcale o to nie proszę. Podobnie jest, gdy wykonujemy migrację z jednej maszyny na drugą. Nie trudno sobie wyobrazić sytuację, w której w pewnym momencie hasła posiada już nie jedna czy dwie osoby a kilkanaście. Co najgorsze nie są to pracownicy firmy. To, że kupiliśmy u kogoś usługę nie powoduje, że stajemy się znajomymi…. Co jednak zrobić, gdy musimy przekazać dostęp? To proste wystarczy stworzyć konto tymczasowe i przydzielić dostęp do zasobów koniecznych do naprawy modułu. W tym celu można skorzystać z profili pracowników w PrestaShop lub ustawić ścieżkę dostępu w kliencie ftp tylko do danego modułu, który wymaga naprawy.
Hasła i ich skomplikowanie to następny aspekt bezpieczeństwa. Wiele razy widzę, jak mało skomplikowane mogą być hasła i tylko posługując się logiką można je złamać. Przykład: sklep o nazwie „ledsklep” posiada bazę danych „ledsklep” użytkownika bazy „ledsklep” i hasło „ledsklep123”.
Częstym błędem jest także używanie tego samego hasła do wszystkich serwisów. Bowiem jeśli jeden serwis zostanie skompromitowany np. poczta mailowa to pozostałe serwisy również. Zatem jak zapamiętać te wszystkie hasła? Najprostszym sposobem jest korzystanie z „elektronicznego portfela”. Czy to wbudowanego w systemie Windows, czy też mojego faworyta bezpłatnej aplikacji „KeePass”. Cechą wspólną tych rozwiązań jest jedno hasło główne lub klucz z poświadczeniami dający nam dostęp do wszystkich zapisanych danych.
Tak jak wspomniałem na początku celem tego artykułu nie było napisanie poradnika będącego kompendium wiedzy na temat zabezpieczenia sklepu tylko zasygnalizowanie potencjalnych zagrożeń, których możemy uniknąć. Co najważniejsze możemy to zrobić sami we własnym zakresie, niewielkim nakładem sił i środków.