Página 1 de 1

Instalar y configurar la técnica Port Knocking para reforzar nuestra seguridad por SSH

Publicado: 08 Nov 2016, 20:30
por Kike
Hola a todos! Hoy os traigo un tutorial referente a una técnica avanzada en seguridad informática para proteger el libre acceso a los puertos SSH, os explico más detalladamente a continuación.

¿Que es Port Knocking?
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.
Ejemplo rápido:
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 ):
1) 23481 TCP
2 ) 12938 UDP
3 ) 12522 UDP
4 ) 19348 TCP
una vez seguido este orden, ya tendremos el puerto 22 SSH desbloqueado y pudiendo acceder.

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
https://i.imgur.com/oUgGqfm.png
A continuación también instalamos iptables-persistent con el siguiente comando:

Código: Seleccionar todo

sudo apt-get install iptables-persistent
(Si nos sale un aviso , le damos a "Yes"

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
Y ya para finalizar guardamos los cambios con el comando:

Código: Seleccionar todo

iptables-save
Configuración Knockd:

Editamos el archivo de configuración con el siguiente comando:

Código: Seleccionar todo

sudo nano /etc/knockd.conf
El archivo a editar tiene un aspecto como este, ahora vamos a explicar todo lo que significa cada parámetro, como veis es muy básico.


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.
sequence = 7000,8000,9000
NOTA:
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.
sequence = 2222:udp,3333:tcp,4444:udp,5555:tcp,6666:tcp
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.
seq_timeout: 5
Indicamos el comando principal que activara el bloqueo / desbloqueo del puerto a través de Firewall,
Command = /sbin/iptables .........
¡¡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
Curiosidades:
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... )
tcpflags = syn
Guardamos la configuración del archivo pulsando Control + X seguido de Y

Activar Knockd:

Editamos el siguiente archivo poniendo este comando en la terminal SSH:

Código: Seleccionar todo

sudo nano /etc/default/knockd
Y modificamos el parametro START_KNOCKD=0 a START_KNOCKD=1

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
y antes de la linea
exit 0
añ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! :ponpon

Re: Instalar y configurar la técnica Port Knocking para reforzar nuestra seguridad por SSH

Publicado: 27 Nov 2016, 00:12
por hannibal1986
no consigo desbloquear el puerto, una vez realizado el tutorial, en iphone bajo app knockond y coloco la ip del servidor, los puertos y tiempo, y al realizar la apertura, el terminal que muestra el proceso ni se inmuta, lo he probado desde windows con putty e igual, que puede pasar? iptables funciona correcto ya que con fail2ban no hay problema

*estoy trabajando en raspbian y me doy cuenta que todos los puertos por telnet me dan Connection Refused, tanto con fail2ban activado como desactivado, hay que instalar algo mas o modificar algo mas en iptables?

Re: Instalar y configurar la técnica Port Knocking para reforzar nuestra seguridad por SSH

Publicado: 27 Nov 2016, 00:53
por Kike
hannibal1986 escribió:no consigo desbloquear el puerto, una vez realizado el tutorial, en iphone bajo app knockond y coloco la ip del servidor, los puertos y tiempo, y al realizar la apertura, el terminal que muestra el proceso ni se inmuta, lo he probado desde windows con putty e igual, que puede pasar? iptables funciona correcto ya que con fail2ban no hay problema

*estoy trabajando en raspbian y me doy cuenta que todos los puertos por telnet me dan Connection Refused, tanto con fail2ban activado como desactivado, hay que instalar algo mas o modificar algo mas en iptables?
Primero de todo,
¿tienes todos los puertos abiertos para ejecutar el knock?

Si en el terminal que muestra el proceso no sale nada , no le llega señal es que algún fallo tienes por ahi :lol:

Re: Instalar y configurar la técnica Port Knocking para reforzar nuestra seguridad por SSH

Publicado: 27 Nov 2016, 00:55
por hannibal1986
lo estoy probando en local, el telnet solo lo pilla por el puerto por defecto, en otros puertos me da connection refused, no hay que hacer nada para que telnet acepte por los puertos que se configuran?

Re: Instalar y configurar la técnica Port Knocking para reforzar nuestra seguridad por SSH

Publicado: 27 Nov 2016, 01:04
por Kike
hannibal1986 escribió:lo estoy probando en local, el telnet solo lo pilla por el puerto por defecto, en otros puertos me da connection refused, no hay que hacer nada para que telnet acepte por los puertos que se configuran?
Es que los demás puertos deben permanecer "cerrados" , no deben ni deberían darte señal :inform

Tienes solo cinco segundos ( o lo que hayas configurado) para hacer la combinación de los 3 o más puertos.

Ultima pregunta, ¿estás utilizando un puerto diferente al 22? Si es así cuando pones este comando debes cambiarlo por el principal que vayas a utilizar:
iptables -A INPUT -p tcp --destination-port 22 -j DROP

Re: Instalar y configurar la técnica Port Knocking para reforzar nuestra seguridad por SSH

