dev-sec.nginx-hardening
Zabezpieczanie Nginx (Rola Ansible)
Uwaga: Ta rola została przeniesiona do naszej kolekcji zabezpieczeń:
Wymagania
- Ansible >= 2.5
Zmienne roli
- nginx_client_body_buffer_size
- Domyślnie:
1k
- Opis: Ustala rozmiar bufora do odczytu treści żądania klienta. Jeśli treść żądania jest większa niż bufor, cała treść lub jej część jest zapisywana w pliku tymczasowym.
- Domyślnie:
- nginx_remove_default_site
- Domyślnie:
true
- Opis: Wyłącza domyślną stronę. Ustaw na false, aby włączyć domyślną stronę w nginx.
- Domyślnie:
- nginx_client_max_body_size
- Domyślnie:
1k
- Opis: Ustala maksymalny dozwolony rozmiar treści żądania klienta, określony w nagłówku "Content-Length". Jeśli rozmiar w żądaniu przekracza skonfigurowaną wartość, zwracany jest błąd 413 (Request Entity Too Large).
- Domyślnie:
- nginx_keepalive_timeout
- Domyślnie:
5 5
- Opis: Pierwszy parametr ustala czas, przez jaki połączenie keep-alive klienta pozostaje otwarte po stronie serwera. Wartość zero wyłącza połączenia keep-alive. Opcjonalny drugi parametr ustawia wartość w nagłówku odpowiedzi "Keep-Alive: timeout=time".
- Domyślnie:
- nginx_server_tokens
- Domyślnie:
off
- Opis: Wyłącza wyświetlanie wersji nginx w komunikatach o błędach i w nagłówku odpowiedzi "Server". Ustaw na on, aby włączyć wersję nginx w komunikatach o błędach i nagłówku "Server".
- Domyślnie:
- nginx_client_header_buffer_size
- Domyślnie:
1k
- Opis: Ustala rozmiar bufora do odczytu nagłówka żądania klienta. Dla większości żądań bufor o rozmiarze 1K bajtów jest wystarczający.
- Domyślnie:
- nginx_large_client_header_buffers
- Domyślnie:
2 1k
- Opis: Ustala maksymalną liczbę i rozmiar buforów używanych do odczytu dużych nagłówków żądania klienta.
- Domyślnie:
- nginx_client_body_timeout
- Domyślnie:
10
- Opis: Ustala czas oczekiwania na odczyt treści żądania klienta.
- Domyślnie:
- nginx_client_header_timeout
- Domyślnie:
10
- Opis: Ustala czas oczekiwania na odczyt nagłówka żądania klienta.
- Domyślnie:
- nginx_send_timeout
- Domyślnie:
10
- Opis: Ustala czas oczekiwania na przesłanie odpowiedzi do klienta.
- Domyślnie:
- nginx_limit_conn_zone
- Domyślnie:
$binary_remote_addr zone=default:10m
- Opis: Ustala parametry dla wspólnej strefy pamięci, która będzie przechowywać stany dla różnych kluczy.
- Domyślnie:
- nginx_limit_conn
- Domyślnie:
default 5
- Opis: Ustala wspólną strefę pamięci oraz maksymalną dozwoloną liczbę połączeń dla danego klucza.
- Domyślnie:
- nginx_add_header
- Domyślnie:
[ "X-Frame-Options SAMEORIGIN", "X-Content-Type-Options nosniff", "X-XSS-Protection \"1; mode=block\"" ]
- Opis: Dodaje wskazany nagłówek do odpowiedzi, pod warunkiem, że kod odpowiedzi wynosi 200, 201, 204, 206, 301, 302, 303, 304 lub 307.
- Domyślnie:
- nginx_ssl_protocols
- Domyślnie:
TLSv1.2
- Opis: Określa, który protokół SSL powinien być używany.
- Domyślnie:
- nginx_ssl_ciphers
- Domyślnie: zobacz defaults.yml
- Opis: Określa, które szyfry TLS powinny być używane.
- nginx_ssl_prefer_server_ciphers
- Domyślnie:
on
- Opis: Określa, że szyfry serwera powinny mieć wyższy priorytet niż szyfry klienta podczas korzystania z protokołów TLS. Ustaw na false, aby to wyłączyć.
- Domyślnie:
- nginx_dh_size
- Domyślnie:
2048
- Opis: Określa długość parametrów DH dla szyfrów EDH.
- Domyślnie:
Instalacja
Zainstaluj rolę za pomocą ansible-galaxy:
ansible-galaxy install dev-sec.nginx-hardening
Przykładowy Playbook
- hosts: localhost
roles:
- dev-sec.nginx-hardening
Testowanie lokalne
Preferowanym sposobem lokalnego testowania roli jest użycie Dockera. Musisz zainstalować Dockera na swoim systemie. Zobacz Rozpoczęcie pracy po odpowiedni pakiet Dockera dla swojego systemu.
Możesz także użyć Vagranta oraz Virtualbox lub VMWare, aby przeprowadzić testy lokalnie. Musisz zainstalować Virtualbox i Vagranta na swoim systemie. Zobacz Pobieranie Vagranta po odpowiedni pakiet vagranta dla swojego systemu. Do wszystkich naszych testów używamy test-kitchen
. Jeśli nie znasz test-kitchen
, zapoznaj się z ich przewodnikiem.
Następnie zainstaluj test-kitchen:
# Instalacja zależności
gem install bundler
bundle install
Testowanie z Dockerem
# szybki test na jednej maszynie
bundle exec kitchen test default-ubuntu-1204
# test na wszystkich maszynach
bundle exec kitchen test
# do rozwoju
bundle exec kitchen create default-ubuntu-1204
bundle exec kitchen converge default-ubuntu-1204
Testowanie z Virtualbox
# szybki test na jednej maszynie
KITCHEN_YAML=".kitchen.vagrant.yml" bundle exec kitchen test nginx-ansible-19-ubuntu-1404
# test na wszystkich maszynach
KITCHEN_YAML=".kitchen.vagrant.yml" bundle exec kitchen test
# do rozwoju
KITCHEN_YAML=".kitchen.vagrant.yml" bundle exec kitchen create nginx-ansible-19-ubuntu-1404
KITCHEN_YAML=".kitchen.vagrant.yml" bundle exec kitchen converge nginx-ansible-19-ubuntu-1404
Aby uzyskać więcej informacji, zobacz test-kitchen
Współpraca
Zobacz wytyczne dla współpracowników.
Licencja i autor
- Autor:: Sebastian Gumprich
Licencjonowane na podstawie Apache License, Version 2.0 (licencji); nie możesz używać tej aplikacji z wyjątkiem przestrzegania Licencji. Możesz uzyskać kopię Licencji pod adresem
http://www.apache.org/licenses/LICENSE-2.0
O ile nie jest wymagane przez odpowiednie prawo lub uzgodnione na piśmie, oprogramowanie dystrybuowane w ramach Licencji jest sprzedaż `` AS IS '', BEZ GWARANCJI ANI WARUNKÓW JAKIEGOKOLWIEK, wyraźnych ani domniemanych. Zobacz Licencję w celu uzyskania szczegółowych informacji o prawach i ograniczeniach wynikających z Licencji.
This Ansible role provides secure nginx configurations. http://dev-sec.io/
ansible-galaxy install dev-sec.nginx-hardening