alivx.ansible_cis_nginx_hardening

Ansible CIS Nginx Hardening Build Status (jeszcze w fazie testów)

Na podstawie CIS NGINX Benchmark v1.0.0 - 28-02-2019

Nginx jest jednym z najczęściej używanych bezpłatnych i otwartych serwerów internetowych, stosowanym do hostowania stron o dużym ruchu. Znany jest ze swojej stabilności, doskonałej wydajności, niskiego zużycia zasobów i prostoty konfiguracji. Domyślne ustawienia są niebezpieczne, dlatego konieczne są dodatkowe zmiany, aby wzmocnić bezpieczeństwo serwera internetowego i zapewnić mu ochronę przed atakami i naruszeniami. Ta rola ustanawia bezpieczną konfigurację dla NGINX działającego na Ubuntu.

Informacje o ocenianiu

  • Status oceniania wskazuje, czy przestrzeganie danych zaleceń wpływa na wynik benchmarku. W tym benchmarku używane są następujące statusy oceniania:

Oceniane (wdrożone w tej roli)

  • Niedopełnienie zaleceń "Oceniane" zmniejszy ostateczny wynik benchmarku. Przestrzeganie zaleceń "Oceniane" zwiększy ostateczny wynik benchmarku.

Nie Oceniane (nie wdrożone w tej roli)

  • Niedopełnienie zaleceń "Nie Oceniane" nie zmniejszy ostatecznego wyniku benchmarku. Przestrzeganie zaleceń "Nie Oceniane" nie zwiększy ostatecznego wyniku benchmarku.

Główne korzyści z używania pakietów NGINX od twojego dostawcy to:

  • Łatwość instalacji
  • Rozwiązywanie zależności
  • Zwiększona skuteczność aktualizacji i poprawek bezpieczeństwa
  • Procedury pytań i odpowiedzi prowadzone przez twojego dostawcę

Wymagania

Ponieważ ta rola zainstaluje najnowszy pakiet Nginx z repozytorium OS, upewnij się, że uruchamiasz tę rolę na świeżym serwerze nginx, ponieważ zajmie się to procesem instalacji.

Może działać, jeśli już zainstalowałeś nginx na swoim serwerze.


Zmienne roli

Konfiguracja jest następująca

large_client_header_buffers: "2 1k"
client_max_body_size: "100K"
client_body_timeout: 10
client_header_timeout: 10
strict_transport_security_max_age: 15768000 #max-age z wartością 15768000 sekund (sześć miesięcy) lub dłużej
nginx_site_config_dir: /etc/nginx/sites-available/
ssl_ciphers: ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384

nginx_key: /etc/ssl/private/nginx-selfsigned.key
nginx_cert: /etc/ssl/certs/nginx-selfsigned.crt

backendserver: http://localhost:3000
backendserver_ssl: True

access_log: /var/log/nginx/alivx.com.access.log
error_log: /var/log/nginx/alivx.com.error.log warn

domainName: 172.16.186.129

Zależności


Przykładowy Playbook

Zaleca się dodanie przykładu, jak używać swojej roli (na przykład, z przekazanymi jako parametry zmiennymi):

---
- hosts: host1
  become: yes
  remote_user: root
  gather_facts: no
  roles:
    - { role: "ansible-cis-nginx-hardening" }

