Blog de Ubuntu en Español Blog [no oficial] de Ubuntu en Español

29Jul/110

Protege tu Asterisk de ataques usando fail2ban

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
29Jul/110

Sintaxis de colores para archivos .conf en nano

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 Código       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 "( $ ?[|])" Esto debe facilitarles mucho la edición de sus archivos siempre que usen este editor. ¡Suerte!
29Jul/110

Novedades en Asterisk 1.8

Para muchos Asterisk 1.6 seria el candidato natural para reemplazar al 1.4, pero no muchos lo adoptaron, ya que aunque tenia algunas mejoras, estas no son trascendentes o urgentes. Que trae Asterisk 1.8 que nos llame la atención? Soporte para encriptacion AES 128 bits, ideal para aprovechar las funcionalidades de los telefonos SNOM por ejemplo
28Jul/110

Seguridad en Asterisk un poco mas :D

La forma de ataque más común que se viene presentando hacia soluciones de telefonía IP basadas en Asterisk consiste en buscar servidores SIP, que se encuentren expuestos hacia Internet, incluso NATeados con firewalls (cuando erróneamente se natea el puerto 5060 en TCP, se expone el puerto a los escaneos). Se trata de ataques SIP, no son intrusiones, ni se están aprovechando vulnerabilidades que se puedan reparar con un parche, son básicamente descuidos en la configuración hacia internet.
28Jul/110

G729 en Asterisk

Una de las preguntas mas comunes que siempre rondan a los usuarios de Asterisk es, como implementar el codec g729 en sus instalaciones de Asterisk.
24Feb/110

Telefonia con opensource – en Guatemala

Desde hace ya bastante tiempo que no hago un post personalizado y con dedicatoria, claro este pues sera uno de esos…. a decir verdad no me considero un master en la materia de telecomunicaciones puesto que según mi filosofía nunca llegamos a conocer el 100% de un tema porque siempre esta en evolución, siempre he sido un adicto a el opensource a resolver mis inquietudes con software no privativo aunque en algunas ocasiones esto provoque algunos roses idealistas.

Este post nace por un spam que he recibido el día de hoy en donde me ofrecen una certificación sobre uno de los front-end de moda para administrar asterisk. En ningun momento digo que eso este mal pero que hay en conocer quien realmente hace el trabajo de telefonia en esos front-ends ?? a caso tambien van a enseñarlos sobre asterisk? como siempre he dicho es muy facil instalar con click tras click cada una de estas aplicaciones, pero que pasara cuando …:

  • El apache falle y no puedan ver el administrador?
  • El mysql deje de guardar los cambios?
  • La base de datos se corrompa?
  • Cuando pierda el password del administrador web
  • Cuando los controladores de la tarjeta FXO/FSX no funcionen?
  • Cuando los controladores de la tarjeta E1 no esten en la version indicada
  • Necesiten compilar desde codigo fuente algun parche/controlador/
  • Necesiten Debugiar Asterisk para encontrar la falla?
  • Se necesite saber que nos manda el PSTN a nuestra planta? o viceversa
  • Cuando necesitemos programar AGIs ?
  • Cuando nos cambien el color de la administracion ?
  • Cuando necesitemos interactuar con bases de datos?

Este curso tambien cubrira eso? si es asi mis felicitaciones …. yo donde me apunto?.

Estemos realmente preparados para ofrecer un curso (s) o mejor dicho para ofrecer darte un grado de ingeniero en Asterisk (ala Tortrix) ?

Creo que mas practico seria ayudar al estudiante a conocer todos estos aspectos del que verdaderamente hacer la magia tras bambalinas, el dueño del circo de pulgas, el domador del leon, ese que se pasa el dia realmente trabajando y no dando la carita bonida en el front-desk… ASTERISK!

