Ayer estuve en uno de los webinars de OpenSIPS y no me gustó demasiado la idea de tener que utilizar un Sistema Operativo privativo… Aunque OpenMeetings no es exactamente una aplicación para hacer webiars, la aplicación que utilicé ayer me recordó a OpenMeetings así que hoy me he lanzado a instalarla.
Para los que no la conozcan, OpenMeetings es una aplicación hecha en Java, utiliza Red5 y nos brinda la posibilidad de realizar reuniones virtuales con vídeo, audio, compartición de pantalla, etc. todo ello con Software Libre y desde una entorno web en Flash.
Al utilizar un entorno web resulta muy cómodo, ya que todos tenemos un navegador, ¿no?
La instalación resultó más sencilla de lo que pensaba gracias a éste super-tutorial.
Sólo un par de pequeñas modificaciones:
Es necesario instalar el paquete openoffice.org-java-common
Al editar el fichero hibernate.conf.xml fijaos en que el parámetro connection.url tiene el nombre correcto de la BBDD: <property name="connection.url">jdbc:mysql://localhost/NOMBRE_DE_LA_BBDD?...
Teniendo en cuenta que la multiconferencia de vídeo está bastante lejos de Asterisk al menos con OpenMeetings podemos suplir esa carencia teniendo nuestras almas libres de software privativo.
ACTUALIZACIÓN: Tras realizar más pruebas he comprobado que la compartición de escritorio funciona en GNU/Linux (es necesario tener Java instalado) ¡y también funciona la webcan! En la imágen de abajo hay dos participantes, uno de ellos con vídeo (Apple iSight en Debian) y compartiendo el escritorio.
Ya hemos comentado por aquí que para que Zaptel/DAHDI funcionara correctamente en un entorno virtualizado como Xen era necesario hacer alguna pequeña modificación en el fichero dahdi_dummy.c para deshabilitar el timming por RTC.
Durante el Amoocon Kevin Fleming me comentó que en la nueva versión de DAHDI eso ya so sería necesario y acabo de comprobar que es cierto.
En DAHDI 2.2 se ha eliminado el RTC como fuente de tiempo para el subsistema DAHDI, ya que su funcionamiento era errático en ocasiones. En su lugar se utiliza el timming del propio kernel. Vamos a verlo:
Tras compilar y cargar dahdi_dummy 2.2 SIN modificar vemos que carga correctamente:
[2548770.332063] dahdi: Telephony Interface Registered on major 196
[2548770.332075] dahdi: Version: 2.2.0-rc5
[2548771.512873] dahdi: Registered tone zone 0 (United States / North America)
Comprobemos la fuente de tiempo:
ast16:/usr/src/asterisk/dahdi-tools-2.2.0-rc3# cat /proc/dahdi/1
Span 1: DAHDI_DUMMY/1 "DAHDI_DUMMY/1 (source: Linux26) 1" (MASTER)
La seguridad en VoIP es algo que no ha preocupado demasiado a la gente, pero que cada vez es más necesario. La inexistencia de ataques en el pasado ha podido ser la causa de que no se haya pensado antes en la seguridad en la VoIP.
Asterisk es un claro ejemplo de esto, basta con hacer un poco de flooding de lo que sea (mensajes SIP OPTIONS por ejemplo) para dejarlo fuera de combate. Esto puede solucionarse situando Asterisk detrás de un software que mitigue eses efectos, como podría ser un IDS como Snort. Gracias a Snort podemos evitar ataques DoS, pero es una ñapa… ¡Asterisk debería ser capaz de detctar que está siendo atacado!
Además, cuando hablamos de seguridad en VoIP hay que tener en cuenta más factores además de los ataques DoS, ya que también es posible que algún usuario malvado intente llamar a través de nuestro sistema sin las credenciales adecuadas.
Generación de eventos de seguridad: Se utilizará un API para la generación de eventos relativos a la seguridad desde cualquier parte del código.
Log de eventos de seguridad: Además de generar los eventos será necesario recogerlos y generar algún tipo de log. La idea es utilizar algún tipo de herramienta externa como fail2ban para reaccionar ante los eventos relativos a la seguridad.
Hay varias cosas que me gustaría ver mejoradas en Asterisk, pero esta idea que vengo siguiendo de cerca me parece muy interesante. Veremos qué pasa.
El fuzzer ha sido incluido en VoIPER, una site para fuzzing de SIP. ¡Vamos a probarlo!
Lo primero es descargarnos el código desde el SVN, ya que el fuzzer de IAX de momento solo está en trunk:
svn co https://voiper.svn.sourceforge.net/svnroot/voiper/trunk/ voiper-trunk
Para que el fuzzer funcione es necesario instalar la librería libnet-subnets-perl:
apt-get install libnet-subnets-perl
Para empezar nuestro ataque ejecutamos lo siguiente:
cd voiper-trunk/iaxFuzzer
./iaxFuzz.pl -h 192.168.1.112 --bruteforce --dos
Al lanzar el ataque esto es lo que pasa en servidor de Asterisk:
Como se puede observar Asterisk se pone a comerse la CPU entera, llegando al 100%. Esto, obviamente, impide a Asterisk funcionar de manera normal, ya que tiene todos sus recursos paralizados por el ataque. Tras finalizar el ataque el consumo de CPU no cesa (al menos en la prueba que hice) y tuve que reiniciar por completo Asterisk para recuperar el servicio:
El chan_sip de Asterisk no es perfecto, apesta bastante, pero ¿realmente queréis seguir usando IAX2? Yo no.
Tras unos días para descansar y reflexionar voy a resumir un poco lo que tuve la suerte de ver en el Amoocon ya que había mucha gente y charlas interesantes.
Antes de nada comentar que tanto la organización como el lugar fueron de lo mejor, tal vez podría darles un pequeño tirón de orejas por los margenes de tiempo ajustados, pero es algo normal
En cuanto a las charlas, como en todas partes, había de todo: desde charlas que (personalmente) no me aportaron nada nuevo hasta las super-interesantes.
Sin ánimo de hacer de menos a nadie, voy a destacar aquí unas cuantas que me parecieron especialmente interesantes y que pronto estarán disponibles en formato de vídeo en la web:
Towards a Unified world for Communication - Olle Johansson: Las charlas de Olle siempre resultan particularmente interesantes y graciosas, y en este caso nos ofreció su visión acerca del término de moda “Unified Communications”.
MySQL Cluster - Geert Vandekelen: Expuso algunos casos de uso de clusters de MySQL, algo que solemos necesitar al montar un servidor de VoIP “a lo grande”.
Go live with SIP presence - Bogdan Iancu: Bogdan comentó aspectos sobre la presencia SIMPLE y XMPP y su forma de coexistir. Además hizo alguna demo de su implementación con OpenSIPS y de qué usos alternativos se le podría dar a esta clase de servicios.
Dynamic Asterisk scalability with Amazon EC2 - Nir Simionovich: Interesantísima charla sobre cómo utilizar la nube de Amazon para disponer de una infraestructura de VoIP grande y escalable para su uso en corto periodo de tiempo. Ofreció un caso práctico en el que necesitaban procesar mucho tráfico de VoIP con algunos IVRs y demás durante unas horas, todo albegado en Amazon EC2.
Open Source Asterisk update - Kevin Flming: Siempre resulta interesante ver lo que se está moviendo en Digium de puertas hacia dentro. No siempre es lo que nos gustaría (un chan_sip decente, por ejemplo) pero hay que tener un ojo puesto en lo nuevo que va a venir.
Scalable TDM (BRI/SS7) Media GatewaysWith FreeSwitch & OpenZAP - Nenad Corbic: Otra charla interesante en la que se describió la arquitectura de OpenZap y cómo puede resultar más escalable que Zaptel/DAHDI en entornos con más de 8 primarios, además de un buen soporte de SS7 (closed source )
SIP Server Routing Platform - Daniel-Co. Mierla: En su charla Daniel habló sobre el proyecto SIP-Router y cómo se esta desarrollando. Comentó que pronto tendremos una beta disponible y también nos introdujo las mejoras que se pretenden incluir en Kamailio 3.0.
OpenSIPS - clustering and balancing media servers - Bogdan Iancu: Otra interesante charla sobre SIP: en ella Bogdan comentó el nuevo módulo de balanceo de carga basado en la carga actual del sistema, algo realmente interesante.
Espero volver a tener la suerte de asistir el año que viene
Falta una hora para que de comienzo la charla que daré en el Amoocon 2009. Me intento relajar viendo otras charlas, pero parece que no funciona, los nervios siguen ahí, así que escribo este post
Todos los materiales expuestos durante los 2 días estarán disponibles en la web del Amoocon con vídeos incluidos tras las pertinentes labores de post-producción, pero por si a alguno le interesa, ya he colgado todos los materiales de “Running Asterisk in virtualized environments” aquí.
En el fichero comprimido podéis encontrar lo siguiente:
El año pasado por éstas fechas tuvo lugar un encuentro sobre VoIP (aunque muy orientado a Asterisk) en Europa al que se llamó Asterisk-Tag. Como cada vez hay más aplicaciones de telefonía en el mundo del Software Libre como pueden ser YATE, FreeSWITCH, Kamailio y OpenSIPS se decidió dar un toque diferente al evento y se ha pasado a llamar Amoocon.
Amoocon es un evento sobre telefonía IP Open Source en el que se darán cita varios personajes del mundillo: Mark Spencer, Kevin P. Fleming, Olle E. Johansson, Daniel Co. Mierla y Bogdan A. Iancu entre otros.
Lo curioso de todo esto es que hace algunos meses abrieron el plazo para el call for papers en el que cualquiera podía mandar un breve resumen de una charla que le gustaría dar. Los astros se debieron alinear aquella noche porque aceptaron la charla que mandé así que aquí estoy, en Berlín, a punto de salir para Rostock, lugar donde se celebrará el evento.
Espero que este año la post producción sea tan buena como el año pasado, ya que no me dará tiempo a ver todas las charlas
Como ya sabréis los que leéis el blog de Voz-IP llevo desde el lunes encerrado en un hotel impartiendo el Asterisk Advanced (antes conocido como Asterisk BootCamp) junto a Elio Rojano.
Al igual que el año pasado, éste también tendremos Night Party Elio y yo hemos preparado unos cuantos ejercicios algo enrevesados o curiosos para que los alumnos profundicen un poco más y ya de paso nos echemos unas risas.
Si la conexión WiFi nos lo permite haremos un poco de streaming en directo mediante Qik, a ver qué tal queda…
PD: Tengo dos preguntas: uno: ¿y mi RedBull?, dos: ¡démelo!