totp-ssh-fluxer o cómo tener un servidor SSH cuyo puerto a la escucha va cambiando por tiempo
Es increíble… te abres una cerveza y a la vez el puerto 80 u otro top (21, 22, 23, 25, 53) en una máquina expuesta en Internet y no te has bebido ni la mitad de esa cerveza y ya han intentando conectarse uno o varios bots…
Vale, el gif no es un buen ejemplo… pero está claro: puerto well-known candidato número uno a ser descubierto rápidamente por cualquier escáner automático. Por ello, correr por ejemplo el servicio SSH en un puerto alto y no estándar no es mala idea. No te va a quitar de que te identifiquen finalmente pero al menos vas a quitarte morralla.
¿Y si no sólo cambiamos el puerto si no además hacemos que cambie cada X segundos? Pues es lo que ideó Ben Cox hace 5 añitos con su herramienta escrita en go totp-ssh-fluxer que, como su nombre indica, utiliza un token de tiempo TOTP para, por ejemplo con el teléfono, generar códigos que luego se pueden usar como puerto SSH en el servidor:
La herramienta en sí es bastante simple, se ejecuta en un bucle que hace lo siguiente:
- Genera un token TOTP en /etc/ssh-flux-key
- Toma el último dígito, si el resultado está por encima de 65536, repite el proceso
- Agrega una regla de PREROUTING de iptables para redirigir ese número generado anteriormente
- Espera 30 segundos, quita esa regla y repite.
Lo bueno es que, debido a que esto se hace en PREROUTING
, incluso si el código expira, las conexiones establecidas permanecen conectadas. Puedes ver la «magia» de como van cambiando las reglas con watch iptables -vL -t nat
.
Tenéis la herramienta y algunas pocas instrucciones en la página del proyecto: https://github.com/benjojo/totp-ssh-fluxer
Por último recordar que es una prueba de concepto para juguetear, pues la seguridad por oscuridad ya sabemos que no es precisamente lo ideal … Antes de ello incluso implantaría port-knocking al estilo clásico o con SPA como ya hemos visto anteriormente en el blog. Pero vamos.. eso y un buen par de llaves SSH y que os quiten lo bailao.
Fuente obtenida de: https://www.hackplayers.com/2021/05/totp-ssh-fluxer-servidor-con-puerto-dinamico.html