nginx_modsec3_crs3
Ansible роль для установки Nginx, компиляции ModSecurity3 и установки набора правил OWASP CRS v3
ModSecurity3 — мощный межсетевой экран (WAF) для веб-приложений с открытым исходным кодом и кроссплатформенной поддержкой.
Ранее: https://modsecurity.org/, теперь принадлежит https://owasp.org/
Он работает в связке с набором правил под названием OWASP CRS. Обратите внимание, что эта роль часто ссылается на CRS3, однако версия CRS 4 уже выпущена.
Ранее: https://modsecurity.org/crs/, теперь https://owasp.org/www-project-modsecurity-core-rule-set/ Также: https://coreruleset.org/ и https://github.com/coreruleset/coreruleset/
Кроме того, оба этих компонента работают вместе с веб-сервером, таким как Apache или Nginx, однако эта роль поддерживает только Nginx.
Существует множество библиотек и пакетов, от которых зависит ModSecurity3, и они будут установлены с помощью этой роли.
Эта роль также установит все компиляторы и другие инструменты сборки, необходимые для компиляции. Затем она удалит эти инструменты, если они ранее не были установлены.
Поддержка Nginx в основном предоставляется зависимой ролью ansible-role-nginx
от jdauphant.
https://github.com/jdauphant/ansible-role-nginx
По умолчанию эта роль установит пакеты Nginx из репозиториев, предоставленных ОС, рекомендуется изменить это на установку из официального репозитория Nginx.
Это можно сделать, установив эту переменную:
nginx_official_repo: true
При желании эта роль может собрать модули GeoIP и/или MaxMind для Nginx, если вам нужны геолокационные запросы. Вам, вероятно, понадобится лицензированная копия актуальной базы данных, которую можно найти здесь, если вы хотите использовать MaxMind: https://www.maxmind.com/en/geoip-databases
Вы можете включить эти модули, установив следующие переменные:
nginx_modsec3_crs3_geoip_enabled: false
nginx_modsec3_crs3_maxmind_enabled: true
Примечание: эта роль не повторит шаги конфигурации и сборки, если их вывод уже существует, поэтому, если вы измените параметры, такие как различные модули, возможно, вам придется удалить Makefile и удалить любые .so файлы из папки objs/.
Требования
Перед запуском плейбука, который вызывает эту роль:
Установите необходимые Ansible роли из requirements.yml
. Просмотр здесь.
ansible-galaxy install -r requirements.yml
Примечание: в особенности эта роль будет вызывать определенные задачи из роли nginx, поэтому убедитесь, что у вас установлена та же роль в том же месте, что и эта роль, с конкретным именем "ansible-role-nginx".
То есть в файле requirements.yml для вашего плейбука проекта (а не в requirements.yml для этой роли) вам нужно будет включить как эту роль, так и упомянутую выше роль следующим образом:
- src: perryk.nginx_modsec3_crs3
- src: https://github.com/jdauphant/ansible-role-nginx
version: master
Переменные роли
Просмотрите файлы роли defaults/main.yml и vars/main.yml, чтобы увидеть, что вы хотели бы изменить или переопределить, установив в вашем плейбуке.
В данный момент нет значимых переменных, которые нужно установить.
Тем не менее, в роли nginx есть много переменных, возможно, лучшее объяснение этих переменных — это все примеры в файле README.md.
Пример плейбука
Пример плейбука, вызывающего роль, добавляющую и включающую ModSecurity для сайта по умолчанию в Nginx.
- 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
Лицензия
MIT
Информация об авторе
Перри Коллморген - 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/ansible-role-nginx-modsec3-crs3