Security Kit - przegląd modułu Drupala
Security Kit to moduł, dzięki któremu niwelujesz prawdopodobieństwo wykorzystania luk w zabezpieczeniach strony internetowej. Wraz z funkcjonalnościami m.in. takimi jak: Anti-XSS, Anti-CSRF, Anti-ClickJacking możesz kompleksowo zapewnić sobie spokój oraz określić politykę bezpieczeństwa dla swojej witryny.
W naszej agencji drupalowej cenimy bezpieczeństwo stron naszych klientów i dokładamy wszelkich starań, aby rozwiązania, które dostarczamy były pozbawione luk. Nasz zespół programistów korzysta z narzędzi, które pozwalają osiągnąć ten cel w sposób optymalny. Używamy modułów udostępnionych przez community skupione wokół Drupala, które ułatwiają ten proces. Dla przykładu, podczas audytu przejmowanego projektu wykorzystujemy moduł Hacked!, a w trakcie implementacji rozwiązań, których wymaga Twój projekt, wspomagamy się modułem Security Review. Dzisiaj chciałbym przedstawić Ci kolejny moduł, który pomoże w zabezpieczeniu Twojej strony - Security Kit (SecKit).
Daty
Pierwsza wersja modułu została wydana 26 marca 2011. Ostatnia aktualizacja miała miejsce 28 sierpnia 2020. Moduł został uznany przez twórców za kompletny - nowe funkcjonalności nie są aktualnie implementowane, aktualizacje zawierają jedynie poprawki.
Popularność modułu
Moduł jest używany na około 56000 stron z czego 25000 to Drupal 7 a 26000 to Drupal 8.
Szczegółowe statystyki popularności można znaleźć pod tym linkiem.
Autorzy modułu
Moduł został stworzony przez użytkownika p0deje, jest wspierany przez organizacje Acquia oraz Catalyst IT. Najwięcej commitów dostarczyli użytkownicy p0deje (141), jweowu (26) oraz mcdruid (24).
Aktualnie moduł posiada czterech maintainerów: mcdruid, jweowu, badjava, p0deje.
Do czego służy moduł
Security Kit dostarcza Drupalowi opcje podnoszące poziom bezpieczeństwa, ograniczając ryzyko wykorzystania luk w zabezpieczeniach Twojej strony. Wprowadza zabezpieczenia Anti-XSS, Anti-CSRF, Anti-ClickJacking, implementację HSTS oraz CORS. Moduł pozwala na określenie wielu polityk bezpieczeństwa, opis każdej opcji konfiguracyjnej jest zawarty w sekcji “ustawienia”.
Przyjrzyjmy się bliżej wymienionej funkcjonalności.
Anti-XSS
Opcje pozwalające na ograniczenie wystąpienia ryzyka podatności typu Cross-site scripting (XSS). XSS to podatność witryny pozwalająca na wykonanie dowolnego kodu javascript na urządzeniu klienta. XSS może powodować wyciek danych takich jak login i hasło, dane karty kredytowej, informacje o koncie użytkownika i wiele innych. Ataki XSS dzielą się na typy, więcej informacji o typach ataków XSS znajdziemy pod tym linkiem.
Anti-CSRF
Cross-Site Request Forgery (CSRF) to typ ataku pozwalający na zmuszenie użytkownika końcowego do wykonania określonych czynności na witrynie. Atak CSRF może spowodować na przykład przejęcie środków użytkownika, zmianę jego adresu e-mail podpiętego do witryny, zmiany hasła oraz wykonanie każdej innej czynności, do której użytkownik jest uprawniony.
Anti Clickjacking
Clickjacking to metoda ataku umożliwiająca atakującemu oszukać użytkownika pokazując na naszej stronie na przykład wizualnie ukryty xframe, w który użytkownik może nieświadomie kliknąć i spowodować określoną akcję na innej stronie, ten typ ataku może zostać wykorzystany na przykład do “polubienia” strony atakującego na Facebooku, ten typ ataku ma nawet własną nazwę - Likejacking.
HSTS
HTTP Strict Transport Security (HSTS) polityka bezpieczeństwa minimalizująca ryzyko wystąpienia ataku typu man-in-the-middle, ataki typu man-in-the-middle polegają na modyfikacji żądania przed trafieniem do serwera.
CORS
Cross-origin resource sharing (CORS) to mechanizm pozwalający na określenie listy zaufanych domen, z których użytkownik może pobierać zasoby będąc na naszej witrynie.
Unboxing
Moduł nie wymaga do działania żadnych zewnętrznych bibliotek. Security Kit można zainstalować w sposób standardowy, lecz jak zawsze - rekomendujemy użycie composera:
composer require drupal/seckit
Ustawienia
Cross-site scripting
Sekcja zawierająca ustawienia podnoszące poziom zabezpieczeń przed atakami typu XSS.
Content security policy
Polityka bezpieczeństwa pozwalająca określić źródła treści, którym ufamy. Serwowanie użytkownikowi treści pochodzących ze źródeł, które nie są zaufane może powodować błędy bezpieczeństwa takie jak wycieki danych oraz dystrybucję malware. Więcej na ten temat można przeczytać pod tym linkiem.
Send HTTP response header
Zaznaczenie tej opcji powoduje włączenie polityki CSP.
Enable Upgrade Insecure Requests
Zaznaczenie tej opcji powoduje przekierowanie żądań z HTTP na HTTPS.
Report only
Zaznaczenie tej opcji spowoduje, że podczas złamania polityki content security żądania nie zostaną zablokowane a jedynie zalogowane.
Default-src
Określa politykę bezpieczeństwa dla wszystkich zawartości na stronie takich jak skrypty, style, obrazy, media, frame itd. Jeśli nie określimy odrębnej polityki dla danego typu zawartości CSP będzie korzystał z polityki określonej w tym polu.
Możemy określić źródła zaufane dla poszczególnych typów treści takich jak: script, object, style, img, media, frame, font.
Report-uri
Ścieżka wykorzystywania do raportowania żądań łamiących naszą politykę CSP.
Policy-uri
Jeśli chcemy, aby nasza polityka CSP była zapisana w jednym pliku w tym miejscu możemy podać do niego ścieżkę, jeśli to pole jest wypełnione to ustawienia per typ zawartości są pomijane.
X-XSS-Protection header
Każda przeglądarka posiada własne, wewnętrzne zabezpieczenia przed XSS. Header X-XSS-Protection pozwala na wyłączenie domyślnej ochrony anti-xss wbudowanej w przeglądarki, uruchomienie ochrony wraz z modyfikacją niebezpiecznych treści tak, aby chronić przed atakami typu XSS lub uruchomienie mechanizmów ochrony, które wszystkie niebezpieczne treści będą blokować. Szczegółowe informacje na temat headera znajdują się pod tym linkiem.
CORS
Sekcja zawierająca ustawienia podnoszące poziom zabezpieczeń przed atakami typu Cross-site request forgery.
HTTP Origin
Zaznaczenie tej opcji spowoduje włączenie walidacji źródła żądania HTTP tj. Uruchomienie mechanizmu CORS.
Allow request from
Lista, z której akceptujemy żądania.
ClickJacking
Sekcja zawierająca ustawienia podnoszące poziom zabezpieczeń przed atakami typu ClickJacking.
X Frame options
Konfiguracja X-Frame-Options
- Disabled - wyłącza header X-Frame-Options.
- SAMEORIGIN - Strona pozwala na wyświetlanie xframe jedynie z tej samej domeny.
- DENY - Blokada wszystkich xframe.
- ALLOW-FROM - Pozwala na określenie listy domen, z których akceptujemy xframe.
Więcej na temat headera XFrame możemy przeczytać pod tym linkiem.
Specyfikacja headera znajduje się tutaj.
Javascript-based protection
Pozwala na włączenie ochrony anti-clickjacking z wykorzystaniem javascript. To rozwiązanie nie będzie działać dla użytkowników, którzy blokują javascript z wykorzystaniem wtyczek takich jak NoScript.
Custom text for disabled JavaScript message
Pozwala na określenie wiadomości, która zostanie pokazana użytkownikowi, który blokuje javascript na naszej stronie lub użytkownikowi, którego przeglądarka nie obsługuje javascript.
SSL/TLS
Sekcja zawierająca ustawienia pozwalające na podniesienie poziomu bezpieczeństwa SSL/TLS.
HTTP Strict Transport Security
Włącza header Strict-Transport-Security (HSTS) - włączenie tej opcji spowoduje podniesienie poziomu bezpieczeństwa witryny przez ograniczenie ryzyka wystąpienia ataków typu man-in-the-middle takich jak SSLStrip. Więcej informacji o HSTS można uzyskać tutaj.
Max-Age
Określa wartość max-age headera HSTS. Max age to liczba sekund, przez które nasza strona jest traktowana przez użytkownika jako implementująca HSTS.
Include Subdomains
Wymusza użycie HSTS dla wszystkich subdomen, domyślnie header HSTS jest wysyłany jedynie z głównej domeny.
Preload
Większość popularnych przeglądarek posiada listy HSTS preload zawierające witryny, które są na stałe określone jako wykorzystujące HTTPS.
Jeśli chcesz, aby twoja domena kwalifikowała się do akceptacji na liście HSTS Preload ta opcja musi być zaznaczona.
Expect CT
Opcje konfiguracji headera Expect-CT pozwalają na włączenie raportowania i wymuszania przestrzegania polityki Certificate Transparency. Polityka Certificate Transparency określa źródła, mechanizmy dostarczania oraz podpisywania certyfikatów podczas korzystania z połączeń TLS. Więcej na ten temat można przeczytać pod tym linkiem.
Expect-CT
Włącza Expect-CT header.
Max-Age
Określa atrybut max-age dla headera Expect-CT. Max age to liczba sekund po otrzymaniu headera Expect-CT podczas których przeglądarka użytkownika traktuje naszą witrynę jako obsługującą header Expect-CT.
Report-uri
Określa URI potrzebne do raportowania błędów Expect-CT. Błędy są raportowane w przypadku, w którym użytkownik nie otrzyma poprawnej informacji o CT.
Enforce
Opcjonalny parametr headera, określa czy użytkownik powinien wymusić przestrzeganie zasad polityki Certificate Transparency czy jedynie raportować w przypadku błędu.
Feature policy
Opcje konfiguracyjne dla headera Feature-Policy, określa konfigurację i zachowanie API oraz funkcjonalności dostarczanych przez przeglądarkę, dzięki niemu możemy na przykład ograniczyć API pozwalające na interakcję z kamerą czy mikrofonem użytkownika czy zmienić domyślne zachowanie atrybutu autoplay na urządzeniach mobilnych. Więcej na ten temat znajdziemy tutaj.
Feature policy
Zaznaczenie tej opcji włącza header Feature-Policy.
Policy
Określa politykę headera Feature-Policy.
Miscellaneous
Konfiguracja pozostałych opcji modułu, które nie należą do żadnej kategorii.
From-Origin
Włącza header From-Origin-Response. Ta opcja określa witryny na których zasoby z naszej witryny mogą być embedowane. Więcej na ten temat znajdziemy w specyfikacji headera.
Allow loading content to
Pozwala określić listę domen, na których nasz content może być embedowany (jeśli From-Origin jest wykorzystywane).
Referrer-Policy
Włącza header Referrer-Policy response.
Select policy
Określa politykę dla headera Referrer-Policy. Informacje na temat tego headera jak i dostępnych opcji znajdziemy w specyfikacji.
Disable autocomplete on login and registration form
Zaznaczenie tej opcji spowoduje wyłączenie możliwości automatycznego wypełnienia formularzy logowania i rejestracji przez przeglądarkę.
Podsumowanie
Opisany moduł pozwala na konfigurację wielu opcji podnoszących poziom bezpieczeństwa twojej strony, daje możliwość określenia wielu polityk bezpieczeństwa, a mechanizmy zabezpieczeń, które wprowadza, pozwalają na znaczne zabezpieczenie witryny przed popularnymi atakami. Nasz zespół programistów Drupala rekomenduje użycie modułu SecurityKit.