Una base endurecida y reproducible reduce incidentes, acelera el time-to-deploy y evita deuda operativa temprana.

Objetivos de la Guía

  • Establecer una línea base mínima segura.
  • Dejar el sistema listo para gestión declarativa (Ansible / IaC).
  • Activar observabilidad esencial (logs estructurados + métricas básicas).
  • Reducir superficie de ataque sin comprometer capacidad de despliegue.

1. Resumen Técnico Inicial

ÁreaNotaRelevancia
KernelVersión estable 6.x (ver uname -r)Soporte hardware y parches de seguridad recientes
Crypto (OpenSSL)Mantener paquetes al díaEvita vulnerabilidades conocidas en handshake TLS
SystemdAislamiento por service disponible (ProtectSystem, PrivateTmp, etc.)Facilita hardening de unidades críticas
Toolchaingcc / glibc actualizadosCompilaciones reproducibles y mitigaciones modernas (PIE, RELRO)

Nota: Verifica versiones exactas en tu entorno antes de aplicar cambios en producción y registra el snapshot inicial.

2. Paso a Paso Inicial

  1. Actualizar repos y paquetes.
  2. Configurar zona horaria, locale y sincronización de hora.
  3. Crear usuario administrativo sin usar root directo.
  4. Configurar sudo mínimo y registro.
  5. Aplicar hardening de SSH.
  6. Configurar firewall (nf_tables / ufw) y políticas base.
  7. Instalar tooling esencial (paquetes utilitarios + monitoreo ligero).
# Actualización base
apt update && apt full-upgrade -y

# Paquetes útiles (ajusta)
apt install -y curl git gnupg2 ca-certificates unzip htop jq fail2ban sudo nftables

# Crear usuario (reemplaza <user>)
adduser <user>
usermod -aG sudo <user>

# Sudo: require TTY y log
printf "Defaults    use_pty\nDefaults    logfile=/var/log/sudo.log\n" > /etc/sudoers.d/10-secure
chmod 440 /etc/sudoers.d/10-secure

3. Hardening SSH Básico

# /etc/ssh/sshd_config.d/01-hardening.conf
Protocol 2
PermitRootLogin no
PasswordAuthentication no
PubkeyAuthentication yes
X11Forwarding no
AllowTcpForwarding no
ClientAliveInterval 300
ClientAliveCountMax 2
LogLevel VERBOSE

Recargar servicio: systemctl reload sshd.

Checklist:

  • Claves rotadas.
  • Acceso root deshabilitado.
  • Autenticación por contraseña desactivada.

4. Firewall con nftables (Ejemplo mínimo)

cat > /etc/nftables.conf <<'EOF'
flush ruleset

table inet filter {
  chain input {
    type filter hook input priority 0;
    policy drop;
    ct state established,related accept
    iif lo accept
    # SSH
    tcp dport 22 accept
    # ICMP limitado
    ip protocol icmp limit rate 5/second accept
    ip6 nexthdr icmpv6 limit rate 5/second accept
    # Log y drop
    log prefix "nft-drop: " flags all counter drop
  }
  chain forward { type filter hook forward priority 0; policy drop; }
  chain output { type filter hook output priority 0; policy accept; }
}
EOF

systemctl enable --now nftables

5. Fail2ban Config Básica

# /etc/fail2ban/jail.d/sshd.local
[sshd]
enabled = true
port    = 22
filter  = sshd
logpath = /var/log/auth.log
maxretry = 4
findtime = 600
bantime  = 3600

6. Logs y Métricas Esenciales

  • Logs: rsyslog/journalctl (centralizar luego).
  • Métricas: node_exporter (si ya trabajas con Prometheus) o solución ligera alternativa.
  • Revisar rotación: journalctl --vacuum-size=500M como guardarraíl inicial.

7. Preparar para Ansible

Estructura mínima de inventario y role base:

inventory/
  hosts.ini
roles/
  base/
    tasks/main.yml
playbooks/
  site.yml

playbooks/site.yml ejemplo:

---
- hosts: all
  become: true
  vars:
    base_packages:
      - curl
      - git
      - jq
  roles:
    - base

roles/base/tasks/main.yml ejemplo:

---
- name: Paquetes base
  apt:
    name: "{{ base_packages }}"
    state: present
    update_cache: yes

- name: Asegurar timezone
  timezone:
    name: Etc/UTC

- name: Crear usuario desplegues
  user:
    name: deploy
    groups: sudo
    state: present
    create_home: true

8. Validación Rápida

ÁreaComandoEsperado
Kerneluname -rVersión soportada / actualizada
Parchesapt list --upgradableVacío tras actualización
SSH`sshd -Tgrep -i permitrootlogin`
Firewallnft list rulesetReglas cargadas
Usuariosgrep -E '/bin/bash' /etc/passwdSolo cuentas necesarias

9. Extensiones Recomendadas

  • Integrar escaneo de vulnerabilidades (ej: trivy para imágenes base si aplican contenedores).
  • Añadir monitoreo de integridad (aide / osquery) según criticidad.
  • Centralizar logs y métricas.
  • Plantilla Ansible extendida (hardening adicional, backups, alertas).

10. Conclusión

Con una línea base consistente cada nuevo host Debian 13 es predecible, auditable y listo para escalar mediante Ansible o CI. El siguiente paso lógico es profundizar en controles adicionales (Kernel hardening, sysctl reforzado, monitoreo de integridad y segmentación de servicios) antes de abordar optimizaciones avanzadas o despliegues de aplicaciones.


Referencia interna: continúa la serie en el artículo de riesgos críticos y hardening avanzado (publicación próxima).


Auto generado con GPT-5 a partir de notas y experiencia práctica en hardening y automatización de infraestructuras Linux.