Este documento explica cómo usar el módulo PIKE en Kamailio para proporcionar seguridad en Elastix MT. El módulo PIKE permite bloquear direcciones IP que superen un umbral de solicitudes. También se puede bloquear solicitudes basadas en el agente de usuario. El documento detalla cómo cargar e configurar el módulo PIKE y evaluarlo en la lógica de enrutamiento de Kamailio para bloquear solicitudes no deseadas.
tics en la vida cotidiana prepa en linea modulo 1.pptx
Usando el módulo PIKE en Elastix MT para detección y bloqueo de ataques
1. Usando el módulo PIKE en Elastix MT
Juan Oliva
Security Consultant and VoIP at SILCOM
2. 2
$ Whois @jroliva
Juan Oliva
Linuxero de toda la vida
Consultor de proyectos de Telefonía y VoIP
Consultor 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
8. 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..
11. 11
Kamailio
modo Stateful
• Se mantiene en el medio de todas las
"transacciones" SIP
• transacción petición y una respuesta
• Provee servicios como acounting
12. 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. 13
Kamailio
Preguntas 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 ?
14. 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 :(
17. 17
WHITINDLG
request_route
Comprobaciones iniciales (REQINIT)
Descartar los Cancel
Quitar los request in dialog (WHITINGDLD)
Quitar Restransmisiones
Quitar cabeceras route externas
Agregar record_route para los invite y subscribe
Decartar peticiones que no son de nuestro dominio
Eliminació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 lo
Necesario para enrutar ejem Notify , ACK
RelaySIPOUT
Ruta Peticiones dominio
Externas
REGISTRAR
Si el método es register
Guarda el registro del UA
LOCATION
Carga los datos de contacto
Guardados en el registro y
Lo enruta (relay)
Enruta en función a la
Request Uri
REQINIT
28. 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
31. 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. 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á bloqueada
Sale
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. 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. 34
POR USER AGENT
$ua
U 192.168.10.33:5060 -> 192.168.10.35:5060
REGISTER 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:100@192.168.10.35>;tag=2475650193.
Accept: application/sdp.
User-Agent: friendly-scanner.
To: "100" <sip:100@192.168.10.35>.
Contact: sip:123@1.1.1.1.
CSeq: 1 REGISTER.
Call-ID: 3403204427.
Max-Forwards: 70.
35. 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
42. 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;
}
}
46. 46
Aún así no entendiste
Descarga el kamailio.cfg
https://jroliva.wordpress.com/2015/10/07/configurando-seguridad-en-elastix-mt
47. 47
Enlaces de referencia
Variables en Kamailio
http://www.kamailio.org/wiki/cookbooks/4.0.x/pseudovariables
Elementos del archivo de configuración de kamailio
http://www.kamailio.org/wiki/cookbooks/4.0.x/core/cfg
Definición de parámetros del modulo PIKE
http://www.kamailio.org/docs/modules/4.2.x/modules/pike
Troncalización de Elastix MT y A2BILLING mediante SIP
https://jroliva.wordpress.com/2015/03/19/troncalizacion-de-elastix-mt-y-a2billing-mediante-sip/
Configuración y uso de la interfase web de Elastix MT
http://es.slideshare.net/ElastixMX/elastix-mt-al-descubierto-alfio-muoz-alteknativa
Protegiendo nuestro sistema VoIP con Kamailio
http://blog.pepelux.org/2014/07/30/protegiendo-nuestro-sistema-de-voip-con-kamailio/