Documentar el estado real de un servidor Linux puede obligar a recorrer lsblk, ss, systemctl, sysctl, journalctl, sshd, auditctl y varias herramientas más. Cat-ServerFullReport intenta reunir ese trabajo en un único script Bash: recopila actualmente 41 secciones del sistema, aplica 14 grupos de comprobaciones y genera informes HTML, JSON y Markdown sin instalar Python, jq ni módulos adicionales. El proyecto se distribuye con licencia MIT y su autor lo define todavía como una prueba de concepto funcional.
Las claves de Cat-ServerFullReport en 20 segundos
- El script crea un inventario as-built y un health check de servidores Linux.
- Recopila 41 secciones y aplica 14 grupos de reglas con resultados
CRIT,WARN,INFOyOK. - Funciona en modo de solo lectura y no requiere Python ni
jq. - Produce informes HTML, JSON y Markdown.
- Ya se ha probado en Ubuntu, Debian, RHEL, CentOS Stream y openSUSE Leap.
El proyecto es obra de Kike Muller y nace como equivalente para Linux de Get-ServerFullReport, una herramienta anterior desarrollada con PowerShell para servidores Windows. Ambos comparten la misma idea: reducir el tiempo empleado en recopilar información y, sobre todo, evitar que la ausencia de un dato termine convertida en una conclusión incorrecta.
Esta última decisión es especialmente interesante en una herramienta de auditoría. Si Cat-ServerFullReport no puede comprobar un parámetro, no lo clasifica automáticamente como correcto ni genera un resultado sobre información que no ha conseguido leer. En determinadas secciones, por tanto, ejecutarlo sin privilegios puede producir menos información, pero no debería transformar esa falta de acceso en un OK.
De 41 fuentes de información a un único informe
La administración de Linux dispone de herramientas muy potentes, pero normalmente especializadas.
lsblk permite estudiar dispositivos de bloques; ss, conexiones y puertos; systemctl, servicios; journalctl, eventos registrados por systemd; sysctl, parámetros del kernel; y sshd -T, la configuración efectiva del servidor SSH.
El problema aparece cuando alguien necesita documentar un servidor completo.
Cat-ServerFullReport automatiza esa recopilación y organiza actualmente 41 secciones agrupadas por sistema, almacenamiento, red, seguridad, TLS, programación de tareas, salud, plataforma y mecanismos de protección.
Entre los datos que puede recopilar se encuentran el sistema operativo y el kernel, servicios de systemd, paquetes instalados, discos y particiones, uso del almacenamiento, interfaces IPv4, rutas, puertos abiertos, usuarios locales, cuentas con UID 0, miembros de grupos administrativos, política de contraseñas, binarios SUID, capabilities, SELinux o AppArmor, firewall y parámetros de endurecimiento del kernel.
También revisa certificados, configuración TLS de OpenSSL, tareas cron, temporizadores de systemd, errores recientes del journal, intentos fallidos de inicio de sesión, procesos con mayor consumo de memoria, información SMART de discos y apagados inesperados.
La parte de plataforma amplía el inventario con hardware, servidores web, Samba, NFS, sincronización NTP, intérpretes de Python, entornos virtuales, repositorios Git y contenedores Docker, además de detectar determinados agentes de antivirus, EDR y copias de seguridad.
No todos esos componentes tienen que estar instalados. Cuando un rol no existe, el informe puede dejar constancia de ello en lugar de eliminar la sección.
El informe no se limita a volcar comandos
La diferencia respecto a ejecutar una colección de comandos y guardar su salida está en el motor de comprobaciones.
Cat-ServerFullReport dispone actualmente de 14 grupos de evaluación. Los hallazgos se clasifican en cuatro niveles:
| Estado | Interpretación |
|---|---|
CRIT | Hallazgo considerado crítico por las reglas |
WARN | Situación que requiere revisión |
INFO | Información relevante sin penalización |
OK | Comprobación superada con datos verificables |
Cada hallazgo puede incorporar categoría, evidencia, recomendación y una referencia asociada a controles CIS o ISO 27001. Eso permite que el informe funcione no solo como inventario, sino como primera ayuda para revisar la configuración.
Conviene establecer aquí un límite importante: el resultado del script no equivale por sí mismo a una certificación CIS o ISO 27001. Las referencias sirven para relacionar comprobaciones con controles, mientras una auditoría formal tiene un alcance y unos requisitos mucho mayores.
El proyecto utiliza además una puntuación de salud que comienza en 100 puntos. Cada resultado CRIT resta 12 y cada WARN, cuatro; los INFO no modifican la puntuación. Es una métrica diseñada por el propio proyecto para resumir sus hallazgos, no una puntuación oficial de CIS o ISO.
La precaución con los falsos positivos ha llevado incluso a introducir excepciones concretas. El README explica el caso de los montajes de solo lectura de Snap, que pueden mostrar un 100 % de ocupación por diseño. Tratarlos como una partición convencional provocaba varios falsos críticos en Ubuntu, por lo que ahora quedan excluidos de esa evaluación.
Bash, un único archivo y sin agentes instalados
El proyecto está escrito en Bash 4.0 o posterior y deliberadamente evita depender de Python o jq.
La decisión busca que el administrador pueda copiar un único archivo al servidor y ejecutarlo sin desplegar un agente permanente ni preparar previamente un entorno de ejecución.
Su utilización básica queda reducida a algo similar a:
sudo ./cat-serverfullreport -o /tmp
El resultado predeterminado es un documento HTML autocontenido, con CSS y JavaScript incluidos en el propio archivo.
También puede solicitarse simultáneamente:
sudo ./cat-serverfullreport --format HTML,JSON,MD -o /tmpLenguaje del código: JavaScript (javascript)
Los tres formatos persiguen finalidades distintas. HTML está pensado para revisión humana; Markdown puede trasladarse a documentación, wikis o incidencias; y JSON proporciona una salida estructurada que puede utilizarse posteriormente para automatización, inventarios o una base de datos de gestión de configuración (CMDB).
El esquema JSON mantiene además compatibilidad conceptual con Get-ServerFullReport para Windows mediante estructuras como Metadata, Capabilities, Findings, FindingsSummary y Sections.
Una particularidad técnica es que los valores recogidos dentro de Data y Findings se almacenan como cadenas. Es una decisión deliberada para evitar que Bash produzca JSON inválido al encontrarse con valores como N/D, tamaños con unidades o campos vacíos.
Puede funcionar sin root, pero pierde visibilidad
El script es de solo lectura, aunque su autor recomienda ejecutarlo mediante sudo.
La diferencia no consiste en que sin root deje necesariamente de funcionar. Lo que ocurre es que Linux restringe información sensible a los usuarios sin privilegios.
Sin permisos suficientes, por ejemplo, puede resultar imposible obtener las reglas completas del firewall, la política de auditd, números de serie mediante dmidecode, determinados datos SMART o identificar el proceso propietario de algunos puertos.
La herramienta registra esas limitaciones en vez de sustituirlas por resultados aparentemente satisfactorios.
Ese comportamiento responde a una de las reglas centrales del proyecto: no afirmar nada cuando la información necesaria no ha podido comprobarse.
También se han tenido que resolver diferencias entre distribuciones. Las pruebas descritas por el proyecto descubrieron, por ejemplo, problemas relacionados con firewalld en RHEL, la interpretación de los códigos de retorno de dnf, la consulta de actualizaciones con zypper y herramientas administrativas situadas en /usr/sbin que no aparecían en el PATH de usuarios sin privilegios en Debian y Ubuntu.
Es precisamente el tipo de detalle que complica escribir una herramienta de inventario Linux que pretenda funcionar más allá de una única distribución.
Probado ya en varias familias Linux, pero todavía es una PoC
El estado actual del proyecto se identifica como v0.1.0-slice y su documentación deja claro que continúa siendo una proof of concept (PoC), no un producto terminado.
Según las pruebas documentadas, se ha ejecutado sobre Ubuntu 24.04 y 26.04, Debian 12, CentOS Stream 9, RHEL 10.2 y openSUSE Leap 15.6.
Rocky Linux, AlmaLinux, Fedora, SLES y openSUSE Tumbleweed todavía no figuran como probados directamente. Alpine y Arch tienen compatibilidad parcial, entre otras razones porque la comprobación de actualizaciones pendientes mediante apk y pacman aún no está implementada.
También quedan capacidades de la versión Windows por trasladar.
Entre ellas están la exportación CSV, la comparación con informes anteriores para detectar cambios o drift, la ejecución sobre varios servidores desde una misma operación y el muestreo de contadores de rendimiento.
Actualmente la auditoría de un servidor remoto se realiza copiando el script mediante SSH, ejecutándolo en la máquina y recuperando posteriormente el informe. No existe todavía un modo remoto nativo equivalente a una ejecución centralizada contra numerosos hosts.
--redact prepara una copia menos sensible para compartir
Un inventario completo de un servidor puede convertirse por sí mismo en información delicada.
Direcciones internas, usuarios, puertos, rutas y números de serie ofrecen una fotografía bastante detallada de la máquina. Por eso Cat-ServerFullReport incorpora la opción --redact.
Al activarla se enmascaran direcciones IPv4 e IPv6, nombres de cuentas, rutas personales, números de serie, direcciones MAC y determinados hashes.
La herramienta intenta mantener, sin embargo, información necesaria para interpretar el informe.
Las direcciones 0.0.0.0 y 127.0.0.1, por ejemplo, permanecen visibles porque permiten diferenciar un servicio expuesto en todas las interfaces de otro limitado al propio equipo. Las rutas del sistema y las versiones del kernel y de los paquetes tampoco se ocultan.
El propio proyecto advierte de que un informe generado sin esta opción puede contener información sensible y debe tratarse como tal.
La herramienta tampoco realiza conexiones con servicios externos durante su funcionamiento normal. La excepción documentada aparece cuando se solicita expresamente --include-missing-updates, ya que entonces necesita consultar los repositorios que el servidor tenga configurados.
Cat-ServerFullReport se encuentra todavía en una fase temprana, pero plantea un enfoque reconocible para cualquier administrador que haya tenido que documentar servidores heredados: primero obtener una fotografía reproducible de lo que realmente existe y después dedicar el tiempo a interpretar los resultados.
La utilidad dependerá de cómo evolucione su compatibilidad, sus reglas y la validación sobre más entornos Linux. Su planteamiento actual tiene además una ventaja práctica para auditorías puntuales: puede ejecutarse como un archivo Bash, producir la documentación y desaparecer del servidor sin dejar instalado un agente permanente.







