| 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