Se ha denunciado esta presentación.
Utilizamos tu perfil de LinkedIn y tus datos de actividad para personalizar los anuncios y mostrarte publicidad más relevante. Puedes cambiar tus preferencias de publicidad en cualquier momento.

Usando el módulo PIKE en Elastix MT

1.361 visualizaciones

Publicado el

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

Publicado en: Tecnología
  • Sé el primero en comentar

  • Sé el primero en recomendar esto

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 !!

×