Como dije al iniciar esto realmente en estos tiempos difíciles para todos, nuestro dinero tiene que ser realmente valorado e invertido en algo que si nos redituara al máximo. Nada de lo anterior significa que trixbox, Goautodial, Vicidial, AsteriskNOW!, Elastix, FreePBX, sean malos claro que no, pero que pasara cuando nos cambien el color, las posiciones de los clicks, o la distribución de linux? también para eso tendremos que tomar un curso? de 1000 USD! ??

Asterisk es el corazón de todos estos lindos nombrecitos y es a el que se le debe todo esto, independientemente de como o porque esta funcionando.

Esto es solo la humilde opinion de este, su servidor pero la ultima palabra la tienen ustedes.

1Feb/110

Debugging Asterisk

Una de las tecnicas mas importantes de aprender, tanto cuando se inicia con Asterisk como cuando ya se es un Guru :D es saber extraer informacion y comprenderla, en el momento de un problema.

He escuchado a muchas personas hablar sobre el tema “tan escabroso” como tomar “trazas” en asterisk. Pero bueno muy humildemente les compartire los pasos que a mi me man funcionado de maravilla.

Prerequisito INDISPENSABLE:
Asterisk 1.4.30 en adelante.

Puede funcionar con versiones anteriores pero no garantizo la exactitud de la info a extraer.

Primero
Vamos a editar el archivo logger.conf que se encuentra el /etc/asterisk para activar el tomar trazados de la actividad. Tenemos que agregar la siguiente linea, con la palabra: “miDebugLog” esto pueden cambiarlo por cualquier otra cosa que quieran, este va a ser el nombre del archivo en donde se guardara la informacion . Un buen ejemplo podria ser : Problema_12345_full.log

logger.conf
[logfiles]
miDebugLog => notice,warning,error,debug,verbose,dtmf

Desde la linea de comando de Asterisk vamos a reiniciar el modulo del logger:

*CLI> core set verbose 15
*CLI> core set debug 15
*CLI> module reload logger

Si por algun motivo este archivo ya habia sido utilizado anteriormente para algun otro problema, pues lo mejor sera que se roten los logs:

*CLI> logger rotate

Dependiendo de el problema que tengan asegurese de activar el trazado en el canal correcto, puede ser SIP, IAX, IAX2.

Vamos a activar para SIP: Asterisk 1.4 y 1.6

*CLI> sip set debug on
*CLI> sip set debug

Activar para IAX2: Asterisk 1.4 y 1.6

*CLI> iax2 set debug on
*CLI> iax2 set debug

Luego de esto vamos a tratar de reproducir el problema….

Una vez que terminemos de tomar los datos que necesitamos recordemos de desactivar todo, para no toparnos con sorpresas mas adelante.

*CLI> core set verbose 0
*CLI> core set debug 0
*CLI> sip set debug off
*CLI> iax2 set debug off

Ahora nuestro archivo con la data la podremos encontrar en /var/log/asterisk/miDebugLog.

Recordemos tambien desactivar el logger.conf comentando o borrando la linea que agregamos.

logger.conf
[logfiles]
;miDebugLog => notice,warning,error,debug,verbose,dtmf

Ahora reiniciemos el logger como lo hicimos anteriormente

*CLI> module reload logger
28Jan/110

Goautodial – UPGRADE Asterisk y Dahdi

Para iniciar nuestra mini guia de como actualizar la paqueteria de Asterisk y de Dahdi sobre Goautodial (a.k.a Vicidialnow) vamos a darle una revisada de lo que trae “Out of the box”.

  • Vicidial 2.2.1
  • Asterisk 1.4.27.1-vici
  • Dahdi 2.3
  • Sangoma 3.5.14

Bueno ahora vamos a ver hasta que versión podemos subir para nuestra actualización de sistema: (yo estoy utilizando una Sangoma A104d QUAD T1/E1)

asterisk-1.4.39.1
dahdi-linux-complete-2.4.0+2.4.0
wanpipe-3.5.18 (sangoma)

