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.