Konfiguracja nagłówków zabezpieczeń w NGINX jest niezbędna do zwiększenia bezpieczeństwa aplikacji internetowych. Nagłówki zabezpieczeń chronią przed różnymi atakami, takimi jak skrypty między witrynami (XSS), przejmowanie kliknięć i inne ataki polegające na wstrzykiwaniu kodu. Instruują przeglądarkę, jak ma postępować z zawartością witryny, zapewniając dodatkową warstwę bezpieczeństwa.
Ten przewodnik przeprowadzi Cię przez etapy konfiguracji nagłówków zabezpieczeń w NGINX, pomagając chronić aplikacje internetowe i poprawiać ogólne bezpieczeństwo.
Wdrażanie ścisłych zabezpieczeń transportu HTTP (HSTS) w NGINX
Zrozumienie HSTS
HTTP Strict Transport Security (HSTS) to kluczowy protokół bezpieczeństwa witryn internetowych. Wymusza, aby połączenia z domeną odbywały się wyłącznie za pośrednictwem protokołu HTTPS. Ogranicza to ryzyko, takie jak ataki typu man-in-the-middle, oraz zapewnia integralność i poufność danych przesyłanych online. Gdy użytkownik próbuje uzyskać dostęp do witryny za pośrednictwem protokołu HTTP, HSTS automatycznie uaktualnia połączenie do protokołu HTTPS.
Konfiguracja HSTS w NGINX
Aby skonfigurować HSTS w NGINX, musisz zaktualizować blok serwera w pliku konfiguracyjnym NGINX. Plik ten zwykle znajduje się w /etc/nginx/nginx.conf lub w konfiguracjach specyficznych dla witryny w /etc/nginx/sites-available/. Aktualizacja polega na dodaniu nagłówka instruującego przeglądarkę, aby zawsze korzystała z protokołu HTTPS dla określonej domeny.
W bloku serwera swojej domeny dodaj następujący wiersz:
add_header Strict-Transport-Security "max-age=31536000; includeSubDomains";
Linia ta zawiera dwa elementy:
- max-age=31536000: Poinstruuj przeglądarkę, aby przez następne 12 miesięcy pamiętała o korzystaniu z protokołu HTTPS w Twojej witrynie.
- includeSubDomains: Stosuje politykę HSTS do wszystkich subdomen Twojej witryny w celu zapewnienia kompleksowego bezpieczeństwa.
Przykładowa konfiguracja NGINX z HSTS
Twoja konfiguracja NGINX z nagłówkiem HSTS może wyglądać następująco:
upstream my_portal {
server 127.0.0.1:8080;
}
server {
listen 80;
server_name example.com;
add_header Strict-Transport-Security "max-age=31536000; includeSubDomains";
location / {
proxy_pass http://my_portal;
}
}
Po dodaniu tego nagłówka załaduj ponownie NGINX, aby wprowadzić zmiany za pomocą polecenia Sudo systemctl reload nginx lub sudo nginx -s reload.
Dodatkowe przykłady konfiguracji NGINX
W różnych scenariuszach konfiguracja NGINX z HSTS może się różnić. Oto dodatkowe przykłady:
Serwer wielodomenowy
server {
listen 80;
server_name example1.com example2.com;
add_header Strict-Transport-Security "max-age=31536000; includeSubDomains";
location / {
# Configuration details
}
}
Ta konfiguracja dotyczy HSTS do wielu domen hostowanych na tym samym serwerze. Każda wymieniona domena będzie wymuszać połączenia HTTPS.
Serwer z terminacją SSL
server {
listen 443 ssl;
server_name example.com;
ssl_certificate /path/to/certificate;
ssl_certificate_key /path/to/private/key;
add_header Strict-Transport-Security "max-age=31536000; includeSubDomains";
location / {
# Configuration details
}
}
Ta konfiguracja dotyczy serwerów obsługujących zakończenie protokołu SSL. Konfiguruje HSTS na bezpiecznym porcie (443) z określonymi certyfikatami SSL, wzmacniając bezpieczne połączenia.
Konfigurowanie polityki bezpieczeństwa treści (CSP) w NGINX
Wdrażanie CSP w NGINX
Zintegrowanie polityki bezpieczeństwa treści (CSP) z NGINX to strategiczne posunięcie mające na celu zwiększenie bezpieczeństwa aplikacji internetowych. Polega na dodaniu określonego nagłówka w bloku serwera pliku konfiguracyjnego NGINX. Zwykle znajduje się w /etc/nginx/nginx.conf lub w katalogu /etc/nginx/sites-available/. Plik ten wymaga starannej edycji, aby skutecznie zastosować CSP.
Aby uzyskać podstawową konfigurację CSP, dodaj następujący wiersz w bloku serwera:
add_header Content-Security-Policy "default-src 'self';" always;
Dyrektywa ta ogranicza ładowanie treści do domeny witryny internetowej („self”), znacznie zmniejszając ryzyko wykonania złośliwych treści zewnętrznych.
Przykładowa konfiguracja NGINX z CSP
Twoja konfiguracja NGINX z podstawową dyrektywą CSP może wyglądać następująco:
upstream my_portal {
server 127.0.0.1:8080;
}
server {
listen 80;
server_name example.com;
add_header Content-Security-Policy "default-src 'self';" always;
location / {
proxy_pass http://my_portal;
}
}
Załaduj ponownie NGINX za pomocą sudo systemctl reload nginx lub sudo nginx -s reload po dodaniu tej dyrektywy.
Dostosowywanie CSP do konkretnych potrzeb
CSP można dostosować do konkretnych potrzeb bezpieczeństwa Twojej witryny internetowej. Oto rozszerzone konfiguracje dla różnych scenariuszy:
Zezwalanie na obrazy z dowolnego źródła
add_header Content-Security-Policy "default-src 'self'; img-src *;" always;
Taka konfiguracja umożliwia ładowanie obrazów z dowolnego źródła, zachowując ścisłą kontrolę nad innymi rodzajami treści.
Konfiguracja określonych skryptów i stylów
add_header Content-Security-Policy "default-src 'self'; script-src 'self' https://trustedscript.com; style-src 'self' 'unsafe-inline';";
To ustawienie umożliwia korzystanie ze skryptów z Twojej domeny i zaufanego źródła zewnętrznego wraz ze stylami wbudowanymi, równoważąc funkcjonalność z bezpieczeństwem.
Badanie dyrektyw i opcji CSP
Dyrektywy w CSP
Dyrektywy CSP to reguły definiujące zasady dotyczące określonych typów treści. Wspólne dyrektywy obejmują:
- default-src: Domyślna polityka stosowana do większości typów treści.
- script-src: zarządza źródłami zasobów JavaScript.
- style-src: Określa dozwolone źródła zasobów CSS.
- img-src: Kontroluje źródła zasobów obrazów.
- connect-src: Ustawia zasady dla połączeń sieciowych, takich jak XMLHttpRequest, WebSocket i EventSource.
Wyrażenia źródłowe w CSP
Wyrażenia źródłowe definiują dopuszczalne źródła dla każdej dyrektywy:
- „none”: blokuje wszystkie źródła.
- „self”: Zezwala na zasoby tego samego pochodzenia.
- „unsafe-inline”: zezwala na zasoby wbudowane, takie jak style lub adresy URL JavaScript.
- „unsafe-eval”: Zezwala na JavaScript
eval()
funkcje i podobne metody. - https:: Włącza zasoby z dowolnego adresu URL HTTPS.
Konfigurowanie ochrony X-XSS w NGINX
Wprowadzenie do ochrony X-XSS
X-XSS-Protection, czyli nagłówek Cross-Site Scripting, jest niezbędny do ochrony aplikacji internetowych przed atakami XSS (Cross-Site Scripting). Obsługiwany przez główne przeglądarki internetowe, takie jak Chrome, Internet Explorer i Safari, ten nagłówek zwiększa bezpieczeństwo w sieci, zapobiegając ładowaniu stron w przypadku wykrycia odzwierciedlonych ataków XSS.
Włączanie ochrony X-XSS w NGINX
Zintegrowanie nagłówka X-XSS-Protection z konfiguracją serwera NGINX wzmacnia natywną ochronę XSS przeglądarki. Aby włączyć tę funkcję bezpieczeństwa, uzyskaj dostęp do pliku konfiguracyjnego NGINX, zwykle znajdującego się w /etc/nginx/nginx.conf lub w katalogu /etc/nginx/sites-available/.
W bloku serwera pliku konfiguracyjnego NGINX wstaw tę dyrektywę:
add_header X-XSS-Protection "1; mode=block";
Dyrektywa ta składa się z dwóch części:
- 1: Aktywuje filtr XSS przeglądarki.
- mode=block: nakazuje przeglądarce blokowanie strony w przypadku wykrycia ataku XSS, zamiast podejmować próbę jej oczyszczenia.
Przykładowa konfiguracja NGINX z ochroną X-XSS
Przykładowa konfiguracja NGINX zawierająca ochronę X-XSS może wyglądać następująco:
upstream my_portal {
server 127.0.0.1:8080;
}
server {
listen 80;
server_name example.com;
add_header X-XSS-Protection "1; mode=block";
location / {
proxy_pass http://my_portal;
}
}
Po dodaniu tego nagłówka załaduj ponownie NGINX, używając sudo systemctl reload nginx lub sudo nginx -s reload.
Dodatkowe scenariusze konfiguracji NGINX
Dla serwera z SSL
server {
listen 443 ssl;
server_name example.com;
ssl_certificate /path/to/certificate;
ssl_certificate_key /path/to/private/key;
add_header X-XSS-Protection "1; mode=block";
# Further configuration
}
Ta konfiguracja dotyczy serwerów z protokołem SSL, zapewniając aktywną ochronę X-XSS w przypadku połączeń szyfrowanych.
Obsługa wielu domen
server {
listen 80;
server_name example1.com example2.com;
add_header X-XSS-Protection "1; mode=block";
# Further configuration
}
Ta konfiguracja stosuje ochronę X-XSS w wielu domenach hostowanych na jednym serwerze.
Konfigurowanie opcji X-Frame w NGINX
Rola opcji X-Frame
X-Frame-Options to niezbędny nagłówek bezpieczeństwa zaprojektowany w celu ochrony stron internetowych przed atakami typu clickjacking. Zapobiega wyświetlaniu stron internetowych w ramkach lub ramkach iframe, które są często wykorzystywane w tego typu atakach. Obsługiwane przez wszystkie główne przeglądarki internetowe, X-Frame-Options zapewnia szeroką ochronę, zwiększając bezpieczeństwo Twojej obecności w Internecie na różnych platformach.
Implementowanie opcji X-Frame w NGINX
Włączenie nagłówka X-Frame-Options do konfiguracji serwera NGINX ma kluczowe znaczenie dla zwiększenia bezpieczeństwa Twojej witryny. To zadanie obejmuje edycję pliku konfiguracyjnego NGINX, zwykle znajdującego się w /etc/nginx/nginx.conf lub w katalogu /etc/nginx/sites-available/.
Aby włączyć tę funkcję bezpieczeństwa, dodaj następującą dyrektywę do bloku serwera w pliku konfiguracyjnym NGINX:
add_header X-Frame-Options "DENY";
Ta dyrektywa, ustawiona na „ODMÓW”, instruuje przeglądarkę, aby blokowała wszelkie próby renderowania strony w ramce lub ramce iframe, zapewniając solidną ochronę przed przechwytywaniem kliknięć.
Przykładowa konfiguracja NGINX z opcjami X-Frame
Przykładowa konfiguracja NGINX z nagłówkiem X-Frame-Options jest następująca:
upstream my_portal {
server 127.0.0.1:8080;
}
server {
listen 80;
server_name example.com;
add_header X-Frame-Options "DENY";
location / {
proxy_pass http://my_portal;
}
}
Po dodaniu tego nagłówka ważne jest ponowne załadowanie NGINX, aby aktywować zmiany. Można to zrobić za pomocą sudo systemctl reload nginx lub sudo nginx -s reload.
Rozszerzanie konfiguracji NGINX dla opcji X-Frame
Dla serwerów obsługujących SSL
server {
listen 443 ssl;
server_name example.com;
ssl_certificate /path/to/certificate;
ssl_certificate_key /path/to/private/key;
add_header X-Frame-Options "DENY";
# Additional configuration
}
Ta konfiguracja jest przeznaczona dla serwerów z protokołem SSL, zapewniając wymuszenie opcji X-Frame-Options w przypadku bezpiecznych połączeń.
Obsługa wielu domen
server {
listen 80;
server_name example1.com example2.com;
add_header X-Frame-Options "DENY";
# Additional configuration
}
Ta konfiguracja stosuje nagłówek X-Frame-Options w wielu domenach na tym samym serwerze, zwiększając bezpieczeństwo każdej domeny.
Implementowanie opcji typu zawartości X w NGINX
Rola opcji typu zawartości X
X-Content-Type-Options to istotny nagłówek bezpieczeństwa w bezpieczeństwie sieciowym, który uniemożliwia przeglądarkom wąchanie typu MIME. Ten nagłówek potwierdza, że przeglądarki respektują zadeklarowany typ zawartości w nagłówkach HTTP, eliminując luki w zabezpieczeniach, które mogą pojawić się, gdy przeglądarki błędnie interpretują typy plików, np. traktowanie plików obrazów jako wykonywalnego HTML, co może prowadzić do ataków typu cross-site scripting (XSS).
Konfigurowanie opcji typu zawartości X w NGINX
Aby zwiększyć bezpieczeństwo serwera WWW za pomocą nagłówka X-Content-Type-Options, musisz bezpośrednio zmodyfikować plik konfiguracyjny NGINX. Plik ten zwykle znajduje się w /etc/nginx/nginx.conf lub w konfiguracjach specyficznych dla witryny w /etc/nginx/sites-available/.
Dołącz ten nagłówek, dodając następujący wiersz do pliku server
blok konfiguracji NGINX:
add_header X-Content-Type-Options "nosniff";
Ustawienie „nosniff” nakazuje przeglądarce ścisłe przestrzeganie typu zawartości określonego przez serwer, zapobiegając alternatywnym interpretacjom treści.
Przykładowa konfiguracja NGINX z opcjami X-Content-Type
Konfiguracja NGINX z opcjami X-Content-Type może mieć następującą strukturę:
upstream my_portal {
server 127.0.0.1:8080;
}
server {
listen 80;
server_name example.com;
add_header X-Content-Type-Options "nosniff";
location / {
proxy_pass http://my_portal;
}
}
Po zaktualizowaniu konfiguracji pamiętaj o ponownym załadowaniu NGINX, aby zmiany odniosły skutek, używając polecenia Sudo systemctl reload nginx lub Sudo nginx -s reload.
Rozszerzone przykłady konfiguracji NGINX
Konfiguracja dla protokołu SSL/TLS
server {
listen 443 ssl;
server_name example.com;
ssl_certificate /path/to/certificate.pem;
ssl_certificate_key /path/to/key.pem;
add_header X-Content-Type-Options "nosniff";
# Additional SSL configurations and locations
}
Ta konfiguracja jest przeznaczona dla serwerów z protokołem SSL/TLS i zastosowaniem opcji typu X-Content-Type w przypadku bezpiecznych połączeń w celu zwiększenia bezpieczeństwa.
Konfiguracja serwera wielodomenowego
server {
listen 80;
server_name example1.com example2.com;
add_header X-Content-Type-Options "nosniff";
# Additional configurations for multiple domains
}
Ta konfiguracja stosuje nagłówek X-Content-Type-Options w wielu domenach hostowanych na tym samym serwerze, zapewniając spójne ustawienia zabezpieczeń we wszystkich domenach.
Konfigurowanie zasad dotyczących stron odsyłających w NGINX
Funkcja polityki odsyłającej
Referrer-Policy to niezbędny nagłówek HTTP służący do zwiększania prywatności i bezpieczeństwa użytkowników w Internecie. Kontroluje ilość informacji o skierowaniach zawartych w nagłówku strony odsyłającej, gdy użytkownicy przechodzą z Twojej witryny do innych, chroniąc poufne informacje przed ujawnieniem w żądaniach internetowych.
Konfigurowanie zasad dotyczących stron odsyłających w NGINX
Aby zaimplementować nagłówek Referrer-Policy na serwerze NGINX, zmodyfikuj plik konfiguracyjny NGINX, zwykle znajdujący się w /etc/nginx/nginx.conf lub w katalogu /etc/nginx/sites-available/. Dodaj następującą dyrektywę do bloku serwera:
add_header Referrer-Policy "no-referrer";
Ta dyrektywa, ustawiona na „no-referrer”, gwarantuje, że podczas nawigacji w witrynie nie będą wysyłane żadne informacje o osobach odsyłających, maksymalizując prywatność.
Przykładowa konfiguracja NGINX z polityką odsyłającą
Twoja konfiguracja NGINX z nagłówkiem Referrer-Policy może wyglądać następująco:
upstream my_portal {
server 127.0.0.1:8080;
}
server {
listen 80;
server_name example.com;
add_header Referrer-Policy "no-referrer";
location / {
proxy_pass http://my_portal;
}
}
Po dodaniu tego nagłówka załaduj ponownie NGINX za pomocą poleceń takich jak Sudo systemctl reload nginx lub sudo nginx -s reload.
Opcje i definicje zasad dotyczących stron odsyłających
- no-referrer: Żadne informacje o osobie polecającej nie są wysyłane.
- no-referrer-when-downgrade (domyślnie): wysyła informacje o stronie odsyłającej dla miejsc docelowych tego samego pochodzenia lub bezpiecznych docelowych adresów URL (HTTPS) z bezpiecznej strony.
- Origin: Wysyła tylko źródło (schemat, host i port).
- Origin-when-cross-Origin: Wysyła pełny adres URL w przypadku żądań tego samego źródła, ale tylko źródło w innych przypadkach.
- to samo pochodzenie: wysyła pełną stronę odsyłającą dla żądań tego samego pochodzenia, ale bez nagłówka dla żądań z różnych źródeł.
- strict-Origin: Wysyła źródło żądań HTTPS, ale bez nagłówka dla żądań HTTP.
- strict-Origin-when-cross-Origin: Wysyła pełną stronę odsyłającą do żądań tego samego źródła, początek do miejsc docelowych HTTPS ze stron HTTPS i bez nagłówka do miejsc docelowych HTTP.
- unsafe-url: Wysyła pełny adres URL niezależnie od pochodzenia i bezpieczeństwa (niezalecane).
Rozszerzone przykłady konfiguracji NGINX
Konfiguracja protokołu SSL/TLS
server {
listen 443 ssl;
server_name secure.example.com;
ssl_certificate /path/to/certificate.pem;
ssl_certificate_key /path/to/key.pem;
add_header Referrer-Policy "no-referrer";
# Additional SSL configurations
}
Ta konfiguracja stosuje nagłówek Referrer-Policy w bezpiecznym środowisku z obsługą protokołu SSL/TLS, zwiększając prywatność w przypadku połączeń szyfrowanych.
Konfiguracja serwera wielodomenowego
server {
listen 80;
server_name example1.com example2.com;
add_header Referrer-Policy "no-referrer";
# Additional configurations for each domain
}
Ta konfiguracja gwarantuje, że nagłówek Referrer-Policy zostanie zastosowany w wielu domenach hostowanych na tym samym serwerze, zachowując spójne ustawienia prywatności.
Implementacja polityki uprawnień w NGINX
Zrozumienie zasad uprawnień
Nagłówek Permissions-Policy umożliwia administratorom sieci precyzyjną kontrolę nad funkcjami przeglądarek i interfejsami API w ich witrynach internetowych. Skonfigurowanie tego nagłówka znacznie zwiększa bezpieczeństwo i prywatność witryny, umożliwiając wprowadzenie ograniczeń funkcji, takich jak geolokalizacja, kamera i mikrofon, w zależności od konkretnych potrzeb witryny.
Konfigurowanie polityki uprawnień w NGINX
Aby włączyć nagłówek Permissions-Policy do serwera NGINX, zmodyfikuj plik konfiguracyjny NGINX, zwykle znajdujący się w /etc/nginx/nginx.conf lub w katalogu /etc/nginx/sites-available/.
Dodaj następującą dyrektywę do bloku serwera:
add_header Permissions-Policy "geolocation=(); midi=(); notifications=(); push=(); sync-xhr=(); accelerometer=(); gyroscope=(); magnetometer=(); payment=(); usb=(); vr=(); camera=(); microphone=(); speaker=(); vibrate=(); ambient-light-sensor=(); autoplay=(); encrypted-media=(); execute-clipboard=(); document-domain=(); fullscreen=(); imagecapture=(); lazyload=(); legacy-image-formats=(); oversized-images=(); unoptimized-lossy-images=(); unoptimized-lossless-images=(); unsized-media=(); vertical-scroll=(); web-share=(); xr-spatial-tracking=();";
Ta dyrektywa wymienia różne funkcje przeglądarki i interfejsy API, ustawiając je wszystkie na (), co skutecznie je wyłącza. Ta konfiguracja zapewnia kompleksowe podejście do ograniczania funkcji, które mogą zagrozić prywatności lub bezpieczeństwu użytkownika.
Przykładowa konfiguracja NGINX z polityką uprawnień
Oto przykład tego, jak może wyglądać konfiguracja NGINX z nagłówkiem Permissions-Policy:
upstream my_portal {
server 127.0.0.1:8080;
}
server {
listen 80;
server_name example.com;
add_header Permissions-Policy "geolocation=(); midi=(); notifications=(); push=(); sync-xhr=(); accelerometer=(); gyroscope=(); magnetometer=(); payment=(); usb=(); vr=(); camera=(); microphone=(); speaker=(); vibrate=(); ambient-light-sensor=(); autoplay=(); encrypted-media=(); execute-clipboard=(); document-domain=(); fullscreen=(); imagecapture=(); lazyload=(); legacy-image-formats=(); oversized-images=(); unoptimized-lossy-images=(); unoptimized-lossless-images=(); unsized-media=(); vertical-scroll=(); web-share=(); xr-spatial-tracking=();";
location / {
proxy_pass http://my_portal;
}
}
Dyrektywa ta kompleksowo wymienia różne funkcje przeglądarki i interfejsy API, ustawiając je na (), aby skutecznie je wyłączyć.
Przykładowa konfiguracja NGINX z polityką uprawnień
Twoja konfiguracja NGINX, w tym polityka uprawnień, może wyglądać następująco:
upstream my_portal {
server 127.0.0.1:8080;
}
server {
listen 80;
server_name example.com;
add_header Permissions-Policy "geolocation=(); midi=(); notifications=(); push=(); sync-xhr=(); accelerometer=(); gyroscope=(); magnetometer=(); payment=(); usb=(); vr=(); camera=(); microphone=(); speaker=(); vibrate=(); ambient-light-sensor=(); autoplay=(); encrypted-media=(); execute-clipboard=(); document-domain=(); fullscreen=(); imagecapture=(); lazyload=(); legacy-image-formats=(); oversized-images=(); unoptimized-lossy-images=(); unoptimized-lossless-images=(); unsized-media=(); vertical-scroll=(); web-share=(); xr-spatial-tracking=();";
location / {
proxy_pass http://my_portal;
}
}
Załaduj ponownie NGINX za pomocą sudo systemctl reload nginx lub sudo nginx -s reload po wprowadzeniu tych zmian.
Wyjaśnienie opcji zasad uprawnień
Nagłówek Permissions-Policy umożliwia dostosowanie użycia różnych funkcji:
- geolokalizacja: Kontroluje dostęp do danych geolokalizacyjnych.
- midi: zarządza dostępem do urządzeń MIDI.
- powiadomienia: reguluje wyświetlanie powiadomień.
- naciskać: wpływa na funkcjonalność powiadomień push.
- synchronizacja-xhr: Odnosi się do synchronicznego żądania XMLHTTPRequest.
- akcelerometr: dyktuje dostęp do akcelerometru urządzenia.
- żyroskop: Kontroluje dostęp do żyroskopu.
- magnetometr: zarządza dostępem do magnetometru urządzenia.
- Zapłata: Dotyczy funkcji żądania płatności.
- usb: reguluje dostęp do urządzeń USB.
- wr: Dotyczy funkcji rzeczywistości wirtualnej.
- kamera: zarządza dostępem do kamery.
- mikrofon: dyktuje dostęp do mikrofonu.
- głośnik: kontroluje dostęp do urządzeń głośnikowych.
- wibrować: Wpływa na API wibracji.
- czujnik światła otoczenia: Dotyczy czujnika światła otoczenia.
- Automatyczne odtwarzanie: Steruje automatycznym odtwarzaniem multimediów.
- zaszyfrowane media: zarządza dostępem do zaszyfrowanych multimediów.
- wykonaj-schowek: reguluje dostęp do odczytu/zapisu schowka.
- domena-dokumentu: Dotyczy funkcji document.domain.
- pełny ekran: dyktuje dostęp do pełnego ekranu.
- przechwytywania obrazu: Steruje funkcją przechwytywania obrazu.
- leniwe ładowanie: wpływa na leniwe ładowanie obrazów.
- starsze formaty obrazów: Dotyczy starszych formatów obrazów.
- obrazy o dużych rozmiarach: reguluje ładowanie zbyt dużych obrazów.
- niezoptymalizowane-stratne-obrazy: zarządza niezoptymalizowanymi obrazami stratnymi.
- niezoptymalizowane-bezstratne-obrazy: Dotyczy niezoptymalizowanych obrazów bezstratnych.
- nośniki niewymiarowe: Steruje multimediami bez wyraźnego rozmiaru.
- przewijanie w pionie: wpływa na przewijanie w pionie.
- udostępnianie w sieci: dotyczy funkcji udostępniania Internetu.
- śledzenie-przestrzenne xr: reguluje śledzenie przestrzenne XR.
Zaawansowane konfiguracje polityki uprawnień w NGINX
Konfigurowanie zasad uprawnień z określonymi domenami i symbolami wieloznacznymi
Poza podstawową konfiguracją wyłączania funkcji za pomocą (), zasady uprawnień w NGINX można dostosować tak, aby zezwalały na pewne funkcje z określonych domen lub przy użyciu symboli wieloznacznych. Ta zaawansowana konfiguracja umożliwia bardziej szczegółową kontrolę nad tym, do czego i skąd Twoja witryna może uzyskać dostęp.
Przykład: zezwolenie na funkcje z określonych domen
server {
listen 80;
server_name example.com;
add_header Permissions-Policy "geolocation=(https://trusteddomain.com), microphone=(https://alloweddomain.com)";
location / {
proxy_pass http://my_portal;
}
}
Ta konfiguracja umożliwia dostęp do danych geolokalizacyjnych tylko z https://trusteddomain.com i dostęp do mikrofonu wyłącznie z https://alloweddomain.com, zwiększając bezpieczeństwo poprzez ograniczenie tych wrażliwych funkcji do zaufanych źródeł.
Przykład: używanie symboli wieloznacznych w przypadku szerokich uprawnień
server {
listen 80;
server_name example.com;
add_header Permissions-Policy "camera=*; fullscreen=*";
location / {
proxy_pass http://my_portal;
}
}
Symbol wieloznaczny * w tej konfiguracji umożliwia dostęp do kamery i tryb pełnoekranowy z dowolnej domeny. Takie podejście zapewnia szersze uprawnienia, odpowiednie dla witryn internetowych wymagających szerokiego dostępu do funkcji z różnych źródeł.
Przykład: łączenie ograniczeń i uprawnień
server {
listen 80;
server_name example.com;
add_header Permissions-Policy "accelerometer=(); gyroscope=(self https://example2.com); payment=*";
location / {
proxy_pass http://my_portal;
}
}
W tej konfiguracji dostęp do akcelerometru jest wyłączony, dostęp do żyroskopu jest dozwolony z tej samej domeny i https://example2.com, a żądania płatności są dozwolone ze wszystkich domen.
Weryfikacja nagłówków zabezpieczeń za pomocą polecenia Curl w NGINX
Używanie Curl do sprawdzania nagłówków zabezpieczeń
Polecenie curl jest cennym narzędziem do sprawdzania konfiguracji nagłówków zabezpieczeń na serwerze NGINX. Umożliwia sprawdzenie nagłówków witryny i potwierdzenie, że nagłówki zabezpieczeń są prawidłowo skonfigurowane. Ten etap weryfikacji ma kluczowe znaczenie dla zapewnienia, że środki bezpieczeństwa Twojego serwera internetowego są aktywne i działają zgodnie z przeznaczeniem.
Wykonywanie polecenia Curl w celu weryfikacji nagłówka
Aby sprawdzić nagłówki swojej witryny, wykonaj w terminalu następujące polecenie:
curl -I http://example.com
Zamień example.com na nazwę swojej domeny. To polecenie żąda nagłówków z serwera, zapewniając wgląd w aktywne konfiguracje zabezpieczeń.
Oczekiwany wynik i interpretacja
Po uruchomieniu polecenia curl powinieneś otrzymać dane wyjściowe podobne do następujących:
HTTP/1.1 200 OK
Server: nginx
Date: Mon, 20 Mar 2023 00:00:00 GMT
Content-Type: text/html
Connection: keep-alive
Strict-Transport-Security: max-age=31536000; includeSubDomains
Content-Security-Policy: default-src 'self';
X-XSS-Protection: 1; mode=block
X-Frame-Options: DENY
X-Content-Type-Options: nosniff
Referrer-Policy: no-referrer
Permissions-Policy: geolocation=(); midi=(); notifications=(); push=(); sync-xhr=(); accelerometer=(); gyroscope=(); magnetometer=(); payment=(); usb=(); vr=(); camera=(); microphone=(); speaker=(); vibrate=(); ambient-light-sensor=(); autoplay=(); encrypted-media=(); execute-clipboard=(); document-domain=(); fullscreen=(); imagecapture=(); lazyload=(); legacy-image-formats=(); oversized-images=(); unoptimized-lossy-images=(); unoptimized-lossless-images=(); unsized-media=(); vertical-scroll=(); web-share=(); xr-spatial-tracking=();"
Dane wyjściowe potwierdzają obecność i poprawną konfigurację różnych nagłówków zabezpieczeń na serwerze, takich jak Strict-Transport-Security, Content-Security-Policy, X-XSS-Protection i inne. Każdy nagłówek wymieniony w wynikach odgrywa określoną rolę w zabezpieczaniu i ochronie serwera WWW przed różnymi lukami w zabezpieczeniach sieciowych.
Wniosek
Konfigurując nagłówki zabezpieczeń w NGINX, znacznie zwiększasz bezpieczeństwo swoich aplikacji internetowych. Regularnie przeglądaj i aktualizuj nagłówki zabezpieczeń, aby dostosować się do zmieniających się zagrożeń bezpieczeństwa. Implementacja tych nagłówków pomaga chronić przed szeroką gamą ataków i zapewnia użytkownikom bezpieczniejsze przeglądanie. Zachowaj czujność i aktualizuj konfigurację NGINX, aby solidnie chronić swoje zasoby sieciowe.