Puntuación de seguridad
La puntuación de seguridad es una nota opcional de la A a la F (y una puntuación de 0 a 100) que se muestra junto a los monitores en los que unas pocas comprobaciones dicen algo útil: hosts Linux y Windows con el agente, Proxmox VE y Proxmox Backup Server, Synology, OPNsense, sitios web y Active Directory. Los demás monitores no muestran nada.
Activarla
Sección titulada «Activarla»La puntuación está desactivada por defecto. Un administrador la activa en Ajustes → Cuenta y seguridad → Puntuación de seguridad. Una vez activada:
- cada monitor puntuado recibe una pequeña insignia con forma de escudo con su letra en la lista de monitores, y una insignia Security con la puntuación en su página;
- al hacer clic en la insignia se abre el informe del monitor: lo que falla, con la evidencia y la solución, lo que pasa, los pasos para mejorar la puntuación en este tipo de monitor y un enlace a la sección correspondiente más abajo.
Al desactivarla se ocultan las insignias, se detiene el cálculo periódico y
dejan de escribirse las series dumbmonit_security_score.
Cómo se calcula la puntuación
Sección titulada «Cómo se calcula la puntuación»DumbMonit nunca pide nada adicional al monitor para calcular la puntuación. Las comprobaciones leen los últimos valores que los colectores ya registraron (mirando 6 horas atrás), por lo que una puntuación no le cuesta nada al monitor.
Cada comprobación tiene una categoría (exposición, parches, autenticación, cifrado, copia de seguridad, configuración), una severidad que es su peso (critical 10, high 6, medium 3, low 1), un resultado (correcta, fallida o desconocida cuando el dato no se recopila), la evidencia, la solución y un enlace a la página del fabricante en la que se basa.
Puntuación = 100 × (peso de las comprobaciones correctas) ÷ (peso de las correctas + fallidas). Las comprobaciones desconocidas se muestran pero nunca se cuentan: una puntuación no debe bajar porque a una cuenta de monitorización le falte un privilegio, ni subir porque no se sepa nada. Un monitor cuyas comprobaciones son todas desconocidas no se puntúa.
| Nota | Puntuación | Palabra |
|---|---|---|
| A | 90–100 | Sólida |
| B | 75–89 | Buena |
| C | 60–74 | Aceptable |
| D | 40–59 | Débil |
| F | 0–39 | Mala |
Una comprobación crítica fallida limita la nota a C, sea cual sea la puntuación.
Historial y alertas
Sección titulada «Historial y alertas»Mientras la puntuación está activada, el servidor la recalcula cada 15 minutos
y la guarda como dumbmonit_security_score{target="<id>"} (y el número de
comprobaciones fallidas como dumbmonit_security_checks_failed). La usan dos
reglas integradas: Security score dropped (10 puntos o más por debajo del
mejor valor de las últimas 24 horas) y Security score low (por debajo de
40). Véase Reglas de alerta.
Comprobaciones y cómo mejorarlas
Sección titulada «Comprobaciones y cómo mejorarlas»Hosts Linux { #linux-hosts }
Sección titulada «Hosts Linux { #linux-hosts }»Máquinas con el agente. Las comprobaciones de SSH y del cortafuegos necesitan un agente de la misma versión que el servidor; con un agente más antiguo son desconocidas.
| Comprobación | Severidad | Dato |
|---|---|---|
| Security updates installed | high | actualizaciones de seguridad pendientes (donde el gestor de paquetes las distingue) |
| No pending updates | low | actualizaciones pendientes |
| No reboot pending | medium | reinicio necesario |
| SSH root login with a password refused | high | PermitRootLogin de sshd -T (prohibit-password pasa) |
| SSH accepts keys only | medium | PasswordAuthentication, y KbdInteractiveAuthentication con UsePAM |
| Host firewall filters inbound traffic | high | una cadena input de nftables o iptables que descarta o rechaza |
| SELinux enforcing | medium | modo de SELinux (desconocido donde SELinux no existe) |
| Container images up to date | medium | imagen más reciente en el registro (solo con contenedores) |
| No container image older than 180 days | low | antigüedad de la imagen (solo con contenedores) |
Para mejorarla:
- Instale las actualizaciones de seguridad pendientes y active después las
actualizaciones de seguridad automáticas:
unattended-upgradesen Debian y Ubuntu,dnf-automaticen Fedora y RHEL. - Reinicie tras las actualizaciones del kernel o de bibliotecas.
- Compruebe que su clave SSH funciona y luego establezca
PermitRootLogin no,PasswordAuthentication noyKbdInteractiveAuthentication noen/etc/ssh/sshd_configy recargue sshd. - Active un cortafuegos de host que descarte el tráfico entrante no
solicitado:
ufw enableen Ubuntu, firewalld en Fedora y RHEL, un conjunto de reglas nftables en el resto. - Mantenga SELinux en enforcing donde la distribución lo incluya; descargue con regularidad imágenes de contenedor más recientes.
Fuentes: CIS Controls, sshd_config(5), Red Hat — Using SELinux.
Hosts Windows { #windows-hosts }
Sección titulada «Hosts Windows { #windows-hosts }»Máquinas con el agente de Windows, de la misma versión que el servidor (se lee del registro; un agente más antiguo no informa de ninguna de estas).
| Comprobación | Severidad | Dato |
|---|---|---|
| Windows Firewall on for every profile | high | perfiles de dominio, privado y público (primero la directiva de grupo) |
| No reboot pending | medium | Windows Update o mantenimiento de componentes esperando un reinicio |
| Remote Desktop requires Network Level Authentication | high | pasa cuando el Escritorio remoto está desactivado |
| SMBv1 disabled | high | ajuste del servidor SMBv1 |
Para mejorarla:
- Instale las actualizaciones de Windows (Configuración → Windows Update) y reinicie cuando se le pida.
- Mantenga activado el Firewall de Windows Defender en los perfiles de dominio, privado y público.
- Si el Escritorio remoto está activado, exija la autenticación a nivel de red (NLA) y acceda a él por una VPN, nunca directamente desde internet.
- Elimine SMBv1:
Disable-WindowsOptionalFeature -Online -FeatureName SMB1Protocol.
Fuentes: Windows Firewall, SMBv1.
Proxmox VE { #proxmox-ve }
Sección titulada «Proxmox VE { #proxmox-ve }»| Comprobación | Severidad | Dato |
|---|---|---|
| Security updates installed | high | actualizaciones de seguridad pendientes por nodo (necesita Sys.Modify en el token; si no, desconocida) |
| Proxmox VE packages up to date | medium | paquetes de Proxmox actualizables por nodo |
| Running the installed kernel | medium | kernel más reciente instalado que el que se ejecuta |
| No test repository in use | medium | repositorios estándar habilitados |
| Package repositories correctly configured | medium | errores y avisos que Proxmox VE genera sobre los repositorios |
| Enterprise repository subscription | low | estado de la suscripción por nodo |
| Web interface certificate valid for 14+ days | medium | caducidad del certificado del nodo |
| Every guest is in a backup job | high | invitados no seleccionados por ningún trabajo de copia |
| Backup jobs succeed | high | último resultado de cada trabajo de copia |
Para mejorarla:
- Use un repositorio al que tenga derecho: enterprise con suscripción; si no,
pve-no-subscription; nuncapvetesten un nodo que importe. - Instale las actualizaciones desde el panel Updates del nodo y reinicie con el nuevo kernel.
- Ponga cada VM y contenedor en un trabajo de copia, idealmente hacia un Proxmox Backup Server, y corrija cualquier trabajo que falle.
- Sustituya el certificado web autofirmado por uno ACME.
Fuentes: System Software Updates, Package Repositories, Backup and Restore.
Proxmox Backup Server { #proxmox-backup-server }
Sección titulada «Proxmox Backup Server { #proxmox-backup-server }»| Comprobación | Severidad | Dato |
|---|---|---|
| System updates installed | high | actualizaciones pendientes (necesita Sys.Modify en /system) |
| Running the installed Backup Server version | medium | demonios que aún ejecutan la versión anterior a la actualización |
| Verify job scheduled | high | número de trabajos de verificación |
| Prune job scheduled | medium | número de trabajos de prune |
| Backups copied elsewhere (sync or tape) | medium | trabajos de sincronización y de copia en cinta (regla 3-2-1) |
| Garbage collection clean, no bad chunks | high | último resultado del GC y chunks defectuosos por datastore |
| Certificate valid for 14+ days | medium | caducidad del certificado |
Para mejorarla:
- Instale las actualizaciones y reinicie cuando haya cambiado el kernel o
proxmox-backup. - Programe un trabajo de verificación y uno de prune en cada datastore.
- Mantenga una copia en otro sitio: un trabajo de sincronización hacia un segundo Backup Server, o cinta.
- Use un certificado ACME para la interfaz web.
Fuentes: Maintenance tasks, Remotes and sync.
Synology { #synology }
Sección titulada «Synology { #synology }»| Comprobación | Severidad | Dato |
|---|---|---|
| DSM 7 or later | high | versión de DSM |
| DSM up to date | high | hay una actualización de DSM disponible (solo cuenta de administrador) |
| Built-in admin account disabled | medium | estado de la cuenta admin (solo cuenta de administrador) |
| Auto Block enabled | medium | ajuste de Auto Block (solo cuenta de administrador) |
| DSM firewall enabled | medium | ajuste del cortafuegos (solo cuenta de administrador) |
| Hyper Backup task configured | medium | número de tareas de Hyper Backup |
| Hyper Backup tasks succeed | high | último resultado de cada tarea |
Los cuatro ajustes se leen una vez por hora y solo cuando DumbMonit inicia sesión con una cuenta de administrador; con una cuenta normal siguen siendo desconocidos y no cuentan. La verificación en dos pasos y la redirección a HTTPS no se leen.
Para mejorarla:
- Ejecute la última versión de DSM 7 para su modelo y deje que DSM instale automáticamente las actualizaciones importantes (Panel de control → Actualización y restauración).
- Desactive la cuenta integrada
admin; inicie sesión con un administrador personal protegido con verificación en dos pasos. - Active Auto Block y el cortafuegos (Panel de control → Seguridad), y no redirija puertos de DSM a internet: use una VPN.
- Haga copias con Hyper Backup en otro monitor o en un destino en la nube, y corrija cualquier tarea que falle: RAID y las instantáneas no son copias de seguridad.
Fuentes: Product support status, How to add extra security to your Synology NAS.
OPNsense { #opnsense }
Sección titulada «OPNsense { #opnsense }»| Comprobación | Severidad | Dato |
|---|---|---|
| Firmware updates installed | high | actualizaciones de paquetes pendientes (desconocida hasta que OPNsense haya buscado actualizaciones) |
| On the current major release series | medium | hay una nueva serie mayor disponible |
| No reboot pending after an update | medium | reinicio necesario |
| Packet filter enabled | critical | estado de pf |
Para mejorarla:
- Busque actualizaciones en System → Firmware → Status, instálelas y reinicie cuando se le pida.
- Pase a la nueva versión mayor cuando salga.
- Mantenga activado el filtro de paquetes.
- Permita la interfaz web y SSH solo desde la LAN o una VPN, nunca desde la WAN.
Fuentes: OPNsense updates, OPNsense firewall.
Sitios web { #websites }
Sección titulada «Sitios web { #websites }»Para los monitores HTTP(S) y TLS que negocian TLS, y para los monitores Website health & SEO. Un monitor HTTP sin cifrar no tiene puntuación.
| Comprobación | Severidad | Dato |
|---|---|---|
| Certificate valid for 14+ days | high | días hasta la caducidad (monitores HTTP(S) y TLS) |
| Certificate chain trusted | high | verificación de la cadena (monitores HTTP(S) y TLS) |
| TLS 1.3 negotiated | low | versión del protocolo negociada (monitores HTTP(S) y TLS) |
| Served over HTTPS | high | dirección final tras las redirecciones (Website health) |
| Strict-Transport-Security header | medium | cabecera con un max-age mayor que 0 |
| X-Content-Type-Options: nosniff | low | valor de la cabecera |
| Protected against clickjacking | low | X-Frame-Options o frame-ancestors de la CSP |
| Content-Security-Policy header | low | una política aplicada (report-only no cuenta) |
Las cabeceras se leen solo en respuestas HTTPS.
Para mejorarla:
- Sirva el sitio solo por HTTPS y redirija el HTTP sin cifrar a HTTPS.
- Automatice la renovación del certificado (ACME, p. ej. Let’s Encrypt) y sirva la cadena completa.
- Añada cabeceras de seguridad en el servidor web o el proxy inverso:
Strict-Transport-Security,X-Content-Type-Options: nosniffy unaContent-Security-Policyconframe-ancestors. - Contraste con Mozilla HTTP Observatory, que comprueba mucho más que esta puntuación.
Fuentes: Mozilla Server Side TLS, MDN — HTTP headers.
Active Directory { #active-directory }
Sección titulada «Active Directory { #active-directory }»Puntuado a partir de los hallazgos al estilo PingCastle del colector de Active
Directory: cuentas kerberoastable, cuentas sin preautenticación Kerberos,
delegación sin restricciones, antigüedad de la contraseña de krbtgt, tamaño
de los grupos privilegiados, cobertura de LAPS, política de contraseñas,
cuentas obsoletas. Cada hallazgo es una comprobación que pasa cuando afecta a
cero objetos.
Para mejorarla:
- Corrija primero los hallazgos críticos y altos: son los caminos habituales hacia los Domain Admins.
- Si la contraseña de
krbtgtes antigua, restablézcala dos veces, con unas horas de diferencia, y elimine la delegación sin restricciones de los equipos que no sean controladores de dominio. - Pase los servicios que se ejecutan con cuentas de usuario con SPN a cuentas de servicio administradas de grupo (gMSA).
- Ejecute PingCastle para una evaluación completa.
Fuentes: PingCastle health check rules, Windows LAPS.
Límites
Sección titulada «Límites»- La puntuación solo refleja lo que DumbMonit puede ver; muchas buenas prácticas no se comprueban porque ningún colector lee el dato: cortafuegos y autenticación de dos factores de Proxmox, interfaz web de OPNsense expuesta en la WAN, contenedores Docker que se ejecutan con privilegios o con el socket de Docker montado, TLS 1.0/1.1 aún ofrecidos (la sonda solo negocia TLS 1.2 y 1.3), y muchas más.
- Una comprobación es tan fresca como sus datos: algunos colectores releen las actualizaciones solo cada pocas horas.
- Los pesos son una decisión de producto, la misma para todas las instalaciones.
- Solo se puntúan los tipos indicados arriba. Los demás (conmutadores, impresoras, UniFi, pfSense…) no muestran insignia a propósito: un par de comprobaciones darían una nota que no significa nada.