como es acostumbrado vamos a sacar un backup de nuestros archivos de configuracion (asumiendo que tenemos ya un sistema en funcionamiento), recordemos que casi todo lo importante esta en /etc/asterisk, pero no olvidemos que /etc/dahdi tenemos algunos archivos importantes.

ahora bien vamos a proceso de remover la paqueteria a ser actualizada:

hacemos la busqueda de versiones de asterisk
rpm -aq | grep asterisk
removamos unicamente los siguientes paquetes:
rpm -e asterisk-devel-[version].vnow
rpm -e asterisk-[version].vnow --nodeps
(reemplacemos "version" por la versión que nuestro sistema tenga)
ahora.... vamos a la busqueda de la versiones de dadhi instaladas
rpm -aq | grep dahdi

con dahdi tendremos un listado mas amplio de paquetes que podran ser lo siguientes, y digo podran porque pueden cambiar talvez la version.

  • dahdi-tools-doc-2.2.1-goautodial
  • dahdi-linux-2.3.0.1-goautodial
  • dahdi-tools-2.2.1-goautodial
  • dahdi-linux-devel-2.3.0.1-goautodial
  • kmod-dahdi-PAE-2.3.0.1-1.el5.elrepo

vamos a removerlos todos para poder colocar la nueva paqueteria, esto lo hare compilando todo desde fuente, para esto necesitamos instalarle al Centos los paquetes necesarios:

yum groupinstall 'Development Tools'

Esta parte de proceso me gusta porque instalado el grupo de herramientas el yum nos coloca todo lo necesario para nuestra compilacion futura.

Ahora a descargar los nuevos paquetes (hoy dia son los mas actuales, segun la fecha podria variar la version) vamos a descargarlos en (/usr/src) por motivos practicos

wget http://downloads.asterisk.org/pub/telephony/dahdi-tools/releases/dahdi-tools-2.4.0.tar.gz

wget http://downloads.asterisk.org/pub/telephony/dahdi-linux/releases/dahdi-linux-2.4.0.tar.gz

wget http://downloads.asterisk.org/pub/telephony/libpri/libpri-1.4-current.tar.gz 

wget http://downloads.asterisk.org/pub/telephony/asterisk/asterisk-1.4.39.1.tar.gz

Instalacion de Dahdi

tar xvfz dahdi-linux-<version>
tar xvfz dahdi-tools-<version>
ln -s dahdi-linux-<version> dahdi
cd dahdi-linux-<version>
make
make install
cd ..
cd dahdi-tools-<version>
./configure
make
make install

Instalacion de LibPRI

tar xvfz libpri-<version>
cd libpri-<version>
make
make install

como estamos haciendo un upgrade de asterisk lo mas sano es mover algunos modulos

cd /usr/lib/asterisk
mv modules modules.old

Instalacion de Asterisk:

tar xvfz asterisk-<version>.tgz
cd asterisk-<version>
./configure
make
make install

Ahora hay que comprobar el funcionamiento de nuestra tarjeta y nuestras configuraciones que hasta este momento no fueron tocadas, pero si por algun error o problema estos fueron modificadas las copiaremos del resplado que hicimos al iniciar esta guía.

Al finalizar esto tenemos ya nuestro sistema terminado, claro en mi caso que tengo una tarjeta Sangoma necesito instalar los controladores, pero eso no lo tocaremos en este post, si de lo contrario la tarjeta a utilizar fuera digium, con esto bastaria para tener nuestra actualizacion terminada.

NOTA: al remover el paquete de asterisk que goautodial tiene por default el script de inicio tambien se remueve para solucionar esto, vamos a la carpeta de el codigo fuente de asterisk que recien compilamos
../../asterisk-1.4.39.1/contrib/init.d
y ahi encontraremos el script para redhat “rc.redhat.asterisk”, lo copiamos a /etc/init.d/ bajo el nombre de asterisk y listo.

4Dec/100

iptables para asterisk