Publicado: 27 Nov 2016, 01:05
por hannibal1986
ya esta, he reiniciado el knockd y ya me reconoce los telnet a los puertos

Re: Instalar y configurar la técnica Port Knocking para reforzar nuestra seguridad por SSH

Publicado: 27 Nov 2016, 01:14
por hannibal1986
una pregunta chora si en ves de poner en el terminal sudo knockd -D -v, arranco el servicio knockd, la funciona es la misma no? solo que no lo vere por pantalla. Arranca solo el servicio? o hay que poner que arranque en el inicio?

Re: Instalar y configurar la técnica Port Knocking para reforzar nuestra seguridad por SSH

Publicado: 27 Nov 2016, 01:21
por Kike
hannibal1986 escribió:una pregunta chora si en ves de poner en el terminal sudo knockd -D -v, arranco el servicio knockd, la funciona es la misma no? solo que no lo vere por pantalla. Arranca solo el servicio? o hay que poner que arranque en el inicio?
Exactamente, solo iniciar el servicio con

Código: Seleccionar todo

sudo service knockd start
funciona exactamente igual :P

Re: Instalar y configurar la técnica Port Knocking para reforzar nuestra seguridad por SSH

Publicado: 27 Nov 2016, 01:27
por hannibal1986
Gracias, ahora se abre y cierra, todo en local estoy probando, al realizar un scan con nmap, el puerto que tengo cerrado con port knocking me lo muestra como 'filtered rsh-spx', hay forma de que no muestre nada?

Re: Instalar y configurar la técnica Port Knocking para reforzar nuestra seguridad por SSH

Publicado: 27 Nov 2016, 01:42
por Kike
hannibal1986 escribió:Gracias, ahora se abre y cierra, todo en local estoy probando, al realizar un scan con nmap, el puerto que tengo cerrado con port knocking me lo muestra como 'filtered rsh-spx', hay forma de que no muestre nada?
No estoy seguro pero creo que no se puede, ya que IPTABLES se encarga de mantenerlo bloqueado constantemente (actuando como firewall)
Si hay alguien que pueda iluminarnos un poco en el tema... :claroclaro

Re: Instalar y configurar la técnica Port Knocking para reforzar nuestra seguridad por SSH

Publicado: 27 Nov 2016, 09:02
por wat3r
Excelente tuto @kike. Una forma de asegurar nuestras conexiones. Gracias por la info

Enviado desde mi SM-G900F mediante Tapatalk

Re: Instalar y configurar la técnica Port Knocking para reforzar nuestra seguridad por SSH

Publicado: 27 Nov 2016, 22:53
por Kike
Añadido al tutorial como arrancar Knockd al iniciar sistema , muchas gracias @hannibal1986 !!

Re: Instalar y configurar la técnica Port Knocking para reforzar nuestra seguridad por SSH

Publicado: 02 Ene 2017, 22:45
por leserc
Hola, me he decidido a instalarlo sobre OSMC y al instalar iptables-persistent me sale un error y ya no he continuado, parece ser que en OSMC cambiaron update-rc.d

Código: Seleccionar todo

Processing triggers for systemd (215-17+deb8u5) ...
Setting up netfilter-persistent (1.0.3+deb8u1) ...
update-rc.d: warning: start and stop actions are no longer supported; falling back to defaults
Setting up iptables-persistent (1.0.3+deb8u1) ...

Re: Instalar y configurar la técnica Port Knocking para reforzar nuestra seguridad por SSH

Publicado: 03 Ene 2017, 20:55
por Kike
leserc escribió:Hola, me he decidido a instalarlo sobre OSMC y al instalar iptables-persistent me sale un error y ya no he continuado, parece ser que en OSMC cambiaron update-rc.d

Código: Seleccionar todo

Processing triggers for systemd (215-17+deb8u5) ...
Setting up netfilter-persistent (1.0.3+deb8u1) ...
update-rc.d: warning: start and stop actions are no longer supported; falling back to defaults
Setting up iptables-persistent (1.0.3+deb8u1) ...
No he tenido la oportunidad de probarlo en OSMC, prueba de instalarlo simplemente con el programa iptables, quizás te pueda funcionar.

Re: Instalar y configurar la técnica Port Knocking para reforzar nuestra seguridad por SSH

Publicado: 05 Ene 2017, 18:14
por leserc
Así he hecho, instalar iptables, parece que todo ha quedado bien, pero ahora no consigo configurar el programa de pc, otro día lo vuelvo a intentar

Enviado desde mi m2 note mediante Tapatalk

Re: Instalar y configurar la técnica Port Knocking para reforzar nuestra seguridad por SSH

Publicado: 21 Feb 2018, 18:19
por skonner87
Pues yo lo tengo configurado como lo pones, y intento cerrar y no cierra, abrir si está abierto..

closeSSH: running command: /sbin/iptables -D INPUT -s 192.XX.XX.XX -p tcp --dport 22 -j ACCEPT
iptables: Bad rule (does a matching rule exist in that chain?).
closeSSH: command returned non-zero status code (1)