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.
  • nginx_remove_default_site
    • Domyślnie: true
    • Opis: Wyłącza domyślną stronę. Ustaw na false, aby włączyć domyślną stronę w nginx.
  • 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).
  • 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".
  • 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".
  • 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.
  • 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.
  • nginx_client_body_timeout
    • Domyślnie: 10
    • Opis: Ustala czas oczekiwania na odczyt treści żądania klienta.
  • nginx_client_header_timeout
    • Domyślnie: 10
    • Opis: Ustala czas oczekiwania na odczyt nagłówka żądania klienta.
  • nginx_send_timeout
    • Domyślnie: 10
    • Opis: Ustala czas oczekiwania na przesłanie odpowiedzi do klienta.
  • 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.
  • nginx_limit_conn
    • Domyślnie: default 5
    • Opis: Ustala wspólną strefę pamięci oraz maksymalną dozwoloną liczbę połączeń dla danego klucza.
  • 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.
  • nginx_ssl_protocols
    • Domyślnie: TLSv1.2
    • Opis: Określa, który protokół SSL powinien być używany.
  • 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ć.
  • nginx_dh_size
    • Domyślnie: 2048
    • Opis: Określa długość parametrów DH dla szyfrów EDH.

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.

O projekcie

This Ansible role provides secure nginx configurations. http://dev-sec.io/

Zainstaluj
ansible-galaxy install dev-sec.nginx-hardening
Licencja
Unknown
Pobrania
40.8k
Właściciel
Security + DevOps: Automatic Server Hardening