dev-sec.nginx-hardening
nginx-hardening (Rol de Ansible)
Atención: Este rol ha sido migrado a nuestra colección de endurecimiento:
Requisitos
- Ansible >= 2.5
Variables del Rol
- [nginx_client_body_buffer_size][]
- Predeterminado:
1k
- Descripción: Establece el tamaño del búfer para leer el cuerpo de la solicitud del cliente. Si el cuerpo de la solicitud es más grande que el búfer, todo el cuerpo o solo una parte se escribe en un archivo temporal.
- Predeterminado:
- nginx_remove_default_site
- Predeterminado:
true
- Descripción: Desactiva el sitio predeterminado. Configúralo en falso para habilitar el sitio predeterminado en nginx.
- Predeterminado:
- [nginx_client_max_body_size][]
- Predeterminado:
1k
- Descripción: Establece el tamaño máximo permitido del cuerpo de la solicitud del cliente, especificado en el campo de encabezado "Content-Length". Si el tamaño en una solicitud excede el valor configurado, se devuelve el error 413 (Solicitud Entidad Muy Grande) al cliente.
- Predeterminado:
- [nginx_keepalive_timeout][]
- Predeterminado:
5 5
- Descripción: El primer parámetro establece un tiempo de espera durante el cual una conexión de cliente keep-alive se mantendrá abierta del lado del servidor. El valor cero desactiva las conexiones de cliente keep-alive. El segundo parámetro opcional establece un valor en el campo de encabezado de respuesta "Keep-Alive: timeout=time".
- Predeterminado:
- [nginx_server_tokens][]
- Predeterminado:
off
- Descripción: Desactiva la emisión de la versión de nginx en los mensajes de error y en el campo de encabezado de respuesta "Server". Configúralo en on para habilitar la versión de nginx en los mensajes de error y en el encabezado "Server".
- Predeterminado:
- [nginx_client_header_buffer_size][]
- Predeterminado:
1k
- Descripción: Establece el tamaño del búfer para leer el encabezado de la solicitud del cliente. Para la mayoría de las solicitudes, un búfer de 1K bytes es suficiente.
- Predeterminado:
- [nginx_large_client_header_buffers][]
- Predeterminado:
2 1k
- Descripción: Establece el número máximo y el tamaño de los búferes utilizados para leer encabezados de solicitudes grandes del cliente.
- Predeterminado:
- [nginx_client_body_timeout][]
- Predeterminado:
10
- Descripción: Define un tiempo de espera para leer el cuerpo de la solicitud del cliente.
- Predeterminado:
- [nginx_client_header_timeout][]
- Predeterminado:
10
- Descripción: Define un tiempo de espera para leer el encabezado de la solicitud del cliente.
- Predeterminado:
- [nginx_send_timeout][]
- Predeterminado:
10
- Descripción: Establece un tiempo de espera para transmitir una respuesta al cliente.
- Predeterminado:
- [nginx_limit_conn_zone][]
- Predeterminado:
$binary_remote_addr zone=default:10m
- Descripción: Establece parámetros para una zona de memoria compartida que mantendrá estados para varias claves.
- Predeterminado:
- [nginx_limit_conn][]
- Predeterminado:
default 5
- Descripción: Establece la zona de memoria compartida y el número máximo de conexiones permitidas para un valor de clave dado.
- Predeterminado:
- [nginx_add_header][]
- Predeterminado:
[ "X-Frame-Options SAMEORIGIN", "X-Content-Type-Options nosniff", "X-XSS-Protection \"1; mode=block\"" ]
- Descripción: Agrega el campo especificado a un encabezado de respuesta siempre que el código de respuesta sea 200, 201, 204, 206, 301, 302, 303, 304 o 307.
- Predeterminado:
- [nginx_ssl_protocols][]
- Predeterminado:
TLSv1.2
- Descripción: Especifica el protocolo SSL que se debe usar.
- Predeterminado:
- [nginx_ssl_ciphers][]
- Predeterminado: ver defaults.yml
- Descripción: Especifica los cifrados TLS que se deben usar.
- [nginx_ssl_prefer_server_ciphers][]
- Predeterminado:
on
- Descripción: Especifica que se deben preferir los cifrados del servidor sobre los cifrados del cliente al usar los protocolos TLS. Configúralo en falso para deshabilitarlo.
- Predeterminado:
- [nginx_dh_size][]
- Predeterminado:
2048
- Descripción: Especifica la longitud de los parámetros DH para los cifrados EDH.
- Predeterminado:
Instalación
Instala el rol con ansible-galaxy:
ansible-galaxy install dev-sec.nginx-hardening
Ejemplo de Playbook
- hosts: localhost
roles:
- dev-sec.nginx-hardening
Pruebas Locales
La forma preferida de probar localmente el rol es usar Docker. Debes instalar Docker en tu sistema. Consulta Comenzar para un paquete de Docker adecuado para tu sistema.
También puedes usar Vagrant y VirtualBox o VMWare para realizar pruebas localmente. Debes instalar VirtualBox y Vagrant en tu sistema. Consulta Descargas de Vagrant para un paquete de Vagrant adecuado para tu sistema. Para todas nuestras pruebas usamos test-kitchen
. Si no estás familiarizado con test-kitchen
, consulta su guía.
A continuación, instala test-kitchen:
# Instalar dependencias
gem install bundler
bundle install
Pruebas con Docker
# prueba rápida en una máquina
bundle exec kitchen test default-ubuntu-1204
# prueba en todas las máquinas
bundle exec kitchen test
# para desarrollo
bundle exec kitchen create default-ubuntu-1204
bundle exec kitchen converge default-ubuntu-1204
Pruebas con VirtualBox
# prueba rápida en una máquina
KITCHEN_YAML=".kitchen.vagrant.yml" bundle exec kitchen test nginx-ansible-19-ubuntu-1404
# prueba en todas las máquinas
KITCHEN_YAML=".kitchen.vagrant.yml" bundle exec kitchen test
# para desarrollo
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
Para más información, consulta test-kitchen.
Contribuir
Consulta las pautas para colaboradores.
Licencia y Autor
- Autor:: Sebastian Gumprich
Licenciado bajo la Licencia Apache, Versión 2.0 (la "Licencia"); no puedes usar este archivo excepto en cumplimiento con la Licencia. Puedes obtener una copia de la Licencia en
http://www.apache.org/licenses/LICENSE-2.0
A menos que lo exija la ley aplicable o se acuerde por escrito, el software distribuido bajo la Licencia se distribuye en una base "TAL CUAL", SIN GARANTÍAS O CONDICIONES DE NINGÚN TIPO, ya sean expresas o implícitas. Consulta la Licencia para obtener información específica sobre los permisos y limitaciones bajo la Licencia.
This Ansible role provides secure nginx configurations. http://dev-sec.io/
ansible-galaxy install dev-sec.nginx-hardening