Hace tiempo se había hablado en Slashdot del port-knocking, una manera de elevar la seguridad aun más los servidores y hacer manejo remoto del firewall.
En que consiste? Muy sencillo, es como el santo y seña
Tu quedas con la novia, y para que sepa que eres tú, tocas en la puerta de du casa y…
-Pum … Pum… PumPumPum
(o eran 3 largos y dos cortos?)
(o eran 2 cortos, esperar, y 3 largos?)
El : Soy yo…
Ella : Qué vienes a buscar ?
El : A ti…
Ella : Y es tarde…
El : Por qué ?
Ella : Porque ahora soy yo la que quiere estar sin ti…
(OT: Quien diría que Pimpinela tiene 20 discos, eh? 😉 )
Y eso quiere decir que te has equivocado al golpear, o que llevas una mancha de huevo en la camisa.
Pues el Port-Knocking es algo parecido
Consiste en hacer intentos de conexión a una secuencia de puertos predefinida para que el sistema reconozca que eres tu, y, por ejemplo, te añada una tabla al iptables para darte acceso al ssh, o a la VPN o similar.
En una de las soluciones que implementan Port-Knocking, que es knockd hay un pequeño ejemplo para permitir el acceso al ssh:
sequence = 7000,8000,9000
protocol = tcp
timeout = 15
command = /usr/sbin/iptables -A INPUT -s %IP% -p tcp –dport 22 -j ACCEPT
Si haces una llamada (un intento de conexión cualquiera, por ejemplo con un telnet) al puerto 7000, duespés una al 8000 y acto seguido una al 9000, lanza un comando de iptables, y se abre el SSH para tu dirección IP.
Ya le vais viendo el intríngulis al tema? Pues luego podemos hacer a la inversa, añadiendo unas cuantas líneas más en el fichero de configuración:
sequence = 9000,8000,7000
protocol = tcp
timeout = 15
command = /usr/sbin/iptables -D INPUT -s %IP% -p tcp –dport 22 -j ACCEPT
Una llamada al 9000, otra al 8000, otra al 7000, y “Pum, pum, adiós, me voy, así que echa el cerrojo”, y el puerto vuelve a estar cerrado, cerrado como antes.
Pues así de sencillo es todo
Una de las ventajas es que los puertos ni siquiera tienen que estar abiertos, ya que la aplicación escucha a nivel de enlace, y por lo tanto, si te hacen un escaneo de puertos, no encontrarán los puertos que utilizas para hacer las combinaciones mágicas.
En principio el diseño conceptual del Port-Knocking tenía como objetivo abrir y cerrar accesos y puertos, pero si se piensa un poquito, se puede utilizar para cosas más divertidas.
Lanzar procesos, backups, alertas, aplicaciones, reiniciar el equipo… todo depende de la imaginación y el arte de cada uno.
Ojo!! Ni se os ocurra poner llamadas a puertos consecutivos, o cercanos cuando implementeis esto. Procurad que sean puertos distantes, y no comunes, y no programar la llamada para que los puertos sean llamados en orden de mayor a menor o viceversa, sino pensaros una secuencia un poco aleatoria, ya que si no un simple escaneo “rutinario” de puertos, te puede hacer “saltar las alarmas”, los procesos, o las tablas del firewall, activando llamadas.
URLs:
knockd : http://www.zeroflux.org/knock/
knockd en slashdot : http://slashdot.org/article.pl?sid=04/04/14/1832222
Teoría del port-knocking [slashdot] : http://slashdot.org/article.pl?sid=04/02/05/1834228&tid=172
Una tarde me aburría y…
Bueno, no se, a lop mejor al interés general queda este artículo un poco lejos, pero si me echais una manita y me pedís alguna otra cosa, en plan de un tutorial para shell en OsX, o un tutorial de permisos (creo que tengo uno a medias), pues podemos echar un ojo a ver que se puede hacer 😀
Que va! lo que no mata engorda…
Es bueno esto de usar combinaciones de puertos…
A mi me interesa esto de Knock pero ya hay para mac??…me baje de la pagina http://www.zeroflux.org/knock/ el código fuente y no me compila….algun consejo para poder compilarlo???…Gracias…
Ah lo de los tutoriales de Shell y permisos a mi me gusta…ya me gustaria ver uno q aveces se necesita….
Asegúrate de que tienes libpcap (según sistemas libpcap-dev), porque es requerido por el software para que escuche las llamadas a puertos.
De todas maneras yo no lo he probado a compilar en Mac OSX, así que no te se decir si aun instalando libpcap va a funcionar, anyway, si alguien se ofrece voluntario a prestar su OSX (una shell remota me bastaría) intentaría compilarlo 😀
PD : libpcap son unas librerías de red que se utilizan para ‘esnifear’, o ‘escuchar’ las conexiones y los datos que se mueven a través de una conexión de red.
Que marco teorico se necesita para realizar una investigacion mas profesional sobre esta nueva tecnica??