• Proyecto SSH Honeypot — Puerto trampa + 2FA + cowrie
  • Empresa Merabytes
  • Sector Múltiple
  • Fecha : 26 June, 2026
  • Duración 30 minutos
Cómo cazar hackers en tu SSH: puerto trampa, 2FA y cowrie

El puerto 22 de tu servidor recibe intentos de acceso cada pocas horas. Esta guía convierte eso en inteligencia.

Lo que vas a montar

Paso Qué hace
1 — Puerto secreto SSH real se mueve a un puerto que solo tú conoces
2 — 2FA con Duo Cada acceso legítimo requiere aprobación en el móvil
3 — cowrie en el 22 Honeypot que registra credenciales, comandos y alerta por email

La lógica es simple: cualquier conexión que llegue al 22 es automáticamente un atacante. Nadie legítimo debería saber que ese puerto existe.


Paso 1 — Mueve SSH a un puerto secreto

Elige un puerto alto que no llame la atención. En este ejemplo usamos 2222, pero puedes usar cualquiera entre 1024 y 65535.

# Backup de la config actual
sudo cp /etc/ssh/sshd_config /etc/ssh/sshd_config.bak

# Cambia el puerto
sudo sed -i 's/^#\?Port .*/Port 2222/' /etc/ssh/sshd_config

# Abre el puerto 2222 ANTES de reiniciar sshd (crítico — no te quedes sin acceso)

# ufw (Ubuntu/Debian)
sudo ufw allow 2222/tcp
sudo ufw reload

# iptables (por si ufw no está activo o conviven ambos)
sudo iptables -I INPUT -p tcp --dport 2222 -j ACCEPT
sudo ip6tables -I INPUT -p tcp --dport 2222 -j ACCEPT

# Persiste las reglas iptables
sudo mkdir -p /etc/iptables
sudo iptables-save  | sudo tee /etc/iptables/rules.v4
sudo ip6tables-save | sudo tee /etc/iptables/rules.v6

# RHEL/Rocky/AlmaLinux
# sudo firewall-cmd --add-port=2222/tcp --permanent && sudo firewall-cmd --reload

# Valida la config antes de reiniciar
sudo sshd -t && sudo systemctl restart sshd

Crítico: abre una segunda terminal y verifica que puedes conectarte al puerto nuevo antes de cerrar la sesión actual:

ssh -p 2222 usuario@tu-servidor

Si funciona, cierra el puerto 22 del firewall:

sudo ufw delete allow 22/tcp
sudo ufw deny 22/tcp

Paso 2 — 2FA en SSH con Duo

Duo añade una capa de aprobación en el móvil a cada conexión SSH. Aunque alguien robe tu clave privada, no puede entrar sin el push.

Necesitas una cuenta Duo (el tier gratuito cubre hasta 10 usuarios) y crear una Unix Application en el panel de administración para obtener IKEY, SKEY y HOST.

# Instala y configura Duo en un solo comando
sudo DUO_IKEY=DIxxxxxxxxxx \
     DUO_SKEY=xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx \
     DUO_HOST=api-xxxxxxxx.duosecurity.com \
     SSH_PORT=2222 \
     bash <(curl -fsSL https://merabytes.com/scripts/duo-ssh.sh)

El script hace todo el trabajo: instala login_duo, configura /etc/duo/login_duo.conf, ajusta sshd_config con ForceCommand /usr/sbin/login_duo y valida la config antes de reiniciar el servicio. Si algo falla, revierte automáticamente al backup.

Flujo resultante:

ssh -p 2222 usuario@servidor
→ autenticación por clave pública
→ Duo Push en el móvil
→ acceso concedido

Sin la aprobación del push, la conexión se cierra. failmode = secure garantiza que si Duo no es alcanzable, tampoco hay acceso — sin excepciones.


Paso 3 — cowrie como honeypot en el puerto 22

cowrie es un honeypot SSH de media interacción: emula una shell completa, acepta cualquier contraseña, registra cada comando que escribe el atacante y puede alertar por email en tiempo real.

Instalación:

# Dependencias
sudo apt-get install -y git python3-venv python3-dev libssl-dev libffi-dev

# Usuario dedicado (cowrie no debe correr como root)
sudo adduser --disabled-password --gecos "" cowrie

# Instalar cowrie
sudo -u cowrie bash -c '
  cd /home/cowrie
  git clone https://github.com/cowrie/cowrie.git
  cd cowrie
  python3 -m venv cowrie-env
  source cowrie-env/bin/activate
  pip install --upgrade pip
  pip install -r requirements.txt
'

Configuración:

sudo -u cowrie bash -c '
  cd /home/cowrie/cowrie
  cp etc/cowrie.cfg.dist etc/cowrie.cfg
'

Edita /home/cowrie/cowrie/etc/cowrie.cfg con los ajustes clave:

[honeypot]
# Hostname falso que verá el atacante
hostname = prod-server-01

# Directorio donde se guardan los logs
log_path = var/log/cowrie

[output_jsonlog]
enabled = true

[output_mail]
enabled = true
# Email que recibirá las alertas
to = alertas@tudominio.com
from = cowrie@tuservidor.com
# SMTP de tu proveedor
host = smtp.tudominio.com
port = 587
username = cowrie@tudominio.com
password = tupassword

Redirigir el puerto 22 a cowrie (cowrie escucha en 2223 por defecto):

# cowrie escucha en 2223, redirigimos el 22 hacia ahí
sudo iptables -t nat -A PREROUTING -p tcp --dport 22 -j REDIRECT --to-port 2223
sudo iptables -t nat -A OUTPUT -p tcp --dport 22 -j REDIRECT --to-port 2223

# Persistir reglas
sudo apt-get install -y iptables-persistent
sudo netfilter-persistent save

Arrancar cowrie:

sudo -u cowrie bash -c '
  cd /home/cowrie/cowrie
  source cowrie-env/bin/activate
  bin/cowrie start
'

Systemd unit para que arranque automáticamente:

sudo tee /etc/systemd/system/cowrie.service << 'EOF'
EOF
[Unit]
Description=Cowrie SSH Honeypot
After=network.target

[Service]
Type=forking
User=cowrie
WorkingDirectory=/home/cowrie/cowrie
ExecStart=/home/cowrie/cowrie/bin/cowrie start
ExecStop=/home/cowrie/cowrie/bin/cowrie stop
PIDFile=/home/cowrie/cowrie/var/run/cowrie.pid
Restart=on-failure

[Install]
WantedBy=multi-user.target
sudo systemctl daemon-reload
sudo systemctl enable cowrie
sudo systemctl start cowrie

Verificar que todo funciona:

# cowrie escucha en 2223
ss -tlnp | grep 2223

# El puerto 22 redirige a cowrie (desde fuera)
ssh root@tu-servidor   # → conecta a cowrie, acepta cualquier password

# Logs en tiempo real
sudo -u cowrie tail -f /home/cowrie/cowrie/var/log/cowrie/cowrie.json | python3 -m json.tool

Qué ves en los logs

Cada intento de acceso genera una entrada como esta:

{
  "eventid": "cowrie.login.failed",
  "src_ip": "185.220.101.47",
  "username": "root",
  "password": "admin123",
  "timestamp": "2026-06-26T08:14:32.441Z"
}

Y si el atacante llega a entrar (cowrie acepta cualquier credencial en modo soft):

{
  "eventid": "cowrie.command.input",
  "src_ip": "185.220.101.47",
  "input": "uname -a",
  "timestamp": "2026-06-26T08:14:35.112Z"
}

Cada sesión completa queda grabada. Puedes reproducirla con playlog:

/home/cowrie/cowrie/cowrie-env/bin/python \
  /home/cowrie/cowrie/bin/playlog \
  /home/cowrie/cowrie/var/lib/cowrie/tty/XXXXXXXX

Estado final del servidor

Puerto 22   → cowrie (honeypot) — cualquier conexión aquí es un atacante
Puerto 2222 → SSH real + Duo 2FA — solo tú conoces este puerto

Cada intento en el 22 llega a tu correo. Cada intento en el 2222 requiere tu móvil. La superficie de ataque útil queda a cero.


#ssh #honeypot #cowrie #duo #linux #hardening #merabytes


Consigue Duo con un 5% de descuento

Si quieres desplegar Duo en tu empresa, puedes contratarlo a través de Merabytes y obtener un 5% de descuento sobre el precio original de 3 €/usuario/mes.

Ver protección de identidades →

¿Quieres montar esto en los servidores de tu empresa con monitorización centralizada? Hablamos.

Preguntas frecuentes

Un Adversary-Aware SOC va más allá del monitoreo de seguridad tradicional al comprender las tácticas, técnicas y procedimientos (TTPs) de los atacantes. Cazamos amenazas de forma proactiva usando el framework MITRE ATT&CK, análisis de comportamiento e inteligencia de amenazas para detectar ataques que evaden los controles de seguridad convencionales.

Las herramientas de seguridad tradicionales se enfocan en firmas e indicadores conocidos. Nuestra detección por comportamiento analiza anomalías en la actividad de usuarios, patrones de correo, tráfico de red y comportamiento del sistema para identificar ataques sofisticados que usan herramientas legítimas o evaden controles de autenticación. Esto detectó los ataques en estos casos de estudio antes de que ocurriera un daño significativo.

Nuestro SOC opera 24/7 con monitoreo en tiempo real y capacidades de respuesta automatizada. Las alertas críticas activan investigación inmediata y acciones de contención en minutos. Proporcionamos caza de amenazas continua, análisis forense y respuesta coordinada a incidentes para minimizar el impacto y prevenir el movimiento lateral.

Combinamos feeds de inteligencia de amenazas globales con nuestra propia investigación de incidentes reales. Cada ataque que analizamos contribuye a nuestras reglas de detección y base de datos de IOCs, que se comparte inmediatamente en todos los entornos protegidos. Esto significa que si vemos un nuevo patrón de ataque contra un cliente, todos los clientes están automáticamente protegidos en horas.

Absolutamente. Nuestro SOC se integra con sus herramientas existentes de EDR, XDR, SIEM, firewalls, seguridad de correo y protección de identidad. Mejoramos su efectividad correlacionando eventos de todas las fuentes, aplicando lógica de detección consciente de adversarios y proporcionando análisis humano experto que las herramientas automatizadas por sí solas no pueden lograr.