Zeque.com.ar | Linux, Mikrotik, Noticias…

Temas que me salvaron alguna vez, los comparto acá

Zeque.com.ar | Linux, Mikrotik, Noticias… - Temas que me salvaron alguna vez, los comparto acá

How to port knocking (knockd)

El port knocking es una técnica que se utiliza para mantener uno o más puertos cerrados hasta que se detecte una secuencia de “golpeado” de puertos en un orden determinado.

El servicio se llama knockd el cual se lo puede encontrar en varias distribuciones.

En el caso de Debian:

apt-get install knockd

Una vez instalado el servicio habrá que habilitarlo, ya que se encuentra deshabilitado de manera predeterminada.

vi /etc/default/knockd

#Cambiar 0 por 1
START_KNOCKD=1
#Si quiero que escuche en una interfaz determinada, lo defino en esta variable
KNOCKD_OPTS="-i eth1"

Editar la configuración para definir la secuencia de puertos y la configuración de iptables para habilitar o deshabilitar el puerto a ocultar.
La configuración predeterminada está pensada para un iptables con la política DROP de manera predeterminada.
Si no fuera tu caso y tuvieras distintas reglas de acceso con ACCEPT, y como última regla un DROP/REJECT, hay que cambiar el iptables -A por iptables -I, así la regla se agrega a la cabeza de las demás reglas.

vi /etc/knockd.conf

[openSSH]
        sequence    = 3050,4060,5070
        seq_timeout = 5
        command     = /sbin/iptables -I INPUT -s %IP% -p tcp --dport 22 -j ACCEPT
        tcpflags    = syn

[closeSSH]
        sequence    = 5070,4060,3050
        seq_timeout = 5
        command     = /sbin/iptables -D INPUT -s %IP% -p tcp --dport 22 -j ACCEPT
        tcpflags    = syn

Luego de grabar el archivo de configuración hay que reiniciar el servicio

/etc/init.d/knockd restart

Por último probar la secuencia de puertos. Se puede realizar ejecutando 3 telnets en orden, netcat, nmap, etc

En este caso utilizo nmap. La opción -r es para desactivar el random en el orden de los puertos, y que lo haga de manera secuencial

nmap -r -p 3050,4060,5070 10.0.0.139

tail -f /var/log/syslog

Sep 11 01:17:44 zeque knockd: 10.1.32.24: openSSH: Stage 1
Sep 11 01:17:44 zeque knockd: 10.1.32.24: openSSH: Stage 2
Sep 11 01:17:44 zeque knockd: 10.1.32.24: openSSH: Stage 3
Sep 11 01:17:44 zeque knockd: 10.1.32.24: openSSH: OPEN SESAME
Sep 11 01:17:44 zeque knockd: openSSH: running command: /sbin/iptables -I INPUT -s 10.0.32.24 -p tcp --dport 22 -j ACCEPT

Podemos ver que se ejecuto la regla de iptables -I aceptando la IP de origen.

Ahora utilizo la secuencia inversa para cerrar el puerto.

nc 10.0.34.139 5070 4060 3050

tail -f /var/log/syslog

Sep 11 01:30:53 zeque knockd: 10.0.32.24: closeSSH: Stage 1
Sep 11 01:30:53 zeque knockd: 10.0.32.24: closeSSH: Stage 2
Sep 11 01:30:53 zeque knockd: 10.0.32.24: closeSSH: Stage 3
Sep 11 01:30:53 zeque knockd: 10.0.32.24: closeSSH: OPEN SESAME
Sep 11 01:30:53 zeque knockd: closeSSH: running command: /sbin/iptables -D INPUT -s 10.0.32.24 -p tcp --dport 22 -j ACCEPT

Al hacer la secuencia de cierre, se puede ver que se ejecuta iptables -D para borrar la regla agregada anteriormente.

Fuente:
http://www.zeroflux.org/projects/knock/

Rate this post
Category: GNU/Linux, How To

Your email address will not be published. Required fields are marked *

*