jueves, 2 de abril de 2009

Mejorando la seguridad SIP en Asterisk


En los últimos meses han aparecido una serie de nuevas herramientas que hace posible a cualquier novato atacar y cometer fraudes en equipos SIP, incluyendo los sistemas basados en Asterisk.
Existen herramientas fácilmente disponibles que hacen un barrido de redes en busca de hosts que ofrezcan servicios SIP, luego, una vez encontrado, realiza un barrido en busca de extensiones y contraseñas.
Exiten ciertas reglas, de aplicación inmediata, que eliminan muchos de los problemas de seguridad, protegiendo al servidor Asterisk de los barridos masivos y los ataques posteriores. Estos métodos y herramientas de protección ya existen, simplemente hay que aplicarlos.

1) No aceptar pedidos de autenticación SIP desde cualquier dirección IP. Utilizar las líneas “permit=” y “deny=” de sip.conf para sólo permitir un subconjunto razonable de direcciones IP alcanzar cada usuario/extensión listado en el archivo sip.conf. Aún aceptando llamadas entrantes desde “anywhere” (via [default]) no se debe permitir a esos usuarios alcanzar elementos autenticados.


2) Estblecer el valor de la entrada “alwaysauthreject=yes” en el archivo sip.conf. Estaopción está disponible desde la versión 1.2 de Asterisk, pero su por defecto su valor es "no", lo que puede ser potencialmente inseguro. Estabelciendo este valor en "yes" se rechazarán los pedidos de autenticación fallidos utilizando nombres de extensiones válidas con la misma información de un rechazo de usuario inexistente. De esta forma no facilitamos la tarea al atacante para detectar nombres de extensiones existentes utilizando técnicas de "fuerza bruta".

3) Utilizar claves SEGURAS para las entidades SIP. Este es probablemente la más importante medida de seguridad. Si alguna vez viste programas que generan y prueban claves por fuerza bruta sabrás que se necesita algo más que palabras y números para una clave segura. Usar símbolos, números, una mezcla de letras minúsculas y mayúsculas y al menos 12 caracteres de largo.

4) Bloquear los puertos del Asterisk Manager Interface. Usar “permit=” y “deny=” en manager.conf para limitar las conexiones entrantes sólo a hosts conocidos. Una vez más utilizar claves seguras aquí también, 12 caracteres al menos en una combinación de números, letras y símbolos.

5) Permitir sólo una o dos llamadas por vez por entidades SIP cuando sea posible. Limitar el uso no autorizado de las líneas voip es una sabia decisión, esto también es util para el caso que usuarios legítimos hagan pública su clave y pierdan control de su uso.

6) Los nombres de usuarios SIP deben ser diferentes que sus extensiones. A pesar de ser conveniente tener una extensión “1234″ que mapee a una entrada SIP “1234″ la cual es también el usuario SIP “1234″, esto también facilita a los atacantes para descubrir nombres de autenticación SIP. En su ligar usar las direciones MAC del dispositivo, o alguna combinación de frases comunes + extensión MD5 hash (por ejemplo: desde el shell prompt, hacer “md5 -s ThePassword5000″)

7) Asegurarse que el contexto [default] sea seguro. No permitir que llamadores no autenticados alcancen contestos que les permitan llamar. Permitr sólo una cantidad limitada de llamadas activas pasen por el contexto default (utilizar la función “GROUP” como contador). Prohibir totalmente las llamadas no autenticadas ( si es que así lo queremos ) estableciendo “allowguest=no” en la parte [general] de sip.conf.


Estos 7 puntos básicos nos protegen en la mayoría de los casos, pero hay otras medidas que se pueden tomar aunque son más complejas.

Aquí se puede ver un ejemplo de las herramientas que usan los atacantes y contra las que estamos luchando.


En resumen: Las medidas básicas de seguridad nos protegerán contra la vasta mayoría de los ataques de fuerza bruta basados en SIP. Muchos de los atacantes SIP son "tontos con herramientas", oportunistas que ven una forma fácil de cometer fraudes. Asterisk tiene algunos métodos para prevenir los ataques más obvios a nivel de red, los métodos más efectivos de protección son cuestiones administrativas como la complejidad de las claves y nombres de usuarios.

No hay comentarios: