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 y 3.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. Consulta make 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.

Acerca del proyecto

Idempotent CIS Benchmarks for RHEL/CentOS Linux V2

Instalar
ansible-galaxy install HarryHarcourt.Ansible-RHEL7-CIS-Benchmarks
Licencia
mit
Descargas
1.1k
Propietario