¿Que es Port Knocking?
Ejemplo rápido:Port Knocking (Golpeo de Puertos) es una técnica utilizada para asegurar las conexiones o acceso a puertos a usuarios no deseados. Utilizando esta técnica mantenemos uno o varios puertos cerrado que previamente configuramos y estos solo serán abiertos usando una secuencia de solicitudes a una serie de puertos que configuremos.
Para acceder al puerto 22 (si no hacemos esto nos saldrá que está cerrado) tendremos que hacer un Telnet a los siguientes puertos en un intervalo de 5 segundos como máximo ( se puede modificar ):
una vez seguido este orden, ya tendremos el puerto 22 SSH desbloqueado y pudiendo acceder.1) 23481 TCP
2 ) 12938 UDP
3 ) 12522 UDP
4 ) 19348 TCP
Después del resumen, vamos al lío!
Actualizar Repositorios:
Antes de nada, debemos actualizar los repositorios de nuestro sistema, para asegurar que se instala la última versión , para ello pondremos el siguiente comando en la terminal SSH:
Código: Seleccionar todo
sudo apt-get update

Instalar Knockd e iptables-persistent
Instalamos el paquete Knockd con el siguiente comando:
Código: Seleccionar todo
sudo apt-get install knockd
A continuación también instalamos iptables-persistent con el siguiente comando:
Código: Seleccionar todo
sudo apt-get install iptables-persistent

Y por último el más imporante que se encargará de hacer la funcion iptables
Código: Seleccionar todo
sudo apt-get install iptables
Configurar Firewall:
Ahora en el terminal SSH pondremos los siguientes comandos para configurar las entradas del Firewall y bloquear el puerto SSH para que sea obligatorio usar el Port Knocking:
Código: Seleccionar todo
iptables -A INPUT -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT
Código: Seleccionar todo
iptables -A INPUT -p tcp --destination-port 22 -j DROP
Código: Seleccionar todo
iptables-save
Editamos el archivo de configuración con el siguiente comando:
Código: Seleccionar todo
sudo nano /etc/knockd.conf

Las líneas dentro del [openSSH] serán para activar el puerto y poder acceder.
y las que están en [CloseSSH] será la función para bloquear el acceso nuevamente.
Esto es la secuencia de puertos ( la contraseña) que queremos para activar la función, es muy recomendable que cambies los puertos por seguridad.
NOTA:sequence = 7000,8000,9000
Si quieres combinar el tipo de puerto y complicarlo más, tendrá que ser siguiendo este esquema, pudiendo añadir todos los puertos que quieras.
Aquí indicamos los segundos que tendremos para poder hacer las combinaciones ( no te preocupes mucho por esto, hay programas dedicados a Knock, ya los veremos más adelante ) Si superamos el tiempo máximo permitido no será desbloqueado.sequence = 2222:udp,3333:tcp,4444:udp,5555:tcp,6666:tcp
Indicamos el comando principal que activara el bloqueo / desbloqueo del puerto a través de Firewall,seq_timeout: 5
Command = /sbin/iptables .........
Curiosidades:¡¡Muy Importante!!
Dentro de las lineas [OpenSSH] debemos modificar la siguiente linea indicados en color rojo:/sbin/iptables -I INPUT 1 -s %IP% -p tcp --dport 22 -j ACCEPT
Este sistema ofrece miles de posibilidades, por ejemplo puedes hacer que desactive un programa a través de un comando, ejemplo parar el servicio NGINX:
Command = /etc/init.d/nginx stop
Y por último y menos importante, indicamos el tipo de paquete que queremos detectar ( ACK, Push, Reset, Syn, FIN... )
Guardamos la configuración del archivo pulsando Control + X seguido de Ytcpflags = syn
Activar Knockd:
Editamos el siguiente archivo poniendo este comando en la terminal SSH:
Código: Seleccionar todo
sudo nano /etc/default/knockd
Guardamos la configuración del archivo pulsando Control + X seguido de Y
Iniciamos el Knockd en segundo plano con el siguiente comando:
Código: Seleccionar todo
sudo knockd -D -v

Ya tenemos el Knockd funcionando, ahora solo nos queda probar que funciona correctamente.
Una vez que enviemos la combinación secreta, sin cerrar la ventana previa tendrá que salir el siguiente mensaje:

A continuación os dejo distintos programas y métodos para poder utilizarlo, muy fáciles e inuitivos.
Windows:
KnockKnock Windows

A través de Telnet:
Código: Seleccionar todo
telnet TUIP 7000
telnet TUIP 8000
telnet TUIP 9000
Android:
Knock The Port

Linux:
Debemos instalar previamente el paquete de Knockx ( sudo apt-get install knockd )
Código: Seleccionar todo
knock 192.168.2.181 7000 8000 9000
Configurar el sistema para que arranque Knockd al iniciar:
Editamos el siguiente archivo:
Código: Seleccionar todo
sudo nano /etc/rc.local
exit 0añadir lo siguiente:
Código: Seleccionar todo
sleep 10
/etc/init.d/knockd restart

Guardamos los cambios pulsando Control + X , luego "Y" seguido de "ENTER"
Si os ha gustado el tutorial, dar un Me Gusta y comentarme, si veis algún fallo importante estaría muy bien comentarlo, reconozco que cometo muchos errores :?:
Espero que os guste, Un abrazo!
