Laboratorio 2B: Hardening Basico Post-Instalacion

Unidad: 2 - Instalación y Configuración
Duración Estimada: 90-120 minutos
Dificultad: Intermedio

Objetivos

  • Actualizar el sistema de forma segura
  • Configurar UFW sin perder acceso SSH
  • Endurecer SSH (minimo viable)
  • (Opcional) Instalar Fail2Ban
  • (Opcional) Habilitar unattended-upgrades

Requisitos Previos

  • Lab 1 completado (Ubuntu Server LTS instalado)
  • Acceso SSH funcional
  • Usuario con permisos sudo
Warning⚠️ ADVERTENCIA CRÍTICA

Vas a tocar firewall y SSH.

Lo que podría salir mal: - Bloquear tu acceso remoto por SSH.

Cómo prevenirlo: 1. Mantén una sesión SSH abierta mientras pruebas cambios. 2. Permite el puerto SSH en UFW antes de habilitarlo. 3. Valida la sintaxis de sshd antes de reiniciar el servicio.

Pasos del Laboratorio

Paso 1: Actualizar el sistema (20 min)

BASH
1$ sudo apt update


2$ sudo apt upgrade -y


3$ sudo apt autoremove -y
1
apt update actualiza el indice de paquetes.
2
apt upgrade aplica actualizaciones.
3
apt autoremove limpia dependencias no usadas.

Paso 2: UFW seguro (25-35 min)

Primero identifica el puerto SSH actual:

BASH
1$ sudo ss -lntp | grep sshd
LISTEN 0 128 0.0.0.0:22 0.0.0.0:* users:("sshd",pid=987,fd=3)
1
ss -lntp evidencia el puerto donde escucha sshd.

Ahora configura UFW:

BASH
1$ sudo ufw status verbose
Status: inactive


2$ sudo ufw allow 22/tcp


3$ sudo ufw allow 80/tcp


4$ sudo ufw allow 443/tcp


5$ sudo ufw enable


6$ sudo ufw status verbose
Status: active
1
ufw status muestra estado actual.
2
ufw allow 22/tcp permite SSH antes de activar firewall.
3
ufw allow 80/tcp permite HTTP.
4
ufw allow 443/tcp permite HTTPS.
5
ufw enable activa el firewall.
6
ufw status verbose valida reglas activas.

Paso 3: Endurecer SSH (25-35 min)

BASH
1$ sudo cp /etc/ssh/sshd_config /etc/ssh/sshd_config.bak


2$ sudo sshd -t
1
cp crea backup antes de cambios.
2
sshd -t valida sintaxis (antes/despues).

Edita /etc/ssh/sshd_config y aplica minimo:

  • PermitRootLogin no
  • PasswordAuthentication no (solo si ya tienes claves)
  • MaxAuthTries 3

Luego valida y recarga:

BASH
1$ sudo sshd -t


2$ sudo systemctl reload ssh
1
sshd -t evita recargar una config invalida.
2
systemctl reload ssh aplica cambios sin cortar sesiones activas.

Paso 4 (opcional): Fail2Ban (20 min)

BASH
1$ sudo apt install -y fail2ban


2$ systemctl status fail2ban --no-pager
 fail2ban.service - Fail2Ban Service
     Active: active (running)
1
apt install fail2ban instala Fail2Ban.
2
systemctl status valida servicio.

Paso 5 (opcional): Unattended upgrades (20 min)

BASH
1$ sudo apt install -y unattended-upgrades


2$ sudo systemctl status unattended-upgrades --no-pager
1
apt install unattended-upgrades instala actualizaciones automaticas.
2
systemctl status valida servicio.

Entregables (Evidencia)

  • ufw status verbose con reglas y estado active
  • Evidencia del puerto SSH en escucha (ss -lntp | grep sshd)
  • sshd -t sin errores
  • (Opcional) systemctl status fail2ban --no-pager
  • (Opcional) systemctl status unattended-upgrades --no-pager

Checklist de aceptación

Code Appendix