+ All Categories
Home > Technology > Usando el módulo PIKE en Elastix MT

Usando el módulo PIKE en Elastix MT

Date post: 16-Apr-2017
Category:
Upload: palosanto-solutions
View: 1,193 times
Download: 4 times
Share this document with a friend
48
Usando el módulo PIKE en Elastix MT Juan Oliva Security Consultant and VoIP at SILCOM
Transcript
Page 1: Usando el módulo PIKE en Elastix MT

Usando el módulo PIKE en Elastix MT

Juan Oliva Security Consultant and VoIP at SILCOM

Page 2: Usando el módulo PIKE en Elastix MT

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

Page 3: Usando el módulo PIKE en Elastix MT

3

Qué es Elastix MT ?

Page 4: Usando el módulo PIKE en 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

Page 5: Usando el módulo PIKE en Elastix MT

5

Qué es Elastix MT ?

Page 6: Usando el módulo PIKE en Elastix MT

6

Qué es Elastix MT ?

Page 7: Usando el módulo PIKE en Elastix MT

7

Qué es Kamailio ?

Page 8: Usando el módulo PIKE en Elastix MT

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

Page 9: Usando el módulo PIKE en Elastix MT

9

Kamailio

Modos de trabajoStateful - Stateless

Page 10: Usando el módulo PIKE en Elastix MT

10

Kamailiomodo Stateless

• No existe ningún seguimiento

• Sólo reenvía mensajes

• No provee capacidad de control

Page 11: Usando el módulo PIKE en Elastix MT

11

Kamailiomodo Stateful

• Se mantiene en el medio de todas las "transacciones" SIP

• transacción petición y una respuesta

• Provee servicios como acounting

Page 12: Usando el módulo PIKE en Elastix MT

Servicios más conocidos de kamailio

12

• Acounting y location

• Paralel forking

• Balanceo de carga

• Reescribir modificar métodos SIP

• Seguridad a bajo nivel

Page 13: Usando el módulo PIKE en Elastix MT

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 ?

Page 14: Usando el módulo PIKE en Elastix MT

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 :(

Page 15: Usando el módulo PIKE en Elastix MT

15

Desmembrando kamailio en Elastix MT

Page 16: Usando el módulo PIKE 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)

Page 17: Usando el módulo PIKE en Elastix MT

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

Page 18: Usando el módulo PIKE en Elastix MT

18

Y entonces …..Como se integra

Kamailio y Asterisk en Elastix MT ?

Page 19: Usando el módulo PIKE en Elastix MT

19

Page 20: Usando el módulo PIKE en Elastix MT

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

Page 21: Usando el módulo PIKE en Elastix MT

21

Y donde se encuentran los usuarios,

registros..etc..etc??

Page 22: Usando el módulo PIKE en Elastix MT

Tabla : sipBase datos : elxpbx

Page 23: Usando el módulo PIKE en Elastix MT

View : subscriberBase datos : elxpbx

Page 24: Usando el módulo PIKE en Elastix MT

View : subscriberBase datos : elxpbx

Page 25: Usando el módulo PIKE en Elastix MT

25

Tabla : sipView : subscriber BD : elxpbx

Page 26: Usando el módulo PIKE en Elastix MT

26

Seguridad en Kamailio

Page 27: Usando el módulo PIKE en Elastix MT

27

Dos formas :

Modulo PIKE User Agent

Page 28: Usando el módulo PIKE en Elastix MT

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

Page 29: Usando el módulo PIKE en Elastix MT

29

Qué necesitamos para usar PIKE en Kamailio ?

Page 30: Usando el módulo PIKE en Elastix MT

30

Módulo PIKE

loadmodule "pike.so"

Cargar el módulo ( Not by Default)

1.- Cargar módulo

Page 31: Usando el módulo PIKE en Elastix MT

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

Page 32: Usando el módulo PIKE en Elastix MT

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)

Page 33: Usando el módulo PIKE en Elastix MT

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

Page 34: Usando el módulo PIKE en Elastix MT

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.

Page 35: Usando el módulo PIKE en Elastix MT

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

Page 36: Usando el módulo PIKE en Elastix MT

36

Seguridad en Elastix MT

36

Page 37: Usando el módulo PIKE en Elastix MT

37

Ummm y ahora en donde van los códigos

en Elastix MT??

Modulo PIKE User Agent

Page 38: Usando el módulo PIKE en Elastix MT

WHITINDLG

request_route

RelaySIPOUT REGISTRAR LOCATION

REQINIT

AQUÍ !!

Ummm y en donde van los códigosen Elastix MT??

Page 39: Usando el módulo PIKE en Elastix MT

39

Configurando PIKE en ELASTIX MT

1.- Activar la variable en las definiciones globales

#!define WITH_ANTIFLOOD

Page 40: Usando el módulo PIKE en Elastix MT

40

Configurando PIKE en ELASTIX MT

2.- Verificar la carga del módulo

#!ifdef WITH_ANTIFLOODloadmodule "pike.so"#!endif

Page 41: Usando el módulo PIKE en Elastix MT

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")

Page 42: Usando el módulo PIKE en Elastix MT

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; }}

Page 43: Usando el módulo PIKE en Elastix MT

43

Configurando bloqueo por $UA en Elastix MT

43

Page 44: Usando el módulo PIKE en Elastix MT

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;}

}

Page 45: Usando el módulo PIKE en Elastix MT

45

Seguridad en Elastix MT(POC - DEMO)

Page 46: Usando el módulo PIKE en Elastix MT

46

Aún así no entendisteDescarga el kamailio.cfg

https://jroliva.wordpress.com/2015/10/07/configurando-seguridad-en-elastix-mt

Page 47: Usando el módulo PIKE 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/

Page 48: Usando el módulo PIKE en Elastix MT

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


Recommended