IV International Conference of Unix at Uninet
  • Presentation
  • Register
  • Program
  • Organizing Comittee
  • Listing of registered people
  • Translators team
Alfredo Campos

kroczGracias a los participantes por asistir y mantener viva esta
iniciativa
kroczEn esta ocacion
krocztenemos el agrado de presentar a Alfredo Campos Enriquez
kroczEl es mexicano miembro del Grupo de Usuarios de Linux en Puebla
kroczel cual nos deleitara con su charla relacionada con "Port knocking"
kroczbueno Alfredo
kroczun gusto tenerte por aqui
kroczel canal es tuyo
FreddyGracias! muchas gracias por la invitacion y bueno, ofrezco una
disculpa por la tardanza.. ya saben.. problemas tecnicos.
FreddyOk, esta charla como ya se mencion´o es sobre una pequeña
implementacion de port kncing
FreddyPara los que nos epan que es el port knocking pues aqui les va una
breve introduccion
FreddySupongamos que si yo a uns ervidor le meto un firewall que no permita
entrada de ningun tipo
FreddyPues entonces todaclase de comunicaciones seran rechazadas no?
FreddySupongamos ahora que instruimos al firewall para que guarde en las
bitacoras todas los intentos de conexion al sistema
FreddySi hacemos esto tendremos algo asi como un historial de los mismos
no?
FreddyCada uno de estos registros de conexion se llaman "knocks" (llamados
o toques [a la puerta en este caso])
Freddyen 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)
FreddyAhora, supongamos que le damos un dsentido a cada uno de estos
knocks, es decir
Freddydecimos por ejemplo que si se registran intentos de conexion (knocks)
desde un IP, primero al puerto 1234 y despues al 2345
Freddyentonces se llevara a cabo una cierta accion...
FreddyEsta es la idea subyacente.
FreddyEs decir, que transmitamos informacion al sistema cerrado a traves de
los registros del firewall.
-:- SignOff ceruno: #linux,#qc (Ping timeout)
FreddyAhora, existen diversos enfoques del port knocking. De los cuales se
distinguen tres principalmente.
FreddyPor cierto.. si quieren ver mas informacion al respecto pueden
visitar http://www.portknicking.org
Freddybueno, les decia.
FreddyExisten al menos tres tipos de port knocking: El primero es el port
kocking clasico
FreddyEn 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.
FreddyDe este tipo, existen algunas variantes, en las cuales se envian
datos en el payload de los paquetes
FreddyEste primer tipo se conoce como de Spread Spectrum.
FreddyEl segundo tipo es mas simple y se ocnoce como Tail Gate.
Freddyla idea aqui es que ustedes mandenun soo paquete, que contenga en su
payload una clave para que se genere la respuesta adecuada.
FreddyEn 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.
Freddyhay por ahi un muy buen articulo escrito por gente de Intel y de
Berkeley
Freddyllamado # Techniques for Lightweight Concealement and Authentication
in IP Networks
Freddytambien disponible en la aginade port knocking el cual describe a
mayor detalle estos tipos de llamados.
FreddyRegresando al port knocking de tail gate, este tipo de paquetes por
lo general llevan encendida la bandera SYN.
FreddyLa tercera clase de port knocking es la llamada Option-Keyed
FreddyEs este clase, se pueden utiliar diferentes banderas y seusa tambien
una serie de aquetes como en el spread spectrum.
FreddyEEste tipo de implementaciones no es nada recomendable para
servidores de altoytrafico
FreddyAhora, enfoquemonos al primer tipo, al de Spread Spectrum.
FreddyEn Linux Journal aparecio hace ya algun tiempo un muy buen articulo
que lo describe: http://www.linuxjournal.com/article/6811
Freddydeciamos que para que funcione, es necesario enviar una secuencia de
llamados en un orden determinado,
Freddyes decir, si nosotros queriamos por ejemplo que se abriera el puerto
22 pues entonces deberiamos por ejemplo enviar la secuencia 87,90,56
FreddySi, en cambio, deseabamos que se cerrara el puerto entonces deberiams
enviar por ejemplo la secuencia 90,87,56
FreddyObviamente una implementacion de este tipo rsulta un poco peligrosa
porque cualquiera podria darse cuenta de las secuencias de apertura
FreddyLo mismo si enviamos un payload dentro de los paquetes
Freddyhay por ahi algunas implementaciones (hechas en shell script) por
cierto) que lo que hacen es que "encriptan" la secuencia
FreddyEs decir, que si la original era 87,90,56
Freddydespues de encriptada seria por ejemplo: 1234,2345,9876
FreddyEsta idea pues fue buena, aunque iguialmente, si logro averiguar la
secuencia, pues ya no tiene mucho sentido la codificacion hecha
previamente no?
FreddyImaginense ahora, un pso mas alla.
FreddySupongamos que la secuencia va a seguir una estructura mas o menos
determinada.
kroczFreddy una pregunta del canal #qc
Freddyclaro
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
FreddySobre la pregunta de feistel > si.. efectivamente se puede romper por
fuerza bruta :D
FreddyAlguna otra regunta?
FreddyBueno...
Freddycontinuemos :)
FreddyComo les decia
FreddyEsta implementacion asibasica pues no me permite filtrar por usuarios
no? simplemente reconoce secuencias y se acabo.
FreddySupongamos que ahora, le insertamos el reconocimeinto de usuarios
FreddyPocos por cierto porque sinoimaginanse, el problema es el mismo,
ademas de que se gastarian demasiados recursos del sistemaen el
analisis de bitacoras.
FreddyOk, supongamos que incluimos el soporte para usuarios y generamos por
ahi un pequeño archivoto tipo el /etc/passwd
Freddyque contenga unicamente el nombre de usuario y el password
(encriptdo) u oculto por algunmetodo.. el que quieran
FreddyYo para efectos de evitar a los curiosos use un simple md5 ;)
FreddyOk...
Freddypara que el usuario freddy pueda entrar al sistema obviamente debera
proporcionaru password no?
FreddyPero ahora la pregunta es.. como enviarlo?
FreddyA traves del payload?
FreddyNo.. porqueigualmente es peligroso
Freddya traves de la secuencia?? pues tampoco
FreddyPues es el mismo cantar.
FreddyQue tal si al cliente le decimos como parte de su script de conexion
que debe dar tambien un numero de puerto al cual conectarse?
FreddyEl usuario como parte del proceso debera entonces entrar al sistema 3
datos.
FreddySu login, su password y el numero de puerto al cual se va a conectar.
FreddyCon los dos primeros lo que hacemos es generar una cadena... no
se..digamos nuevamente con md5
Freddytomamos 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
Freddyy generamos a partir de este md5 una secuencia :D
FreddyCon 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.
FreddyAhora, 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.
FreddyActo seguido, ya que se ha completado la secuencia de llamados, lo
comparo con las posibilidades que tengo y veo cual es la correcta
FreddyEn base a eso se abre el puerto y se continua con la conexion por ssh
o lo que se quiera
FreddyEl chiste de esto.. es que un firewall comun y corriente por lo
general solamente hace discriminacion a nivel de paquetes
Freddyno a nivel de usuario, de eso se supone que se encargan las
aplicaciones
FreddyEste tipo de implementaciones es algo complicada y claro que tiene
sus defectos..
FreddyBueno.. basicamente esto es la presentacion. :) espero que les haya
gustado
-:- mode/#linux [-m] by fernand0
fernand0plas plas plas plas plas plas plas plas plas plas
fernand0plas plas plas plas plas plas plas plas plas plas
RaD|Tzclap clap clap clap
fernand0plas plas plas plas plas plas plas plas plas plas
RaD|Tzclap clap clap clap
fernand0plas plas plas plas plas plas plas plas plas plas

Generated by irclog2html.pl by Jeff Waugh - find it at freshmeat.net!

The Organizing Comittee

Email UsMore information


© 2004 - www.uninet.edu - Contact Organizing Comittee - Valid XHTML - Valid CSS - Based on a Design by Raul Pérez Justicia