codigo simple para tener nuestro firewall local en un servidor con asterisk, no lo hice yo pero funciona de maravilla

#!/bin/bash
EXIF="eth0"

# Clear any existing firewall stuff before we start
/sbin/iptables --flush

# As the default policies, drop all incoming traffic but allow all
# outgoing traffic.  This will allow us to make outgoing connections
# from any port, but will only allow incoming connections on the ports
# specified below.
/sbin/iptables --policy INPUT DROP
/sbin/iptables --policy OUTPUT ACCEPT

# Allow all incoming traffic if it is coming from the local loopback device
/sbin/iptables -A INPUT -i lo -j ACCEPT

# Accept all incoming traffic associated with an established connection, or a "related" connection
/sbin/iptables -A INPUT -i $EXIF -m state --state ESTABLISHED,RELATED -j ACCEPT

# Check new packets are SYN packets for syn-flood protection
/sbin/iptables -A INPUT -p tcp ! --syn -m state --state NEW -j DROP

# Drop fragmented packets
/sbin/iptables -A INPUT -f -j DROP

# Drop malformed XMAS packets
/sbin/iptables -A INPUT -p tcp --tcp-flags ALL ALL -j DROP

# Drop null packets
/sbin/iptables -A INPUT -p tcp --tcp-flags ALL NONE -j DROP

# Allow connections to port 22 - ssh. You can add other ports you need in here
/sbin/iptables -A INPUT -p tcp -i $EXIF --dport 22 -m state --state NEW -j ACCEPT

# Allow connections from my machines
/sbin/iptables -A INPUT -p tcp -i $EXIF -m state --state NEW -s 100.101.5.182 -j ACCEPT
/sbin/iptables -A INPUT -p tcp -i $EXIF -m state --state NEW -s 200.123.88.196 -j ACCEPT

# Allow SIP connections
/sbin/iptables -A INPUT -p udp -i $EXIF --dport 5060 -m udp -j ACCEPT
/sbin/iptables -A INPUT -p tcp -i $EXIF --dport 5060 -m tcp -j ACCEPT
/sbin/iptables -A INPUT -p udp -i $EXIF --dport 10000:20000 -m udp -j ACCEPT

# Allow icmp input so that people can ping us
/sbin/iptables -A INPUT -p icmp --icmp-type 8 -m state --state NEW -j ACCEPT

# Log then drop any packets that are not allowed. You will probably want to turn off the logging
#/sbin/iptables -A INPUT -j LOG
/sbin/iptables -A INPUT -j REJECT
2Oct/101

Configurar tarjetas Sangoma en trixbox (generico)

En un post anterior hablamos sobre wanpipe-para-sangoma-en-trixbox para poner a punto los controladores de estas tarjetas tanto en trixbox como en cualquier redhat, centos y derivados. Ahora vamos a aprender como darle los ultimos toques para iniciar las labores con asterisk/sangoma:

vamos a configurar:

1. Creemos los archivos de configuracion de Wanpipe/DAHDI:

      #> Setup-Sangoma
          (Note -> Si ya creaste manualmente los archivos de configuracion pasamos al paso 2)
           Este proceso creara los archivos:
           - La configuracion de Dahdi
           - La configuracion de wanpipe en /etc/wanpipe
           - Creara los archivos de configuracion para SMG y Woomera
           - Creara ademas los archivos de configuracion wanpipe en /etc/wanpipe

2. Iniciamos el Wanpipe

      #> wanrouter start
            - Con esto iniciaremos todos los puertos de wanpipe
            - Si existiera algun error podemos revisar /var/log/messages para mas informacion

3. Configuraremos el modulo de DAHDI/ZAPTEL

      #> dahdi_cfg -vvv
            - DAHDI modulo del kernel que esta identificado en /etc/dahdi/system.conf
            --o tambien--
      #> ztcfg -vvv
           - ZAPTEL modulo del kernel que esta identificado en /etc/zaptel.conf

4. Start Asterisk
#> asterisk