Resetear/recuperar la contraseña de root de MySQL

11 Jul

Este post realmente no tiene que ver con Asterisk, pero resolviendo una consulta que me hicieron, consideré que podría ser útil para aquel que se ha visto en la necesidad de acceder a una BD de MySQL de la cual no se tiene la contraseña de root.

Los pasos a seguir son bastante sencillos (hay que ejecutar los comandos con permisos de root de Linux):

Detenemos el servicio de MySQL [codesyntax lang=»bash»] /etc/init.d/mysql stop

[/codesyntax] Iniciamos MySQL pero en modo sin privilegios [codesyntax lang=»bash»]mysqld_safe –skip-grant-tables &[/codesyntax] Hacemos un login a MySQL sin password [codesyntax lang=»bash»]mysql -u root[/codesyntax] Cambia el password (este query se ejecuta desde adentro de MySQL, al cual accedimos ya porque arrancamos sin contraseña). [codesyntax lang=»sql»]UPDATE mysql.user set Password = PASSWORD(‘tunuevopass‘) WHERE User=’root’;[/codesyntax] Salimos de SQL [codesyntax lang=»sql»]exit;[/codesyntax] Detenemos la sesión corriendo de MySQL [codesyntax lang=»bash»]mysqladmin shutdown[/codesyntax] Reiniciamos el servicio de MySQL [codesyntax lang=»bash»]/etc/init.d/mysql restart[/codesyntax]

Al … Continuar leyendo

Protege tu Asterisk de ataques usando fail2ban

7 Jul

En ocasiones anteriores he hecho la mención de fail2ban, una herramienta escrita en Python que analiza logs del sistema y responde en caso de que ciertas condiciones se cumplan, por ejemplo, 5 intentos de contraseña SSH equivocada en un periodo de 10 minutos. Dada la proliferación de ataques a equipos Asterisk para tratar de hacer llamadas de larga distancia, tiene sentido que ocupemos esta herramienta para protegernos de los amantes de lo ajeno.

Ahora bien, ¿cómo configuramos esta herramienta para que nos evite los cargos de miles de dólares en llamadas fantasmas?

Primero, lo instalamos. En Debian podemos usar el mundialmente reconocido apt-get:

apt-get install fail2ban

O, si tenemos Centos, primero asegurémonos de que tengamos EPEL (un repositorio que nos da acceso a mucho software útil) y luego instalamos fail2ban:

rpm -Uvh http://download.fedora.redhat.com/pub/epel/5/i386/epel-release-5-4.noarch.rpm yum -y install fail2ban

Fail2Ban se configura en 2 partes básicas:

/etc/fail2ban/jail.conf – Define que logs monitorear… Continuar leyendo

Mantente actualizado con los cambios en Asterisk

7 Jul

Si alguno de ustedes es como yo, muy probablemente les guste batallar con los betas. Suelo ser de aquellos que en cuanto sale una nueva versión corro a adoptarla, no importándome los problemas de estabilidad o soporte extra que esto conlleva. Sin embargo, hay algunos casos en los que definitivamente no es posible sacrificar la confiabilidad de un sistema, aunque esto nos traiga nuevas funcionalidades.

En sus inicios yo literalmente brinqué de Asterisk 1.0 a 1.2 sin pensarlo, lo mismo 1.2 a 1.4, y esto es hablando en entornos en producción (mala idea, yo sé, afortunadamente funcionó bien), pero cuando quise hacer lo mismo para 1.6 me paré en seco: mis sistemas se caían sin razón aparente, muchas cosas cambiaron, el AgentCallbackLogin dejó de existir y en general fue una experiencia poco placentera, al grado que decidí quedarme con 1.4 (y hasta la fecha) lo he seguido haciendo.

Con la … Continuar leyendo

Como convertir archivos de sonido y musica en espera para Asterisk

6 Jul

