mfkr_ | estoamos orgullosos de presentar a Mr. Jose Nazario de Monker.org |
---|---|
mfkr_ | Dr. Nazario tiene un Phd en bioquimica de Case Western Reserve |
mfkr_ | pero actualmente trabaja como Verificador de Sistemas y analista de segusridad |
mfkr_ | para una compa#ia americana |
mfkr_ | El titulo de la conferencia es is Vthrottle: stopping mail viruses through libmilter |
mfkr_ | parando los virus de email con libmilter |
mfkr_ | las dispositivas de esta presentacion estan en http://monkey.org/~jose/presentations/vthrottle.d |
mfkr_ | el concepto detras de vthrottle no es mio |
mfkr_ | pertenece a los labs de HP |
mfkr_ | particularmente a matt williamson |
mfkr_ | y su grupo de investigacion |
mfkr_ | ellos han estado investigando usar mecanismos de limitacion |
mfkr_ | para prevenir el crecimiento de anomalias en la red |
mfkr_ | yo supe de esta investigacion |
mfkr_ | usando un limitador de actividad extran~a |
mfkr_ | mientras escribia un libro en gusanos de internet |
mfkr_ | el cual fue publicado el ultimo mes |
mfkr_ | en breve la tecnica parece ser prometedora |
mfkr_ | pero no estoy completamente convencido de que funcione para todos los casos |
mfkr_ | luego decidi escribir un codigo que probara esto para ver como se comportaba en el mundo real |
mfkr_ | este codigo esta recien en la version 0.30, pero es muy estable |
mfkr_ | y tiene la mayoria de las caracteristicas que tendria un producto de un release 1.0 |
mfkr_ | en resumen vthrottle es un plugin para el email server MTA |
mfkr_ | te permite modificar el comportamiento del MTA |
mfkr_ | MTA = Mail Transfer Agent |
mfkr_ | opera en la capa del MTA , en la conversacion SMTP |
mfkr_ | esta conversacion SMTP entre cliente y servidor |
mfkr_ | esto es opuesto a su cliente lector de email que se denomina MUA |
mfkr_ | MUA (mail user agent) |
mfkr_ | encargado de bajar el correo de sus casillas |
mfkr_ | vthrottle no para los gusanos , solo los hace mas lentos |
mfkr_ | tu nunca le vaz a ganar la carrera a un gusano |
mfkr_ | luego la intencion es ganar un poco de tiempo para alcanzar a reaccionar |
mfkr_ | para hacer esto con gusanos que aun no son conocidos |
mfkr_ | se trabaja con propiedades genericas de los gusanos |
mfkr_ | nunca nos fijamos en la carga util, solo en el comportamiento del host |
mfkr_ | la implementacion esta basada en el plugin milter para sendmail |
mfkr_ | milter es el plugin para la arquitectura sendmail |
mfkr_ | que permite interactuar con el server SMTP y tomar decisiones acerca de los mensajes que pasan por el |
mfkr_ | diapositiva # 3 slide #3 |
mfkr_ | tomemos unos minutos para revisar libmilter |
mfkr_ | libmilter es un plugin de la arq sendmail |
mfkr_ | como aparece en el slide 3 es una biblioteca para la parte cliente |
mfkr_ | y el cliente necesita soporte para este y se adhiere en la etapa se compilacion del sendmail |
mfkr_ | no funciona para qmail, exim , postfix etc |
mfkr_ | provee un ambiente de trabajo para interactuar con los email en la etapa de transicion dentro del SMTP |
mfkr_ | esta etapa de transicion compienza cuando el dice HELO |
mfkr_ | y setea el "mail from" |
mfkr_ | o a quien el email va dirigido |
mfkr_ | y cuando envia los encabezados "headers," |
mfkr_ | luego envia el cuerpo del mensaje |
mfkr_ | cuando termina el cuerpo de mensaaje el email finaliza |
mfkr_ | y el cliente cierra la conexion |
mfkr_ | el cliente MILTER escucha a un Unix socket abierto en el mismo SMTP server |
mfkr_ | o tambien puede ser a travez de un socket ipv4 o ipv5 |
mfkr_ | esto te permite tener un unico servidor milter para una granja de MTA ( o smtp servers) |
mfkr_ | la gente tipicamente ha usado los plugins milter por las siguinetes 4 razones |
mfkr_ | la primera es como un archivador de mensajes |
mfkr_ | permite copiar todos los mensajes que pasan por un SMTP server |
mfkr_ | el segundo proposito tipico de milter es para recoger informacion para efectos estadisticos |
mfkr_ | el segundo proposito tipico de milter es para recoger informacion para efectos estadisticos |
mfkr_ | esto puede ser por ejemplo para ver cuotas de correo de salida por mes o por usuario |
mfkr_ | contar el numero de conexiones, se esta evaluando esta informacion a futuro como un macanismo generico de deteccion y control de gusanos |
mfkr_ | el tercer uso de milter es como un sub sistema de antivirus |
mfkr_ | tu puedes alimentar tu antivirus con el mensaje de email y devolver informacion acerca de este mensaje al server |
mfkr_ | aqui se podrian tomar acciones como las siguientes, rechazar o aceptar el email despues de la inspeccion |
mfkr_ | el cuarto uso de milter es como un mecanismo anti-spam |
mfkr_ | omologo al sistema de anti-virus |
mfkr_ | tu puedes pasar el mensaje al systema antispam para que lo evalue y rechaze o acepte |
mfkr_ | dispositiva #5 slide 5 |
mfkr_ | como se ha ,aludido en las previas dispositivas, milter puede *hacer* cosas a sobre las conexiones , puede reaccionar durante el estado de transicion |
mfkr_ | entregando un estado de OK 200, o fallo, serie de mensajes 400 fallo tempora o 500 para fallo permanente |
mfkr_ | en la version 8.13 de sendmail se permite dejar los mensajes de email en estado de cuarentena para una decision posterior |
mfkr_ | tu tb. puedes modificar el mail a la vez que pasa atravez de el sistema , aqui lo que se puede hacer es agregar encabezados (headers) como por ejemplo " "X-SPAM") |
mfkr_ | o incluso reescribir parte del mesnaje , como cambiar un attachment |
mfkr_ | por ultimo se puede copiar los mensaje silenciosamente |
mfkr_ | usando el sistema milter |
mfkr_ | los mensajes se pueden copia por ejemplo a un archivo |
mfkr_ | ver diapositiva # 6 slide 6 |
mfkr_ | usar libmilter es muy facil de hacer |
mfkr_ | el primer paso es armar un sendmail que tenga soporte para libmilter |
mfkr_ | luego configuras el sendmail para obligar los mensajes a pasar por un checkeo, llamado por el programa milter |
mfkr_ | el siguiente paso es escribir un programa milter |
mfkr_ | lo que se hace es llenar un struct que le dice al programa que funciones llamar a que puntos, para estos estados de transicion dentro de una transaccion SMTP |
mfkr_ | y por supuesto , to puede dejar estos seteados en NULL |
mfkr_ | si ti deaseas que no sean evaluados |
mfkr_ | estos son solo punteros a funciones |
mfkr_ | lo siguiente es escribir las funciones que evaluan la porcion de la conversacion SMTP |
mfkr_ | todas las funciones pueden tratar el cuerpo del mensaje como un string |
mfkr_ | pero hay que ser cuidadosos de como empaquetamos los NULL |
mfkr_ | todo los metodos retornan una respuesta que sea : dejar pasar, rechazar , o fallo |
mfkr_ | pero hay que ser cuidadosos de como empaquetamos los NULL |
mfkr_ | todo los metodos retornan una respuesta que sea : dejar pasar, rechazar , o fallo |
mfkr_ | dentro del programa tu necesitad connectarte al socket , que tu haz definido para comunicar con el MTA , ( ya sea un unix socket o un IPv4 socket) |
mfkr_ | luego las ultima cosa que queda por hacer el llamar a la funcion smfi_main() , la cual ejecuta el programa milter |
mfkr_ | los porgramas milter trabajan con hebras |
mfkr_ | permitiendo una lto desempeño |
mfkr_ | al mismo tiempo no se bloquean unas a otras |
mfkr_ | de modo que las puedes tener trabajando en paralelo |
mfkr_ | alguien pregunto en el canal #qc si existen herramienta como milter para qmail |
mfkr_ | la respuesta es ninguna que el orardor conozca |
mfkr_ | yo no uso qmail , pero etoy convencido de que milter no funciona con qmail |
mfkr_ | slide 7 dispositiva 7 |
Arador | los programas milter normalmente están escritos en C o C++, pero se han escrito bindings en Perl. Los milters perl tienen la misma estructura que el C milter. |
Arador | Debería ser facil escribir biondings para otros lenguajes usando el toolkit SWIG Entonces podrias escribir en Python, Ruby, tcl, C# o lo que te de a gana de lo que soporta SWIG. Creo que nadie ha hecho esto todavía. |
Arador | [diapositiva 8] |
Arador | vthrottle funciona de una manera muy muy fácil. Tiene tres partes de la transaccion SMTP que observa |
Arador | La primera es quien se conecta al servidor de correo. |
Arador | La segunda es como dices HELO (como empiezas la transacción SMTP) |
Arador | Y la tercera es la dirección de donde viene el email |
Arador | Para la conexión y ela información de HELO se conserva y compara el nombre del host, para el "mail desde" se usa una dirección de email |
Arador | para cada una de estas porciones de información, vthrottle conserva una lista de quien ha visto y cuando fueron vistos |
Arador | lo que hace entonces vthrottle es mirar al la hora actual y el tiempo de lista que vió alguna de esas observaciones y fuerza un intervalo mínimo entre esas conexiones |
Arador | asumimos un par de cosas aquí, la primera que los hosts normales no intentarán mandar correo mas deprisa que este limite y la segunda parte que asumimos es que creemos que la mayoría de virus y gusanos intentarán mandar correo mas rápido que este límite |
Arador | como dije antes, esta no es mi idea, es de matt williamson, un inverstigador de UK que trabaja en los laboratorios de HP |
Arador | [diapositiva 9] |
mfkr_ | vthrottle es muy facil de instalar |
mfkr_ | primero tienes q' estar seguro de que tu sendmail tenga soporte |
mfkr_ | para milter incluido |
Arador | y las librerias instaladas |
Arador | esta es parte de la distribucion normal de sendmail, asique no tienes que instalar nigun software especial |
Arador | entonces, obviamente, descargas el software de mi sitio: |
Arador | http://monkey.org/~jose/software/vthrottle/ |
Arador | la versión actual es 0.30, que lanze la semana pasada (14 diciembre 2003) |
Arador | compilar vthrottle puede costar un poco, solo porque todavía no hay un script ./configure |
Arador | necesitas modificar el Makefile |
Arador | al punto donde estén instalados las cabeceras libmilter y la librería |
Arador | entonces puedes instarlo donde quieras. El archivo README lista los cambios de configuración necesarios para tu sendmail.mc, una vez que regeneres tu archivo .cf ya lo tienes hecho |
Arador | se empieza de una manera muy simple: vthrottle -s <socket>, que es el socket de comunicación para el programa |
Arador | puedes ajustar diferentes intervalos de tiempo con -i (por defecto son sesenta segundos ahora mismo) |
Arador | tambien puedes crear una "lista blanca" usando -w. Este archivo especifica diferentes límites para direcciones de correo o hosts |
Arador | [diapositiva 10] |
Arador | esas son las grandes características de vthrotte ahora mismo, sobre su comportamiento básico |
Arador | puedes configurar un inter4valo por defecto que sea bueno para tu red o tu s necesidades |
Arador | digamos que la gente de tu oficina manda email cada 30 segundos de media, puedes cambiar el comportamiento de la linea de comando en tiempo de ejecución |
Arador | tambien puedes hacer listas blancas de hosts o direcciones de correo usando la funcion de lista blanca |
Arador | esto es para los grandes sistemas MTA o para direccions de listas de correo. Puedes configurar diferentes intervalos para esas entradas |
mfkr_ | este es un orden basico de las operaciones para el mail server |
Arador | [diapositiva 11] |
mfkr_ | este es un orden basico de las operaciones para el mail server |
mfkr_ | usando vthrottle. |
mfkr_ | cuando un host se conecta dice HELO, vthrottle mira a este en la lista de hosts |
mfkr_ | y cuando ellos son encontrados en la lista de hosts conocidos , evalua cual fue la hora de la ultima conexion |
mfkr_ | y cuanto duro esta |
mfkr_ | si la duracion es mas largo de lo requerido por el intervalo |
mfkr_ | entonces vthrottle dice "ok" y el mensaje es permitido |
mfkr_ | si no habia visto el host antes , lo agregar a la lista |
mfkr_ | y lo mueve con un "ok" |
mfkr_ | si la conexion es muy pronta , vthrottle le dice al server que rechace la transaccion |
mfkr_ | cuando el la direccion email de origen es enviada, vthrottle repite el chequeo en una lista para las direcciones de email |
mfkr_ | si por lo menos hay un intervalo de segundos de difernecia , entonces el correo puede pasar, si no el intento de correo falla |
mfkr_ | cuando sea que un intento de encia un correo es evitado por un rechazo o falla , es loggueado para el administrator |
mfkr_ | slide 12 dispositiva 12 |
Arador | vthrottle tiene algunos fallos...algunos de los cuales son por mi culpa |
Arador | el primero es que manda un error permanente al host cuando le dice que se vaya de la conexión o una peticion HELO |
Arador | esto se especifica por los standards SMTP y es limitado por sendmail |
Arador | el segundo es que la lista usada en vthrottle es golbal. Debido a que vthrottle usa thredas, probablemente destruirá la lista y la hara inservible... |
Arador | el tercero es mas bien un problema de rendimiento que espero ver. Usa una lista enlazada en sentido único para buscar las direcciones, asiqeu el rendimiento se degradará con el número de direcciones y hosts con los que interactua tu serverservidor |
Arador | [diapositiva 13] |
mfkr_ | este es una breve lista de cosas q' planeo hacer con vthrottle para el release 1.0 |
mfkr_ | la primera es arreglar sendmail con una parche para retornar un fallo temporal para una coneccion |
mfkr_ | o accion HELO de throttle |
mfkr_ | este permitira que los clientes reaccionen de manera mas sana y vuelvan a intentar en un par de minutos |
mfkr_ | los siguientes dos que ya hice , tu deberias ser capaz de variar del intervalo por defecto, el cual tu puedes hacer ahora |
mfkr_ | el tercer es mejorar la sintaxis de la lista blanca |
mfkr_ | y esta hecho |
mfkr_ | por ultimo yo necesito iplementar un aplazamiento de la cola de mensajes |
mfkr_ | que han sido throttled. estos va ha serv mas truculento |
mfkr_ | pero va ha hacer el servidor mas facil de manejar colas mas largas |
mfkr_ | en vez de esperar que el cliente lo corrija |
mfkr_ | diapositiva 14 |
Arador | tristemente, ya no llevo ningún servidor de correo |
Arador | Asique no he probado vthrottle en el mundo real. Todo lo que se es que es muy lento y arruinará tu servidor de correo |
Arador | Podría ser porque tiene que atravesar esta lista enlazada, pero eso depende del tamaño de la red |
Arador | obviamente, espero que vthrottle no tenga un impacto negativo en las operaciones de red |
Arador | normales |
Arador | El peor escenario para este tipo de impacto es que alguien este fuera de la red por un tiempo y pongponga mucho email. Cuando se siente a enviarlo, ese "disparo" de email se retrasará. |
Arador | Una lista de dereferencia? ayudará mucho en ess aspecto |
Arador | [diapositiva 15] |
mfkr_ | hay alguna debilidades en el diese#o el cual yo nbecesito ver si puedo mejorar |
mfkr_ | lo primero es cuando un host reusa su conecion existente via un SMTP RSET (setear el estado) |
mfkr_ | lo que yo deberia hacer aca e iniciar el checkeo nuevamente y pretender conectarlo denuevo |
mfkr_ | deberia ser simple hacerlo |
mfkr_ | si el libmilter tuviera un handler para RSET |
mfkr_ | lo segundo es la situacion cuando el virus falsea la informacion en el HELO |
mfkr_ | recuerdelo UD puede enviar cualquier informacion aqui , y el server no esta supuesto a verificarlo |
mfkr_ | yo me imaginno alguno virus ya han hecho esto |
mfkr_ | lo te5cero es cuando el virus falsea la direccion de origen del mail en la ausencia de una fuerte autentoificacion ( via TLS) |
mfkr_ | del emisario , no hay manera de solucionar esto por la implementacion de SMTP |
mfkr_ | diapositiva 16 |
Arador | ¡y eso es todo! necesito agradecer a matt williamsony su equipo de gestión de los laboratorios HP, fueron muy agradables con que alguien lanzara un producto que hace lo que hace su patente pendiente de aprobación :) |
Arador | Se puede encontrar la última versión de vthrottle en su página web: |
Arador | http://monkey.org/~jose/softwaree/vthrottle/ |
Arador | el website necesita algunos gráficos bonitos si quieres contribuir. Tengo algunas ideas pero no soy un buen artista |
Arador | Y por ultimo esto tomo solo unas pocas horas de escribir y extender, pero llevarlo a su versión 0.30 me llevó cerca de 400 líneas de código C y seis horas de trabajo |
Arador | gracias :) |
EMPE[log] | plas plas plas plas plas plas plas |
EMPE[log] | plas plas plas plas plas plas plas |
EMPE[log] | plas plas plas plas plas plas plas |
EMPE[log] | plas plas plas plas plas plas plas |
EMPE[log] | plas plas plas plas plas plas plas |
EMPE[log] | EXCELENTE traduccion |
Mogurito | plas plas plas plsa plas plas plas plas ;DD |
MJesus | clap clap clap clap clap clap clap clap clap clap |
EMPE[log] | gracias nuevamente a los rtaductores |
MJesus | clap clap clap clap clap clap clap clap clap clap |
MJesus | clap clap clap clap clap clap clap clap clap clap |
MJesus | clap clap clap clap clap clap clap clap clap clap |
MJesus | clap clap clap clap clap clap clap clap clap clap |
EMPE[log] | por hacer este esfuerzo |
EMPE[log] | por todos los interesados al tema |