HarryHarcourt.Ansible-RHEL7-CIS-Benchmarks
HarryHarcourt.Ansible-RHEL7-CIS-Benchmarks
Todo el crédito va a anthcourtney por el marco original encontrado aquí: https://github.com/anthcourtney/ansible-role-cis-amazon-linux
Esta implementación se ha convertido para Red Hat Enterprise Linux 7.X (probado 7.1 - 7.7) y CentOS 7.4 (probado 7.4 - 7.7, note que las versiones de CentOS por debajo de 7.4 pueden tener problemas con SSH).
Esta implementación ha sido hecha idempotente en muchos lugares, y sigue siéndolo.
Esta implementación permite la habilitación y configuración de algunos servicios.
El Benchmark CIS RHEL Linux. https://benchmarks.cisecurity.org/tools2/linux/CIS_Red_Hat_Enterprise_Linux_7_Benchmark_v2.1.1.pdf
Este rol fue desarrollado y probado en Red Hat Linux 7.1, 7.2, 7.3, 7.4, 7.5, 7.6 y 7.7 usando AMI estándar de AWS. Este rol fue desarrollado y probado en CentOS 7.4 usando AMI estándar de AWS.
¿Por qué usaría este rol?
Si intentas obtener cumplimiento con un estándar de seguridad aceptado en la industria, como PCI DSS, APRA o ISO 27001, entonces necesitas demostrar que has aplicado estándares de endurecimiento documentados a todos los sistemas en el ámbito de evaluación.
Si estás ejecutando Red Hat Linux, entonces este rol intenta proporcionar una parte de la solución para el rompecabezas del cumplimiento.
¡Aquí hay dragones!
Si estás considerando aplicar este rol a algún servidor, deberías tener una familiaridad básica con el Benchmark CIS (u otros benchmarks similares) y un aprecio por el impacto que puede tener en un sistema.
Tómate el tiempo para familiarizarte con el estándar y con los valores predeterminados configurables, y excluye cualquier elemento antes de aplicarlo a un sistema.
Algunos ejemplos de elementos que deberían considerarse para la exclusión (o al menos, para la modificación de los valores predeterminados relacionados) incluyen:
3.4.2
y3.4.3
, que por defecto limitan efectivamente el acceso al host (incluido a través de ssh) solo a localhost.
Ejemplo de Playbook
Un ejemplo de playbook que utiliza este rol es el siguiente:
---
- hosts: localhost
connection: local
gather_facts: true
become: yes
roles:
- Ansible-RHEL7-CIS-Benchmarks
Un ejemplo más avanzado, que incluye modificaciones a los valores predeterminados utilizados, así como la exclusión de algunos elementos en el benchmark que se consideran innecesarios para un entorno ficticio, es el siguiente:
---
- hosts: localhost
connection: local
gather_facts: true
become: yes
vars:
cis_level_1_exclusions:
- 5.4.4
- 3.4.2
- 3.4.3
- 6.2.13
cis_pass_max_days: 45
cis_umask_default: 002
roles:
- Ansible-RHEL7-CIS-Benchmarks
Ten en cuenta que el uso de become: yes
es necesario ya que el 99% de las tareas requieren acceso privilegiado para ejecutarse.
Variables del Rol
Consulta defaults/main.yml
para las variables que pueden ser sobrescritas según tus preferencias.
Opciones
Se pueden usar etiquetas (y combinaciones de ellas) para ejecutar un nivel particular del estándar CIS, una sección o una recomendación individual. Por ejemplo:
- Ejecuta solo tareas del Nivel 1
ansible-playbook playbook.yml -t level-1
- Ejecuta solo tareas de la Sección 3
ansible-playbook playbook.yml -t section-3
- Ejecuta solo las tareas 1.3.1 y 2.2.10
ansible-playbook playbook.yml -t 1.3.1,2.2.10
- Ejecuta solo tareas puntuadas
ansible-playbook playbook.yml -t scored
Limitaciones
En la actualidad, solo se han implementado los elementos de Nivel 1 del benchmark. Los elementos de Nivel 2 se agregarán a medida que el tiempo lo permita.
No se han implementado las siguientes comprobaciones:
- 3.6.2. Las reglas del firewall son específicas del entorno.
- 3.6.3. Las reglas del firewall son específicas del entorno.
- 3.6.4. Las reglas del firewall son específicas del entorno.
- 3.6.5. Las reglas del firewall son específicas del entorno.
- 4.2.1.2. La determinación de lo que se debe registrar y el destino de los mensajes es específica del entorno.
- 4.2.2.2. La determinación de lo que se debe registrar y el destino de los mensajes es específica del entorno.
- 4.2.2.3. La edición en línea del archivo de configuración de syslog-ng se considera imprecisa y es mejor solucionada mediante un archivo de configuración proporcionado que aborde este y otros requisitos relacionados.
- 4.2.2.4. La edición en línea del archivo de configuración de syslog-ng se considera imprecisa y es mejor solucionada mediante un archivo de configuración proporcionado que aborde este y otros requisitos relacionados.
- 4.2.2.5. La edición en línea del archivo de configuración de syslog-ng se considera imprecisa y es mejor solucionada mediante un archivo de configuración proporcionado que aborde este y otros requisitos relacionados.
- 4.3. La configuración de logrotate es específica del sitio.
- 5.3.2. La edición de múltiples líneas de archivos de configuración pam se considera imprecisa y peligrosa, y es mejor solucionada mediante un archivo de configuración proporcionado que aborde este y otros requisitos relacionados.
- 5.3.3. La edición de múltiples líneas de archivos de configuración pam se considera imprecisa y peligrosa, y es mejor solucionada mediante un archivo de configuración proporcionado que aborde este y otros requisitos relacionados.
Compatibilidad
Este rol es compatible con las siguientes versiones de ansible:
- 2.0.2
- 2.1.3
- 2.2.0
- 2.3.0
- 2.7.0
- 2.8.x
- 2.9.x
Este rol no ha sido probado con ninguna otra versión de ansible.
Pruebas
Los siguientes procesos de prueba son aplicados por el desarrollador de este rol:
- Se verifica la sintaxis del rol. Consulta
make syntax
. - Se ejecuta
ansible-review
contra el rol y se remedian advertencias que se consideren apropiadas. Consultamake review
. - El rol se aplica contra un contenedor docker usando tanto ansible v2.1.3 como ansible v2.2. consulta
make test
.
Las siguientes pruebas han sido señaladas pero aún no están implementadas:
- Prueba de aplicación del rol contra la imagen Vagrant
mvbcoding/awslinux
, usando el aprovisionador de ansible.
Licencia
NOTA: Ha habido cierta confusión sobre la licencia que se debe usar para este Rol de Ansible, la fuente base de este Rol de Anthony Courtney no tenía un archivo de licencia, sin embargo, el meta/main.yml hacía referencia a MIT pero el README (abajo) hacía referencia a BSD. Sin comentarios de Anthony (mediante el registro de un problema contra la fuente original y contactándolo a través de LinkedIn) he decidido adoptar la Licencia MIT para este Rol.
MIT.
Información del Autor
El rol fue desarrollado originalmente por Anth Courtney.
Este rol fue desarrollado además por Ben Wright.
Se anima y aprecia cualquier comentario, problema o PR.
Idempotent CIS Benchmarks for RHEL/CentOS Linux V2
ansible-galaxy install HarryHarcourt.Ansible-RHEL7-CIS-Benchmarks