seguridad-digital.png, 0 kB
PORTAL arrow ARTÍCULOS arrow Redes arrow Port knocking
SECCIONES
PORTAL
ARTÍCULOS
NOTICIAS
TUTORIALES
SERVICIOS
ENLACES
COLABORADORES
CONTRIBUIR
ACERCA DE...
LOGIN





¿Recuperar clave?
¿Quiere registrarse? Regístrese aquí
RELACIONADOS
ESTADÍSTICAS
Usuarios: 620
Noticias: 215
Enlaces: 35
Visitantes: 1176185
ACTIVIDAD
Hay 14 invitados en línea
Port knocking | Imprimir |  E-Mail
Calificación del usuario: / 4
MaloBueno 
Escrito por alguien de forma anónima   
Thursday, 17 de August de 2006
La teoría de estos sistemas es bastante sencilla. Consiste en correr un servidor que esta a la escucha en un interfaz indicada, esperando secuencias de "llamadas" a una secuencia de puertos, con el fin de ejecutar un comando dependiendo de la secuencia. Aunque parezca algo sencillo a simple vista, puede ser muy útil como medidas para ejecutar comandos especiales remotamente sin necesitar de abrir un ssh.


Estas escuchas se hacen a nivel de capa de enlace, por lo que no es necesario que los puertos estén abiertos, para tener información de que puertos han recibido un "knock". Es recomendable que utilicemos una secuencia de puertos no consecutiva, no incremental o decremental, etc es decir algo que no sea fácil de averiguar por otra gente ajena a nosotros.

He encontrado un sistemad de este tipo llamado Knockd, cuyo paquete nos lo podemos bajar de:

http://www.zeroflux.org/knock/knock-0.2.1.tar.gz.

Para instalarlo basta con el típico:

./configure && make && make install,

Eso si aseguraros de tener las libpcap-dev, ya que se basa en ellas. Una vez lo hayamos compilado correctamente, podemos distinguir 3 ficheros importantes.

El Knockd es el servidor, que se ejecutara en el ordenador que queremos que este ala escucha y ejecute los comandos en función de la secuencia que mandemos. Aquí os pongo sus opciones:

-i, --interface <int> La interfaz en la que escuchara, por defecto eth0
-d, --daemon Si lo queremos corres en modo demonio.
-c, --config <file> El fichero de configuración, por defecto /etc/knock/.etc
-D, --debug Mensajes de debugging..
-v, --verbose Una salida con mas información.
-V, --version Muestra la versión.
-h, --help Ayuda.

El Knock es, por decirlo de algún modo, el llamador. Su sintaxis es muy sencilla, ya que tenemos que indicarle, el host al que queremos llamar, y la secuencia de puertos.

-u, --udp Mandar paquetes UDP, por defecto TCP
-v, --verbose Una salida con mas información
-V, --version Muestra la versión
-h, --help Ayuda.

El /etc/knock.conf, aquí es donde indicamos toda la relación de comandos con la de secuencias de puertos, así como otro tipo de configuraciones. Estos son los parámetros que podemos poner.

UseSyslog
Esto hace que se introduzcan mensajes de información en el syslog.

LogFile = /path/to/file
Archivo de log.

PidFile = /path/to/file
Cuando corre en demonio podemos indicarle un archivo PID..

Sequence = port,port,port...
Secuencia de puertos.

Protocol = tcp|udp
Que protocolo utilizaran los paquetes que nos enviaran.

TCPFlags = fin|syn|rst|psh|ack|urg

Podemos especificar la bandera de los paquetes a los que haremos caso.

Command = command
El comando que ejecutaremos, con esa secuencia. Existe una variable llamada %IP%, que contiene la ip del que nos ha mandado la secuencia de puertos.

Ahora pasemos a la versión practica. Lo primero que tenemos que hacer es escribir nuestro knock.etc, para ello podemos indicar conjuntos como estos:

[Abrir el FTP para mi]
sequence = 7000,8000,9000
protocol = tcp
timeout = 5
command = /sbin/iptables -I INPUT -s %IP% -p tcp --dport 21 -j ACCEPT

[Cerrarmos el FTP]
sequence = 9000,8000,7000
protocol = tcp
timeout = 5
command = /sbin/iptables -D INPUT -s %IP% -p tcp --dport 21 -j ACCEPT

Ahora corremos el knockd en el host en el que queremos ejecutar comandos: knockd -i eth0 -v. Despues ya solo falta utilizar el knock, es decir el llamador cuando queramos ejecutar algo. Un ejemplo de salida seria el siguiente:

Cliente:
# /usr/local/bin/knock -v 192.168.1.1 7000 8000 9000
hitting tcp 192.168.1.1:7000
hitting tcp 192.168.1.1:8000
hitting tcp 192.168.1.1:9000
#
Servidor:
./knockd -v
listening on eth0...
192.168.1.3: Abrir el FTP para mi: Stage 1
192.168.1.3: Abrir el FTP para mi: Stage 2
192.168.1.3: Abrir el FTP para mi: Stage 3
192.168.1.3: Abrir el FTP para mi: OPEN SESAME
running command: /sbin/iptables -I INPUT -s 192.168.1.3 -p tcp --dport 21 -j ACCEPT

Pues esto es todo, y espero que os sea tan útil como a mi me lo ha sido. Podeis encontrar mas información en:

http://www.zeroflux.org/knock/
http://www.linuxjournal.com/article.php?sid=6811
http://www.narcotize.com/blog/archives/000005.html

Autor:
Jose Luis E. G.
Comentarios
Añadir nuevoBuscarRSS
Escribir comentario
Nombre:
Website:
Título:
 
 
Security Image
Por favor introduce el código anti-spam que puedes leer en la imagen.

Copyright (C) 2007 Alain Georgette / Copyright (C) 2006 Frantisek Hliva. All rights reserved.

 
Seguridad Digital - Licencia CC v2.5