Usando el módulo PIKE en Elastix MT

Post on 16-Apr-2017

1,193 views 4 download

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

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 : joliva@silcom.com.pehangout : jroliva@gmailcom

Twiter : @jrolivaBlog : http://jroliva.wordpress.com/

Gracias ElastixWorld !!