perryk.nginx_modsec3_crs3
Rola Ansible do instalacji Nginx, kompilacji ModSecurity3 i instalacji zestawu reguł OWASP CRS v3
ModSecurity3 to potężny ogólnodostępny, wieloplatformowy zapora aplikacji webowych (WAF).
Dawniej: https://modsecurity.org/, teraz należy do https://owasp.org/
Działa w ścisłej współpracy z zestawem reguł znanym jako OWASP CRS. Należy zauważyć, że ta rola często odnosi się do CRS3, chociaż wersja 4 CRS została już wydana.
Dawniej: https://modsecurity.org/crs/, teraz https://owasp.org/www-project-modsecurity-core-rule-set/ także: https://coreruleset.org/ i https://github.com/coreruleset/coreruleset/
Oba te komponenty współpracują z serwerem internetowym, takim jak Apache czy Nginx, jednak ta rola obsługuje tylko Nginx.
Istnieje wiele bibliotek i pakietów, od których zależy ModSecurity3, a które zostaną zainstalowane za pomocą tej roli.
Ta rola zainstaluje również wszystkie kompilatory i inne narzędzia budowlane wymagane do kompilacji. Następnie usunie te narzędzia, jeśli nie były wcześniej zainstalowane.
Wsparcie dla Nginx jest głównie zapewniane przez zależną rolę ansible-role-nginx
od jdauphant.
https://github.com/jdauphant/ansible-role-nginx
Domyślnie ta rola zainstaluje pakiety Nginx z repozytoriów dostarczonych przez system operacyjny, zaleca się jednak, aby zmienić to na instalację z oficjalnego repozytorium Nginx.
Można to zrobić, ustawiając tę zmienną:
nginx_official_repo: true
Opcjonalnie, ta rola może zbudować moduły GeoIP i/lub MaxMind dla Nginx, jeśli chcesz korzystać z wyszukiwań geolokalizacyjnych. Jeśli chcesz używać MaxMind, prawdopodobnie będziesz potrzebować licencjonowanej wersji aktualnej bazy danych, dostępnej tutaj: https://www.maxmind.com/en/geoip-databases
Możesz włączyć te funkcje za pomocą następujących zmiennych:
nginx_modsec3_crs3_geoip_enabled: false
nginx_modsec3_crs3_maxmind_enabled: true
Uwaga: ta rola nie uruchomi ponownie kroków konfiguracyjnych i kompilacyjnych, jeśli ich wyniki istnieją, więc jeśli zmienisz opcje, które chcesz, takie jak różne moduły, być może będziesz musiał usunąć plik Makefile i usunąć wszystkie pliki .so z folderu objs/.
Wymagania
Przed uruchomieniem playbooka, który wywołuje tę rolę:
Zainstaluj wszystkie wymagane role Ansible z requirements.yml
. Zobacz tutaj.
ansible-galaxy install -r requirements.yml
Uwaga, ta rola wywoła pewne zadania z roli nginx, więc upewnij się, że jest zainstalowana w tym samym miejscu co ta rola i z konkretną nazwą "ansible-role-nginx".
Tj. w pliku requirements.yml dla twojego playbooka (nie pliku requirements.yml dla tej roli) musisz uwzględnić zarówno tę rolę, jak i rolę wymienioną powyżej w ten sposób:
- src: perryk.nginx_modsec3_crs3
- src: https://github.com/jdauphant/ansible-role-nginx
version: master
Zmienne roli
Przeglądaj pliki defaults/main.yml i vars/main.yml roli, aby zobaczyć, czy jest coś, co chciałbyś zmienić lub co musisz nadpisać, ustawiając w swoim playbooku.
Obecnie nie ma żadnych istotnych zmiennych ustawionych.
Jest jednak wiele zmiennych w roli nginx, a najlepsze opisy tych zmiennych można znaleźć w przykładach w pliku README.md.
Przykładowy Playbook
Przykładowy playbook wywołujący rolę dodającą i aktywującą ModSecurity dla domyślnej witryny 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
Licencja
MIT
Informacje o autorze
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