perryk.nginx_modsec3_crs3
Rol de Ansible para instalar Nginx, compilar ModSecurity3 e instalar el conjunto de reglas OWASP CRS v3
ModSecurity3 es un potente firewall de aplicaciones web (WAF) de código abierto y multiplataforma.
Antes: https://modsecurity.org/, ahora es propiedad de https://owasp.org/
Funciona junto con un conjunto de reglas conocido como OWASP CRS. Nota que este rol a menudo se refiere a CRS3, sin embargo, ahora se ha lanzado la versión 4 de CRS.
Antes: https://modsecurity.org/crs/, ahora https://owasp.org/www-project-modsecurity-core-rule-set/ También: https://coreruleset.org/ y https://github.com/coreruleset/coreruleset/
Además, ambos se complementan con un servidor web, ya sea Apache o Nginx, pero este rol solo soporta Nginx.
Hay varias bibliotecas y paquetes de los que depende ModSecurity3, y se instalarán a través de este rol.
Este rol también instalará cualquier compilador y otras herramientas de construcción necesarias para la compilación. Luego, eliminará estas herramientas si no estaban instaladas previamente.
El soporte para Nginx es proporcionado principalmente por el rol dependiente ansible-role-nginx
de jdauphant.
https://github.com/jdauphant/ansible-role-nginx
Por defecto, este rol instalará los paquetes de Nginx desde los repositorios proporcionados por el sistema operativo. Se recomienda cambiar esto para instalar desde el repositorio oficial de Nginx en su lugar.
Esto se puede hacer configurando esta variable:
nginx_official_repo: true
Opcionalmente, este rol puede compilar los módulos GeoIP y/o MaxMind de Nginx si deseas hacer búsquedas de geolocalización. Es probable que necesites una copia con licencia de una base de datos actualizada desde aquí si quieres usar MaxMind: https://www.maxmind.com/en/geoip-databases
Puedes habilitar estas opciones desde las siguientes variables:
nginx_modsec3_crs3_geoip_enabled: false
nginx_modsec3_crs3_maxmind_enabled: true
Nota: este rol no volverá a ejecutar los pasos de configuración y compilación si ya existen los archivos de salida. Así que si cambias las opciones que deseas, como los diferentes módulos mencionados, puede que necesites eliminar el Makefile y quitar cualquier archivo .so de la carpeta objs/.
Requisitos
Antes de ejecutar un playbook que llama a este rol:
Instala cualquier rol requerido de Ansible desde requirements.yml
. Ver aquí.
ansible-galaxy install -r requirements.yml
Nota: en particular, este rol llamará a ciertas tareas del rol de nginx, así que asegúrate de tenerlo instalado en la misma ubicación que este rol y con el nombre específico de "ansible-role-nginx".
Es decir, en el archivo requirements.yml de tu playbook de proyecto (no en el archivo requirements.yml de este rol), necesitarás incluir tanto este rol como el rol mencionado anteriormente de la siguiente manera:
- src: perryk.nginx_modsec3_crs3
- src: https://github.com/jdauphant/ansible-role-nginx
version: master
Variables del Rol
Explora los archivos defaults/main.yml y vars/main.yml del rol para ver si hay algo que te gustaría cambiar o que necesitas sobrescribir en tu playbook.
Actualmente no hay variables destacadas configuradas.
Sin embargo, hay muchas variables en el rol de nginx, quizás la mejor explicación de estas se encuentra en todos los ejemplos en el archivo README.md del rol.
Ejemplo de Playbook
Ejemplo de playbook que llama al rol, agregando y habilitando ModSecurity para el sitio Nginx por defecto.
- hosts: servers
vars:
nginx_pkgs:
- nginx
nginx_install_epel_repo: false
nginx_official_repo: true
nginx_official_repo_mainline: true
nginx_module_configs:
- ngx_http_modsecurity_module
- ngx_http_geoip2_module
nginx_modules_disable:
- ngx_http_geoip_module
nginx_sites:
default:
- listen 80
- server_name _
- "modsecurity on"
- "modsecurity_rules_file /etc/nginx/modsec/main.conf"
- root "/usr/share/nginx/html"
- index index.html
roles:
- perryk.nginx-modsec3-crs3
Licencia
MIT
Información del Autor
Perry Kollmorgen - https://github.com/perryk
Installs Nginx, Compiles ModSecurity3, and downloads the OWASP CRS ruleset (https://nginx.com, https://owasp.org/, https://coreruleset.org/)
ansible-galaxy install perryk.nginx_modsec3_crs3