~/cuaderno / 2026 / entrada-1066.md

Ubuntu Server recién instalado: mi checklist de seguridad

Publicado 22 mayo 2026 4 min de lectura
Diagrama de una configuración inicial de Ubuntu Server: actualizar, usar claves SSH, activar UFW y observar.

Un Ubuntu Server recién instalado no necesita una colección de trucos secretos. Necesita pocas decisiones, aplicadas en el orden correcto y comprobadas antes de cerrar la sesión que todavía funciona. Mi lista inicial consiste en actualizar, crear un acceso recuperable, reducir lo expuesto y dejar señales cuando algo falla.

Esta guía está pensada para una máquina que administramos por SSH. Antes de tocar el acceso, hago una instantánea o verifico que existe una consola de recuperación en el proveedor. Bloquearse fuera del servidor es una manera bastante eficaz de aprender, pero no la recomiendo.

1. Actualizar con los ojos abiertos

sudo apt update
apt list --upgradable
sudo apt upgrade
sudo systemctl --failed

Leo la lista antes de aceptar. En una máquina en producción también compruebo si hay un reinicio pendiente y lo programo; que una actualización esté instalada no significa que el kernel o un servicio ya estén usando la versión nueva.

2. Crear un administrador identificable

sudo adduser operador
sudo usermod -aG sudo operador
sudo -l -U operador

Cada persona debería tener su cuenta. Compartir root borra la trazabilidad y convierte una baja o una clave filtrada en una emergencia. Copio una clave pública al nuevo usuario y dejo permisos estrictos:

sudo install -d -m 700 -o operador -g operador /home/operador/.ssh
sudo install -m 600 -o operador -g operador clave.pub /home/operador/.ssh/authorized_keys

Abro una segunda terminal y confirmo que la clave y sudo funcionan. Mantengo la sesión original abierta hasta acabar toda la prueba.

3. Ajustar SSH sin jugar a la ruleta

Creo un archivo separado para no pelearme con el fichero distribuido por el paquete:

sudoedit /etc/ssh/sshd_config.d/10-local-hardening.conf
PermitRootLogin no
PasswordAuthentication no
KbdInteractiveAuthentication no
PubkeyAuthentication yes

Desactivo contraseñas únicamente después de entrar con la clave desde otra sesión. Antes de recargar:

sudo sshd -t
sudo systemctl reload ssh

sshd -t debe terminar sin errores. Cambiar el puerto de SSH puede quitar ruido de los logs, pero no reemplaza las claves, las actualizaciones ni un control de acceso correcto.

4. Encender el firewall sin cortar SSH

sudo ufw allow OpenSSH
sudo ufw --dry-run enable
sudo ufw enable
sudo ufw status verbose

Después abro solo los servicios que realmente ofrece la máquina, por ejemplo http y https en un servidor web. Una base de datos que solo usa la aplicación local debe escuchar en localhost, no depender exclusivamente del firewall.

5. Comprobar las actualizaciones automáticas

Ubuntu Server incluye unattended-upgrades en sus versiones LTS modernas. En lugar de asumir que funciona, reviso el temporizador y sus registros:

systemctl list-timers 'apt-daily*'
sudo systemctl status unattended-upgrades --no-pager
sudo tail -n 80 /var/log/unattended-upgrades/unattended-upgrades.log

Las actualizaciones automáticas reducen el tiempo durante el que una vulnerabilidad conocida queda abierta. También necesitan observación: una máquina que lleva meses sin actualizar por un repositorio roto sigue pareciendo tranquila.

6. Saber qué está escuchando

sudo ss -lntup
systemctl --type=service --state=running
sudo journalctl -p warning -b --no-pager

Busco puertos inesperados, servicios que ya no uso y errores del arranque actual. No desactivo algo solo porque su nombre me resulte desconocido: primero identifico qué paquete lo instaló y qué depende de él.

7. Copia de seguridad y prueba de restauración

Una copia conectada permanentemente al mismo servidor comparte demasiados riesgos con el original. Guardo al menos otra copia fuera de la máquina y pruebo una restauración pequeña. Documento además qué hay que recuperar: configuración, datos, claves y versiones. Copiar todo sin saber arrancarlo después solo crea una colección cara de archivos.

Mi comprobación final

sudo sshd -t
sudo ufw status numbered
sudo ss -lntup
sudo systemctl --failed
sudo apt update

El endurecimiento no es un botón ni una tarde heroica. Es una base pequeña que se puede auditar, actualizar y recuperar. A partir de aquí vendrán medidas propias de cada servicio: permisos de la aplicación, TLS, copias, alertas y límites.

Referencias: documentación de Ubuntu sobre UFW, OpenSSH y actualizaciones de seguridad.

Compartir: X / Twitter LinkedIn Reddit Email
Siguiente comando: volver al archivo o pulsa Ctrl + K

0 comentarios

TIP RÁPIDO

Sé concreto, añade contexto (versión, distro, stack) y si puedes pega logs en bloque de código. Menos drama, más señales.

nginx plesk mariadb logs

Deja una respuesta

NormaRespeto, claridad, y cero spam. El email no se publica.

Consejo: usa bloques de código para logs. Ej: ```log ... ```

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.