Muchas veces me han pregunado si Asterisk soporta MP3 como música en espera: la respuesta es si y no. Debo decir que si porque en efecto, con el módulo format_mp3 se pueden reproducir MP3, pero debo decir no porque solamente se soportan los de bitrate constante (y hoy en día, prácticamente todos son de bitrate variable, o VBR), además de que el consumo de CPU causado por el transcoding realmente puede afectar al sistema.

Entonces, ¿cómo podemos hacer para convertir nuestra colección favorita de audio MP3 a wav, gsm, ulaw o cualquier otro de los formatos que Asterisk soporte? El mecanismo es más sencillo de lo que se cree, siempre y cuando se tengan los conocimientos mínimos de Linux para hacerlo.

Si tu música origen es MP3, necesitas instalar SoX con soporte para MP3. Aquí un tutorial (en inglés) de como hacerlo. Si tienes Debian, es tan sencillo como… Continuar leyendo

Cursos Asterisk en México y Monterrey para julio y agosto 2011

29 Jun

El pasado sábado 25 de junio terminamos una fecha más de cursos en México DF. Quiero agradecer a todos los que lo hicieron posible al estar con nosotros durante los 4 días que duró y en los cuales cubrimos Asterisk completamente: desde aprender lo que es Linux, a crear un marcador predictivo utilizando archivos de llamadas y AGIs.

Ante la constante demanda que ha habido en los últimos meses por nuestros cursos, nos es muy grato hacer públicas las nuevas fechas y ciudades para nuestros próximos cursos:

Curso básico (2 días) – México, DF. 30 y 31 de julio – México, DF. 4 y 5 de agosto – Monterrey, Nuevo León. 10 y 11 de agosto

Curso completo (básico, intermedio y avanzado) fin de semana – México, DF. 30 y 31 de julio, 6 y 7 de agosto

Curso completo (básico, intermedio y avanzado) intensivo – México, DF. 30 y … Continuar leyendo

Respaldando la base de datos de configuración de Elastix/FreePBX por SSH

27 Jun

Una gran ventaja que tenemos en Linux es la facilidad de crear procesos automatizados que nos ayuden a ejecutar tareas cotidianas. Para nuestros usos comunes como administrador de equipos basados en Asterisk/Elastix/FreePBX, puede ser una labor cotidiana respaldar la configuración alojada en bases de datos de MySQL.

SSH nos permite ejecutar comandos en servidores Linux remotos y traernos el resultado al mismo tiempo, por lo que resulta ideal para realizar un respaldo en un equpo distante y almacenarlo en nuestro equipo Linux loca. El comando para hacerlo sería el siguiente (asumiendo que usamos la contraseña default de MySQL en nuestro equipo remoto):

[codesyntax lang=»bash»]

ssh 192.168.1.100 "mysqldump -peLaStIx.2oo7 --databases asterisk | gzip -9" > respaldo.sql.gz

[/codesyntax]

El comando de arriba se encargará de hacer un dump de la BD asterisk. Si quisiéramos traernos también el CDR, hariamos lo siguiente:

[codesyntax lang=»bash»]

ssh 192.168.1.100 "mysqldump -peLaStIx.2oo7 --databases asterisk cdr | gzip… Continuar leyendo

Sintaxis de colores para archivos .conf en nano

23 Jun

Muchas veces tenemos que editar los archivos .conf de Asterisk desde algún editor no gráfico y seamos honestos: el vim o vi resultan muy complicados para la mayoría de los usuarios, así que en términos de simpleza, nano lleva las de ganar.

Para poder activar una sintaxis de colores que ayude a nano a distinguir las diferencias en el texto de los archivos de Asterisk, inserten en siguiente contenido en su /root/.nanorc

[codesyntax lang=»bash»]

