Bezpieczeństwo Drupal: dobre praktyki i rekomendacje
Wahasz się przed stworzeniem strony na Drupalu, bo nie wiesz, jak prezentuje się pod względem bezpieczeństwa? A może już go używasz i szukasz porad, jak zadbać o te kwestie? W tym artykule poznasz najważniejsze informacje w kontekście bezpieczeństwa Drupala. Znajdziesz tu także sprawdzone moduły oraz porady.
Bezpieczeństwo Drupal CMS, a kwestia open source
Bezpieczeństwo Drupal CMS, a kwestia open source
Niektórzy sugerują, że z racji otwartej struktury oprogramowania, Drupal nie może być w pełni bezpieczny. W końcu w przypadku open source kod źródłowy jest dostępny dla wszystkich (w tym hakerów), a część pracy związanej z rozwojem całego systemu przypada społeczności. Tymczasem bezpieczeństwo systemu Drupal nie tylko nie traci, ale zyskuje na charakterze open source! Dowodem na bezpieczeństwo tego CMS-a niech będzie choćby fakt, że w 2009 roku oficjalna strona Białego Domu przeniosła się z zamkniętego oprogramowania, właśnie na otwartego Drupala.
Przyjrzyjmy się bliżej zaletom tego CMS-a:
- Rozwój napędzany przez społeczność – dzięki temu, że kod źródłowy jest publiczne dostępny, każdy może go przejrzeć pod kątem potencjalnych luk bezpieczeństwa oraz zasugerować poprawki. W praktyce dzięki temu niektóre problemy mogą być wykryte znacznie szybciej.
- Łatwiejsze audytowanie – jako że kod źródłowy jest publicznie dostępny, prywatni użytkownicy, jak i organizacje są w stanie go audytować, aby upewnić się, że spełnia wymagania bezpieczeństwa. W razie potrzeby mogą nawet go zmodyfikować, aby lepiej odpowiadał ich potrzebom w tym zakresie.
- Transparentność – w interesie społeczności zawsze leży poprawa bezpieczeństwa Drupala. Dla porównania właściciele prywatnego oprogramowania mogą niekiedy wstrzymywać się z informowaniem o powstaniu luk, gdyż taka wiadomość jest w stanie wpłynąć na ich reputację, wartość na giełdzie itp.
Oczywiście nad kwestią tego, czy oprogramowanie open source jest bezpieczniejsze niż zamknięte, dalej można się zastanawiać, jednak mitem jest, jakoby otwarta struktura wiązała się jedynie z problemami.
Bezpieczeństwo Drupala – z jakich zabezpieczeń korzysta ten CMS?
Bezpieczeństwo Drupala – z jakich zabezpieczeń korzysta ten CMS?
Jeśli chodzi o bezpieczeństwo Drupal CMS, oficjalna strona twórców oprogramowania wymienia następujące środki:
- Kontrola dostępu użytkowników.
- Szyfrowanie bazy danych.
- Udostępnianie informacji poprzez raporty bezpieczeństwa.
- Automatyczne aktualizacje i praca nad walidacją rdzenia we współpracy z GitHubem.
- Zapobieganie wprowadzaniu złośliwych danych.
- Łagodzenie ataków typu Denial of Service (DoS).
- Łatanie błędów, zanim zostaną wykorzystane.
Omówmy je bliżej:
Kontrola dostępów
System kontroli dostępu użytkowników Drupala pozwala administratorom zarządzać uprawnieniami dla różnych ról użytkowników, dbając o to, aby mieli dostęp tylko do tych zasobów, których potrzebują. Cały proces jest realizowany poprzez rozbudowany system ról i uprawnień.
Szyfrowanie bazy danych
Drupal zapewnia opcję szyfrowania wrażliwych informacji przechowywanych w bazie danych, co pozwala chronić je przed nieautoryzowanym dostępem.
Przykładowo moduł Field Encryption umożliwia szyfrowanie określonych pól w bazie danych. Dodatkowo Drupal wspiera stosowanie szyfrowanych połączeń z serwerem bazy danych, takich jak SSL/TLS dla MySQL i PostgreSQL.
Udostępnianie informacji poprzez raporty bezpieczeństwa
Drupal dysponuje własnym zespołem bezpieczeństwa, który stale monitoruje platformę pod kątem luk w zabezpieczeniach i współpracuje ze społecznością w celu rozwiązania takich problemów. Informacje o bezpieczeństwie są regularnie publikowane na różnych kanałach prowadzonych przez Drupal (dalej w artykule, w sekcji porad znajdziesz ich krótką listę).
Automatyczne aktualizacje i praca nad walidacją rdzenia we współpracy z GitHubem
Drupal 8 wprowadził moduł Automatic Updates, który pozwala w bezpieczny i zautomatyzowany sposób aktualizować rdzeń Drupala oraz moduły dodane przez społeczność. Gdy dostępne są nowe wersje zabezpieczeń, moduł sprawdza dostępność aktualizacji, pobiera je i automatycznie wdraża. Dzięki współpracy z GitHubem pakiety są bezpiecznie pobierane z repozytorium Drupal.org i weryfikowane przed wprowadzeniem do witryny.
Zapobieganie wprowadzaniu złośliwych danych
Drupal używa kombinacji filtrowania danych wejściowych i kodowania danych wyjściowych, co pozwala zapobiegać złośliwemu wprowadzaniu danych (np. ataki cross-site scripting, czyli XSS). Oprócz tego już w Drupalu 8 wprowadzono silnik szablonów Twig, który automatycznie koduje zmienne, aby zminimalizować ryzyko wystąpienia luk XSS.
Łagodzenie ataków typu Denial of Service (DoS)
System buforowania Drupala może zmniejszyć obciążenie serwera i poprawić wydajność witryny przy dużym natężeniu ruchu. Drupal zawiera różne wbudowane mechanizmy, które pomagają złagodzić wpływ ataków DoS. Przykładowo moduł Flood Control pozwala administratorom skonfigurować limity prób logowania i żądań zresetowania hasła, chroniąc dzięki temu witrynę przed atakami typu brute-force.
Łatanie błędów, zanim zostaną wykorzystane
Zespół do spraw bezpieczeństwa Drupala aktywnie pracuje nad identyfikacją i usuwaniem potencjalnych luk w zabezpieczeniach platformy. Kiedy taki problem zostanie odkryty, zespół ściśle współpracuje z opiekunami modułów, aby opracować i wydać łatkę. Konieczne aktualizacje są często wprowadzane, zanim potencjał poszczególnych luk zostanie w pełni odkryty przez hakerów, co minimalizuje szkody.
Najczęstsze luki w zabezpieczeniach Drupala
Najczęstsze luki w zabezpieczeniach Drupala
Jeśli chodzi o wrażliwości omawianego CMS-a, nie musimy zdawać się na domysły, gdyż strona CVE Details gromadzi przydatne statystyki włamań na strony Drupal. Od 2002 do 2022 (z pominięciem 2003 i 2004) roku w obrębie różnych wersji Drupala zarejestrowano 356 istotnych luk:
Jakie można z tego wyciągnąć wnioski? Luki bezpieczeństwa w Drupalu szybko pojawiały się w latach 2006-2009, czyli gdy omawiany CMS zaczął zyskiwać na popularności. Z biegiem czasu jednak twórcy oprogramowania zaczęli lepiej radzić sobie z jego ochroną i liczba problemów spadła oraz się ustabilizowała.
Omawiane statystyki wskazują także, że największe problemy z bezpieczeństwem w Drupalu sprawiały następujące ataki:
- XSS,
- execute code,
- bypass,
- SQL injection,
- gain information.
Czy Drupal jest bezpieczniejszy od innych CMS-ów?
Czy Drupal jest bezpieczniejszy od innych CMS-ów?
Na początek najważniejsza informacja - większość incydentów związanych z bezpieczeństwem dotyczy doinstalowywanych modułów do cora CMS. Na liczbę luk wpływa także popularność danej technologii, dlatego sama liczba wykrytych problemów nie zawsze jest miarodajna.
Ogólnie można jednak powiedzieć, że zabezpieczenia Drupala stoją na wysokim poziomie w porównaniu do innych podobnych rozwiązań. W dużym stopniu jest to związane z tym, że omawiany CMS cieszy się dużą popularnością i zainteresowaniem wśród stron firmowych oraz rządowych. Zobacz, jak prezentują się statystyki innych popularnych CMS-ów (pod kątem podstawowej instalacji CMS, nie modułów), jeśli chodzi o luki bezpieczeństwa:
WordPress
WordPress
Na tej stronie możesz sprawdzić luki bezpieczeństwa dla modułów wordpressowych. Jak z pewnością zauważysz - jest ich o wiele więcej niż na screenie powyżej. Dlaczego? Tak jak zaznaczyliśmy na początku, większość problemów dotyczy właśnie instalowanych modułów dodatkowych, a nie cora WordPress. Dlatego miej świadomość, że w przypadku każdego systemu zarządzania treścią tych luk może być więcej.
Joomla
Joomla
Magento
Magento
PrestaShop
PrestaShop
Tak prezentuje się lista pod kątem luk bezpieczeństwa w corze CMS-ów:
- Joomla – 446.
- WordPress – 388.
- Drupal – 356.
- Magento 2 – 221.
- PrestaShop – 82.
Jak widać, w porównaniu do Drupala lepiej prezentują się jedynie Magento 2 (w statystykach nie uwzględniono jednak starszej wersji 1, która tę liczbę by zapewne podwyższyła) oraz PrestaShop.
Jak wygląda kwestia bezpieczeństwa w Drupalu? System dysponuje własnym Zespołem Bezpieczeństwa, który przekazuje właścicielom witryn informacje o kluczowych problemach bezpieczeństwa i sposobach ich rozwiązania. Ponadto, by minimalizować ryzyko pojawienia się problemów z modułami, Drupal zdecydował się wprowadzić oznaczenia. Przy niezweryfikowanym module znajdziesz taką informację:
Inne pluginy, które nie zawierają takiego ostrzeżenia, są sprawdzone i można ich używać bez większych obaw o nieprawidłowości dot. bezpieczeństwa. Więcej informacji na temat Security Advisory znajdziesz tutaj.
Niezależnie od platformy, bezpieczeństwo w dużym stopniu zależy także od tego, jak witryna jest zarządzana. Omówmy zatem najlepsze praktyki bezpieczeństwa Drupala.
Bezpieczeństwo strony na Drupalu – 7 sprawdzonych praktyk
Bezpieczeństwo strony na Drupalu – 7 sprawdzonych praktyk
Poniższe wskazówki dotyczące bezpieczeństwa Drupala mogą Ci bardzo pomóc:
Dbaj o aktualizacje
Regularne aktualizacje to podstawa bezpieczeństwa w przypadku każdego oprogramowania. Nie inaczej jest, jeśli chodzi o Drupala. Jak wskazują na to twórcy CMS-a:
„Drupal ma ponad 29 000 projektów, które są analizowane przez użytkowników pod kątem potencjalnych problemów. Aby uzyskać więcej informacji, przeczytaj poziomy ryzyka bezpieczeństwa.
Komunikat bezpieczeństwa wskazuje również na odkrycie potencjalnego problemu, a także na to, że ów problem został już rozwiązany. Praktycznie nigdy się nie zdarza, aby luka w zabezpieczeniach była wykorzystywana przed opublikowaniem komunikatu bezpieczeństwa.
Z tego względu, najważniejsze zabezpieczenie to aktualizowanie Drupala, gdy tylko pojawi się komunikat o bezpieczeństwie dla rdzenia Drupala lub zewnętrznego oprogramowania, którego używasz”.
Śledź najnowsze informacje
Jeśli chcesz być na czasie z aktualizacjami i komunikatami o bezpieczeństwie, musisz o nich oczywiście usłyszeć. W tym celu warto sprawdzać kilka przydatnych źródeł:
- Security Advisories – oficjalne ogłoszenia i alerty wydawane przez Drupal Security Team.
- Drupal Security – konto na Twitterze informujące o lukach bezpieczeństwa.
- Feed RSS – core, contrib, public service announcements.
Zwracaj szczególną uwagę na zewnętrzne rozszerzenia
Twórcy omawianego oprogramowania stale dbają o bezpieczeństwo Drupal CMS na fundamentalnym poziomie, jednak nie mają aż tak bezpośredniej kontroli nad innymi modułami.
Ze wspomnianego wcześniej artykułu możesz dowiedzieć się także, że:
„Profesjonalne audyty bezpieczeństwa witryn Drupala ogólnie wykazały, że zdecydowana większość luk bezpieczeństwa (90% lub więcej) jest obecna w niestandardowych motywach lub modułach napisanych przez deweloperów analizowanej witryny. Kod ten nie został poddany takiemu samemu zakresowi publicznej kontroli, jak to wygląda w przypadku kodu drupal.org”.
Jeśli zatem korzystasz z innych modułów lub przygotowałeś jakieś rozwiązania pod swoje potrzeby, miej je stale na uwadze.
Korzystaj z odpowiedniego certyfikatu SSL
Certyfikat SSL to jeden z pierwszych kroków do zwiększenia bezpieczeństwa strony na Drupalu. Z racji różnych aktualizacji Google, jego obecność ma także kluczowe znaczenie dla pozycjonowania.
Oczywiście w przypadku sklepów internetowych czy stron rządowych/organizacji, nie można wybrać pierwszego lepszego certyfikatu. W kontekście takich zastosowań warto zwrócić uwagę na:
- szyfrowanie 256-bitowe,
- rozszerzoną walidację (EV),
- wsparcie dla Perfect Forward Secrecy (PFS).
Przetrzymuj kod w wersji kontrolnej
Jeśli chcesz zabezpieczyć swoje wdrożenia Drupala i inne projekty z nim związane, przetrzymuj kod na systemie wersji kontrolnej (VCS – version control system) jak Git. Dzięki temu będziesz w stanie:
- Śledzić zmiany – kiedy wdrażasz aktualizacje bezpieczeństwa lub wprowadzasz jakiekolwiek modyfikacje do swojej witryny Drupal, VCS pozwala monitorować dokładnie to, co się zmieniło. Dzięki temu możesz np. w porę zauważyć, czy owa aktualizacja nie popsuła jakiejś funkcjonalności.
- Tworzyć kopie zapasowe i odzyskiwać dane – VCS zawiera historię Twojej bazy kodu, co pozwala przywrócić poprzednią wersję w przypadku jakichkolwiek problemów lub błędów.
- Wykrywać nieautoryzowane zmiany – przechowywanie kodu Drupal w VCS pozwala porównać wersję live Twojej witryny z kodem przechowywanym w systemie kontroli wersji. Jeśli pojawią się jakieś różnice, których nie autoryzowałeś, może to wskazywać na naruszenie bezpieczeństwa lub nieautoryzowany dostęp.
Korzystaj ze sprawdzonych modułów
Różne moduły bezpieczeństwa w Drupalu mogą znacznie ułatwić pracę. Oprócz kilku wspomnianych wcześniej w artykule warto skorzystać także z następujących:
- Two-factor Authentication – weryfikacja dwuetapowa to jedno z najprostszych, a zarazem najskuteczniejszych zabezpieczeń dla użytkowników.
- Password Policy – skoro o użytkownikach mowa, warto także dopilnować tego, aby używane przez nich hasła spełniały odpowiednie standardy.
- CAPTCHA – CAPTCHA to stary, ale sprawdzony sposób na radzenie sobie ze spambotami.
- Content Access – w szczegółowy sposób ustalaj dostęp i zezwolenia w przypadku różnego rodzaju contentu.
Skorzystaj z profesjonalnej pomocy
Śledzenie aktualności, monitorowanie kodu, odpowiednie moduły bezpieczeństwa do Drupala – wszystko to wymaga umiejętności i czasu. Jeśli zadanie to Cię przerasta, dobrym wyjściem będzie skorzystanie z usług dobrej agencji/software house’u.
Taka pomoc zapewni bezpieczeństwo Twoich witryn Drupal, dzięki czemu sam będziesz mógł skupić się na innych kwestiach związanych z prowadzeniem biznesu.
Podsumowanie
Podsumowanie
Mamy nadzieję, że będziesz w stanie wprowadzić w życie omówione tutaj porady dotyczące bezpieczeństwa Drupala. Pamiętaj, że w ciągle zmieniających się środowiskach internetu i biznesu, bezpieczeństwo powinno być zawsze najwyższym priorytetem.