|
Ya es hora de dar parte después de tanto tiempo. Dado que tanto diego como yo no tenemos demasiado tiempo para dedicarselo al proyecto decidimos dejar el concurso así que no envíamos la documentación pertinente por lo que nos quedamos fuera directamente. Pero el proyecto sigue, eso sí, muy despacito. Así que lo de cambiar a la forja nada de nada. Seguiremos usando google code hasta que se harten de nosotros Ah, felicitaciones a los finalistas de este año
mangelp | iSharpKnocking | 6 Mayo, 5:57pm
Nos estamos estableciendo en el nuevo repositorio en la forja de rediris así que próximamente en la siguiente url encontrareis los fuentes: https://forja.rediris.es/svn/csl2-isknocking Update Lo de migrar al otro repositorio se va a retrasar ya que tenemos algunas pegas que resolver primero. De momento seguimos con el de google code.
mangelp | General, iSharpKnocking | 19 Diciembre, 12:20pm
Google ofrece de manera semi-gratuita un servicio de análisis estadístico del uso de un sitio web con el que he podido comprobar que la página del proyecto en google code acumula 55 visitas desde noviembre. No es un número para tirar cohetes, pero da idea de que el mundo no se ha olvidado de nosotros ya que no todas las visitas provienen de gente del concurso de software libre. La siguiente estadística lo ilustra: Y donde además se puede ver como se reparten los sistemas operativos teniendo más visitas desde windows que desde linux, pero como usan firefox no importa Quizás estas estadísticas nos ayuden a notar a lo largo de la evolución del concurso y del proyecto si nuestros esfuerzos atraen la atención de la comunidad o no. Saludos.
mangelp | General, iSharpKnocking | 18 Diciembre, 3:19pm
En las últimas semanas me he dedicado a mover carpetas del svn de aquí para allá y a renombrar archivos para ajustarlo más a como tendría que estar ordenado separando el código nuevo refactorizado del antiguo que aún sigue en su carpeta. La librería IptablesNet, antes llamada NetfilterFirewall, ahora pasa a llamarse IptablesSharp, nombre mucho más acorde ya que funciona principalmente sobre mono y el otro nombre induce a pensar lo contrario. Así que ahora que está el código ordenado seguiré tirando código hasta que nos movamos al svn de la forja. Con respecto al svn del año pasado vamos a eliminarlo, ya que el código quedará subido en el nuevo svn y no es plan de tener dicho código duplicado, aunque cualquiera que lo quiera ver lo tiene para descartar en el wiki de googlecode. Saludos.
mangelp | iSharpKnocking | 3 Diciembre, 5:27pm
Ya es una noticia tardía, pero ya ha comenzado la segunda edición del Concurso Universitario de Software Libre en el cual participamos de nuevo este año con un nuevo nombre: iSharpKnocking Nuestros objetivos son en parte algunos de los objetivos no finalizados del año pasado, más algunos que no habíamos ni siquiera tomado en cuenta, más las cosas que se nos han ido ocurriendo por el camino. Para empezar terminaremos el refactoring y documentación que estaba planeado para la base de código para seguir con la librería que nos permite modificar las reglas de iptables desde código manejado. A todo lo que hay que hacer hay que unir el handicap de que no tengo conexión en casa por lo que sólo puedo acceder al correo y a subir código cuando estoy en la escuela :S (la culpa es de telefónica que no me pone línea en mi casa), pero a cambio tengo ilusión y ganas de seguir adelante con el proyecto el cual será mi última actividad como alumno este curso académico ya que me queda poco para acabar la carrera. Un saludos a todos los nuevos y antiguos participantes Debido a la gran cantidad de spam que ha vuelto a entrar en este santo blog a través del sistema de trackback de los comentarios los hemos desactivado totalmente. De cualquier modo tampoco nadie comentaba nada Saludos. PD: Malditos spammers ...
mangelp | General, SharpKnocking | 6 Noviembre, 3:18pm
Nos hemos propuesto volver a participar en el concurso de software libre este año y para ello hemos elegido para participar otro nombre para nuestro proyecto, ya que son muchas las mejoras planeadas. Así que tras una dura deliberación ha sido iSharpKnocking, con el cual participaremos, si nos dejan, en la segunda edición del concurso. A muchos les parecerá extraño que queramos participar habiendo estado en la final del año pasado y pensarán que los 15 minutos de fama ya pasaron. Pero en nuestro caso es una forma de reafirmar la existencia y continuidad de este proyecto y de promover el concurso de software libre, además de que nos gusta lo que hacemos y que el resultar ganadores del concurso nunca fue ni será nuestro objetivo (y ser finalistas menos No va a ser fácil ya que ahora disponemos de menos tiempo libre, pero tenemos ilusión por conseguir las metas que nos propusimos en su momento y que aún no se han materializado. Si se quiere realizar un seguimiento del proyecto lo mejor es leer/rssear este blog, seguir el wiki en Google Code y/o descargar la versión test 0.1 para trastear con ella y ponernos unos cuantos issues Respecto al código fuente estamos haciendo muchos cambios últimamente para modularizar el código que tenemos y permitirnos más flexibilidad. De modo que una estructura básica de modulos es actualmente:
El código fuente se puede obtener del repositorio svn en Google Code o del repositorio svn en la forja de rediris, aunque este último lo tenemos un poco abandonado de momento, pero lo actualizaremos habitualmente cuando comencemos a avanzar. Un saludo para todos y esperemos pasarlo igual de bien que el año pasado. El equipo del Sharpknocking está contento de anunciar a Diego (manrash) como nuevo miembro. ¡Bienvenido y a programar! XDXDXDXD
mangelp | General | 23 Octubre, 5:16pm
Y el proyecto sigue adelante. Durante este largo tiempo de silencio hemos estado muy ocupados poniendo en pié nuestras bases existenciales y refactorizando el código de la primera versión de SharpKnocking ya que nuestros futuros requerimientos no encajaban con la base de código. Pero nuestro tiempo libre ha escaseado mucho este verano, por lo que nos ha pillado el siguiente curso También estrenamos nueva versión de jaws pasando de la 0.5.3 a la 0.7.3 y la verdad es que hemos notado el cambio, ¡adiós spammers de referers y comentarios! Aún estamos un poco aturdidos por el mes de septiembre, pero ya iremos recuperando el ritmo.
mangelp | General, SharpKnocking | 23 Octubre, 5:08pm
Ha llegado el verano y es hora de organizarnos para ver en que gastaremos las energías dedicadas al proyecto. Desde la final del concurso hemos estado rumiando la idea de refactorizar el código actual ya que son muchas las cosas que tienen que ir entrando y la base de código actual no se ajusta adecuadamente a lo que queremos hacer, por lo que durante este verano planeamos refactorizar profundamente el código hasta quedar satisfechos. También tenemos otra pequeña novedad, estrenamos lista de correo de desarrollo: http://mail.ilikecoffee.net/mailman/listinfo/sharpknocking-devel_ilikecoffee.net Invitamos a todos los que están interesados a que la sigan para estar al tanto del estado del proyecto o que nos escriban para cualquier otra cosa. Pero tengo que avisar de que vamos a escribir en inglés, ya que queremos intentar llegar a la mayor cantidad de gente posible con éste proyecto y a que el inglés es el lenguaje de facto para la mayoría de proyectos de software libre. También invito a aquellos que se atrevan a probar SharpKnocking 0.1 en sus máquinas a que nos dejen los bugs en el tracker o que los manden a la lista, preferiblemente en inglés (aunque sea patatero, no hay problema mientras se entienda). Saludos.
mangelp | General, SharpKnocking | 3 Julio, 4:10pm
Bueno, ya han pasado varios días, pero es que estamos muy liados haciendo cosas que fuimos dejando aparcadas antes de la final y nos estamos comenzando a meter en época de parciales tras lo cual llega la época de examenes. Obtuvimos el segundo premio de nuestra categoría en el concurso siendo el primero para el otro proyecto participante: Porting de Gcc a la arquitectura del microcontrolador 16f877. Tanto Luís como yo estamos contentos con los resultados así como seguimos planeando nuevas caracteristicas para la siguiente release de SharpKnocking que estamos empezando a planificar para algún día entre Julio y Septiembre. Desde aquí quiero mandar un gran saludo para todos los finalistas del concurso (que bien lo pasamos) y esperamos ver como todos nuestros proyectos crecen juntos
mangelp | General, SharpKnocking | 16 Mayo, 2:12pm
Hoy he arreglado un bug muy muy feo que impedía la correcta comunicación entre el cliente de configuración, Doorman y el demonio KnockingDaemon y que provocaba que no se pudiese usar correctamente el modo interactivo. Estando esto andando puede que nos quede una presentación curiosa en la final hehe. Saludos. PD: He subido unas cuantas capturas a la galería de imágenes
luisro | SharpKnocking | 30 Abril, 2:35pm
Pues sí, quien lo diría, finalistas tras lo accidentado de la última época del desarrollo. Ahora mismo estoy preparando el resumen del proyecto y pronto nos pondremos a preparar la presentación. Y bueno, algún bug corregiremos para que se vea bien bonita la presentación. Saludos, y gracias.
luisro | General | 26 Abril, 11:32am
En el espacio que te da google tienen implementado un wiki muy simple para la creación de contenidos junto con el sistema de creación de issues. Es todo muy simple e intuitivo así que hecharle un vistazo para ver el estado actual del proyecto es cuestión de minutos. Ahí, tenemos colgado un tgz con la versión 0.1 y hemos estado creando algunas páginas en el wiki y recopilando ideas de cosas por hacer en la página de TODO. La url es:
mangelp | General | 19 Abril, 5:14pm
Ya he subido a la forja el código de la última versión en el que corregimos un montón de fallos y que debería haber subido este lunes pero al final debido a un cúmulo de circunstancias y hechos desafortunados no pudo ser. Esta versión debe ser considerada la 0.1 de la suite SharpKnocking y está compuesta por:
Actualmente el sistema permite "cerrar" totalmente un sistema y dar acceso a las ips desde las cuales se reciban llamadas correctas para un puerto dado cada vez. Las cosas que encabezan la lista de todo son:
Un saludo a todos y suerte.
mangelp | | 11 Abril, 7:46am
Ya he terminado con el automata para detección de secuencias y he refactorizado el demonio de knocking que estaba algo falto de atención por mi parte. Tras depurarlo un poco y resolver unas cuantas incidencias varias todas las aplicaciones funcionan de por sí. También hemos realizado un poco de tratamiento de excepciones para intentar evitar que el firewall se quede con las reglas que introducimos restaurando un backup de las mismas que realizamos al principio del inicio del daemon. Ahora queda el paso final, testear los programas en funcionamiento y buscarles las cosquillas para que no peten cuando menos oportuno es
mangelp | General | 4 Abril, 10:50am
Pues nada, sin duda en el periodo final de la codificación de un proyecto para su evaluación es sin duda el momento ideal para que el repositorio se caiga. Esperemos que se arregle pronto, pero de mientras, para poder seguir trabajando nos hemos mudado a Google Code https://sharpknocking.googlecode.com/svn/trunk/. En cuanto la forja del concurso está operativa, pasaremos allí los cambios. En otro orden de cosas, muchos cambios en todo. Ya tenemos makefiles para el proyecto, generados automáticamente por Monodevelop (en los últimos tiempos ha visto mejoras significativas en cuanto a features, por cierto). Se comprueba que se están ejecutando las cosas, los permisos necesarios para ejecutar los programas, y muchos otros cambios, por lo que esta cogiendo el punto de cocción necesario para que este presentable. ¡Suerte a todos, y saludos!
luisro | Mono, SharpKnocking | 3 Abril, 12:15pm
Nos vamos acercando a la recta final del desarrollo de los proyectos, así que habrá que ir comentando un poco como va la cosa. ¿Recuerdan que se comentó que se usarían reglas del firewall en conjunción con ulogd para monitorizar los paquetes que nos interesan? Pues bueno, eso resultó ser un completo fracaso, dado que los plugins de salida que ofrecía ulogd no nos daba toda la información sobre el payload del paquete que nosotros necesitamos (o necesitábamos o pensamos necesitar Total, que hubo que descartarlo y buscarse otra solución (sobre lo cual juraría haber posteado ya en este nuestro blog, pero bueno, debe ser un momento de deja vú o como se diga Nuestro salvador en este aspecto ha sido tcpdump. Este programa es un programa analizador de tráfico de red, en consola. Un wrapper de libpcap, si mal no lo tengo entedido. La cuestión es que durante las últimas dos semanas moví mi foco de trabajo de la interfaz gráfica hacia las entrañas del daemon de reconocimiento de secuencias. Y he hecho un buen trabajo creo, pues he creado la infraestructura que permite tratar la información ofrecida por tcpdump, convertirla a un formato sencillo de utilizar y enviarlo a un sistema de autómatas para la detección de secuencias. Del algoritmo concreto que usarán estos autómatas se encargará Miguel Ángel, pues yo vuelvo a mis interfaces para integrar la comunicación entre el daemon y la interfaz de configuración, hacer un icono de notificación que viva alegremente en el área de notificación (no tan trivial como debería) y supongo que algo más. Así que nada, más noticias pronto.
luisro | General | 27 Marzo, 10:20pm
SharpKnocking.NetfilterFirewall es el namespace donde están todas las clases que he realizado para interactual con iptables. El siguiente fragmento de código es usado para insertar al principio de la cadena input una regla que redirija todos los paquetes a una cadena llamada SharpKnocking-INPUT donde están las reglas que aceptarín o denegarán el paquete en función de si le hemos dado acceso o no. Es un ejemplo de como usar la librería para alterar las reglas del firewall.
//Create rule for adding a new chain NetfilterRule rule = new NetfilterRule(); //Create new chain command NewChainCommand cmd = new NewChainCommand(); cmd.ChainName = this.chainName; //Set in the rule rule.Command = cmd; //Execute FirewallManager.instance.ApplyRule(rule); //Execute in default table named filter this.ruleSet.ExecRule(rule); //Create insert rule to redirect INPUT packets to our chain rule = new NetfilterRule(); //Create insert command InsertRuleCommand iCmd = new InsertRuleCommand(); iCmd = new InsertRuleCommand(); iCmd.RuleNum = 1; iCmd.ChainName = "INPUT"; rule.Command = iCmd; //Create jump option to redirect to our chain JumpOption jopt = new JumpOption(); jopt.Target = RuleTargets.CustomTarget; jopt.CustomTarget = CustomRuleTargets.UserDefinedChain; jopt.CustomTargetName = this.chainName; //Add to rule rule.Options.Add(jopt); //Execute FirewallManager.instance.ApplyRule(rule); //Execute in default table named filter this.ruleSet.ExecRule(rule); //Create rule rule = new NetfilterRule(); //Create append rule command AppendRuleCommand acmd = new AppendRuleCommand(); acmd.ChainName = this.chainName; //Set in the rule rule.Command = acmd; //Create option to accept loopback traffic InInterfaceOption inOpt = new InInterfaceOption(); inOpt.Interface = "lo"; //Add to rule rule.Options.Add(inOpt); //Create jump option with accept target jopt = new JumpOption(); jopt.Target = RuleTargets.Accept; //Add to rule rule.Options.Add(jopt); //Execute FirewallManager.instance.ApplyRule(rule); //Execute in default table named filter this.ruleSet.ExecRule(rule); //Create rule to accept new or related connections rule = new NetfilterRule(); //Create append rule command acmd = new AppendRuleCommand(); acmd.ChainName = this.chainName; //set in the rule rule.Command = acmd; //Load state extension with -m option MatchExtensionOption meop = new MatchExtensionOption(); meop.Extension = MatchExtensions.State; //Add to rule rule.Options.Add(meop); //The previous option causes the extension to be instantiated //Create jump option to ACCEPT //Execute De tal modo que al ejecutar un programa con ese trozo de código para inicializar las líneas nos quedaría el siguiente conjunto de reglas (muestro la salida del comando iptables-save):
# Generated by iptables-save v1.3.5 on Fri Mar 23 18:06:53 2007 *filter :INPUT ACCEPT [0:0] :FORWARD ACCEPT [0:0] : OUTPUT ACCEPT [0:0] :SharpKnocking-INPUT - [0:0] -A INPUT -j SharpKnocking-INPUT -A SharpKnocking-INPUT -i lo -j ACCEPT -A SharpKnocking-INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT -A SharpKnocking-INPUT -j DROP COMMIT # Completed on Fri Mar 23 18:06:53 2007 Así es como vamos a dejar las reglas del cortafuegos al inicio (también podríamos conservar las existentes e insertar nuestra cadena delante de las existentes). Sobre la marcha podremos ir añadiendo las ips aceptadas antes del drop final de la cadena y puede que incluyamos la opción de insertar nuestrar reglas sin eliminar las existentes.
mangelp | General | 22 Marzo, 10:55am
NetfilterFirewall es el nombre del proyecto, dentro de la solución que hemos creado en monodevelop, donde estamos programando lo necesario para gestionar las reglas a través de iptables. En el momento actual la librería es capaz de crear una jerarquía de objetos que representa al siguiente fichero de configuración de iptables en el formato de iptables-restore:
# Generated by iptables-save v1.3.5 on Thu Jan 18 12:30:46 2007 *filter :INPUT ACCEPT [0:0] :FORWARD ACCEPT [0:0] : OUTPUT ACCEPT [3561:2787384] :RH-Firewall-1-INPUT - [0:0] -A INPUT -j RH-Firewall-1-INPUT -A FORWARD -j RH-Firewall-1-INPUT -A RH-Firewall-1-INPUT -i lo -j ACCEPT -A RH-Firewall-1-INPUT -p icmp -m icmp --icmp-type any -j ACCEPT -A RH-Firewall-1-INPUT -p esp -j ACCEPT -A RH-Firewall-1-INPUT -p ah -j ACCEPT -A RH-Firewall-1-INPUT -d 224.0.0.251 -p udp -m udp --dport 5353 -j ACCEPT -A RH-Firewall-1-INPUT -p udp -m udp --dport 631 -j ACCEPT -A RH-Firewall-1-INPUT -p tcp -m tcp --dport 631 -j ACCEPT -A RH-Firewall-1-INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT -A RH-Firewall-1-INPUT -p tcp -m state --state NEW -m tcp --dport 22 -j ACCEPT -A RH-Firewall-1-INPUT -j REJECT --reject-with icmp-host-prohibited COMMIT # Completed on Thu Jan 18 12:30:46 2007 Aún queda mucho camino por recorrer. Netfilter permite definir dos puntos de extensión para las reglas del firewall (match extensions y "target extensions") y yo he implementado la lógica para soportar eso programáticamente pero sólo he definido algunas de las extensiones que vienen en el paquete de netfilter (porque son bastantes). Así que cualquier regla que las use no podrá ser manipulada adecuadamente y de momento habrá que limitarse a crear reglas con las extensiones soportadas. Estas clases no dependen de otras partes del proyecto así que podrían ser usadas fácilmente por otros proyectos. Si se diera el caso ayudaría mucho a mejorarla que alguien se pusiera a utilizarla. Por lo pronto vamos a centrarnos en la captura y análisis de paquetes para la detección de llamadas y la modificación de reglas para permitir/denegar accesos a los servicios. Me despido y sigo picando código. Saludos.
mangelp | Mono, SharpKnocking | 7 Marzo, 5:22pm
|
Main
Categorías
Posts Recientes
Archivos de Blog
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||