alivx.cis_ubuntu_20_04_ansible

<div align="center">
  <img src="https://raw.githubusercontent.com/alivx/CIS-Ubuntu-20.04-Ansible/master/files/header.png">
</div>

Ansible CIS Ubuntu 20.04 LTS Endurecimiento V1.1.0 Última [![Estado de Construcción](https://travis-ci.com/alivx/CIS-Ubuntu-20.04-Ansible.svg?branch=master)](https://travis-ci.com/alivx/CIS-Ubuntu-20.04-Ansible)
=========

Ubuntu endurecido según CIS: prevención de ciberataques y malware para sistemas críticos.
Las pautas de CIS aseguran tus sistemas eliminando:
1. programas no seguros.
2. deshabilitando sistemas de archivos no utilizados.
3. deshabilitando puertos o servicios innecesarios.
4. auditando operaciones privilegiadas.
5. restringiendo privilegios administrativos.

Las recomendaciones de 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 según un estándar conocido públicamente es un criterio que los auditores buscan. Las pautas de CIS son, a menudo, una opción de endurecimiento del sistema recomendada por los auditores para industrias que requieren cumplimiento de PCI-DSS y HIPPA, como la banca, telecomunicaciones y atención médica. Si intentas obtener cumplimiento con un estándar de seguridad aceptado por la industria, como PCI DSS, APRA o ISO 27001, debes demostrar que has aplicado estándares de endurecimiento documentados a todos los sistemas dentro del alcance de evaluación.

Los estándares CIS de Ubuntu se organizan en diferentes perfiles, a saber, **‘Nivel 1’** y **‘Nivel 2’**, destinados para entornos de servidor y estaciones de trabajo.

**Un perfil de Nivel 1** está destinado a ser una forma práctica y prudente de asegurar un sistema sin un gran impacto en el rendimiento.
* Deshabilitar sistemas de archivos no necesarios,
* Restringir permisos de usuario a archivos y directorios,
* Deshabilitar servicios no necesarios.
* Configurar cortafuegos de red.

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

* Crear particiones separadas,
* Auditar operaciones privilegiadas.

La herramienta de endurecimiento de Ubuntu CIS te permite seleccionar el nivel deseado de endurecimiento según un perfil (Nivel 1 o Nivel 2) y el entorno de trabajo (servidor o estación de trabajo) para un sistema.
Ejemplo:
```Bash
ansible-playbook -i inventory 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 basándome en

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

Verificar directorio de ejemplo


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 de Benchmark CIS gratis desde esta URL: Benchmark Gratis

Para empezar a trabajar en este rol solo necesitas instalar Ansible. Instalación de 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 estás considerando aplicar este rol a algún servidor, debes tener un conocimiento básico del Benchmark CIS y una apreciación por el impacto que puede tener en un sistema.
  • Leer y cambiar valores predeterminados configurables.

Ejemplos de configuración que deberían ser considerados de inmediato para exclusión:

5.1.8 Asegurar que cron esté restringido a usuarios autorizados y 5.2.17 Asegurar que el acceso SSH está limitado, que por defecto limitan efectivamente el acceso al host (incluso a través de ssh).

Por ejemplo:

  • CIS-Ubuntu-20.04-Ansible/defaults/main.yml

#Sección 5
#5.1.8 Asegurar que cron esté restringido a usuarios autorizados
allowed_hosts: "ALL: 0.0.0.0/0.0.0.0, 192.168.2.0/255.255.255.0"
# 5.2.17 Asegurar que el acceso SSH está limitado
allowed_users: ali saleh baker root #Coloca None o lista de usuarios separados por espacio

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


Dependencias

  • Versión de Ansible > 2.9

Ejemplo de Playbook

Aquí abajo hay 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 quieres ejecutar todas las etiquetas usa el siguiente comando:

ansible-playbook -i [archivo_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 tareas. Por ejemplo, si ejecutas la etiqueta 4.1.1.2 Asegurar que el servicio auditd esté habilitado antes de ejecutar 4.1.1.1 Asegurar que auditd esté instalado, obtendrás un error en el tiempo de ejecución.

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

  • Asegúrate de seleccionar un solo servicio, para mí uso ntp, pero puedes usar otro servicio 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 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 allowed_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 Asegurar que el montaje de sistemas de archivos cramfs esté deshabilitado (Automatizado)
  • 1.1.1.2 Asegurar que el montaje de sistemas de archivos freevxfs esté deshabilitado - (Automatizado)
  • 1.1.1.3 Asegurar que el montaje de sistemas de archivos jffs2 esté deshabilitado (Automatizado)
  • 1.1.1.4 Asegurar que el montaje de sistemas de archivos hfs esté deshabilitado (Automatizado)
  • 1.1.1.5 Asegurar que el montaje de sistemas de archivos hfsplus esté deshabilitado - (Automatizado)
  • 1.1.1.6 Asegurar que el montaje de sistemas de archivos udf esté deshabilitado (Automatizado)
  • 1.1.1.7 Asegurar que el montaje de sistemas de archivos FAT sea limitado (Manual)
  • 1.1.2 Asegurar que /tmp está configurado (Automatizado)
  • 1.1.3 Asegurar que la opción nodev esté establecida en la partición /tmp (Automatizado)
  • 1.1.4 Asegurar que la opción nosuid esté establecida en la partición /tmp (Automatizado)
  • 1.1.5 Asegurar que la opción noexec esté establecida en la partición /tmp (Automatizado)
  • 1.1.6 Asegurar que /dev/shm esté configurado (Automatizado)
  • 1.1.7 Asegurar que la opción nodev esté establecida en la partición /dev/shm (Automatizado)
  • 1.1.8 Asegurar que la opción nosuid esté establecida en la partición /dev/shm (Automatizado)
  • 1.1.9 Asegurar que la opción noexec esté establecida en la partición /dev/shm (Automatizado)
  • 1.1.10 Asegurar que exista una partición separada para /var (Automatizado)
  • 1.1.11 Asegurar que exista una partición separada para /var/tmp (Automatizado)
  • 1.1.12 Asegurar que la opción nodev esté establecida en la partición /var/tmp (Automatizado)
  • 1.1.13 Asegurar que la opción nosuid esté establecida en la partición /var/tmp (Automatizado)
  • 1.1.14 Asegurar que la opción noexec esté establecida en la partición /var/tmp (Automatizado)
  • 1.1.15 Asegurar que exista una partición separada para /var/log (Automatizado)
  • 1.1.16 Asegurar que exista una partición separada para /var/log/audit - (Automatizado)
  • 1.1.17 Asegurar que exista una partición separada para /home (Automatizado)
  • 1.1.18 Asegurar que la opción nodev esté establecida en la partición /home (Automatizado)
  • 1.1.19 Asegurar que la opción nodev esté establecida en las particiones de medios extraíbles (Manual)
  • 1.1.20 Asegurar que la opción nosuid esté establecida en las particiones de medios extraíbles - (Manual)
  • 1.1.21 Asegurar que la opción noexec esté establecida en las particiones de medios extraíbles - (Manual)
  • 1.1.22 Asegurar que se establezca el bit sticky en todos los directorios escribibles por todos - (Automatizado)
  • 1.1.23 Deshabilitar Automontaje (Automatizado)
  • 1.1.24 Deshabilitar Almacenamiento USB (Automatizado)

1.2 Configurar Actualizaciones de Software

  • 1.2.1 Asegurar que los repositorios del gestor de paquetes estén configurados (Manual)
  • 1.2.2 Asegurar que se configuren las claves GPG (Manual)

1.3 Comprobación de Integridad del Sistema de Archivos

  • 1.3.1 Asegurar que AIDE esté instalado (Automatizado)
  • 1.3.2 Asegurar que se verifique regularmente la integridad del sistema de archivos (Automatizado)

1.4 Configuración de Arranque Seguro

  • 1.4.1 Asegurar que la contraseña del gestor de arranque esté establecida (Automatizado)
  • 1.4.2 Asegurar que los permisos en la configuración del gestor de arranque estén configurados (Automatizado)
  • 1.4.3 Asegurar que se requiera autenticación para el modo de un solo usuario (Automatizado)

1.5 Endurecimiento Adicional del Proceso

  • 1.5.1 Asegurar que el soporte XD/NX esté habilitado (Automatizado)
  • 1.5.2 Asegurar que la aleatorización del espacio de direcciones (ASLR) esté habilitada (Automatizado)
  • 1.5.3 Asegurar que prelink esté deshabilitado (Automatizado)
  • 1.5.4 Asegurar que se restrinjan los volcados de memoria (Automatizado)

1.6 Control de Acceso Obligatorio

  • 1.6.1 Configurar AppArmor
  • 1.6.1.1 Asegurar que AppArmor esté instalado (Automatizado)
  • 1.6.1.2 Asegurar que AppArmor esté habilitado en la configuración del gestor de arranque (Automatizado)
  • 1.6.1.3 Asegurar que todos los perfíles de AppArmor están en modo de cumplimiento o queja (Automatizado)
  • 1.6.1.4 Asegurar que todos los perfiles de AppArmor están aplicándose (Automatizado)

1.7 Banners de Advertencia

  • 1.7.1.1 Asegurar que el mensaje del día esté configurado correctamente (Automatizado)
  • 1.7.1.2 Asegurar que el banner de advertencia de inicio de sesión local esté configurado correctamente (Automatizado)
  • 1.7.1.3 Asegurar que el banner de advertencia de inicio de sesión remoto esté configurado correctamente (Automatizado)
  • 1.7.1.4 Asegurar que los permisos en /etc/motd estén configurados (Automatizado)
  • 1.7.1.5 Asegurar que los permisos en /etc/issue estén configurados (Automatizado)
  • 1.7.1.6 Asegurar que los permisos en /etc/issue.net estén configurados (Automatizado)

1.8 Gestor de Pantalla GNOME

  • 1.8.1 Asegurar que el Gestor de Pantalla GNOME esté removido (Manual)
  • 1.8.2 Asegurar que el banner de inicio de sesión de GDM esté configurado (Manual)
  • 1.8.3 Asegurar que la lista de usuarios deshabilitada esté habilitada (Manual)
  • 1.8.4 Asegurar que XDCMP no esté habilitado (Manual)

1.9 Asegurar que se instalen actualizaciones, parches y software de seguridad adicional (Automatizado)

2 Servicios

  • 2.1 Servicios inetd
  • 2.1.1 Asegurar que xinetd no esté instalado (Automatizado)
  • 2.1.2 Asegurar 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 Asegurar que se utilice la sincronización del tiempo (Automatizado)
  • 2.2.1.2 Asegurar que se configure systemd-timesyncd (Manual)
  • 2.2.1.3 Asegurar que se configure chrony (Automatizado)
  • 2.2.1.4 Asegurar que se configure ntp (Automatizado)
  • 2.2.2 Asegurar que el Sistema de Ventanas X no esté instalado (Automatizado)
  • 2.2.3 Asegurar que el Servidor Avahi no esté instalado (Automatizado)
  • 2.2.4 Asegurar que CUPS no esté instalado (Automatizado)
  • 2.2.5 Asegurar que el Servidor DHCP no esté instalado (Automatizado)
  • 2.2.6 Asegurar que el servidor LDAP no esté instalado (Automatizado)
  • 2.2.7 Asegurar que NFS no esté instalado (Automatizado)
  • 2.2.8 Asegurar que el Servidor DNS no esté instalado (Automatizado)
  • 2.2.9 Asegurar que el Servidor FTP no esté instalado (Automatizado)
  • 2.2.10 Asegurar que el servidor HTTP no esté instalado (Automatizado)
  • 2.2.11 Asegurar que el servidor IMAP y POP3 no esté instalado (Automatizado)
  • 2.2.12 Asegurar que Samba no esté instalado (Automatizado)
  • 2.2.13 Asegurar que el Servidor Proxy HTTP no esté instalado (Automatizado)
  • 2.2.14 Asegurar que el Servidor SNMP no esté instalado (Automatizado)
  • 2.2.15 Asegurar que el agente de transferencia de correo esté configurado para modo local - (Automatizado)
  • 2.2.16 Asegurar que el servicio rsync no esté instalado (Automatizado)
  • 2.2.17 Asegurar que el Servidor NIS no esté instalado (Automatizado)

2.3 Clientes de Servicio

  • 2.3.1 Asegurar que el Cliente NIS no esté instalado (Automatizado)
  • 2.3.2 Asegurar que el cliente rsh no esté instalado (Automatizado)
  • 2.3.3 Asegurar que el cliente talk no esté instalado (Automatizado)
  • 2.3.4 Asegurar que el cliente telnet no esté instalado (Automatizado)
  • 2.3.5 Asegurar que el cliente LDAP no esté instalado (Automatizado)
  • 2.3.6 Asegurar que RPC no esté instalado (Automatizado)
  • 2.4 Asegurar que se eliminen o enmascaren los servicios no esenciales (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 Asegurar que las interfaces inalámbricas estén deshabilitadas (Automatizado)

3.2 Parámetros de Red (Solo Host)

  • 3.2.1 Asegurar que el envío de redirección de paquetes esté deshabilitado (Automatizado)
  • 3.2.2 Asegurar que el reenvío de IP esté deshabilitado (Automatizado)

3.3 Parámetros de Red (Host y Router)

  • 3.3.1 Asegurar que no se acepten paquetes de origen dirigido (Automatizado)
  • 3.3.2 Asegurar que no se acepten redirecciones ICMP (Automatizado)
  • 3.3.3 Asegurar que no se acepten redirecciones ICMP seguras (Automatizado)
  • 3.3.4 Asegurar que se registren paquetes sospechosos (Automatizado)
  • 3.3.5 Asegurar que las solicitudes ICMP de difusión se ignoren (Automatizado)
  • 3.3.6 Asegurar que se ignoren las respuestas ICMP falsas (Automatizado)
  • 3.3.7 Asegurar que se habilite el Filtrado de Ruta Inversa (Automatizado)
  • 3.3.8 Asegurar que las Cookies TCP SYN estén habilitadas (Automatizado)
  • 3.3.9 Asegurar que no se acepten anuncios de enrutador IPv6 (Automatizado)

3.4 Protocolos de Red Inusuales

  • 3.4.1 Asegurar que DCCP esté deshabilitado (Automatizado)
  • 3.4.2 Asegurar que SCTP esté deshabilitado (Automatizado)
  • 3.4.3 Asegurar que RDS esté deshabilitado (Automatizado)
  • 3.4.4 Asegurar que TIPC esté deshabilitado (Automatizado)

3.5 Configuración del Cortafuegos

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

4 Registro y Auditoría

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

4.2 Configurar Registro

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

5 Acceso, Autenticación y Autorización

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

5.2 Configurar Servidor SSH

  • 5.2.1 Asegurar que los permisos en /etc/ssh/sshd_config estén configurados - (Automatizado)
  • 5.2.2 Asegurar que los permisos en los archivos de clave privada del host SSH estén - configurados (Automatizado)
  • 5.2.3 Asegurar que los permisos en los archivos de clave pública del host SSH estén configurados - (Automatizado)
  • 5.2.4 Asegurar que el nivel de registro SSH sea apropiado (Automatizado)
  • 5.2.5 Asegurar que el reenvío X11 SSH esté deshabilitado (Automatizado)
  • 5.2.6 Asegurar que SSH MaxAuthTries esté configurado en 4 o menos (Automatizado)
  • 5.2.7 Asegurar que SSH IgnoreRhosts esté habilitado (Automatizado)
  • 5.2.8 Asegurar que SSH HostbasedAuthentication esté deshabilitado (Automatizado)
  • 5.2.9 Asegurar que el inicio de sesión SSH como root esté deshabilitado (Automatizado)
  • 5.2.10 Asegurar que SSH PermitEmptyPasswords esté deshabilitado (Automatizado)
  • 5.2.11 Asegurar que SSH PermitUserEnvironment esté deshabilitado (Automatizado)
  • 5.2.12 Asegurar que solo se utilicen cifrados fuertes (Automatizado)
  • 5.2.13 Asegurar que solo se utilicen algoritmos MAC fuertes (Automatizado)
  • 5.2.14 Asegurar que solo se utilicen algoritmos de intercambio de claves fuertes - (Automatizado)
  • 5.2.15 Asegurar que el intervalo de tiempo de espera inactivo de SSH esté configurado (Automatizado)
  • 5.2.16 Asegurar que el tiempo de gracia de inicio de sesión SSH esté establecido en un minuto o menos - (Automatizado)
  • 5.2.17 Asegurar que el acceso SSH esté limitado (Automatizado)
  • 5.2.18 Asegurar que se configure un banner de advertencia SSH (Automatizado)
  • 5.2.19 Asegurar que SSH PAM esté habilitado (Automatizado)
  • 5.2.20 Asegurar que SSH AllowTcpForwarding esté deshabilitado (Automatizado)
  • 5.2.21 Asegurar que SSH MaxStartups esté configurado (Automatizado)
  • 5.2.22 Asegurar que SSH MaxSessions esté limitado (Automatizado)

5.3 Configurar PAM

  • 5.3.1 Asegurar que se configuren los requisitos de creación de contraseñas - (Automatizado)
  • 5.3.2 Asegurar que se configure el bloqueo por intentos fallidos de contraseña - (Automatizado)
  • 5.3.3 Asegurar que se limite el reuso de contraseñas (Automatizado)
  • 5.3.4 Asegurar que el algoritmo de hash de contraseñas sea SHA-512 (Automatizado)

5.4 Cuentas de Usuario y Entorno

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

6 Mantenimiento del Sistema

  • 6.1 Permisos del Archivo del Sistema
  • 6.1.1 Auditar permisos del archivo del sistema (Manual)
  • 6.1.2 Asegurar que los permisos en /etc/passwd estén configurados (Automatizado)
  • 6.1.3 Asegurar que los permisos en /etc/gshadow- estén configurados (Automatizado)
  • 6.1.4 Asegurar que los permisos en /etc/shadow estén configurados (Automatizado)
  • 6.1.5 Asegurar que los permisos en /etc/group estén configurados (Automatizado)
  • 6.1.6 Asegurar que los permisos en /etc/passwd- estén configurados (Automatizado)
  • 6.1.7 Asegurar que los permisos en /etc/shadow- estén configurados (Automatizado)
  • 6.1.8 Asegurar que los permisos en /etc/group- estén configurados (Automatizado)
  • 6.1.9 Asegurar que los permisos en /etc/gshadow estén configurados (Automatizado)
  • 6.1.10 Asegurar que no existan archivos escribibles por todos (Automatizado)
  • 6.1.11 Asegurar que no existan archivos o directorios sin dueño (Automatizado)
  • 6.1.12 Asegurar 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 Usuarios y Grupos

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

Solució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 otro camino, como /srv/.
  • Para errores como stderr: chage: user 'ubuntu' does not exist in /etc/passwd, asegúrate de actualizar la configuración bajo CIS-Ubuntu-20.04-Ansible/defaults/main.yml
TASK [CIS-Ubuntu-20.04-Ansible : 1.4.1 Asegurar que AIDE esté instalado] ***********************************************************************************************************************************************************************************************************fatal: [192.168.80.129]: FAILED! => {"cache_update_time": 1611229159, "cache_updated": false, "changed": false, "msg": "'/usr/bin/apt-get -y -o \"Dpkg::Options::=--force-confdef\" -o \"Dpkg::Options::=--force-confold\"      install 'nullmailer' 'aide-common' 'aide' -o APT::Install-Recommends=no' failed: E: Could not get lock /var/lib/dpkg/lock-frontend. It is held by process 5194 (unattended-upgr)\nE: Unable to acquire the dpkg frontend lock (/var/lib/dpkg/lock-frontend), is another process using it?\n", "rc": 100, "stderr": "E: Could not get lock /var/lib/dpkg/lock-frontend. It is held by process 5194 (unattended-upgr)\nE: Unable to acquire the dpkg frontend lock (/var/lib/dpkg/lock-frontend), is another process using it?\n", "stderr_lines": ["E: Could not get lock /var/lib/dpkg/lock-frontend. It is held by process 5194 (unattended-upgr)", "E: Unable to acquire the dpkg frontend lock (/var/lib/dpkg/lock-frontend), is another process using it?"], "stdout": "", "stdout_lines": []}
  • Para el error anterior, necesitas asegurarte de que no haya procesos apt ejecutándose en segundo plano, o debes esperar hasta que apt termine el proceso.
TASK [CIS-Ubuntu-20.04-Ansible : 5.4.1.1 Asegurar que la expiración de la contraseña sea de 365 días o menos | chage] ***************************************************************************************************************************************************************************failed: [192.168.80.129] (item=ubuntu) => {"ansible_loop_var": "item", "changed": true, "cmd": ["chage", "--maxdays", "300", "ubuntu"], "delta": "0:00:00.005478", "end": "2021-01-21 12:49:45.463615", "item": "ubuntu", "msg": "non-zero return code", "rc": 1, "start": "2021-01-21 12:49:45.458137", "stderr": "chage: user 'ubuntu' does not exist in /etc/passwd", "stderr_lines": ["chage: user 'ubuntu' does not exist in /etc/passwd"], "stdout": "", "stdout_lines": []}
  • Asegúrate de establecer el usuario correcto en defaults/main.yaml
TASK [CIS-Ubuntu-20.04-Ansible : Creando usuarios sin acceso administrativo] ***************************************************************************************************************
fatal: [golden]: FAILED! => {"msg": "crypt.crypt not supported on Mac OS X/Darwin, install passlib python module"}

Instala pip install passlib


Licencia

GNU LICENCIA PÚBLICA GENERAL

Información del Autor

El rol fue desarrollado originalmente por Ali Saleh Baker.

Al contribuir a este repositorio, por favor discute primero el cambio que deseas hacer a través de un problema en GitHub, email, o por otros canales conmigo :) ```

Instalar
ansible-galaxy install alivx.cis_ubuntu_20_04_ansible
Licencia
gpl-3.0
Descargas
402
Propietario
Everything