HarryHarcourt.ansible_rhel8_cis_benchmarks
HarryHarcourt.Ansible-RHEL8-CIS-Benchmarks
Todo el crédito va a anthcourtney por el marco original que se encuentra aquí: https://github.com/anthcourtney/ansible-role-cis-amazon-linux
Esta implementación ha sido adaptada para Red Hat Enterprise Linux 8.X y CentOS 8.X (nota: no se ha probado aún).
Esta implementación ha sido realizada de manera idempotente en muchos lugares, y sigue siendo así.
Esta implementación permite habilitar y configurar algunos servicios.
El documento de referencia del CIS RHEL Linux. https://benchmarks.cisecurity.org/tools2/linux/CIS_Red_Hat_Enterprise_Linux_7_Benchmark_v2.1.1.pdf
¿Por qué debería usar este rol?
Si intentas cumplir con un estándar de seguridad aceptado en la industria, como PCI DSS, APRA o ISO 27001, necesitas demostrar que has aplicado estándares de endurecimiento documentados en todos los sistemas que están bajo evaluación.
Si estás usando Red Hat Linux, entonces este rol intenta ofrecer una parte de la solución al rompecabezas de cumplimiento.
¡Cuidado!
Si estás considerando aplicar este rol a servidores, deberías tener un conocimiento básico del Benchmark del CIS (o benchmarks similares) y entender el impacto que puede tener en un sistema.
Tómate el tiempo para familiarizarte con el estándar y con los valores predeterminados que se pueden configurar, y excluye cualquier ítem antes de aplicar a un sistema.
Ejemplos de ítems que deberían ser considerados para exclusión inmediata (o al menos, para modificación de los valores predeterminados relacionados) incluyen:
3.4.2
y3.4.3
, que por defecto efectivamente limitan el acceso al host (incluido a través de ssh) solo a localhost.
Ejemplo de Playbook
Un ejemplo de playbook que usa este rol es el siguiente:
---
- hosts: localhost
connection: local
gather_facts: true
become: yes
roles:
- Ansible-RHEL8-CIS-Benchmarks
Un ejemplo más avanzado, que incluye modificaciones a los valores predeterminados utilizados, así como la exclusión de algunos ítems en el benchmark considerados 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-RHEL8-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 ver las variables que se pueden sobrescribir según tus preferencias.
Opciones
Se pueden usar etiquetas (y combinaciones de estas) para ejecutar un nivel particular del estándar CIS, una sección o una recomendación individual. Por ejemplo:
- Ejecutar solo tareas de Nivel 1
ansible-playbook playbook.yml -t level-1
- Ejecutar solo tareas de la Sección 3
ansible-playbook playbook.yml -t section-3
- Ejecutar solo las tareas 1.3.1 y 2.2.10
ansible-playbook playbook.yml -t 1.3.1,2.2.10
- Ejecutar solo tareas puntuadas
ansible-playbook playbook.yml -t scored
Limitaciones
En la actualidad, solo se han implementado los ítems de Nivel 1 del benchmark. Los ítems de Nivel 2 se agregarán cuando el tiempo lo permita.
Las siguientes verificaciones no se han implementado:
- 3.6.2. Las reglas de firewall son específicas del entorno.
- 3.6.3. Las reglas de firewall son específicas del entorno.
- 3.6.4. Las reglas de firewall son específicas del entorno.
- 3.6.5. Las reglas de firewall son específicas del entorno.
- 4.2.1.2. Determinar qué debe ser registrado y el destino de los mensajes es específico del entorno.
- 4.2.2.2. Determinar qué debe ser registrado y el destino de los mensajes es específico 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 resolverla con un archivo de configuración proporcionado que aborde esto 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 resolverla con un archivo de configuración proporcionado que aborde esto 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 resolverla con un archivo de configuración proporcionado que aborde esto 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 de pam se considera imprecisa y peligrosa, y es mejor resolverla con un archivo de configuración proporcionado que aborde esto y otros requisitos relacionados.
- 5.3.3. La edición de múltiples líneas de archivos de configuración de pam se considera imprecisa y peligrosa, y es mejor resolverla con un archivo de configuración proporcionado que aborde esto 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
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 corrigen las advertencias que se consideran adecuadas. Consultamake review
. - El rol se aplica contra un contenedor de Docker utilizando tanto ansible v2.1.3 como ansible v2.2. Consulta
make test
.
Las siguientes pruebas han sido señaladas, pero aún no se han implementado:
- Probar la aplicación del rol contra la imagen Vagrant
mvbcoding/awslinux
, utilizando el aprovisionador de ansible.
Licencia
BSD.
Información del Autor
El rol fue desarrollado originalmente por Anth Courtney.
Este rol fue desarrollado posteriormente por Ben Wright.
Se agradece y fomenta toda retroalimentación, problemas y PRs.
Idempotent CIS Benchmarks for RHEL/CentOS Linux V2
ansible-galaxy install HarryHarcourt.ansible_rhel8_cis_benchmarks