Security Kit

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.

Security kit - statystyki użycia

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.

Security kit - opcje cross-site scripting

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.

Security kit - opcje CORS

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.

Security kit - opcje 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.

Security kit - opcje 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.

Security kit - opcje Expect CT

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.

Security kit - opcje Feature policy

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.

Security kit - opcje Miscellaneous

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.

Najlepsze praktyki