Luego de unos cuantos años, por requerimientos de mi trabajo, tuve que retomar un viejo proyecto
CheckListLinux,
el cual tiene como objetivo verificar el
hardening de un servidor
RedHat o alguno de sus derivados comparando su configuración con mejores
prácticas de seguridad.
Cabe aclarar que debía cumplir con ciertas pautas ya establecidas. Por este motivo no utilice "
Lynis" para la tarea.
El proyecto está desarrollado en PERL y cuenta con 41 scripts que
pertenecen a las fases que son ejecutadas durante el
análisis.
Las fases se dividen de la siguiente forma:
- Fase 0.0 -- Información del Equipo
- Fase 1.0 -- Información de los usuarios del sistema
- Fase 1.1 -- Comprobación de Usuarios/Grupos
- Fase 1.2 -- Verificar que no existan cuentas con password vacías
- Fase 1.3 -- Verificar que no existan usuarios con ID 0
- Fase 1.4 -- Verificación del archivo login.defs
- Fase 1.5 -- Últimos usuarios agregados
- Fase 1.6 -- Configuración PAM
- Fase 1.7 -- Últimos usuarios conectados
- Fase 1.8 -- Últimos comandos ejecutados por los usuarios
- Fase 1.9 -- Relaciones de confianza
- Fase 1.10 -- Usuarios con acceso al sistema
- Fase 1.11 -- Verificar que no existan usuarios con Grupo ID 0
- Fase 2.0 -- Eventos mediante Syslog - AUTHPRIV
- Fase 2.1 -- Eventos mediante Rsyslog - AUTHPRIV
- Fase 3.0 -- Verificar permisos en archivos y directorios
- Fase 3.1 -- Verificación de Sticky Bit
- Fase 3.2 -- Verificación de archivos con permisos de escritura para todos los usuarios
- Fase 3.3 -- Verificación de suid/gsid
- Fase 3.4 -- Verificación de archivos sin usuario asignado y grupo
- Fase 4.0 -- Archivo de autenticación ftp
- Fase 5.0 -- Cierre de conexión automático
- Fase 6.0 -- Banner personalizado
- Fase 7.0 -- Verificación de la configuración del servicio ssh
- Fase 8.0 -- Verificación de SeLinux
- Fase 9.0 -- Verificación de IPTABLES
- Fase 10.0 -- Verificación de Servicios
- Fase 11.0 -- Verificación de Procesos
- Fase 12.0 -- Verificación de Conexiones
- Fase 13.0 -- Verificación de Hash de binarios
- Fase 14.0 -- Configuración de Sudoers
- Fase 15.0 -- Cron.Daily
- Fase 16.0 -- Versiones de softwares
- Fase 17.0 -- Configuración de Red
- Fase 17.1 -- Verificación de rutas
- Fase 17.2 -- Verificación configuración sysctl
- Fase 18.0 -- Verificar el nivel de inittab
- Fase 18.1 -- Verificar que no este activo ctrlaltdel en inittab
- Fase 19.0 -- Verificar configuración samba
- Fase 20.0 -- Verificar sincronización NTP
Comenzamos a describir el procedimiento de uso:
- Descargamos la herramienta: https://github.com/marcositu/redhatchecklist
- Luego debemos descomprimir el archivo "master.zip"
- Personalizamos algunos parámetros buscados.
- Modificar la línea "20" del archivo /libs/fase6.pl donde se encuentra la variable "$bannerpersona" con el valor "Cable" por algún string que se encuentra en el banner personalizado de su Compañía.
- Modificar la línea "29" del archivo /libs/fase7.pl donde se encuentra la variable "ListenAddress" con el valor 10.246 por las direcciones IP que deben estar configuradas.
- Luego, debemos copiar el archivo redhatchecklist.pl y el directorio /libs/ al servidor que será analizado.
- Una vez que tenemos los archivos en nuestro servidor, ejecutamos la herramienta para comenzar con el análisis.
[root@miserver]# perl redhatchecklist.pl
- El último paso es copiar a nuestra computadora los 2 reportes HTML
que nos generó la herramienta en la misma carpeta que tenemos los
siguientes archivos y directorios:
- /src/
- /vendor/
- demo.css
- sprite.png
Si alguna persona quiere ayudarme a optimizar/organizar o reprogramar el
"código" es bienvenida, como verán voluntad no me falto pero el código
no es el mejor logrado.
Fuente:
Marcositu