ryezone_labs.ansible_cis_ubuntu_2004

Ansible CIS Ubuntu 20.04 LTS Endurecimiento Estado de Construcción

Ubuntu endurecido por CIS: prevención de ataques cibernéticos y malware para sistemas críticos. Las pautas del CIS aseguran tus sistemas eliminando:

  1. programas inseguros.
  2. deshabilitando sistemas de archivos no utilizados.
  3. deshabilitando puertos o servicios innecesarios.
  4. auditando operaciones privilegiadas.
  5. restringiendo privilegios administrativos.

Las recomendaciones del benchmark del CIS se adoptan en máquinas virtuales en nubes públicas y privadas. También se utilizan para asegurar implementaciones locales. Para algunas industrias, endurecer un sistema contra un estándar público conocido es un criterio que los auditores buscan. Los benchmarks del CIS son a menudo una opción de endurecimiento del sistema recomendada por auditores para industrias que requieren cumplimiento de PCI-DSS y HIPAA, como la banca, las telecomunicaciones y la atención médica. Si intentas obtener cumplimiento contra un estándar de seguridad aceptado en la industria, como PCI DSS, APRA o ISO 27001, debes demostrar que has aplicado estándares de endurecimiento documentados en todos los sistemas dentro del alcance de la evaluación.

Los benchmarks de Ubuntu CIS se organizan en diferentes perfiles, a saber: ‘Nivel 1’ y ‘Nivel 2’, destinados a entornos de servidores y estaciones de trabajo.

Un perfil de Nivel 1 está diseñado para ser una forma práctica y prudente de asegurar un sistema sin un gran impacto en el rendimiento.

  • Deshabilitando sistemas de archivos innecesarios,
  • Restringiendo permisos de usuario a archivos y directorios,
  • Deshabilitando servicios innecesarios.
  • Configurando cortafuegos de red.

Un perfil de Nivel 2 se utiliza donde la seguridad se considera muy importante y puede tener un impacto negativo en el rendimiento del sistema.

  • Creando particiones separadas,
  • Auditando operaciones privilegiadas.

La herramienta de endurecimiento de Ubuntu CIS te permite seleccionar el nivel de endurecimiento deseado según un perfil (Nivel 1 o Nivel 2) y el entorno de trabajo (servidor o estación de trabajo) para un sistema. Ejemplo:

ansible-playbook -i inventario cis-ubuntu-20.yaml --tags="level_1_server"

Puedes listar todas las etiquetas ejecutando el siguiente comando:

ansible-playbook -i host run.yaml --list-tags

Escribí todos los roles basados en

CIS Ubuntu Linux 20.04 LTS Benchmark
v1.0.0 - 21-07-2020

Ver ejemplo de directorio


Requisitos

Debes leer cuidadosamente las tareas para asegurarte de que estos cambios no rompan tus sistemas antes de ejecutar este playbook.

Puedes descargar el libro del Benchmark CIS gratis desde esta URL Benchmark Gratis

Para comenzar a trabajar en este rol solo necesitas instalar Ansible. Instalando Ansible


Variables del Rol

Debes revisar toda la configuración predeterminada antes de ejecutar este playbook. Hay muchas variables de rol definidas en defaults/main.yml.

  • Si consideras aplicar este rol a algún servidor, deberías tener una familiaridad básica con el Benchmark CIS y un reconocimiento del impacto que esto puede tener en un sistema.
  • Lee y cambia los valores predeterminados configurables.

Ejemplos de configuraciones que deberían considerarse para exclusión inmediata:

5.1.8 Asegúrate de que cron esté restringido a usuarios autorizados y 5.2.17 Asegúrate de que el acceso SSH esté limitado, lo que por defecto limita efectivamente el acceso al host (incluyendo a través de ssh).

Por ejemplo:

  • CIS-Ubuntu-20.04-Ansible/defaults/main.yml
#Sección 5
#5.1.8 Asegúrate de que cron esté restringido a usuarios autorizados
allowd_hosts: "TODOS: 0.0.0.0/0.0.0.0, 192.168.2.0/255.255.255.0"
# 5.2.17 Asegúrate de que el acceso SSH esté limitado
allowed_users: ali saleh baker root #Pon None o lista de usuarios con espacio entre cada usuario

