Este post está mas enfocado a aquellos que tienen un cierto conocimiento de redes, ya que de lo que hoy voy a hablar se trata de ocultación o más bien ofuscación de puertos en redes tcp/ip.
El otro dÃa recibà en un mail de un boletÃn de seguridad de Hispasec, esta interesante técnica de «seguridad» que sin ser muy buena por si sola, combinada con otras medidas, puede ser muy efectiva.
Y puesto que es algo un poco largo, lo iré haciendo en varios artÃculos.
Bien, empezamos.
Para hacer una analogÃa os preguntare, alguno/a cuando erais pequeños no habéis tenido una cabaña, una casa club (no de alterne) o no habéis querido que entren a vuestro cuarto sin que antes hagan una combinación de golpes en la puerta, o una melodÃa?
En la antigüedad, cuando se reunÃan ciertos grupos perseguidos, habitualmente ponÃan una cierta combinación de golpes en la puerta para que se le pidiera una identificación, ya que si el que llamaba no empleaba dicha combinación, nadie respondÃa y parecerÃa que el lugar estaba vacÃo, si por el contrario se conocÃa la combinación, alguien se asomaba y le requerÃa una contraseña.
Bien, la técnica de port knocking se basa en esto mismo, pero trasladado a los puertos empleados por los servidores en internet.
Vamos a suponer que estamos diseñando una aplicación para un cliente, en la cual queremos que solo ese cliente pueda acceder, pero que si alguien intenta hacer un ataque contra ese servidor, y hace un scaneo de puertos, no le aparezca como activo (cerrado).
Aplicar port knocking a esta situación es sencilla, basta con que la aplicación cliente abra conexión con una secuencia de puertos establecida (combinación de golpes a la puerta), si la secuencia es válida, el servidor pasará a abrir el puerto de trabajo, mientras que sino lo es, no hará nada.
Una vez se ha establecido la conexión con el puerto de trabajo, lo normal es que se pida una identificación al cliente para comprobar su autenticidad, ya sea vÃa usuario-password, tarjeta u otros métodos.
Pero es esta técnica infalible? como ya dije antes, no! pero como saltarse esta barrera lo veremos en la próxima entrega (quizá la semana que viene, o la siguiente, según me de y me lo permitan mis examenes).
Mientras os animo a que penséis y no busquéis la solución en la red, ya que sino no desarrollareis vuestro pensamiento.
febrero 3, 2008 at 2:18 pm
Tuturuuuuuuuu…
(castores mordiendo un árbol)
xD
febrero 3, 2008 at 3:08 pm
Espero impaciente la segunda entrega…
febrero 4, 2008 at 10:57 am
Muy guapo, pero la secuencia de puertos preestablecida deberá ser conocida por los dos usuarios no? Es un poco como usar una clave compartida, pero no le veo la utilidad adicional de usar una secuencia de puertos, simplemente es como pedirle al ordenador cliente dos claves en lugar de una. Por favor Chemi-man sácame de mi pozo de desconocimiento 😉
febrero 4, 2008 at 11:12 am
Estas en lo cierto en el tema de que es una clave compartida, y que el cliente debe conocer la secuencia de puertos (esto es util cuando usas por ejemplo una aplicación creada por ti pero no para un servidor web por ejemplo, entiendase servidor web de uso general)
Lo de la utilidad te dejo a ti que lo pienses y madures la idea, solo te dare una pista: scan de puertos.
En estos dias habra mas.
febrero 8, 2008 at 2:38 pm
me encanta el comment de cvalda y secundo su opinión xD