Benchmarki

  • 1 Wstępna konfiguracja
  • 1.1 Instalacja
  • 1.1.1 Upewnij się, że NGINX jest zainstalowany (Oceniane)
  • 1.2 Skonfiguruj aktualizacje oprogramowania
  • 2 Podstawowa konfiguracja
  • 2.1 Minimalizuj moduły NGINX
  • 2.1.2 Upewnij się, że moduł WebDAV HTTP nie jest zainstalowany (Oceniane)
  • 2.1.3 Upewnij się, że moduły z funkcjonalnością gzip są wyłączone (Oceniane)
  • 2.1.4 Upewnij się, że moduł autoindex jest wyłączony (Oceniane)
  • 2.2 Bezpieczeństwo konta
  • 2.2.2 Upewnij się, że konto serwisowe NGINX jest zablokowane (Oceniane)
  • 2.2.3 Upewnij się, że konto serwisowe NGINX ma nieważny shell (Oceniane)
  • 2.3 Uprawnienia i własność
  • 2.3.1 Upewnij się, że katalogi i pliki NGINX są własnością root (Oceniane)
  • 2.3.2 Upewnij się, że dostęp do katalogów i plików NGINX jest ograniczony (Oceniane)
  • 2.3.3 Upewnij się, że plik ID procesu NGINX (PID) jest zabezpieczony (Oceniane)
  • 2.4 Konfiguracja sieci
  • 2.4.1 Upewnij się, że NGINX nasłuchuje tylko na autoryzowanych portach (Nie Oceniane)
  • 2.4.3 Upewnij się, że keepalive_timeout jest ustawiony na 10 sekund lub mniej, ale nie 0 (Oceniane)
  • 2.4.4 Upewnij się, że send_timeout jest ustawiony na 10 sekund lub mniej, ale nie 0 (Oceniane)
  • 2.5 Ujawnienie informacji
  • 2.5.1 Upewnij się, że dyrektywa server_tokens jest ustawiona na off (Oceniane)
  • 2.5.2 Upewnij się, że domyślne strony błędów i index.html nie odnoszą się do NGINX (Oceniane)
  • 2.5.4 Upewnij się, że serwer proxy NGINX nie umożliwia ujawnienia informacji (Oceniane)
  • 3 Logowanie
  • 3.2 Upewnij się, że logowanie dostępu jest włączone (Oceniane)
  • 3.3 Upewnij się, że logowanie błędów jest włączone i ustawione na poziom logowania informacji (Oceniane)
  • 3.4 Upewnij się, że pliki logów są obracane (Oceniane)
  • 3.7 Upewnij się, że proxy przekazuje informacje o źródłowym adresie IP (Oceniane)
  • 4 Szyfrowanie
  • 4.1 Konfiguracja TLS / SSL
  • 4.1.1 Upewnij się, że HTTP jest przekierowywane na HTTPS (Oceniane)
  • 4.1.3 Upewnij się, że uprawnienia do klucza prywatnego są ograniczone (Oceniane)
  • 4.1.4 Upewnij się, że używane są tylko nowoczesne protokoły TLS (Oceniane)
  • 4.1.5 Wyłącz słabe szyfry (Oceniane)
  • 4.1.6 Upewnij się, że używane są niestandardowe parametry Diffie-Hellmana (Oceniane)
  • 4.1.7 Upewnij się, że stapling OCSP jest włączony (Oceniane)
  • 4.1.8 Upewnij się, że HTTP Strict Transport Security (HSTS) jest włączone (Oceniane)
  • 4.1.10 Upewnij się, że ruch serwera upstream jest uwierzytelniony za pomocą certyfikatu klienta (Oceniane)
  • 4.1.13 Upewnij się, że wznowienie sesji jest wyłączone, aby umożliwić idealne bezpieczeństwo (Oceniane)
  • 5 Filtracja i ograniczenia zapytań
  • 5.1 Kontrola dostępu
  • 5.2 Ograniczenia zapytań
  • 5.2.1 Upewnij się, że wartości czasu oczekiwania dla odczytu nagłówka i ciała od klienta są ustawione prawidłowo (Oceniane)
  • 5.2.2 Upewnij się, że maksymalny rozmiar ciała zapytania jest ustawiony prawidłowo (Oceniane)
  • 5.2.3 Upewnij się, że maksymalny rozmiar bufora dla URI jest zdefiniowany (Oceniane)
  • 5.3 Bezpieczeństwo przeglądarki
  • 5.3.1 Upewnij się, że nagłówek X-Frame-Options jest skonfigurowany i włączony (Oceniane)
  • 5.3.2 Upewnij się, że nagłówek X-Content-Type-Options jest skonfigurowany i włączony (Oceniane)
  • 5.3.3 Upewnij się, że nagłówek X-XSS-Protection jest włączony i skonfigurowany poprawnie (Oceniane)

Licencja

GNU GENERAL PUBLIC LICENSE

Informacje o autorze

Rola została pierwotnie opracowana przez Ali Saleh Baker.

Przed wniesieniem wkładu do tego repozytorium, proszę najpierw omówić zmiany, które chcesz wprowadzić, za pośrednictwem zgłoszenia na GitHubie, e-maila lub innych kanałów komunikacji ze mną :)

Zainstaluj
ansible-galaxy install alivx.ansible_cis_nginx_hardening
Licencja
agpl-3.0
Pobrania
132
Właściciel
Everything