krocz | Gracias a los participantes por asistir y mantener viva esta |
---|---|
iniciativa | |
krocz | En esta ocacion |
krocz | tenemos el agrado de presentar a Alfredo Campos Enriquez |
krocz | El es mexicano miembro del Grupo de Usuarios de Linux en Puebla |
krocz | el cual nos deleitara con su charla relacionada con "Port knocking" |
krocz | bueno Alfredo |
krocz | un gusto tenerte por aqui |
krocz | el canal es tuyo |
Freddy | Gracias! muchas gracias por la invitacion y bueno, ofrezco una |
disculpa por la tardanza.. ya saben.. problemas tecnicos. | |
Freddy | Ok, esta charla como ya se mencion´o es sobre una pequeña |
implementacion de port kncing | |
Freddy | Para los que nos epan que es el port knocking pues aqui les va una |
breve introduccion | |
Freddy | Supongamos que si yo a uns ervidor le meto un firewall que no permita |
entrada de ningun tipo | |
Freddy | Pues entonces todaclase de comunicaciones seran rechazadas no? |
Freddy | Supongamos ahora que instruimos al firewall para que guarde en las |
bitacoras todas los intentos de conexion al sistema | |
Freddy | Si hacemos esto tendremos algo asi como un historial de los mismos |
no? | |
Freddy | Cada uno de estos registros de conexion se llaman "knocks" (llamados |
o toques [a la puerta en este caso]) | |
Freddy | en el caso de iptables (el firewall por defecto para linux), se |
registran datos como el ip de destino y fuente, los puertos de | |
destino y fuente (entre otros) | |
Freddy | Ahora, supongamos que le damos un dsentido a cada uno de estos |
knocks, es decir | |
Freddy | decimos por ejemplo que si se registran intentos de conexion (knocks) |
desde un IP, primero al puerto 1234 y despues al 2345 | |
Freddy | entonces se llevara a cabo una cierta accion... |
Freddy | Esta es la idea subyacente. |
Freddy | Es decir, que transmitamos informacion al sistema cerrado a traves de |
los registros del firewall. | |
-:- SignOff ceruno: #linux,#qc (Ping timeout) | |
Freddy | Ahora, existen diversos enfoques del port knocking. De los cuales se |
distinguen tres principalmente. | |
Freddy | Por cierto.. si quieren ver mas informacion al respecto pueden |
visitar http://www.portknicking.org | |
Freddy | bueno, les decia. |
Freddy | Existen al menos tres tipos de port knocking: El primero es el port |
kocking clasico | |
Freddy | En el que se envia toda una secuencia de llamados (knocks). Es decir, |
se envian llamados en un orden especifico para que se ejecute alguna | |
accion. | |
Freddy | De este tipo, existen algunas variantes, en las cuales se envian |
datos en el payload de los paquetes | |
Freddy | Este primer tipo se conoce como de Spread Spectrum. |
Freddy | El segundo tipo es mas simple y se ocnoce como Tail Gate. |
Freddy | la idea aqui es que ustedes mandenun soo paquete, que contenga en su |
payload una clave para que se genere la respuesta adecuada. | |
Freddy | En mi opinion La mejor aproximacion es la primera, puesto que al |
haber un poco mas de informacion es un poco mas "complejo" el que | |
nos rastreen los datos. | |
Freddy | hay por ahi un muy buen articulo escrito por gente de Intel y de |
Berkeley | |
Freddy | llamado # Techniques for Lightweight Concealement and Authentication |
in IP Networks | |
Freddy | tambien disponible en la aginade port knocking el cual describe a |
mayor detalle estos tipos de llamados. | |
Freddy | Regresando al port knocking de tail gate, este tipo de paquetes por |
lo general llevan encendida la bandera SYN. | |
Freddy | La tercera clase de port knocking es la llamada Option-Keyed |
Freddy | Es este clase, se pueden utiliar diferentes banderas y seusa tambien |
una serie de aquetes como en el spread spectrum. | |
Freddy | EEste tipo de implementaciones no es nada recomendable para |
servidores de altoytrafico | |
Freddy | Ahora, enfoquemonos al primer tipo, al de Spread Spectrum. |
Freddy | En Linux Journal aparecio hace ya algun tiempo un muy buen articulo |
que lo describe: http://www.linuxjournal.com/article/6811 | |
Freddy | deciamos que para que funcione, es necesario enviar una secuencia de |
llamados en un orden determinado, | |
Freddy | es decir, si nosotros queriamos por ejemplo que se abriera el puerto |
22 pues entonces deberiamos por ejemplo enviar la secuencia 87,90,56 | |
Freddy | Si, en cambio, deseabamos que se cerrara el puerto entonces deberiams |
enviar por ejemplo la secuencia 90,87,56 | |
Freddy | Obviamente una implementacion de este tipo rsulta un poco peligrosa |
porque cualquiera podria darse cuenta de las secuencias de apertura | |
Freddy | Lo mismo si enviamos un payload dentro de los paquetes |
Freddy | hay por ahi algunas implementaciones (hechas en shell script) por |
cierto) que lo que hacen es que "encriptan" la secuencia | |
Freddy | Es decir, que si la original era 87,90,56 |
Freddy | despues de encriptada seria por ejemplo: 1234,2345,9876 |
Freddy | Esta idea pues fue buena, aunque iguialmente, si logro averiguar la |
secuencia, pues ya no tiene mucho sentido la codificacion hecha | |
previamente no? | |
Freddy | Imaginense ahora, un pso mas alla. |
Freddy | Supongamos que la secuencia va a seguir una estructura mas o menos |
determinada. | |
krocz | Freddy una pregunta del canal #qc |
Freddy | claro |
krocz | <feistel> es como un abrete sesamo!! |
krocz | <feistel> ahora bien eso puede romperse por fuerza bruta? |
krocz | <feistel> con un rapido port scanning obtendriamos la secuencia si es |
corta | |
Freddy | Sobre la pregunta de feistel > si.. efectivamente se puede romper por |
fuerza bruta :D | |
Freddy | Alguna otra regunta? |
Freddy | Bueno... |
Freddy | continuemos :) |
Freddy | Como les decia |
Freddy | Esta implementacion asibasica pues no me permite filtrar por usuarios |
no? simplemente reconoce secuencias y se acabo. | |
Freddy | Supongamos que ahora, le insertamos el reconocimeinto de usuarios |
Freddy | Pocos por cierto porque sinoimaginanse, el problema es el mismo, |
ademas de que se gastarian demasiados recursos del sistemaen el | |
analisis de bitacoras. | |
Freddy | Ok, supongamos que incluimos el soporte para usuarios y generamos por |
ahi un pequeño archivoto tipo el /etc/passwd | |
Freddy | que contenga unicamente el nombre de usuario y el password |
(encriptdo) u oculto por algunmetodo.. el que quieran | |
Freddy | Yo para efectos de evitar a los curiosos use un simple md5 ;) |
Freddy | Ok... |
Freddy | para que el usuario freddy pueda entrar al sistema obviamente debera |
proporcionaru password no? | |
Freddy | Pero ahora la pregunta es.. como enviarlo? |
Freddy | A traves del payload? |
Freddy | No.. porqueigualmente es peligroso |
Freddy | a traves de la secuencia?? pues tampoco |
Freddy | Pues es el mismo cantar. |
Freddy | Que tal si al cliente le decimos como parte de su script de conexion |
que debe dar tambien un numero de puerto al cual conectarse? | |
Freddy | El usuario como parte del proceso debera entonces entrar al sistema 3 |
datos. | |
Freddy | Su login, su password y el numero de puerto al cual se va a conectar. |
Freddy | Con los dos primeros lo que hacemos es generar una cadena... no |
se..digamos nuevamente con md5 | |
Freddy | tomamos los dos primeros caracteres de la cadena (que siempre van a |
ser numeros en hex) y hacemos alguna operacion macabra con este y el | |
numero del puerto | |
Freddy | y generamos a partir de este md5 una secuencia :D |
Freddy | Con esto tenemos que aunque el nmbre de usuarioy el password sean |
siempre los mismos, existe al menos un dato que va a ser difernete, | |
dependiendo claro de las costumbres del o d elos usuarios que se | |
conecten por este metodo. | |
Freddy | Ahora, del lado del servidor lo que tenemos que hacer es que una ves |
que ha legado el primer knock desde un ip, entonces se debe calcular | |
el resto de la secuencia a partir de los login's y password's de los | |
usuarios registrados. | |
Freddy | Acto seguido, ya que se ha completado la secuencia de llamados, lo |
comparo con las posibilidades que tengo y veo cual es la correcta | |
Freddy | En base a eso se abre el puerto y se continua con la conexion por ssh |
o lo que se quiera | |
Freddy | El chiste de esto.. es que un firewall comun y corriente por lo |
general solamente hace discriminacion a nivel de paquetes | |
Freddy | no a nivel de usuario, de eso se supone que se encargan las |
aplicaciones | |
Freddy | Este tipo de implementaciones es algo complicada y claro que tiene |
sus defectos.. | |
Freddy | Bueno.. basicamente esto es la presentacion. :) espero que les haya |
gustado | |
-:- mode/#linux [-m] by fernand0 | |
fernand0 | plas plas plas plas plas plas plas plas plas plas |
fernand0 | plas plas plas plas plas plas plas plas plas plas |
RaD|Tz | clap clap clap clap |
fernand0 | plas plas plas plas plas plas plas plas plas plas |
RaD|Tz | clap clap clap clap |
fernand0 | plas plas plas plas plas plas plas plas plas plas |
The Organizing Comittee