alivx.ansible_cis_nginx_hardening

Endurecimiento de Nginx CIS con Ansible Estado de Construcción (todavía en fase de prueba)

Basado en el Estándar CIS NGINX v1.0.0 - 28-02-2019

Nginx es, sin duda, uno de los servidores web de código abierto más utilizados para alojar sitios web de alto tráfico. Es conocido por su estabilidad, excelente rendimiento, bajo consumo de recursos y configuración sencilla. Las configuraciones predeterminadas no son seguras y se requieren ajustes adicionales para fortalecer el servidor web y brindarle la seguridad necesaria para prevenir ataques y brechas. Así que este rol establece una configuración segura para NGINX que se ejecuta en Ubuntu.

Información de Puntuación

  • Un estado de puntuación indica si el cumplimiento de la recomendación dada afecta la puntuación de referencia evaluada. Los siguientes estados de puntuación se utilizan en este estándar:

Puntada (implementada en este rol)

  • No cumplir con las recomendaciones "Puntadas" disminuirá la puntuación final. Cumplir con las recomendaciones "Puntadas" aumentará la puntuación final.

No Puntada (no implementada en este rol)

  • No cumplir con las recomendaciones "No Puntadas" no disminuirá la puntuación final. Cumplir con las recomendaciones "No Puntadas" no aumentará la puntuación final.

Los principales beneficios de usar los paquetes de NGINX de su proveedor son:

  • Facilidad de instalación
  • Resolución de dependencias
  • Mayor efectividad en el mantenimiento y parches de seguridad
  • Procedimientos de preguntas y respuestas realizados por su proveedor

Requisitos

Dado que este rol instalará el último paquete de Nginx desde el repositorio del sistema operativo, asegúrese de ejecutar este rol en un servidor Nginx limpio, esto manejará el proceso de instalación.

Puede funcionar si ya ha instalado nginx en su servidor.


Variables del Rol

configuración como la siguiente:

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 #directiva max-age con 15768000 segundos (seis meses) o más
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

Dependencias


Ejemplo de Playbook

Incluir un ejemplo de cómo usar su rol (por ejemplo, con variables pasadas como parámetros) es siempre bueno para los usuarios también:

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

Estándares

  • 1 Configuración Inicial
  • 1.1 Instalación
  • 1.1.1 Asegúrese de que NGINX esté instalado (Puntado)
  • 1.2 Configurar Actualizaciones de Software
  • 2 Configuración Básica
  • 2.1 Minimizar Módulos de NGINX
  • 2.1.2 Asegúrese de que el módulo HTTP WebDAV no esté instalado (Puntado)
  • 2.1.3 Asegúrese de que los módulos con funcionalidad gzip estén desactivados (Puntado)
  • 2.1.4 Asegúrese de que el módulo autoindex esté desactivado (Puntado)
  • 2.2 Seguridad de la Cuenta
  • 2.2.2 Asegúrese de que la cuenta de servicio de NGINX esté bloqueada (Puntado)
  • 2.2.3 Asegúrese de que la cuenta de servicio de NGINX tenga un shell no válido (Puntado)
  • 2.3 Permisos y Propiedad
  • 2.3.1 Asegúrese de que las carpetas y archivos de NGINX sean propiedad de root (Puntado)
  • 2.3.2 Asegúrese de que el acceso a las carpetas y archivos de NGINX esté restringido (Puntado)
  • 2.3.3 Asegúrese de que el archivo de identificación del proceso de NGINX (PID) esté asegurado (Puntado)
  • 2.4 Configuración de Red
  • 2.4.1 Asegúrese de que NGINX solo escuche conexiones de red en puertos autorizados (NoPuntado)
  • 2.4.3 Asegúrese de que keepalive_timeout sea de 10 segundos o menos, pero no 0 (Puntado)
  • 2.4.4 Asegúrese de que send_timeout esté configurado a 10 segundos o menos, pero no 0 (Puntado)
  • 2.5 Divulgación de Información
  • 2.5.1 Asegúrese de que la directiva server_tokens esté configurada en off (Puntado)
  • 2.5.2 Asegúrese de que las páginas de error e index.html por defecto no hagan referencia a NGINX (Puntado)
  • 2.5.4 Asegúrese de que el proxy inverso de NGINX no habilite la divulgación de información (Puntado)
  • 3 Registro
  • 3.2 Asegúrese de que el registro de acceso esté habilitado (Puntado)
  • 3.3 Asegúrese de que el registro de errores esté habilitado y configurado al nivel de registro de información (Puntado)
  • 3.4 Asegúrese de que los archivos de registro se roten (Puntado)
  • 3.7 Asegúrese de que los proxies pasen información de IP de origen (Puntado)
  • 4 Encriptación
  • 4.1 Configuración de TLS / SSL
  • 4.1.1 Asegúrese de que HTTP se redirija a HTTPS (Puntado)
  • 4.1.3 Asegúrese de que los permisos de la clave privada estén restringidos (Puntado)
  • 4.1.4 Asegúrese de que solo se usen protocolos TLS modernos (Puntado)
  • 4.1.5 Desactive los cifrados débiles (Puntado)
  • 4.1.6 Asegúrese de que se utilicen parámetros de Diffie-Hellman personalizados (Puntado)
  • 4.1.7 Asegúrese de que se habilite el protocolo de estado de certificado en línea (OCSP) (Puntado)
  • 4.1.8 Asegúrese de que HTTP Strict Transport Security (HSTS) esté habilitado (Puntado)
  • 4.1.10 Asegúrese de que el tráfico del servidor ascendente esté autenticado con un certificado de cliente (Puntado)
  • 4.1.13 Asegúrese de que la reanudación de sesión esté desactivada para habilitar una seguridad perfecta hacia adelante (Puntado)
  • 5 Filtrado de Solicitudes y Restricciones
  • 5.1 Control de Acceso
  • 5.2 Límites de Solicitud
  • 5.2.1 Asegúrese de que los valores de tiempo de espera para leer el encabezado y el cuerpo del cliente estén configurados correctamente (Puntado)
  • 5.2.2 Asegúrese de que el tamaño máximo del cuerpo de solicitud esté configurado correctamente (Puntado)
  • 5.2.3 Asegúrese de que el tamaño máximo del búfer para URIs esté definido (Puntado)
  • 5.3 Seguridad del Navegador
  • 5.3.1 Asegúrese de que el encabezado X-Frame-Options esté configurado y habilitado (Puntado)
  • 5.3.2 Asegúrese de que el encabezado X-Content-Type-Options esté configurado y habilitado (Puntado)
  • 5.3.3 Asegúrese de que el encabezado X-XSS-Protection esté habilitado y configurado correctamente (Puntado)

Licencia

GNU GENERAL PUBLIC LICENSE

Información del Autor

El rol fue desarrollado originalmente por Ali Saleh Baker.

Al contribuir a este repositorio, por favor discuta primero el cambio que desea hacer a través de un problema en GitHub, correo electrónico, o por otros canales conmigo :)

Instalar
ansible-galaxy install alivx.ansible_cis_nginx_hardening
Licencia
agpl-3.0
Descargas
132
Propietario
Everything