Usando el módulo PIKE en Elastix MT

1.300 visualizaciones

Publicado el

Conferencista: Juan Oliva
ElastixWorld 2015
Octubre 7
Bogotá - Colombia

Publicado en: Tecnología
0 comentarios
0 recomendaciones
Estadísticas
Notas
  • Sé el primero en comentar

  • Sé el primero en recomendar esto

Sin descargas
Visualizaciones
Visualizaciones totales
1.300
En SlideShare
0
De insertados
0
Número de insertados
3
Acciones
Compartido
0
Descargas
16
Comentarios
0
Recomendaciones
0
Insertados 0
No insertados

No hay notas en la diapositiva.

Usando el módulo PIKE en Elastix MT

  1. 1. Usando el módulo PIKE en Elastix MT Juan Oliva Security Consultant and VoIP at SILCOM
  2. 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
  3. 3. 3 Qué es Elastix MT ?
  4. 4. 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. 5. 5 Qué es Elastix MT ?
  6. 6. 6 Qué es Elastix MT ?
  7. 7. 7 Qué es Kamailio ?
  8. 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..
  9. 9. 9 Kamailio Modos de trabajo Stateful - Stateless
  10. 10. 10 Kamailio modo Stateless • No existe ningún seguimiento • Sólo reenvía mensajes • No provee capacidad de control
  11. 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. 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. 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. 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 :(
  15. 15. 15 Desmembrando kamailio en Elastix MT
  16. 16. 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. 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
  18. 18. 18 Y entonces ….. Como se integra Kamailio y Asterisk en Elastix MT ?
  19. 19. 19
  20. 20. 20 vim /etc/kamailio/kamailio.conf #!define DBASTURL "unixodbc:///elxpbx-connector" vim /etc/asterisk/res_odbc.conf ;;; odbc setup file [elxpbx] enabled => yes dsn => elxpbx-connector pre-connect => yes sanitysql => select 1
  21. 21. 21 Y donde se encuentran los usuarios, registros..etc..etc??
  22. 22. Tabla : sipBase datos : elxpbx
  23. 23. View : subscriberBase datos : elxpbx
  24. 24. View : subscriberBase datos : elxpbx
  25. 25. 25 Tabla : sipView : subscriber BD : elxpbx
  26. 26. 26 Seguridad en Kamailio
  27. 27. 27 Dos formas : Modulo PIKE User Agent
  28. 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
  29. 29. 29 Qué necesitamos para usar PIKE en Kamailio ?
  30. 30. 30 Módulo PIKE loadmodule "pike.so" Cargar el módulo ( Not by Default) 1.- Cargar módulo
  31. 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. 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. 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. 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. 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. 36. 36 Seguridad en Elastix MT 36
  37. 37. 37 Ummm y ahora en donde van los códigos en Elastix MT?? Modulo PIKE User Agent
  38. 38. WHITINDLG request_route RelaySIPOUT REGISTRAR LOCATION REQINIT AQUÍ !! Ummm y en donde van los códigos en Elastix MT??
  39. 39. 39 Configurando PIKE en ELASTIX MT 1.- Activar la variable en las definiciones globales #!define WITH_ANTIFLOOD
  40. 40. 40 Configurando PIKE en ELASTIX MT 2.- Verificar la carga del módulo #!ifdef WITH_ANTIFLOOD loadmodule "pike.so" #!endif
  41. 41. 41 Configurando PIKE en ELASTIX MT 3.- Configurar el módulo PIKE a gusto :D #!ifdef WITH_ANTIFLOOD 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")
  42. 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; } }
  43. 43. 43 Configurando bloqueo por $UA en Elastix MT 43
  44. 44. 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. 45. 45 Seguridad en Elastix MT (POC - DEMO)
  46. 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. 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/
  48. 48. www.silcom.com.co www.silcom.com.pe Preguntas? Juan Oliva Consultor en seguridad informatica y VoIP email : joliva@silcom.com.pe hangout : jroliva@gmailcom Twiter : @jroliva Blog : http://jroliva.wordpress.com/ Gracias ElastixWorld !!

×