syntax "conf" ".*/*.(conf)$" color brightwhite ".*" color brightcyan ",[a-zA-Z]*(" color yellow "(SIP|IAX|DAHDI|Local)/" color cyan "(#|;).*" color cyan "${.*}" color green "^(exten|include)" color brightgreen "(|)" color brightyellow "($?{|:|}|.|,|=>)" color brightred "'[^']*'" color brightred ""[^"]*"" color brightred "($?[|])"

[/codesyntax]

Esto debe facilitarles mucho la edición de sus archivos siempre que usen este editor.

¡Suerte!… Continuar leyendo

Activar las grabaciones por default para todos los usuarios en Elastix/FreePBX

22 Jun

Algunas veces como profesionales llegamos a un conmutador que ya tiene alguna configuración cargada y se nos pide que hagamos modificaciones. Imaginen que de pronto llegan a un callcenter de 100 posiciones que hace uso de Elastix/FreePBX y les dicen: «Queremos que todas las llamadas de todos los usuarios se graben», pero analizando las extensiones se dan cuenta que todas (o ninguna) tiene la grabación habilitada, y que la mayoría se encuentran en modo de grabación «On Demand», cuando ustedes lo que quieres es que sea «Always»

¿Cómo lo hacen? Espero que no piensen en ir extensión por extensión haciendo el cambio…

Para solucionar esto rápidamente, necesitamos hacer 2 cosas:

Modificar la tabla de MySQL asterisk.users Modificar el Asterisk DB para que coincida con los valores que necesitamos

Y ambas las logramos fácilmente con el siguiente código (desde el Linux CLI):

[codesyntax lang=»bash» tab_width=»3″]

# Primero nos hacemos cargo del… Continuar leyendo

Balanceo de troncales en Elastix (round robin)

21 Jun

Este mini tutorial aplica para FreePBX/Trixbox/Elastix.

La idea tras de esta guía es crear un balanceador de carga. Es decir, tener una sola troncal que automáticamente rote una serie de troncales posibles por las cuales pueden salir las llamadas. Dichas troncales pueden ser DAHDI, IAX2 o SIP, así que esto le agrega flexibilidad.

El código sería algo así (la sintaxis está en AEL para hacer la programación más simple)

[codesyntax lang=»c» tab_width=»3″ blockstate=»expanded»]

// Archivo extensions.ael context roundrobin { _X. => { Set(max=10); Set(n=0); repetir: Set(n=${n}+1); Set(last=$[(${DB(rr/last)}+1)%${max}); Set(DB(rr/last)=${last}); Dial(${DB(rr/trunk${last})}/${EXTEN},30,g); if (${DIALSTATUS}!="ANSWERED") { if (${n}<${max}) { // Repetir ciclo goto repetir; }; }; Hangup; }; }; [/codesyntax]

Nos faltan dos pasos:

Inicializar el AstDB con el valor de la primer troncal. Esto es sencillo ejecutando el comando database put rr last 1 dentro del CLI de Asterisk El paso final es crear una troncal ‘Custom’ dentro de FreePBX/Elastix y agregarla como… Continuar leyendo

Una posible solución al «No service» de los teléfonos Aastra (y como mejorar el rendimiento de los reportes de llamadas)

17 Jun

Para los que nunca han hecho uso de, Aastra es una marca de telefonía con base en Ontario, Canadá. Últimamente, su crecimiento se ha dado fuertemente gracias a la prevalencia de sistemas como Elastix que se integran muy bien con sus teléfonos. Mi percepción personal de la marca desde el punto de vista del valor del producto es intermedio: no es una marca tan barata como Grandstream o Yealink, pero tampoco es una tan cara como Polycom o Cisco. Es una marca que está a muy buenos medios términos en cuanto a calidad y funcionalidades se refiere.

Un «inconveniente» que tienen sus teléfonos es que son extremadamente sensibles al retraso de paquetes cuando están en modo de stand by. Esto quiere decir que constantemente los teléfonos están enviando paquetes a Asterisk para medir el estado del servicio, y si el servidor por un momento se retrasa con la respuesta, … Continuar leyendo