usando el módulo pike en elastix mt
TRANSCRIPT
Usando el módulo PIKE en Elastix MT
Juan Oliva Security Consultant and VoIP at SILCOM
2
$ Whois @jrolivaJuan Oliva
Linuxero de toda la vidaConsultor de proyectos de Telefonía y VoIPConsultor de proyectos de Ethical Hacking
Certificaciones C|EH, CPTE, OSEH, BNS, ECE, ESM, dCAA, LPIC-1, Novell CLA
Intructor & Training- Certificación de Seguridad de Elastix “ESM” y “ECE”
- Certificación Linux Professional Institute LPI-C1
- Cursos Ethical Hacking y Voz sobre IP
3
Qué es Elastix MT ?
4
Qué es Elastix MT ?
• Conocido al inicio como Elastix 3.0
• Enfocada para PBX Providers y Cloud PBX
• Soporte Multi-Tenant
• SIP Proxy embebido
5
Qué es Elastix MT ?
6
Qué es Elastix MT ?
7
Qué es Kamailio ?
8
Qué es Kamailio ?
• Es un SIP PROXY
• Es un router de paquetes SIP
• Trabaja a bajo nivel
• No sabe que es una llamada, solo sabe enrutar métodos SIP .. INVITE, BYE,etc.etc..
9
Kamailio
Modos de trabajoStateful - Stateless
10
Kamailiomodo Stateless
• No existe ningún seguimiento
• Sólo reenvía mensajes
• No provee capacidad de control
11
Kamailiomodo Stateful
• Se mantiene en el medio de todas las "transacciones" SIP
• transacción petición y una respuesta
• Provee servicios como acounting
Servicios más conocidos de kamailio
12
• Acounting y location
• Paralel forking
• Balanceo de carga
• Reescribir modificar métodos SIP
• Seguridad a bajo nivel
13
KamailioPreguntas de rigor
• Es posible ponerle un E1/T1 a kamailio ?
• Puedo saber las llamadas concurrentes en Kamailio como lo hago en Asterisk ?
• Puedo colgar una llamada en curso como lo hago en Asterisk ?
• Se hace cargo de la media y/o video ?
ASTERISK
14
• Es un Back to back user Agent
• Control sobre las “llamadas”
• Mantiene activa y gestión el estado
• Si se cae .. se caen todas las llamadas :(
15
Desmembrando kamailio en Elastix MT
16
Kamailio.cfg/etc/kamailio/kamailio.cfg
Definiciones globales
Sección de módulos
Sección de configuración de módulos
Bloques de rutas o lógica de enrutamiento
Principal (Main ó request_route)
Secundarias (REQINIT, WITHINDLG,REGISTRAR)
Failure (failure_route)
Branch (branch_route)
17
WHITINDLG
request_route
Comprobaciones iniciales (REQINIT)Descartar los Cancel Quitar los request in dialog (WHITINGDLD)Quitar RestransmisionesQuitar cabeceras route externasAgregar record_route para los invite y subscribeDecartar peticiones que no son de nuestro dominioEliminación de route externos en request (SIPOUT)Gestionar los registar (REGISTRAR)Validar si llega la Request Uri – user Buscar al usuario para enrutarlo (LOCATION)
Revisión si la request in dialog tiene todo loNecesario para enrutar ejem Notify , ACK
RelaySIPOUT
Ruta Peticiones dominioExternas
REGISTRAR
Si el método es register Guarda el registro del UA
LOCATION
Carga los datos de contactoGuardados en el registro yLo enruta (relay)
Enruta en función a la Request Uri
REQINIT
18
Y entonces …..Como se integra
Kamailio y Asterisk en Elastix MT ?
19
20
vim /etc/kamailio/kamailio.conf#!define DBASTURL "unixodbc:///elxpbx-connector"
vim /etc/asterisk/res_odbc.conf
;;; odbc setup file[elxpbx]enabled => yesdsn => elxpbx-connectorpre-connect => yessanitysql => select 1
21
Y donde se encuentran los usuarios,
registros..etc..etc??
Tabla : sipBase datos : elxpbx
View : subscriberBase datos : elxpbx
View : subscriberBase datos : elxpbx
25
Tabla : sipView : subscriber BD : elxpbx
26
Seguridad en Kamailio
27
Dos formas :
Modulo PIKE User Agent
28
Módulo PIKE
•Realiza un seguimiento de todas o IP de origen solicitud entrante seleccionado.
•Bloquea los que superen un determinado umbral
•Soporta IPv6
•No hay acciones internas para bloquear
29
Qué necesitamos para usar PIKE en Kamailio ?
30
Módulo PIKE
loadmodule "pike.so"
Cargar el módulo ( Not by Default)
1.- Cargar módulo
modparam("pike", "sampling_time_unit", 5)
modparam("pike", "reqs_density_per_unit", 50)
modparam("pike", "remove_latency", 60)
modparam("pike", "pike_log_level", 4)
modparam("htable", "htable", "ipban=>size=8;autoexpire=300")
Módulo PIKE
Cantidad de peticiones
Umbrar en segundos
Tiempo que la IP está en memoria
Nivel del syslog
Hash table, Tabla IPBAN , Tamaño 256 (2x8) , permanece 300 segundos o 5 minutos
2.- Configurar módulo
32
Modulo PIKE
if(src_ip!=myself) { if($sht(ipban=>$si)!=$null) { xdbg("request from blocked IP - $rm from $fu (IP:$si:$sp)\n"); exit; } if (!pike_check_req()) { xlog("L_ALERT","ALERT: pike blocking $rm from $fu (IP:$si:$sp)\n"); $sht(ipban=>$si) = 1; exit; }}
Si la IP está en IPBAN
La IP está bloqueadaSale
Si la IP superó el umbral definido
Crea una entrada en hastable IPBAN con la IP
Sale
Si la IP es diferente a mi
3.- Evaluar en el route ( lógica de enrutamiento)
33
POR USER AGENT$ua
•Realiza un análisis de todos los UA enrutados
•Bloquea los UA que se determinen
•No lee ningún tipo de log para realizar el bloqueo
34
POR USER AGENT$ua
U 192.168.10.33:5060 -> 192.168.10.35:5060REGISTER sip:192.168.10.35 SIP/2.0.Via: SIP/2.0/UDP 127.0.1.1:5060;branch=z9hG4bK-2962251035;rport.Content-Length: 0.From: "100" <sip:[email protected]>;tag=2475650193.Accept: application/sdp.User-Agent: friendly-scanner.To: "100" <sip:[email protected]>.Contact: sip:[email protected]: 1 REGISTER.Call-ID: 3403204427.Max-Forwards: 70.
35
if($ua =~ "friendly-scanner" || $ua =~ "sipvicious" || $ua =~ "^sipcli.+") { xlog("L_WARN","ALERT: BRUTEFORCE $rm TOOL $ua DESDE $fu (IP:$si:$sp)\n"); exit;}
BY USER AGENT$ua
Si el $UA es
Sale del request
36
Seguridad en Elastix MT
36
37
Ummm y ahora en donde van los códigos
en Elastix MT??
Modulo PIKE User Agent
WHITINDLG
request_route
RelaySIPOUT REGISTRAR LOCATION
REQINIT
AQUÍ !!
Ummm y en donde van los códigosen Elastix MT??
39
Configurando PIKE en ELASTIX MT
1.- Activar la variable en las definiciones globales
#!define WITH_ANTIFLOOD
40
Configurando PIKE en ELASTIX MT
2.- Verificar la carga del módulo
#!ifdef WITH_ANTIFLOODloadmodule "pike.so"#!endif
41
Configurando PIKE en ELASTIX MT
3.- Configurar el módulo PIKE a gusto :D
#!ifdef WITH_ANTIFLOODmodparam("pike", "sampling_time_unit", 5)modparam("pike", "reqs_density_per_unit", 50)modparam("pike", "remove_latency", 60)modparam("pike", "pike_log_level", 4)modparam("htable", "htable", "ipban=>size=8;autoexpire=300")
42
Configurando PIKE en ELASTIX MT
4.- Evaluar en la lógica de enrutamiento
route[REQINIT] {
if(src_ip!=myself) { if($sht(ipban=>$si)!=$null) { # ip is already blocked xdbg("request from blocked IP - $rm from $fu (IP:$si:$sp)\n"); exit; } if (!pike_check_req()) { # blocking new ip xlog("L_ALERT","ALERT: pike blocking $rm from $fu (IP:$si:$sp)\n"); $sht(ipban=>$si) = 1; exit; }}
43
Configurando bloqueo por $UA en Elastix MT
43
44
Configurando bloqueo por $UA en ELASTIX MT
1.- Evaluar en la lógica de enrutamiento
route[REQINIT] {
if($ua =~ "friendly-scanner" || $ua =~ "sipvicious" || $ua =~ "^sipcli.+") { xlog("L_WARN","ALERT: HIJOIPUCHA ENVIANDO $rm CON LA TOOL $ua DESDE $fu (IP:$si:$sp)\n"); exit;}
}
45
Seguridad en Elastix MT(POC - DEMO)
46
Aún así no entendisteDescarga el kamailio.cfg
https://jroliva.wordpress.com/2015/10/07/configurando-seguridad-en-elastix-mt
47
Enlaces de referencia
Variables en Kamailiohttp://www.kamailio.org/wiki/cookbooks/4.0.x/pseudovariables
Elementos del archivo de configuración de kamailiohttp://www.kamailio.org/wiki/cookbooks/4.0.x/core/cfg
Definición de parámetros del modulo PIKEhttp://www.kamailio.org/docs/modules/4.2.x/modules/pike
Troncalización de Elastix MT y A2BILLING mediante SIPhttps://jroliva.wordpress.com/2015/03/19/troncalizacion-de-elastix-mt-y-a2billing-mediante-sip/
Configuración y uso de la interfase web de Elastix MThttp://es.slideshare.net/ElastixMX/elastix-mt-al-descubierto-alfio-muoz-alteknativa
Protegiendo nuestro sistema VoIP con Kamailiohttp://blog.pepelux.org/2014/07/30/protegiendo-nuestro-sistema-de-voip-con-kamailio/
www.silcom.com.cowww.silcom.com.pe
Preguntas?Juan Oliva
Consultor en seguridad informatica y VoIPemail : [email protected] : jroliva@gmailcom
Twiter : @jrolivaBlog : http://jroliva.wordpress.com/
Gracias ElastixWorld !!