Un día por curiosidad eché un vistazo al número de IPS que fail2ban había bloqueado desde que lo había instalado con este comando:

sudo fail2ban-client status sshd

El comando devolvió unas 450 Ips bloqueadas y subiendo.

Me sorprende porque la vida del VPS es bastante corta y ya está siendo atacado de manera automática.

Aprovechando la situación, cambié el puerto por defecto del servidor ssh e instalé un honeypot para capturar los usuarios y contraseñas que los atacantes están utilizando.

Instalación honeypot

Para instalar el honeypot:

git clone https://github.com/random-robbie/docker-ssh-honey
cd docker-ssh-honey
docker build -t ssh-honeypot:v0 .

Una vez creado el contendor lanzamos el honeypot

docker run -itd -p 22:22 --name ssh-honeypot ssh-honeypot:v0

Para leer el log en tiempo real hacemos:

docker logs -f $(docker ps -q)

Tras varios días con el honeypot activado he logrado capturar alrededor de 130K de IPs, usuarios y contraseñas que los atacantes están utilizando contra mi servidor. Lanzando este sencillo comando podemos contar todos los registros:

docker logs $(docker ps -q) | wc -l

De todo estos registros me interesa saber cuántos registros son únicos. Lo podemos calcular utilizando awk y filtrando por registros únicos:

# Contraseñas únicas
docker logs $(docker ps -q) | awk '{ print $8 }' | sort -u | wc -l
# usuarios únicos
docker logs $(docker ps -q) | awk '{ print $7 }' | sort -u | wc -l
# IPs únicas
docker logs $(docker ps -q) | awk '{ print $6 }' | sort -u | wc -l

Lo que resulta en 10K usuarios, 35K contraseñas y 2K Ips únicas.