Control final: su servidor a examen
Módulo 10: Mantener la seguridad · Tiempo de lectura: 10 minutos
Objetivo de aprendizaje: Después de esta lección podrá evaluar su propio servidor con una lista de comprobación y un control automático desde fuera, sabrá qué puntos tienen prioridad y contará con una rutina de mantenimiento fija y un breve expediente del servidor.
Conceptos clave: lista de comprobación, prioridad, control desde fuera, expediente del servidor, rutina de mantenimiento (semanal, mensual, trimestral, anual), fecha de fin de soporte de la versión, prueba de restauración
De lecciones sueltas a un conjunto
En este curso ha configurado un servidor paso a paso: inicio de sesión seguro, permisos, actualizaciones, firewall, servicios, un sitio web con https, copias de seguridad, monitorización y contenedores. En esta última lección lo reúne todo en una sola lista. Revisa su servidor, deja que el programa del curso lo examine desde fuera y establece cómo va a mantener el servidor en los próximos años.
Un servidor nunca está "terminado". El software se queda anticuado, los certificados caducan, los discos se llenan y las versiones llegan al final de su vida útil (end of life). Por eso una rutina fija es tan importante como la configuración inicial.
La lista de comprobación, por orden de importancia
No todo es igual de urgente. Recorra la lista de arriba abajo: los primeros bloques evitan la mayoría de los problemas.
Bloque 1: nadie entra sin más (módulos 2, 3 y 5)
- Inicio de sesión solo con claves;
PasswordAuthentication noyKbdInteractiveAuthentication no, comprobado consudo sshd -T. - Root no inicia sesión con contraseña; usted trabaja como usuario normal con sudo.
- Las bases de datos, cachés y clústeres de búsqueda escuchan en
127.0.0.1; los puertos 3306, 5432, 6379, 9200 y 27017 están cerrados desde fuera, tanto para IPv4 como para IPv6. - Un firewall que por defecto lo cierra todo en el tráfico entrante; solo están abiertos los puertos que necesita.
- fail2ban está en funcionamiento para SSH (
fail2ban-client status sshd).
Bloque 2: las vulnerabilidades se corrigen (módulo 4)
- Actualizaciones de seguridad automáticas activadas y comprobadas (registro,
apt list --upgradable). - Un plan de reinicios;
/var/run/reboot-requiredno permanece ahí durante semanas. - La versión sigue teniendo soporte; la fecha de fin de soporte está en su agenda.
Bloque 3: puede volver atrás (módulo 8)
- Copias de seguridad cifradas fuera del servidor, automáticas y con monitorización.
- Ha hecho una prueba de restauración y sabe cuánto tarda restaurar.
- Sabe cómo crear una instantánea (snapshot) y abrir la consola.
Bloque 4: el exterior es correcto (módulo 7)
- Los registros A y AAAA apuntan a su servidor; el DNS inverso (PTR) apunta de vuelta al mismo nombre.
- https con un certificado válido que se renueva automáticamente; http redirige a https.
- HSTS y algunas cabeceras de seguridad; un
security.txtcon una dirección de contacto que funciona y una fecha de caducidad.
Bloque 5: ve lo que ocurre (módulos 6 y 8)
- El journal es persistente; puede leer registros de antes de un reinicio.
- Monitorización desde fuera (disponibilidad, certificado) y desde dentro (disco, servicios), con avisos que realmente llegan.
systemctl --failedestá vacío.
Bloque 6: contenedores bajo control (módulo 9, si utiliza Docker)
- Puertos de los contenedores en
127.0.0.1o detrás del proxy inverso; nada dedocker.socken contenedores que no lo necesitan de verdad. - Los volúmenes están incluidos en la copia de seguridad; las imágenes se actualizan con regularidad.
- Los secretos están en archivos
.envcon permisos estrictos, no en Git.
El control desde fuera
El programa del curso puede revisar parte de esta lista desde fuera, exactamente como cualquiera en internet ve su servidor. El ejercicio final (Z10.4) combina los controles de ejercicios anteriores:
| Elemento | Qué hace el programa | De la lección |
|---|---|---|
| SSH | Lee el banner de versión y pregunta qué métodos de inicio de sesión ofrece su servidor para su nombre de usuario; no inicia sesión | 2.2 |
| Puertos de bases de datos | Solo intenta establecer una conexión con 3306, 5432, 6379, 9200 y 27017; no envía nada | 5.1 |
| https | Comprueba el certificado (válido, de confianza, nombre correcto) | 7.3 |
| Cabeceras | Lee HSTS y las demás cabeceras de seguridad | 7.4 |
| security.txt | Descarga /.well-known/security.txt y comprueba Contact y Expires | 7.4 |
| Contenedor | Busca la cabecera con su código, añadida por su proxy inverso | 9.4 |
El programa no ejecuta nada en su servidor, no prueba contraseñas y no escanea otros puertos. Cada dirección solo puede comprobarse unas pocas veces por hora. Un resultado en verde significa que, desde fuera, no se detectan los errores más conocidos. No dice nada sobre lo que ocurre dentro de su servidor; eso corresponde al resto de la lista de comprobación, que debe revisar usted mismo.
El expediente del servidor
Redacte para cada servidor un documento breve y guárdelo fuera del servidor (por ejemplo, en su gestor de contraseñas o en una carpeta compartida):
- nombre, direcciones IP, proveedor, versión y fecha de fin de soporte;
- qué se ejecuta (servicios, contenedores, sitios web) y por qué;
- qué puertos están abiertos y para qué;
- dónde están las copias de seguridad, cómo se restauran y cuándo fue la última prueba;
- qué secretos hay en el servidor (no los secretos en sí, sino cuáles son y dónde se sustituyen);
- qué hizo deliberadamente de forma distinta al estándar (por ejemplo, una sugerencia de Lynis que omitió, lección 10.1);
- quién tiene acceso (qué claves hay en
authorized_keys).
Este expediente vale oro en caso de incidente (lección 10.3), en una actualización de versión (lección 4.3) y cuando otra persona se hace cargo de la administración.
Una rutina de mantenimiento
Sin rutina, la atención decae. Este es un ejemplo para un servidor pequeño; adáptelo a su propia situación.
| Cuándo | Qué |
|---|---|
| Cada semana | Revisar la monitorización y los avisos; systemctl --failed; reiniciar si aparece /var/run/reboot-required (o comprobar que el reinicio automático ha funcionado) |
| Cada mes | apt list --upgradable (¿queda algo pendiente?); docker compose pull y up -d para sus contenedores, junto con las notas de la versión; espacio en disco; fail2ban-client status; revisar el registro en busca de errores llamativos (journalctl -p err --since "1 month ago") |
| Cada trimestre | Prueba de restauración de una copia de seguridad; revisar authorized_keys y los usuarios (eliminar a quien ya no deba tener acceso); volver a ejecutar Lynis; repetir el control final desde fuera (ejercicio Z10.4) |
| Cada año | Actualizar security.txt (Expires); consultar la fecha de fin de soporte de la versión y planificar una actualización; actualizar el expediente del servidor y el plan de emergencia |
Anote estos momentos en su agenda. Gran parte también puede automatizarla con la monitorización de la lección 8.3, pero sigue siendo necesario revisarlo personalmente.
En la práctica
Tanto si su servidor está en WebOké como en otro proveedor: el proveedor se encarga del hardware, de la red y de la posibilidad de crear instantáneas y copias de seguridad, y usted de todo lo que ocurre dentro del servidor. Este curso es de autoayuda: nadie supervisa su servidor. Sin embargo, con esta lista de comprobación, el expediente y la rutina tiene todo lo necesario para realizar esa administración de forma autónoma y correcta.
Resumen
- Revise su servidor por bloques: nadie entra sin más, las vulnerabilidades se corrigen, puede volver atrás, el exterior es correcto, ve lo que ocurre y los contenedores están bajo control.
- El control desde fuera examina los métodos de inicio de sesión SSH, los puertos de bases de datos, https, las cabeceras, security.txt y la cabecera de su contenedor; el resto lo revisa usted mismo.
- Mantenga un expediente del servidor, guardado fuera del servidor.
- Trabaje con una rutina fija: semanal, mensual, trimestral y anual.
Cuestionario
Ejercicio
Ejercicio Z10.4: Ejercicio final: su servidor visto desde fuera. Deje que el programa del curso controle su servidor desde fuera de una sola vez: los métodos de inicio de sesión SSH para su nombre de usuario, los cinco puertos de bases de datos, https y las cabeceras de su sitio, su security.txt y la cabecera X-Weboke-Cursus con su código en el nombre donde se ejecuta su contenedor. Además, complete la lista de comprobación de los bloques 1 a 6 para lo que el programa no puede ver.
Ejercicio O10.4: Su rutina de mantenimiento. Elabore su propio expediente del servidor y su rutina de mantenimiento: qué hace cada semana, cada mes, cada trimestre y cada año, y anote esos momentos en su agenda.
Ejercicio O10.4: Su rutina de mantenimiento
Este ejercicio lo hace usted mismo; nadie lo revisa. Marque lo que haya hecho y señale el ejercicio como realizado.
Cada semana, revisar actualizaciones y avisos; cada mes, una pequeña restauración y revisar los accesos (authorized_keys, usuarios); cada trimestre, una revisión final completa; cada año, una reconstrucción completa a partir de la copia de seguridad y renovar security.txt.
Sus marcas y notas se quedan solo en este navegador; no las enviamos a ningún sitio. Si ha iniciado sesión, en Mis cursos solo guardamos que ha realizado el ejercicio.
Para saber más
- Proteger su VPS: los primeros cinco minutos
- HSTS y cabeceras de seguridad para su sitio web
- Estrategia de copias de seguridad: la regla 3-2-1 para su propia empresa
- securitytxt.org (explicación y generador de security.txt): https://securitytxt.org/
- El NCSC neerlandés, cómo elaborar una estrategia de copias de seguridad (fuente neerlandesa, en neerlandés): https://www.ncsc.nl/back-up/een-back-up-strategie-opstellen