Si necesitas cambiar plantillas de archivos, puedes encontrarlas en files/templates/*


Dependencias

  • Versión de Ansible > 2.9

Ejemplo de Playbook

A continuación, un ejemplo de un playbook

---
- hosts: host1
  become: yes
  remote_user: root
  gather_facts: no
  roles:
    - { role: "CIS-Ubuntu-20.04-Ansible",}

Ejecutar todo

Si deseas ejecutar todas las etiquetas, usa el siguiente comando:

ansible-playbook -i [archivo de inventario] [playbook].yaml

Ejecutar sección específica

ansible-playbook -i host run.yaml -t section2

Ejecutar múltiples secciones

ansible-playbook -i host run.yaml -t section2 -t 6.1.1
  • Nota: Al ejecutar una tarea individual, asegúrate de las dependencias entre las tareas. Por ejemplo, si ejecutas la etiqueta 4.1.1.2 Asegúrate de que el servicio auditd esté habilitado antes de ejecutar 4.1.1.1 Asegúrate de que auditd esté instalado, recibirás un error en tiempo de ejecución.

  • Puntos con Tilde aún no implementados, actualmente estoy trabajando en ello.

  • Asegúrate de seleccionar un servicio a la vez, para mí uso ntp, pero puedes usar otros servicios como [systemd-timesyncd,ntp,chrony] en la configuración defaults/main.yaml

    Pruebas 01/11/2020 Probado en AWS EC2 ubuntu 20.04 LTS [Aprobado] 01/11/2020 Probado en servidor local de Ubuntu 20.04 LTS [Aprobado]

  • Antes de ejecutar, asegúrate de actualizar la lista de usuarios en defaults/main.yaml en list_of_os_users + allowed_users

  • Asegúrate de establecer la subred correcta en defaults/main.yaml en allowd_hosts


Tabla de Roles:

1 Configuración Inicial

  • 1.1 Configuración del Sistema de Archivos
  • 1.1.1 Deshabilitar sistemas de archivos no utilizados
  • 1.1.1.1 Asegúrate de que la montura de sistemas de archivos cramfs esté deshabilitada (Automatizado)
  • 1.1.1.2 Asegúrate de que la montura de sistemas de archivos freevxfs esté deshabilitada - (Automatizado)
  • 1.1.1.3 Asegúrate de que la montura de sistemas de archivos jffs2 esté deshabilitada (Automatizado)
  • 1.1.1.4 Asegúrate de que la montura de sistemas de archivos hfs esté deshabilitada (Automatizado)
  • 1.1.1.5 Asegúrate de que la montura de sistemas de archivos hfsplus esté deshabilitada - (Automatizado)
  • 1.1.1.6 Asegúrate de que la montura de sistemas de archivos udf esté deshabilitada (Automatizado)
  • 1.1.1.7 Asegúrate de que la montura de sistemas de archivos FAT esté limitada (Manual)
  • 1.1.2 Asegúrate de que /tmp esté configurado (Automatizado)
  • 1.1.3 Asegúrate de que la opción nodev esté configurada en la partición /tmp (Automatizado)
  • 1.1.4 Asegúrate de que la opción nosuid esté configurada en la partición /tmp (Automatizado)
  • 1.1.5 Asegúrate de que la opción noexec esté configurada en la partición /tmp (Automatizado)
  • 1.1.6 Asegúrate de que /dev/shm esté configurado (Automatizado)
  • 1.1.7 Asegúrate de que la opción nodev esté configurada en la partición /dev/shm (Automatizado)
  • 1.1.8 Asegúrate de que la opción nosuid esté configurada en la partición /dev/shm (Automatizado)
  • 1.1.9 Asegúrate de que la opción noexec esté configurada en la partición /dev/shm (Automatizado)
  • 1.1.10 Asegúrate de que exista una partición separada para /var (Automatizado)
  • 1.1.11 Asegúrate de que exista una partición separada para /var/tmp (Automatizado)
  • 1.1.12 Asegúrate de que la opción nodev esté configurada en la partición /var/tmp (Automatizado)
  • 1.1.13 Asegúrate de que la opción nosuid esté configurada en la partición /var/tmp (Automatizado)
  • 1.1.14 Asegúrate de que la opción noexec esté configurada en la partición /var/tmp (Automatizado)
  • 1.1.15 Asegúrate de que exista una partición separada para /var/log (Automatizado)
  • 1.1.16 Asegúrate de que exista una partición separada para /var/log/audit - (Automatizado)
  • 1.1.17 Asegúrate de que exista una partición separada para /home (Automatizado)
  • 1.1.18 Asegúrate de que la opción nodev esté configurada en la partición /home (Automatizado)
  • 1.1.19 Asegúrate de que exista la opción nodev en particiones de medios extraíbles (Manual)
  • 1.1.20 Asegúrate de que exista la opción nosuid en particiones de medios extraíbles - (Manual)
  • 1.1.21 Asegúrate de que exista la opción noexec en particiones de medios extraíbles - (Manual)
  • 1.1.22 Asegúrate de que se configure el bit sticky en todos los directorios escribibles por el mundo - (Automatizado)
  • 1.1.23 Deshabilita el Automontaje (Automatizado)
  • 1.1.24 Deshabilita el Almacenamiento USB (Automatizado)

1.2 Configurar Actualizaciones de Software

  • 1.2.1 Asegúrate de que los repositorios del gestor de paquetes estén configurados (Manual)
  • 1.2.2 Asegúrate de que las claves GPG estén configuradas (Manual)

1.3 Configurar sudo

  • 1.3.1 Asegúrate de que sudo esté instalado (Automatizado)
  • 1.3.2 Asegúrate de que los comandos sudo usen pty (Automatizado)
  • 1.3.3 Asegúrate de que exista un archivo de registro de sudo (Automatizado)

1.4 Verificación de Integridad del Sistema de Archivos

  • 1.4.1 Asegúrate de que AIDE esté instalado (Automatizado)
  • 1.4.2 Asegúrate de que la integridad del sistema de archivos se verifique regularmente (Automatizado)

1.5 Configuraciones de Arranque Seguro

  • 1.5.1 Asegúrate de que la contraseña del gestor de arranque esté configurada (Automatizado)
  • 1.5.2 Asegúrate de que los permisos en la configuración del gestor de arranque estén configurados - (Automatizado)
  • 1.5.3 Asegúrate de que se requiera autenticación para el modo de usuario único (Automatizado)

1.6 Endurecimiento Adicional de Procesos

  • 1.6.1 Asegúrate de que el soporte de XD/NX esté habilitado (Automatizado)
  • 1.6.2 Asegúrate de que la aleatorización del diseño del espacio de direcciones (ASLR) esté habilitada - (Automatizado)
  • 1.6.3 Asegúrate de que prelink esté deshabilitado (Automatizado)
  • 1.6.4 Asegúrate de que las volcado de núcleo estén restringidas (Automatizado)

1.7 Control de Acceso Obligatorio

  • 1.7.1 Configurar AppArmor
  • 1.7.1.1 Asegúrate de que AppArmor esté instalado (Automatizado)
  • 1.7.1.2 Asegúrate de que AppArmor esté habilitado en la configuración del gestor de arranque - (Automatizado)
  • 1.7.1.3 Asegúrate de que todos los perfiles de AppArmor estén en modo de cumplimiento o quejas - (Automatizado)
  • 1.7.1.4 Asegúrate de que todos los perfiles de AppArmor estén aplicando (Automatizado)

1.8 Banners de Aviso

  • 1.8.1 Banners de Aviso en la Línea de Comandos
  • 1.8.1.1 Asegúrate de que el mensaje del día esté configurado correctamente (Automatizado)
  • 1.8.1.2 Asegúrate de que el banner de advertencia de inicio de sesión local esté configurado correctamente - (Automatizado) 115
  • 1.8.1.3 Asegúrate de que el banner de advertencia de inicio de sesión remoto esté configurado correctamente - (Automatizado)
  • 1.8.1.4 Asegúrate de que los permisos en /etc/motd estén configurados (Automatizado)
  • 1.8.1.5 Asegúrate de que los permisos en /etc/issue estén configurados (Automatizado)
  • 1.8.1.6 Asegúrate de que los permisos en /etc/issue.net estén configurados - (Automatizado)
  • 1.9 Asegúrate de que se instalen actualizaciones, parches y software de seguridad adicional - (Manual)
  • 1.10 Asegúrate de que GDM esté eliminado o que el inicio de sesión esté configurado (Automatizado)

2 Servicios

  • 2.1 Servicios inetd
  • 2.1.1 Asegúrate de que xinetd no esté instalado (Automatizado)
  • 2.1.2 Asegúrate de que openbsd-inetd no esté instalado (Automatizado)
  • 2.2 Servicios de Propósito Especial
  • 2.2.1 Sincronización de Tiempo
  • 2.2.1.1 Asegúrate de que la sincronización de tiempo esté en uso (Automatizado)
  • 2.2.1.2 Asegúrate de que systemd-timesyncd esté configurado (Manual)
  • 2.2.1.3 Asegúrate de que chrony esté configurado (Automatizado)
  • 2.2.1.4 Asegúrate de que ntp esté configurado (Automatizado)
  • 2.2.2 Asegúrate de que el Sistema de Ventanas X no esté instalado (Automatizado)
  • 2.2.3 Asegúrate de que el servidor Avahi no esté instalado (Automatizado)
  • 2.2.4 Asegúrate de que CUPS no esté instalado (Automatizado)
  • 2.2.5 Asegúrate de que el servidor DHCP no esté instalado (Automatizado)
  • 2.2.6 Asegúrate de que el servidor LDAP no esté instalado (Automatizado)
  • 2.2.7 Asegúrate de que NFS no esté instalado (Automatizado)
  • 2.2.8 Asegúrate de que el servidor DNS no esté instalado (Automatizado)
  • 2.2.9 Asegúrate de que el servidor FTP no esté instalado (Automatizado)
  • 2.2.10 Asegúrate de que el servidor HTTP no esté instalado (Automatizado)
  • 2.2.11 Asegúrate de que el servidor IMAP y POP3 no esté instalado (Automatizado)
  • 2.2.12 Asegúrate de que Samba no esté instalado (Automatizado)
  • 2.2.13 Asegúrate de que el servidor Proxy HTTP no esté instalado (Automatizado)
  • 2.2.14 Asegúrate de que el servidor SNMP no esté instalado (Automatizado)
  • 2.2.15 Asegúrate de que el agente de transferencia de correo esté configurado para modo local - (Automatizado)
  • 2.2.16 Asegúrate de que el servicio rsync no esté instalado (Automatizado)
  • 2.2.17 Asegúrate de que el servidor NIS no esté instalado (Automatizado)

2.3 Clientes de Servicio

  • 2.3.1 Asegúrate de que el cliente NIS no esté instalado (Automatizado)
  • 2.3.2 Asegúrate de que el cliente rsh no esté instalado (Automatizado)
  • 2.3.3 Asegúrate de que el cliente talk no esté instalado (Automatizado)
  • 2.3.4 Asegúrate de que el cliente telnet no esté instalado (Automatizado)
  • 2.3.5 Asegúrate de que el cliente LDAP no esté instalado (Automatizado)
  • 2.3.6 Asegúrate de que RPC no esté instalado (Automatizado)
  • 2.4 Asegúrate de que los servicios no esenciales estén eliminados o enmascarados (Manual)

3 Configuración de Red

  • 3.1 Deshabilitar protocolos y dispositivos de red no utilizados
  • 3.1.1 Deshabilitar IPv6 (Manual)
  • 3.1.2 Asegúrate de que las interfaces inalámbricas estén deshabilitadas (Automatizado)

3.2 Parámetros de Red (Solo Host)

  • 3.2.1 Asegúrate de que se desactive el envío de paquetes de redirección (Automatizado)
  • 3.2.2 Asegúrate de que el reenvío IP esté deshabilitado (Automatizado)

3.3 Parámetros de Red (Host y Enrutador)

  • 3.3.1 Asegúrate de que los paquetes de ruta de origen no se acepten (Automatizado)
  • 3.3.2 Asegúrate de que no se acepten redirecciones ICMP (Automatizado)
  • 3.3.3 Asegúrate de que no se acepten redirecciones ICMP seguras (Automatizado)
  • 3.3.4 Asegúrate de que los paquetes sospechosos sean registrados (Automatizado)
  • 3.3.5 Asegúrate de que se ignoren las solicitudes ICMP de difusión (Automatizado)
  • 3.3.6 Asegúrate de que se ignoren las respuestas ICMP falsas (Automatizado)
  • 3.3.7 Asegúrate de que la filtración de ruta inversa esté habilitada (Automatizado)
  • 3.3.8 Asegúrate de que las cookies TCP SYN estén habilitadas (Automatizado)
  • 3.3.9 Asegúrate de que no se acepten anuncios de enrutador IPv6 (Automatizado)

3.4 Protocolos de Red Poco Comunes

  • 3.4.1 Asegúrate de que DCCP esté deshabilitado (Automatizado)
  • 3.4.2 Asegúrate de que SCTP esté deshabilitado (Automatizado)
  • 3.4.3 Asegúrate de que RDS esté deshabilitado (Automatizado)
  • 3.4.4 Asegúrate de que TIPC esté deshabilitado (Automatizado)

3.5 Configuración del Cortafuegos

  • 3.5.1 Configurar UncomplicatedFirewall
  • 3.5.1.1 Asegúrate de que Uncomplicated Firewall esté instalado (Automatizado)
  • 3.5.1.2 Asegúrate de que iptables-persistent no esté instalado (Automatizado)
  • 3.5.1.3 Asegúrate de que el servicio ufw esté habilitado (Automatizado)
  • 3.5.1.4 Asegúrate de que el tráfico de bucle de retorno esté configurado (Automatizado)
  • 3.5.1.5 Asegúrate de que las conexiones salientes estén configuradas (Manual)
  • 3.5.1.6 Asegúrate de que existan reglas de cortafuegos para todos los puertos abiertos (Manual)
  • 3.5.1.7 Asegúrate de que la política predeterminada de negación del cortafuegos esté configurada (Automatizado)
  • 3.5.2 Configurar nftables
  • 3.5.2.1 Asegúrate de que nftables esté instalado (Automatizado)
  • 3.5.2.2 Asegúrate de que Uncomplicated Firewall no esté instalado o esté deshabilitado - (Automatizado)
  • 3.5.2.3 Asegúrate de que se limpien las reglas de iptables (Manual)
  • 3.5.2.4 Asegúrate de que exista una tabla (Automatizado)
  • 3.5.2.5 Asegúrate de que existan cadenas base (Automatizado)
  • 3.5.2.6 Asegúrate de que el tráfico de bucle de retorno esté configurado (Automatizado)
  • 3.5.2.7 Asegúrate de que las conexiones salientes y establecidas estén configuradas - (Manual)243
  • 3.5.2.8 Asegúrate de que la política predeterminada de negación del cortafuegos esté configurada (Automatizado)
  • 3.5.2.9 Asegúrate de que el servicio nftables esté habilitado (Automatizado)
  • 3.5.2.10 Asegúrate de que las reglas de nftables sean permanentes (Automatizado)
  • 3.5.3 Configurar iptables
  • 3.5.3.1.1 Asegúrate de que los paquetes de iptables estén instalados (Automatizado)
  • 3.5.3.1.2 Asegúrate de que nftables no esté instalado (Automatizado)
  • 3.5.3.1.3 Asegúrate de que Uncomplicated Firewall no esté instalado o esté deshabilitado - (Automatizado)
  • 3.5.3.2.1 Asegúrate de que la política predeterminada de negación del cortafuegos esté configurada (Automatizado)
  • 3.5.3.2.2 Asegúrate de que el tráfico de bucle de retorno esté configurado (Automatizado)
  • 3.5.3.2.3 Asegúrate de que las conexiones salientes y establecidas estén configuradas - (Manual)
  • 3.5.3.2.4 Asegúrate de que existan reglas del cortafuegos para todos los puertos abiertos (Automatizado)
  • 3.5.3.3.1 Asegúrate de que la política de negación de cortafuegos IPv6 predeterminada esté configurada (Automatizado)
  • 3.5.3.3.2 Asegúrate de que el tráfico de bucle de retorno IPv6 esté configurado (Automatizado)
  • 3.5.3.3.3 Asegúrate de que las conexiones salientes y establecidas IPv6 estén configuradas (Manual)
  • 3.5.3.3.4 Asegúrate de que existan reglas de cortafuegos IPv6 para todos los puertos abiertos - (Manual)

4 Registro y Auditoría

  • 4.1 Configurar Contabilidad del Sistema (auditd)
  • 4.1.1 Asegúrate de que la auditoría esté habilitada
  • 4.1.1.1 Asegúrate de que auditd esté instalado (Automatizado)
  • 4.1.1.2 Asegúrate de que el servicio auditd esté habilitado (Automatizado)
  • 4.1.1.3 Asegúrate de que la auditoría de procesos que comienzan antes de auditd esté habilitada (Automatizado)
  • 4.1.1.4 Asegúrate de que audit_backlog_limit sea suficiente (Automatizado)
  • 4.1.2 Configurar Retención de Datos
  • 4.1.2.1 Asegúrate de que el tamaño del almacenamiento del registro de auditoría esté configurado (Automatizado)
  • 4.1.2.2 Asegúrate de que los registros de auditoría no se eliminen automáticamente (Automatizado)
  • 4.1.2.3 Asegúrate de que el sistema esté deshabilitado cuando los registros de auditoría estén llenos - (Automatizado)
  • 4.1.3 Asegúrate de que los eventos que modifican información de fecha y hora sean recolectados (Automatizado)
  • 4.1.4 Asegúrate de que los eventos que modifican la información de usuario/grupo sean recolectados - (Automatizado)
  • 4.1.5 Asegúrate de que los eventos que modifican el entorno de red del sistema sean recolectados - (Automatizado)
  • 4.1.6 Asegúrate de que los eventos que modifican los Controles de Acceso Obligatorios del sistema sean recolectados (Automatizado)
  • 4.1.7 Asegúrate de que se recojan los eventos de inicio y cierre de sesión (Automatizado)
  • 4.1.8 Asegúrate de que la información de inicio de sesión de sesión sea recolectada (Automatizado)
  • 4.1.9 Asegúrate de que se recojan los eventos de modificación de permisos de control de acceso discrecional (Automatizado)
  • 4.1.10 Asegúrate de que se recojan intentos de acceso no autorizado a archivos no exitosos (Automatizado)
  • 4.1.11 Asegúrate de que se recojan el uso de comandos privilegiados (Automatizado)
  • 4.1.12 Asegúrate de que se recojan los montajes exitosos del sistema de archivos (Automatizado)
  • 4.1.13 Asegúrate de que se recojan eventos de eliminación de archivos por usuarios (Automatizado)
  • 4.1.14 Asegúrate de que se recojan los cambios en el alcance de la administración del sistema (sudoers) - (Automatizado)
  • 4.1.15 Asegúrate de que se recojan las ejecuciones de comandos de administradores del sistema (sudo) (Automatizado)
  • 4.1.16 Asegúrate de que se recojan la carga y descarga de módulos del núcleo - (Automatizado)
  • 4.1.17 Asegúrate de que la configuración de auditoría sea inmutable (Automatizado)

4.2 Configurar Registro

  • 4.2.1 Configurar rsyslog
  • 4.2.1.1 Asegúrate de que rsyslog esté instalado (Automatizado)
  • 4.2.1.2 Asegúrate de que el servicio rsyslog esté habilitado (Automatizado)
  • 4.2.1.3 Asegúrate de que el registro esté configurado (Manual)
  • 4.2.1.4 Asegúrate de que se configuren los permisos predeterminados de archivos en rsyslog - (Automatizado)
  • 4.2.1.5 Asegúrate de que rsyslog esté configurado para enviar registros a un host remoto - (Automatizado)
  • 4.2.1.6 Asegúrate de que los mensajes remotos de rsyslog solo sean aceptados en hosts de registro designados. (Manual)
  • 4.2.2 Configurar journald
  • 4.2.2.1 Asegúrate de que journald esté configurado para enviar registros a rsyslog - (Automatizado)
  • 4.2.2.2 Asegúrate de que journald esté configurado para comprimir archivos de registro grandes - (Automatizado)
  • 4.2.2.3 Asegúrate de que journald esté configurado para escribir archivos de registro en disco persistente (Automatizado)
  • 4.2.3 Asegúrate de que se configuren los permisos en todos los archivos de registro (Automatizado)
  • 4.3 Asegúrate de que logrotate esté configurado (Manual)
  • 4.4 Asegúrate de que logrotate asigne permisos apropiados (Automatizado)

5 Acceso, Autenticación y Autorización

  • 5.1 Configurar programadores de trabajos basados en tiempo
  • 5.1.1 Asegúrate de que el demonio cron esté habilitado y en ejecución (Automatizado)
  • 5.1.2 Asegúrate de que los permisos en /etc/crontab estén configurados (Automatizado)
  • 5.1.3 Asegúrate de que los permisos en /etc/cron.hourly estén configurados - (Automatizado)
  • 5.1.4 Asegúrate de que los permisos en /etc/cron.daily estén configurados - (Automatizado)
  • 5.1.5 Asegúrate de que los permisos en /etc/cron.weekly estén configurados - (Automatizado)
  • 5.1.6 Asegúrate de que los permisos en /etc/cron.monthly estén configurados - (Automatizado)
  • 5.1.7 Asegúrate de que los permisos en /etc/cron.d estén configurados (Automatizado)
  • 5.1.8 Asegúrate de que cron esté restringido a usuarios autorizados (Automatizado)
  • 5.1.9 Asegúrate de que at esté restringido a usuarios autorizados (Automatizado)

5.2 Configurar el Servidor SSH

  • 5.2.1 Asegúrate de que los permisos en /etc/ssh/sshd_config estén configurados - (Automatizado)
  • 5.2.2 Asegúrate de que los permisos en los archivos de claves privadas del host SSH estén configurados - (Automatizado)
  • 5.2.3 Asegúrate de que los permisos en los archivos de claves públicas del host SSH estén configurados - (Automatizado)
  • 5.2.4 Asegúrate de que el nivel de registro de SSH sea apropiado (Automatizado)
  • 5.2.5 Asegúrate de que el reenvío de X11 en SSH esté deshabilitado (Automatizado)
  • 5.2.6 Asegúrate de que SSH MaxAuthTries esté configurado en 4 o menos (Automatizado)
  • 5.2.7 Asegúrate de que SSH IgnoreRhosts esté habilitado (Automatizado)
  • 5.2.8 Asegúrate de que la Autenticación Basada en Host en SSH esté deshabilitada (Automatizado)
  • 5.2.9 Asegúrate de que el inicio de sesión de root a través de SSH esté deshabilitado (Automatizado)
  • 5.2.10 Asegúrate de que SSH PermitEmptyPasswords esté deshabilitado (Automatizado)
  • 5.2.11 Asegúrate de que SSH PermitUserEnvironment esté deshabilitado (Automatizado)
  • 5.2.12 Asegúrate de que solo se utilicen algoritmos fuertes de cifrado (Automatizado)
  • 5.2.13 Asegúrate de que solo se utilicen algoritmos MAC fuertes (Automatizado)
  • 5.2.14 Asegúrate de que solo se utilicen algoritmos de intercambio de claves fuertes - (Automatizado)
  • 5.2.15 Asegúrate de que el intervalo de tiempo de espera de inactividad de SSH esté configurado (Automatizado)
  • 5.2.16 Asegúrate de que el tiempo de gracia de inicio de sesión SSH esté configurado en un minuto o menos - (Automatizado)
  • 5.2.17 Asegúrate de que el acceso SSH esté limitado (Automatizado)
  • 5.2.18 Asegúrate de que el banner de advertencia SSH esté configurado (Automatizado)
  • 5.2.19 Asegúrate de que SSH PAM esté habilitado (Automatizado)
  • 5.2.20 Asegúrate de que SSH AllowTcpForwarding esté deshabilitado (Automatizado)
  • 5.2.21 Asegúrate de que SSH MaxStartups esté configurado (Automatizado)
  • 5.2.22 Asegúrate de que las sesiones SSH estén limitadas (Automatizado)

5.3 Configurar PAM

  • 5.3.1 Asegúrate de que se configuren los requisitos para la creación de contraseñas - (Automatizado)
  • 5.3.2 Asegúrate de que exista un bloqueo para intentos fallidos de contraseña - (Automatizado)
  • 5.3.3 Asegúrate de que la reutilización de contraseñas esté limitada (Automatizado)
  • 5.3.4 Asegúrate de que el algoritmo de hash de la contraseña sea SHA-512 (Automatizado)

5.4 Cuentas de Usuario y Entorno

  • 5.4.1 Establecer Parámetros de la Suite de Contraseñas de Sombra
  • 5.4.1.1 Asegúrate de que la expiración de contraseñas sea de 365 días o menos (Automatizado)
  • 5.4.1.2 Asegúrate de que se configuren días mínimos entre cambios de contraseña - (Automatizado)
  • 5.4.1.3 Asegúrate de que los días de advertencia de expiración de contraseña sean 7 o más - (Automatizado)
  • 5.4.1.4 Asegúrate de que el bloqueo de contraseñas inactivas sea de 30 días o menos (Automatizado)
  • 5.4.1.5 Asegúrate de que la fecha del último cambio de contraseña de todos los usuarios esté en el pasado - (Automatizado)
  • 5.4.2 Asegúrate de que las cuentas del sistema estén aseguradas (Automatizado)
  • 5.4.3 Asegúrate de que el grupo predeterminado para la cuenta root sea GID 0 (Automatizado)
  • 5.4.4 Asegúrate de que la umask predeterminada del usuario sea 027 o más restrictiva - (Automatizado)
  • 5.4.5 Asegúrate de que el tiempo de espera de shell de usuario predeterminado sea de 900 segundos o menos - (Automatizado)
  • 5.5 Asegúrate de que el inicio de sesión de root esté restringido a la consola del sistema (Manual)
  • 5.6 Asegúrate de que el acceso al comando su esté restringido (Automatizado)

6 Mantenimiento del Sistema

  • 6.1 Permisos de Archivos del Sistema
  • 6.1.1 Auditar permisos de archivos del sistema (Manual)
  • 6.1.2 Asegúrate de que los permisos en /etc/passwd estén configurados (Automatizado)
  • 6.1.3 Asegúrate de que los permisos en /etc/gshadow- estén configurados (Automatizado)
  • 6.1.4 Asegúrate de que los permisos en /etc/shadow estén configurados (Automatizado)
  • 6.1.5 Asegúrate de que los permisos en /etc/group estén configurados (Automatizado)
  • 6.1.6 Asegúrate de que los permisos en /etc/passwd- estén configurados (Automatizado)
  • 6.1.7 Asegúrate de que los permisos en /etc/shadow- estén configurados (Automatizado)
  • 6.1.8 Asegúrate de que los permisos en /etc/group- estén configurados (Automatizado)
  • 6.1.9 Asegúrate de que los permisos en /etc/gshadow estén configurados (Automatizado)
  • 6.1.10 Asegúrate de que no existan archivos escribibles por el mundo (Automatizado)
  • 6.1.11 Asegúrate de que no existan archivos o directorios sin propietario (Automatizado)
  • 6.1.12 Asegúrate de que no existan archivos o directorios sin grupo (Automatizado)
  • 6.1.13 Auditar ejecutables SUID (Manual)
  • 6.1.14 Auditar ejecutables SGID (Manual)

6.2 Configuraciones de Usuario y Grupo

  • 6.2.1 Asegúrate de que los campos de contraseña no estén vacíos (Automatizado)
  • 6.2.2 Asegúrate de que root sea la única cuenta UID 0 (Automatizado)
  • 6.2.3 Asegúrate de que la integridad de PATH de root (Automatizado)
  • 6.2.4 Asegúrate de que todos los directorios de inicio de los usuarios existan (Automatizado)
  • 6.2.5 Asegúrate de que los permisos de los directorios de inicio de los usuarios sean 750 o más restrictivos (Automatizado)
  • 6.2.6 Asegúrate de que los usuarios sean propietarios de sus directorios de inicio (Automatizado)
  • 6.2.7 Asegúrate de que los archivos ocultos de los usuarios no sean accesibles por grupos o el mundo - (Automatizado)
  • 6.2.8 Asegúrate de que no existan archivos .forward en usuarios (Automatizado)
  • 6.2.9 Asegúrate de que no existan archivos .netrc en usuarios (Automatizado)
  • 6.2.10 Asegúrate de que los archivos .netrc de los usuarios no sean accesibles por grupo o el mundo - (Automatizado)
  • 6.2.11 Asegúrate de que no existan archivos .rhosts en usuarios (Automatizado)
  • 6.2.12 Asegúrate de que todos los grupos en /etc/passwd existan en /etc/group - (Automatizado)
  • 6.2.13 Asegúrate de que no existan UIDs duplicados (Automatizado)
  • 6.2.14 Asegúrate de que no existan GIDs duplicados (Automatizado)
  • 6.2.15 Asegúrate de que no existan nombres de usuario duplicados (Automatizado)
  • 6.2.16 Asegúrate de que no existan nombres de grupo duplicados (Automatizado)
  • 6.2.17 Asegúrate de que el grupo de sombra esté vacío (Automatizado)

Resolución de Problemas

  • Si deseas ejecutar el playbook en la misma máquina, asegúrate de agregar esto a la tarea de ejecución:
- hosts: 127.0.0.1
  connection: local
  • Si enfrentas problemas al ejecutar, intenta ejecutar el playbook en otra ruta, como /srv/.
  • Para errores como este stderr: chage: user 'ubuntu' does not exist in /etc/passed, asegúrate de actualizar la configuración en CIS-Ubuntu-20.04-Ansible/defaults/main.yml

Licencia

LICENCIA PÚBLICA GENERAL GNU

Información del Autor

El rol fue desarrollado originalmente por Ali Saleh Baker.

Cuando contribuyas a este repositorio, por favor discute primero el cambio que deseas hacer a través de un issue en GitHub, correo electrónico o mediante otros canales conmigo :)

Instalar
ansible-galaxy install ryezone_labs.ansible_cis_ubuntu_2004
Licencia
gpl-3.0
Descargas
152
Propietario