Está en la página 1de 4

Segunda Parte - Seguridad en Asterisk

Hay unas reglas de oro que se necesita seguir en la configuracin de Asterisk. Estas reglas permiten
mejorar la seguridad de la PBX y evitar ataques exitosos:

1. utilizar siempre contraseas fuertes y difciles de memorizar.


2. no utilizar la misma contrasea para todas las extensiones
3. no aceptar llamadas entrantes de invitados. Esto se configura en la parte general del archivo
sip.conf con el parmetro allowguest=no. Si se decide aceptar llamadas entrantes de invitados
(sin autentificacin), el contexto definido en la parte general del sip.conf no debe permitir el
acceso a troncales SIP y/o lineas telefnicas tradicionales. Para PJSIP, si se quiere dar acceso a
invitados, se crea un endpoint con etiqueta [anonymous] en el archivo pjsip.conf, tipo:
[anonymous]
type=endpoint
context=default
message_context=default
disallow=all
allow=ulaw,g722
language=es
dtmf_mode=rfc4733
direct_media=no
force_rport=yes
rtp_symmetric=yes
rewrite_contact=yes
transport=no-nat
De esta forma cuando llegue una llamada y Asterisk no encuentra ningn endpoint por la
llamada entrante, enva la llamada al contexto default (el contexto definido en el bloque).
4. configurar en la parte general del sip.conf el parmetro alwaysauthreject=yes. De esta forma
cualquier intento de registro a extensiones existentes en la centralita, recibir como respuesta
que la extensin no existe, evitando dar trazas al atacante. No existe un parmetro
correspondiente en pjsip.conf.
5. No permitir el acceso al AMI de Asterisk desde remoto (teniendo cerrado el puerto 5038 TCP
del servidor Linux. En el caso que se necesite utilizar el AMI desde remoto, configurar Iptables
de modo que acepte el trafico solo desde determinadas direcciones IP. Un ejemplo es esta linea:
-A INPUT -p tcp -m state --state NEW -m tcp --dport 5038 -s 192.168.142.200 -j ACCEPT
Con esta linea se podr conectar desde remoto al AMI de Asterisk solamente la maquina con IP
192.168.142.200. Otra forma es utilizar el protocolo TLS.
6. Utilizar nmeros o nombres de extensiones largos y difcil de memorizar
7. Utilizar las funciones GROUP y GRUP_COUNT para limitar las llamadas salientes de las
extensiones.
8. Permitir registro y llamadas solamente si la extensin utiliza el nombre de dominio del servidor
en lugar de la IP. Esto se realiza:
en al archivo sip.conf utilizando el parmetro domain=sipXX.voztovoice.org se aceptarn
registros solamente sobre el dominio indicado en el parmetro; personalizar con el nombre
de dominio asociado a su servidor. Con el parmetro allowexternaldomains=no no se
aceptarn INVITE y REFER procedentes de IP o dominios que no sean los indicados en el
parmetro domain; esto porque se pueden indicar uno o ms dominios que el servidor va a
atender.
en el archivo pjsip.conf se realiza el mismo procedimiento aadiendo a la etiqueta de cada
bloque de tipo endpoint el dominio. Para la extensin 1000 sera:
[1000@sipXX.voztovoice.org]. Modificar con el nombre de dominio de su servidor. De esta
forma el sistema no aceptar registros con IP sino con el nombre de dominio. Lo mismo
para los INVITE. Esta configuracin es la misma que se utilizara para un escenario de
multi dominio/multi cliente. Lastima que no est funcionando.

Ademas de estas 8 reglas, es posible instalar en el servidor Asterisk Fail2Ban, un programa que lee los
registros de Asterisk, en este caso /var/log/asterisk/security y si hay un numero determinado de intentos
de conexin sin xito, bloquea la IP de donde se han originados, interactuando con IPtables
(cortafuego).

Se descarga el programa:

cd /usr/src

wget https://github.com/fail2ban/fail2ban/archive/0.9.4.tar.gz

se descomprime:

tar -xf 0.9.4.tar.gz

se entra en la carpeta creada:

cd fail2ban-0.9.4

y se instala:

python setup.py install

Se activa el script para iniciarlo como servicio:

cp /usr/src/fail2ban-0.9.4/files/redhat-initd /etc/init.d/fail2ban

chkconfig --add fail2ban

chkconfig fail2ban on

Se configura para que lea los registros de Asterisk:

nano /etc/fail2ban/filter.d/asterisk.conf

despus de esta linea:

^(%(__prefix_line)s|\[\]\s*WARNING%(__pid_re)s:?(?:\[C-[\da-f]*\])? )Ext\. s: "Rejecting


unknown SIP connection from <HOST>"$

Se aade:
^%(__prefix_line)s%(log_prefix)s Request from '[^']*' failed for '<HOST>(?::\d+)?' \(callid: \w*\) -
No matching endpoint found$

De esta forma se bloquearn tambin los intentos de registro hacia PJSIP. Se guardan los cambios y se
termina modificando el archivo de configuracin general de fail2ban:

cd /etc/fail2ban

nano jail.conf

al final del archivo se aaden las lineas que siguen:

[asterisk-iptables]
enabled = true
filter = asterisk
action = iptables-allports[name=ASTERISK, protocol=all]
sendmail-whois[name=ASTERISK, dest=root@localhost, sender=fail2ban@sipXX.voztovoice.org]
logpath = /var/log/asterisk/security
maxretry = 5
bantime = 60

En la lnea logpath aparece el archivo de registros que fail2ban leer para averiguar intentos frustrados
de conexin a Asterisk. En la configuracin hay que modificar la direccin de correo electrnico.
En lugar de root@localhost se pone la direccin de correo electrnico donde se quiere recibir las
notificaciones. En sender, en lugar de fail2ban@sipXX.voztovoice.org se pone
fail2ban@nombrededominio del servidor donde est instalado Asterisk. Para enviar los correos,
fail2ban est configurado con Sendmail. Con esta configuracin cuando se verifiquen 5 ataques del
mismo tipo procedentes de la misma IP, Fail2ban bloquear el IP insertando una nueva regla en la
configuracin de Iptables y la mantendr bloqueada por 60 segundos. Este valor es para que puedan
realizar pruebas. En produccin utilizar un valor ms alto (3600 una hora, por ejemplo).

Para que funcione hay que modificar el archivo de configuracin de los registros de Asterisk:

nano /etc/asterisk/logger.conf

Se modifica esta linea:

;security => security

para que quede:

security => security,notice

Se guardan las modificaciones y se reinicia Asterisk:

systemctl restart asterisk

Se inicia fail2ban:
service fail2ban start
Starting fail2ban (via systemctl): [ OK ]

Se averigua que no haya errores en el log de fail2ban:

tail -f /var/log/fail2ban.log

Si se quiere realizar una prueba se configura en X-Lite una extensin que no existe en el sistema o para
la extensin PJSIP 1000 se pone una contrasea equivocada y se intenta el registro a Asterisk. La IP de
donde se est intentando registrarse ser bloqueada. Accediendo a la consola del servidor remoto desde
otra direccin IP con el comando:

iptables -L

se ver la IP bloqueada:

Desde el log de fail2ban:

Si por error se bloquea la IP de un computador, la nica forma de quitar el bloqueo es parar y reiniciar
IPtables o reiniciar el servidor Linux.

También podría gustarte