
Un playbook de Ansible que automatiza el script detector de Log4j de Red Hat para escanear hosts Linux en busca de la vulnerabilidad CVE-2021-44228 (Log4Shell) con verificación GPG.
Playbook de Ansible para verificar hosts Linux de destino usando el script detector de Log4j oficial de Red Hat para Log4Shell (CVE-2021-44228).
Detector de Red Hat versión 1.3, 2022-01-10.
El resultado se guarda en un archivo txt dentro de detector_dir (por defecto: /opt/cve-2021-44228/).
Código también disponible como rol de Ansible Galaxy lucab85.ansible_role_log4shell```bash ansible-galaxy install lucab85.ansible_role_log4shell
## Cómo ejecutar el Ansible Playbook
Las variables predeterminadas escanean toda la ruta `/var/` en busca de archivos afectados.
Puedes personalizar el archivo `vars.yml` para más opciones.```bash
ansible-playbook log4j-cve-2021-44228.yml
Ninguna.
ansible 2.9+
valores por defecto:```yaml rh_bullettin: >- https://access.redhat.com/security/vulnerabilities/RHSB-2021-009 intro: | Ansible Playbook tested with detector version 1.3 released 2022-01-10. If a 404 error occur please adjust the URL with the latest version available for detector URL. Please refer to the Red Hat Security Bullettin for up-to-date information and adjust the playbook variables accordingly. {{ rh_bullettin }}. vulnerable: | System MIGHT be vulnerable to log4j (CVE-2021-44228) not_vulnerable: | System IS NOT vulnerable to log4j (CVE-2021-44228) report_txt: "/report/vuln_log4j2_path_*.txt" sh_detector: "cve-2021-44228--2022-01-10-1242.sh" sh_signature: "cve-2021-44228--2022-01-10-1242.sh.asc" detector_baseurl: "https://access.redhat.com/sites/default/files/" force_download: false detector_path: "/var/" detector_dir: "/opt/cve-2021-44228/" detector_run_dir: "tmp" detector_options: '-n -d --no-progress --scan {{ detector_path }}' gpg_keyid: "7514F77D8366B0D9" gpg_server: "pgp.mit.edu" gpg_public_key: 'gpg --keyserver {{ gpg_server }} --recv {{ gpg_keyid }}' clean_run_before: true delete_after: false verify_gpg: true
- `rh_bullettin`: enlace del RHSB (por defecto: [https://access.redhat.com/security/vulnerabilities/RHSB-2021-009](https://access.redhat.com/security/vulnerabilities/RHSB-2021-009))
- `intro`: texto de introducción
- `vulnerable`: texto vulnerable (visible solo en la ejecución con nivel de depuración 2 `-vv`)
- `not_vulnerable`: texto NO vulnerable (visible solo en la ejecución con nivel de depuración 2 `-vv`)
- `report_txt`: ruta del informe a imprimir (por defecto: `/report/vuln_log4j2_path_*.txt`)
- `sh_detector`: el nombre de archivo del script bash del detector
- `sh_signature`: el nombre de archivo de la firma GPG del detector
- `detector_baseurl`: la URL base para descargar los archivos anteriores
- `force_download`: forzar la descarga del código en cada ejecución (por defecto: `false`)
- `detector_path`: la ruta a inspeccionar (por defecto `/var/`)
- `detector_dir`: la ruta de descarga del detector (por defecto `/opt/cve-2021-44228/`)
- `detector_run_dir`: el subdirectorio a crear antes de la ejecución (por defecto `tmp`)
- `detector_options`: las opciones de línea de comandos para el script del detector (por defecto `-n -d --no-progress --scan {{ detector_path }}`)
- `gpg_keyid`: la clave pública GPG a descargar para la verificación (por defecto Red Hat Product Security `7514F77D8366B0D9`)
- `gpg_server`: el servidor de claves GPG (por defecto: `pgp.mit.edu`)
- `gpg_public_key`: comando para la verificación de GPG (por defecto: `gpg --keyserver {{ gpg_server }} --recv {{ gpg_keyid }}`)
- `clean_run_before`: eliminar el directorio de ejecución y recrearlo antes de la ejecución - el detector requiere un directorio vacío (por defecto `true`)
- `delete_after`: eliminar el _detector_dir_ después de la ejecución (por defecto `false`)
- `verify_gpg`: realizar la descarga y verificación de la firma GPG (por defecto: `true`)
## Ejecución de demostración
La salida completa de la ejecución del playbook contra el host objetivo de demostración RHEL8:```bash
$ ansible-playbook -i test/inventory log4j-cve-2021-44228.yml -vv
ansible-playbook [core 2.12.1]
config file = None
configured module search path = ['/Users/lberton/.ansible/plugins/modules', '/usr/share/ansible/plugins/modules']
ansible python module location = /usr/local/Cellar/ansible/5.1.0/libexec/lib/python3.10/site-packages/ansible
ansible collection location = /Users/lberton/.ansible/collections:/usr/share/ansible/collections
executable location = /usr/local/bin/ansible-playbook
python version = 3.10.1 (main, Dec 6 2021, 23:20:29) [Clang 13.0.0 (clang-1300.0.29.3)]
jinja version = 3.0.3
libyaml = True
No config file found; using defaults
Skipping callback 'default', as we already have a stdout callback.
Skipping callback 'minimal', as we already have a stdout callback.
Skipping callback 'oneline', as we already have a stdout callback.
PLAYBOOK: log4j-cve-2021-44228.yml *********************************************************************************************************************************************************
2 plays in log4j-cve-2021-44228.yml
PLAY [download detector for Apache Log4j (CVE-2021-44228)] *********************************************************************************************************************************
META: ran handlers
TASK [include_vars] ************************************************************************************************************************************************************************
task path: /Users/lberton/prj/github/log4j-cve-2021-44228/log4j-cve-2021-44228.yml:29
ok: [localhost] => {"ansible_facts": {"clean_run_before": true, "delete_after": false, "detector_baseurl": "https://access.redhat.com/sites/default/files/", "detector_dir": "/opt/cve-2021-44228/", "detector_options": "-n -d --no-progress --scan {{ detector_path }}", "detector_path": "/var/", "detector_run_dir": "tmp", "force_download": false, "gpg_keyid": "7514F77D8366B0D9", "gpg_public_key": "gpg --keyserver {{ gpg_server }} --recv {{ gpg_keyid }}", "gpg_server": "pgp.mit.edu", "intro": "Ansible Playbook tested with detector version 1.3 released 2022-01-10.\nIf a 404 error occur please adjust the URL with the latest version available\nfor detector URL.\nPlease refer to the Red Hat Security Bullettin for up-to-date information and\nadjust the playbook variables accordingly.\n{{ rh_bullettin }}.\n", "not_vulnerable": "System IS NOT vulnerable to log4j (CVE-2021-44228)\n", "report_txt": "/report/vuln_log4j2_path_*.txt", "rh_bullettin": "https://access.redhat.com/security/vulnerabilities/RHSB-2021-009", "sh_detector": "cve-2021-44228--2022-01-10-1242.sh", "sh_signature": "cve-2021-44228--2022-01-10-1242.sh.asc", "verify_gpg": true, "vulnerable": "System MIGHT be vulnerable to log4j (CVE-2021-44228)\n"}, "ansible_included_var_files": ["/Users/lberton/prj/github/log4j-cve-2021-44228/vars.yml"], "changed": false}
TASK [print information] *******************************************************************************************************************************************************************
task path: /Users/lberton/prj/github/log4j-cve-2021-44228/log4j-cve-2021-44228.yml:31
ok: [localhost] => {
"msg": "Ansible Playbook tested with detector version 1.3 released 2022-01-10.\nIf a 404 error occur please adjust the URL with the latest version available\nfor detector URL.\nPlease refer to the Red Hat Security Bullettin for up-to-date information and\nadjust the playbook variables accordingly.\nhttps://access.redhat.com/security/vulnerabilities/RHSB-2021-009.\n"
}