Introducción

Elio Rojano

Sinologic.net
@hellc2

http://www.sinologic.net/

Elio Rojano Ruiz
Introducción

Sinologic.net
Asterisk
PBX

Elio Rojano Ruiz
Introducción

Asterisk PBX

Sinologic.net
Asterisk SCF

Scalable Communications Framework
Astricon - Octubre 2010

Elio Ro...
Introducción

Asterisk PBX

Sinologic.net
Asterisk SCF

Scalable Communications Framework
Septiembre 2012

Elio Rojano Rui...
Introducción

Sinologic.net
Asterisk
Framework

Elio Rojano Ruiz
Introducción

El software como las ideas
cuanto mejores son
más se pueden aprovechar

Sinologic.net
Elio Rojano Ruiz
Introducción

Estables
Producción
2007

Inestables
Desarrollo

Asterisk 1.4

Sinologic.net
Asterisk 1.6

2008
2010

Asteri...
Introducción

Vamos a ver algunos cambios en Asterisk
para convertirse en un Framework de
desarrollo de aplicaciones de vo...
Flexibilidad
Flexibilidad

+ Flexible

Sinologic.net
+ Opciones

+ Potente

+ Soluciones

Elio Rojano Ruiz
Flexibilidad

PBX

Framework

VoiceMail(buzón,opciones)
VoiceMailMain([buzón])

VoiceMail(buzón,opciones)
VoiceMailMain([b...
Flexibilidad

ConfBridge
Asterisk 1.8

Sinologic.net
ConfBridge([confno][,options])

Asterisk 11

ConfBridge(conference[,b...
Flexibilidad

Fax
Asterisk 1.8 permite:
Enviar faxes (SendFax)
Recibir faxes (RecieveFax)
No puede reenviar Faxes en T.38 ...
Flexibilidad
Número de líneas de código*
2000000

Sinologic.net
1500000

1000000

500000

0

Asterisk 1.8.24

Asterisk 10....
Multi-tenant
Multi-Tenant

Sinologic.net
Multitenancy:

Principio de arquitectura de software donde una
única instancia de un software ...
Multi-Tenant

Sinologic.net
Elio Rojano Ruiz
Multi-Tenant

$
Sinologic.net
Sistema más habitual
Elio Rojano Ruiz
Multi-Tenant

Sinologic.net
Sistema multi-tenant
Elio Rojano Ruiz
Multi-Tenant

¿Cómo se puede
implementar?

Sinologic.net
...un poco de código...

Elio Rojano Ruiz
Multi-Tenant

extensions.conf

...
exten=>912345678,1,Goto(empresa1,s,1)
...
exten=>987654321,1,Goto(empresaN,s,1)
...
[em...
Multi-Tenant
Parkings

features.conf (Asterisk 1.8, 10, 11)
res_parking.conf (Asterisk 12)

[empresa1]
context => empresa1...
Multi-Tenant

extensions.conf
[empresa1_default]
exten => s,1,Set(CHANNEL(namedcallgroup)=empresa1)
exten => s,n,Playback(...
Códecs
Nuevos Códecs

Asterisk 1.8 soporta a:
Alaw / G.711a / PCMA
Ulaw / G.711u / PCMU
G.729a
iLBC
Speex
G.722
G.726
GSM
LPC10
S...
Nuevos Códecs

G.722 marcó un hito en la calidad de sonido

Sinologic.net
Desde entonces, todos los terminales soportan G....
Nuevos Códecs

Códecs Asterisk 10
Alaw / G.711a / PCMA
Ulaw / G.711u / PCMU
G.729a
iLBC
Speex 8/16/32
G.722
G.726
GSM
LPC1...
Nuevos Códecs

3 de Marzo de 2009:
Skype libera SILK

Sinologic.net
OPUS
11 septiembre 2012:
Xiph (creadora de Speex y CEL...
Nuevos Códecs

OPUS

Sinologic.net
Elio Rojano Ruiz
Nuevos Códecs

Asterisk 11 soporta a:
Alaw / G.711a / PCMA
Ulaw / G.711u / PCMU
G.729a
iLBC
Speex
G.722
G.726
GSM
LPC10
SL...
Nuevos Códecs
OPUS es el códec que todos hemos deseado tener:

- Calidad igual o superior al de MP3

Sinologic.net
- Ancho...
Nuevos Códecs

OPUS
Asterisk 11 soporta Opus y VP8 a
través de un parche

Sinologic.net
https://github.com/meetecho/asteri...
Nuevos Códecs

Asterisk 12 soporta a:
Alaw / G.711a / PCMA
Ulaw / G.711u / PCMU
G.729a
iLBC

Sinologic.net
G.722
G.726
GSM...
Bases de datos
Bases de datos
Bases de datos para almacenar la configuración.
Bases de datos para almacenar las llamadas CDR/CEL.
Bases de...
Bases de datos

AstDB = SQLite3

Sinologic.net
# sqlite3 /var/lib/asterisk/astdb.sqlite3
SQLite version 3.7.13 2012-06-11 ...
Bases de datos

Cada base de datos soportado es un
módulo diferente con su propio
soporte.

Sinologic.net
ODBC Postgre
MyS...
Bases de datos

Asterisk 12
Sorcery

Sinologic.net
Sorcery Data Access
ODBC Postgre
AstDB
MySQL Abstraction TDS
Layer SQLi...
Bases de datos

Las capas de
abstracción tendrán
mucha importancia
a partir de ahora.

Sinologic.net
Elio Rojano Ruiz
Mejorar la gestión
del NAT
NAT

Sinologic.net
NAT es un problema

Elio Rojano Ruiz
NAT

Sinologic.net
IAX2 no es una solución al NAT
Mapear puertos tampoco
Usar DMZ menos aún

Elio Rojano Ruiz
NAT

Existen soluciones y
Asterisk ya lo soporta

Sinologic.net
ICE
Interactive Connectivity Establishment protocol

Más i...
NAT

ICE es un protocolo para descubrir
detrás de qué tipo de NAT estamos.
Si hay alguna forma de establecer una comunicac...
NAT

Lo tiene que soportar también
el cliente (softphones / teléfonos IP)
Lista de servidores STUN disponibles: https://gi...
WebRTC
WebRTC
A estas alturas ya debes saber

qué es WebRTC

Sinologic.net
Requisitos básicos Asterisk:

Soporte de WebSocket
Sop...
WebRTC
¿Entonces podremos utilizar WebRTC en Asterisk?

SI

Sinologic.net
http.conf
[general]
enabled=yes
bindaddr=0.0.0.0...
WebRTC

Sinologic.net
https://github.com/versatica/JsSIP

Elio Rojano Ruiz
Aumentar la
Seguridad
Seguridad

SIP cifrado mediante TLS
RTP cifrado mediante SRTP
Contraseñas cifradas mediante MD5

Sinologic.net
Listas de C...
Seguridad

Tema muy serio
Muchos tipos de ataques
Muchas formas de defensa

Sinologic.net
Solo falta que los uses
Elio Roj...
Seguridad

1234 no es una contraseña

pass100 tampoco

Sinologic.net
Elio Rojano Ruiz
Seguridad

Too much information = No information
logger.conf

Sinologic.net
security => security
console => notice,warning...
Seguridad

ACL : Access Control List

Sinologic.net
sip.conf

[erojano]
type=friend
host=dynamic
nat=force_rport
secret=TH...
Seguridad

ACL : Access Control List

Sinologic.net
sip.conf

[erojano]
type=friend
host=dynamic
nat=force_rport
secret=TH...
Seguridad

ACL : Access Control List

Sinologic.net
acl.conf
[erojano_sites]
deny=0.0.0.0
permit=192.168.0.0/255.255.255.0...
Seguridad

ACL : Access Control List
http://www.sinologic.net/proyectos/asterisk/acl/

Sinologic.net
wget http://www.sinol...
Seguridad

ACL : Access Control List

Sinologic.net
[erojano]
type=friend
host=dynamic
nat=force_rport
secret=TH1S1SMyFxCk...
Seguridad
Comprobaciones básicas de seguridad:
-

¿Permites llamadas anónimas al exterior?
¿Tienes usuarios sin contraseña...
Mensajeria
Instantanea
Mensajería Instantánea
Mensajeria Instantanea

VoIP >> Voz sobre IP

Sinologic.net
Voz

Mensajería

Elio Rojano Ruiz

Vide...
Mensajería Instantánea

XMPP

gtalk.conf

motif.conf

Sinologic.net
SIP

sip.conf

MESSAGE

WebRTC
Elio Rojano Ruiz

????
Mensajería Instantánea

Google cada día complica más su
conexión con sus servicios de
mensajería

Sinologic.net
¿¿¿ Mayo 2...
Mensajería Instantánea

Sinologic.net
¿Cuantas empresas tienen su
propio servidor XMPP/Jabber?

Elio Rojano Ruiz
Mensajería Instantánea

Protocolo Mensajería

Sinologic.net
XMPP
SIP
Elio Rojano Ruiz
Mensajería Instantánea

JABBER/XMPP

Asterisk soporta funciones de
mensajería compatibles con
Jabber y XMPP

Sinologic.net...
Mensajería Instantánea

SIP SIMPLE
exten=>1,1,Set(MESSAGE(body)="Prueba de Mensaje”)
exten=>1,n,MessageSend(sip:erojano@si...
Mensajería Instantánea

GESTION DE PRESENCIA
not_set: Estado de presencia SIN DEFINIR
unavailable: Marcado como NO DISPONI...
API de Desarrollo
API de desarrollo
Imprescindible para cualquier Framework
API = Interfaces de Programación de Aplicaciones

CLI

AGI

AMI
...
API de desarrollo

ARI
CLI

...

AMI

/info

/channels

AGI

/applications

/events

ARI

Sinologic.net
canales

...

Sorc...
API de desarrollo

ARI permitirá realizar muchas cosas que
actualmente se hacen con el Manager, aunque
NO es un sustituto ...
API de desarrollo

Podemos obtener información similar al manager
curl http://USER:PASS@www.sinologic.net:8088/ari/asteris...
API de desarrollo

Podemos obtener información similar al manager
curl http://USER:PASS@www.sinologic.net:8088/ari/channel...
Nuevo canal SIP
Nuevo canal SIP

El canal SIP necesita un cambio

Sinologic.net
Difícil de modificar
Fácil de estropear
Solo unos pocos el...
Nuevo canal SIP

Sinologic.net
Utilizar otro
SIP Stack
Elio Rojano Ruiz

Reescribir
chan_sip.c
Nuevo canal SIP

PJSIP
en Asterisk 12

Sinologic.net
Hay que compilarlo aparte
tranquilos: chan_sip sigue en vigor

Elio R...
Nuevo canal SIP

Ejemplo básico pjsip.conf
Transporte
[transport-udp]
type=transport
protocol=udp ;,tcp,tls,ws,wss
bind=0....
¿Preguntas?
Agradecimientos

GRACIAS!!!
✴ La organización del VoIP2DAY
✴ Los desarrolladores y usuarios de la comunidad Asterisk
✴ Ros...
V2 d2013   elio rojano - 12 pruebas de asterisk
Próxima SlideShare
Cargando en…5
×

V2 d2013 elio rojano - 12 pruebas de asterisk

309 visualizaciones

Publicado el

Publicado en: Tecnología
0 comentarios
1 recomendación
Estadísticas
Notas
  • Sé el primero en comentar

Sin descargas
Visualizaciones
Visualizaciones totales
309
En SlideShare
0
De insertados
0
Número de insertados
96
Acciones
Compartido
0
Descargas
10
Comentarios
0
Recomendaciones
1
Insertados 0
No insertados

No hay notas en la diapositiva.

V2 d2013 elio rojano - 12 pruebas de asterisk

  1. 1. Introducción Elio Rojano Sinologic.net @hellc2 http://www.sinologic.net/ Elio Rojano Ruiz
  2. 2. Introducción Sinologic.net Asterisk PBX Elio Rojano Ruiz
  3. 3. Introducción Asterisk PBX Sinologic.net Asterisk SCF Scalable Communications Framework Astricon - Octubre 2010 Elio Rojano Ruiz
  4. 4. Introducción Asterisk PBX Sinologic.net Asterisk SCF Scalable Communications Framework Septiembre 2012 Elio Rojano Ruiz
  5. 5. Introducción Sinologic.net Asterisk Framework Elio Rojano Ruiz
  6. 6. Introducción El software como las ideas cuanto mejores son más se pueden aprovechar Sinologic.net Elio Rojano Ruiz
  7. 7. Introducción Estables Producción 2007 Inestables Desarrollo Asterisk 1.4 Sinologic.net Asterisk 1.6 2008 2010 Asterisk 1.8 Asterisk 10 2011 2012 Asterisk 11 Asterisk 12 2013 2014 Elio Rojano Ruiz Asterisk 13
  8. 8. Introducción Vamos a ver algunos cambios en Asterisk para convertirse en un Framework de desarrollo de aplicaciones de voz Sinologic.net Elio Rojano Ruiz
  9. 9. Flexibilidad
  10. 10. Flexibilidad + Flexible Sinologic.net + Opciones + Potente + Soluciones Elio Rojano Ruiz
  11. 11. Flexibilidad PBX Framework VoiceMail(buzón,opciones) VoiceMailMain([buzón]) VoiceMail(buzón,opciones) VoiceMailMain([buzón]) + MinivmGreet MinivmRecord MinivmMWI MinivmNotify MinivmAccMess MinivmDelete Sinologic.net Elio Rojano Ruiz
  12. 12. Flexibilidad ConfBridge Asterisk 1.8 Sinologic.net ConfBridge([confno][,options]) Asterisk 11 ConfBridge(conference[,bridge_profile[,user_profile[,menu]]]) Plantillas de tipos de perfiles de usuarios Elio Rojano Ruiz Plantillas de salas bridges- con distintas opciones Plantillas de menús con distintas opciones
  13. 13. Flexibilidad Fax Asterisk 1.8 permite: Enviar faxes (SendFax) Recibir faxes (RecieveFax) No puede reenviar Faxes en T.38 - FaxRelay Sinologic.net Recibimos un Fax por T.38 quieres reenviarlo a un ATA donde hay una máquina de Fax. Asterisk 11 exten=>fax,1,FAXOPT(gateway)=yes exten=>fax,n,Dial(SIP/FaxATA) Elio Rojano Ruiz
  14. 14. Flexibilidad Número de líneas de código* 2000000 Sinologic.net 1500000 1000000 500000 0 Asterisk 1.8.24 Asterisk 10.12.3 Asterisk 11.6.0 Asterisk 12-beta1 Más información: http://www.sinologic.net/proyectos/voip2day/2013/indice-asterisk Elio Rojano Ruiz
  15. 15. Multi-tenant
  16. 16. Multi-Tenant Sinologic.net Multitenancy: Principio de arquitectura de software donde una única instancia de un software sirve a múltiples organizaciones (tenants) Elio Rojano Ruiz
  17. 17. Multi-Tenant Sinologic.net Elio Rojano Ruiz
  18. 18. Multi-Tenant $ Sinologic.net Sistema más habitual Elio Rojano Ruiz
  19. 19. Multi-Tenant Sinologic.net Sistema multi-tenant Elio Rojano Ruiz
  20. 20. Multi-Tenant ¿Cómo se puede implementar? Sinologic.net ...un poco de código... Elio Rojano Ruiz
  21. 21. Multi-Tenant extensions.conf ... exten=>912345678,1,Goto(empresa1,s,1) ... exten=>987654321,1,Goto(empresaN,s,1) ... [empresa1] #include “extensions_empresa1.conf” Sinologic.net ... [empresaN] #include “extensions_empresaN.conf” ... exten => s,1,Set(CHANNEL(namedcallgroup)=empresa1) exten => s,n,Playback(empresa1_bienvenida) exten => s,n,Goto(empresa1_IVR,s,1) [empresa1_IVR] exten => s,1,Read(opcion,empresa1_menuyopciones) exten => s,n,Goto(empresa1_IVR,${opcion},1) exten exten exten exten ... => => => => 1,1,Dial(SIP/empresa1_300) 2,1,Dial(SIP/empresa1_301) 3,1,Queue(empresa1_comercial) 4,1,Queue(empresa1_soporte) [empresa1_outgoing] exten=>_3XX,1,Dial(SIP/empresa1_${EXTEN}) exten=>_[67]XXXXXXXX,1,Macro(llamadaExterna,”empresa1”) exten=>_[67]XXXXXXXX,1,Macro(llamadaExterna,”empresa1”) ... exten=>*89,1,Answer() exten=>*89,n,VoiceMailMain(empresa1_${CALLERID(name)}@empresa1) ... Elio Rojano Ruiz
  22. 22. Multi-Tenant Parkings features.conf (Asterisk 1.8, 10, 11) res_parking.conf (Asterisk 12) [empresa1] context => empresa1_park parkpos => 800-850 findslot => next comebacktoorigin = no comebackdialtime = 90 comebackcontext = empresa1_outgoing parkedmusicclass = empresa1_moh Usuarios / Extensiones sip.conf [default](!) type=friend secret=c82j34r9c82j398c9jh9438cj host=dynamic label=cuenta nat=force_rport context=none Sinologic.net Comando: Park(empresa1[,options]) [empresa1](!,default) context=empresa1_outgoing namedcallgroup=empresa1 namedpickupgroup=empresa1 [empresa1_ext300](empresa1) callerid=300 <300> secret=rcn2398rjc92834jc92 … [empresa1_ext399](empresa1) callerid=399 <399> secret=icj984j92834jc928984c … Elio Rojano Ruiz
  23. 23. Multi-Tenant extensions.conf [empresa1_default] exten => s,1,Set(CHANNEL(namedcallgroup)=empresa1) exten => s,n,Playback(empresa1_bienvenida) exten => s,n,Goto(empresa1_IVR,s,1) Sinologic.net [empresa1_IVR] exten => s,1,Read(opcion,empresa1_menuyopciones) exten => s,n,Goto(empresa1_IVR,${opcion},1) exten exten exten exten ... Elio Rojano Ruiz => => => => 1,1,Dial(SIP/empresa1_300) 2,1,Dial(SIP/empresa1_301) 3,1,Queue(empresa1_comercial) 4,1,Queue(empresa1_soporte)
  24. 24. Códecs
  25. 25. Nuevos Códecs Asterisk 1.8 soporta a: Alaw / G.711a / PCMA Ulaw / G.711u / PCMU G.729a iLBC Speex G.722 G.726 GSM LPC10 SLIN Sinologic.net Elio Rojano Ruiz
  26. 26. Nuevos Códecs G.722 marcó un hito en la calidad de sonido Sinologic.net Desde entonces, todos los terminales soportan G.722 Elio Rojano Ruiz
  27. 27. Nuevos Códecs Códecs Asterisk 10 Alaw / G.711a / PCMA Ulaw / G.711u / PCMU G.729a iLBC Speex 8/16/32 G.722 G.726 GSM LPC10 SLIN 8/12/16/24/32/44/48/96/192 CELT 32/44/48 SILK 8/12/16/24 Sinologic.net Códecs HD Elio Rojano Ruiz
  28. 28. Nuevos Códecs 3 de Marzo de 2009: Skype libera SILK Sinologic.net OPUS 11 septiembre 2012: Xiph (creadora de Speex y CELT) utiliza SILK y saca a la luz: “El códec definitivo” http://www.sinologic.net/blog/2012-09/ha-nacido-un-nuevo-codec-opus.html Elio Rojano Ruiz
  29. 29. Nuevos Códecs OPUS Sinologic.net Elio Rojano Ruiz
  30. 30. Nuevos Códecs Asterisk 11 soporta a: Alaw / G.711a / PCMA Ulaw / G.711u / PCMU G.729a iLBC Speex G.722 G.726 GSM LPC10 SLIN 8/12/16/24/32/44/48/96/192 CELT SILK OPUS Sinologic.net Elio Rojano Ruiz
  31. 31. Nuevos Códecs OPUS es el códec que todos hemos deseado tener: - Calidad igual o superior al de MP3 Sinologic.net - Ancho de banda igual o menor que el G.729 - Calidad auto-ajustable al ancho de banda - Estándar de otras tecnologías: WebRTC - Consumo de procesador fantástico - Es realmente un códec libre Elio Rojano Ruiz
  32. 32. Nuevos Códecs OPUS Asterisk 11 soporta Opus y VP8 a través de un parche Sinologic.net https://github.com/meetecho/asterisk-opus Asterisk 12 soporta Opus y VP8 nativamente passthrough (por ahora) http://lists.digium.com/pipermail/asterisk-dev/2013-May/060421.html Elio Rojano Ruiz
  33. 33. Nuevos Códecs Asterisk 12 soporta a: Alaw / G.711a / PCMA Ulaw / G.711u / PCMU G.729a iLBC Sinologic.net G.722 G.726 GSM LPC10 SLIN 8/12/16/24/32/44/48/96/192 OPUS Elio Rojano Ruiz
  34. 34. Bases de datos
  35. 35. Bases de datos Bases de datos para almacenar la configuración. Bases de datos para almacenar las llamadas CDR/CEL. Bases de datos para almacenar el dialplan. Bases de datos para almacenar el ASTDB. Sinologic.net PostgreSQL ODBC SQLite3 TDS LDAP Elio Rojano Ruiz
  36. 36. Bases de datos AstDB = SQLite3 Sinologic.net # sqlite3 /var/lib/asterisk/astdb.sqlite3 SQLite version 3.7.13 2012-06-11 02:05:22 Enter ".help" for instructions Enter SQL statements terminated with a ";" sqlite> .tables astdb sqlite> select * from astdb; /SIP/Registry/erojano|90.126.122.53:54468:3600:erojano:sip:erojano@192.168.0.1:1024 /SIP/Registry/ratienza|90.126.122.53:54468:3600:ratienza:sip:ratienza@192.168.0.2:1024 /dundi/secret|LeQyTgBhJzpYUtUZgDL+Iw==;HhDfflzf+gPSLgpstOZTaQ== /dundi/secretexpiry|1383599365 Elio Rojano Ruiz
  37. 37. Bases de datos Cada base de datos soportado es un módulo diferente con su propio soporte. Sinologic.net ODBC Postgre MySQL SQL LDAP TDS Asterisk Elio Rojano Ruiz AstDB SQLite
  38. 38. Bases de datos Asterisk 12 Sorcery Sinologic.net Sorcery Data Access ODBC Postgre AstDB MySQL Abstraction TDS Layer SQLite SQL LDAP Asterisk Elio Rojano Ruiz
  39. 39. Bases de datos Las capas de abstracción tendrán mucha importancia a partir de ahora. Sinologic.net Elio Rojano Ruiz
  40. 40. Mejorar la gestión del NAT
  41. 41. NAT Sinologic.net NAT es un problema Elio Rojano Ruiz
  42. 42. NAT Sinologic.net IAX2 no es una solución al NAT Mapear puertos tampoco Usar DMZ menos aún Elio Rojano Ruiz
  43. 43. NAT Existen soluciones y Asterisk ya lo soporta Sinologic.net ICE Interactive Connectivity Establishment protocol Más información: http://www.slideshare.net/saghul/ice-4414037 Elio Rojano Ruiz
  44. 44. NAT ICE es un protocolo para descubrir detrás de qué tipo de NAT estamos. Si hay alguna forma de establecer una comunicación, ICE la encontrará. Sinologic.net Se apoya de servidores STUN Si no es posible transmitir audio, entonces utilizamos TURN para reenviar el audio Elio Rojano Ruiz
  45. 45. NAT Lo tiene que soportar también el cliente (softphones / teléfonos IP) Lista de servidores STUN disponibles: https://gist.github.com/hellc2/7290201 Sinologic.net sip.conf [general] ... icesupport = yes stunaddr=servidor.stun.org ... rtp.conf [general] ... icesupport = yes stunaddr=servidor.stun.org turnaddr=servidor.turn.org turnusername=USUARIO turnpassword=PASSWORD ... Elio Rojano Ruiz
  46. 46. WebRTC
  47. 47. WebRTC A estas alturas ya debes saber qué es WebRTC Sinologic.net Requisitos básicos Asterisk: Soporte de WebSocket Soporte de OPUS Soporte de VP8 Soporte de ICE Soporte de SRTP Elio Rojano Ruiz
  48. 48. WebRTC ¿Entonces podremos utilizar WebRTC en Asterisk? SI Sinologic.net http.conf [general] enabled=yes bindaddr=0.0.0.0 bindport=8088 prefix=asterisk Configurando el soporte de WebSocket ;; Puerto donde escuchará el Websocket ;; http://SERVIDOR:8088/asterisk/ws [webrtc_user1] type=friend Configurando cuentas SIP con los requisitos WebRTC host=dynamic context=webrtc secret=user1@webrtcpass1 transport=ws,wss ;; Activamos el soporte WebSocket y WebSocketSecure encryption=yes ;; Activamos el soporte SRTP avpf=yes ;; Tipo de Stream con el que vamos a trabajar nat=force_rport ;; Compatibilidad con Asterisk 11 disabled=all allow=opus,vp8 sip.conf Elio Rojano Ruiz
  49. 49. WebRTC Sinologic.net https://github.com/versatica/JsSIP Elio Rojano Ruiz
  50. 50. Aumentar la Seguridad
  51. 51. Seguridad SIP cifrado mediante TLS RTP cifrado mediante SRTP Contraseñas cifradas mediante MD5 Sinologic.net Listas de Control de Acceso - ACL Sistema de logging especial Seguridad Aplicaciones Authenticate,VMAutenticate Control de registros e intentos de llamada Gestión de contextos en función de permisos Aplicaciones de gestión de puertos portsentry, port-knocking,... Posibilidad de utilizar Firewalls internos/externos Uso de sistemas VPN cifrados Colleja al que toque... ... Elio Rojano Ruiz
  52. 52. Seguridad Tema muy serio Muchos tipos de ataques Muchas formas de defensa Sinologic.net Solo falta que los uses Elio Rojano Ruiz
  53. 53. Seguridad 1234 no es una contraseña pass100 tampoco Sinologic.net Elio Rojano Ruiz
  54. 54. Seguridad Too much information = No information logger.conf Sinologic.net security => security console => notice,warning,error,debug messages => notice,warning,error full => notice,warning,error,debug,verbose,dtmf,fax tail -f /var/log/asterisk/security [Nov 3 20:02:53] SECURITY[5995] res_security_log.c: SecurityEvent="InvalidPassword", EventTV="2013-11-03T20:02:53.585+0100", Severity="Error", Service="SIP", EventVersion="2", AccountID="1001", SessionID="0x7f4cf4dcc788", LocalAddress="IPV4/UDP/178.60.201.227/5060", RemoteAddress="IPV4/UDP/90.126.102.129/1024", Challenge="7b331afe", ReceivedChallenge="7b331afe",ReceivedHash="3bd127dc9f06e7f7d6a2fb2000364bf8" Elio Rojano Ruiz
  55. 55. Seguridad ACL : Access Control List Sinologic.net sip.conf [erojano] type=friend host=dynamic nat=force_rport secret=TH1S1SMyFxCk3DP4SsW0rD deny=0.0.0.0/0.0.0.0 permit=192.168.0.0/255.255.255.0 permit=80.33.84.32/255.255.255.255 permit=10.0.0.0/255.255.0.0 permit=195.245.135.53/255.255.255.255 Elio Rojano Ruiz
  56. 56. Seguridad ACL : Access Control List Sinologic.net sip.conf [erojano] type=friend host=dynamic nat=force_rport secret=TH1S1SMyFxCk3DP4SsW0rD acl=erojano_sites Elio Rojano Ruiz
  57. 57. Seguridad ACL : Access Control List Sinologic.net acl.conf [erojano_sites] deny=0.0.0.0 permit=192.168.0.0/255.255.255.0 permit=80.33.84.32/255.255.255.255 permit=10.0.0.0/255.255.0.0 permit=195.245.135.53/255.255.255.255 Elio Rojano Ruiz
  58. 58. Seguridad ACL : Access Control List http://www.sinologic.net/proyectos/asterisk/acl/ Sinologic.net wget http://www.sinologic.net/proyectos/asterisk/acl/acl_ES.conf -O /etc/asterisk/ acl.conf [ES] #include “acl_ES.conf” **Warning!** El uso de ACL no elimina los ataques ;) Elio Rojano Ruiz
  59. 59. Seguridad ACL : Access Control List Sinologic.net [erojano] type=friend host=dynamic nat=force_rport secret=TH1S1SMyFxCk3DP4SsW0rD acl=ES ;; Solo conexiones desde España acl=DE ;; Solo conexiones desde Alemania sip.conf Elio Rojano Ruiz
  60. 60. Seguridad Comprobaciones básicas de seguridad: - ¿Permites llamadas anónimas al exterior? ¿Tienes usuarios sin contraseña? ¿Alguna contraseña es numérica? ¿La contraseña incluye el número de usuario? ¿Hay dos usuarios con la misma contraseña? ¿Permites usuarios desde cualquier IP? ¿Un usuario puede hacerse pasar por otro? Sinologic.net Si a alguna de estas preguntas respondes SI, entonces deberías revisar tu seguridad. Repítase este test cada 7 días Elio Rojano Ruiz
  61. 61. Mensajeria Instantanea
  62. 62. Mensajería Instantánea Mensajeria Instantanea VoIP >> Voz sobre IP Sinologic.net Voz Mensajería Elio Rojano Ruiz Video
  63. 63. Mensajería Instantánea XMPP gtalk.conf motif.conf Sinologic.net SIP sip.conf MESSAGE WebRTC Elio Rojano Ruiz ????
  64. 64. Mensajería Instantánea Google cada día complica más su conexión con sus servicios de mensajería Sinologic.net ¿¿¿ Mayo 2014 ??? Lo ideal para Mensajería es utilizar nuestro propio servidor XMPP/Jabber Elio Rojano Ruiz
  65. 65. Mensajería Instantánea Sinologic.net ¿Cuantas empresas tienen su propio servidor XMPP/Jabber? Elio Rojano Ruiz
  66. 66. Mensajería Instantánea Protocolo Mensajería Sinologic.net XMPP SIP Elio Rojano Ruiz
  67. 67. Mensajería Instantánea JABBER/XMPP Asterisk soporta funciones de mensajería compatibles con Jabber y XMPP Sinologic.net JabberJoin: Join a chat room JabberLeave: Leave a chat room JabberSend: Sends an XMPP message to a buddy. JabberSendGroup: Send a Jabber Message to a specified chat room JabberStatus: Retrieve the status of a jabber list member Elio Rojano Ruiz
  68. 68. Mensajería Instantánea SIP SIMPLE exten=>1,1,Set(MESSAGE(body)="Prueba de Mensaje”) exten=>1,n,MessageSend(sip:erojano@sinologic.net) Sinologic.net <--- SIP read from UDP:178.60.201.227:5060 ---> MESSAGE sip:erojano@sinologic.net SIP/2.0 Via: SIP/2.0/UDP 178.60.201.227:5060;branch=z9hG4bK0bb64867 Max-Forwards: 70 From: "asterisk" <sip:asterisk@178.60.201.227>;tag=as72ef437d To: <sip:erojano@sinologic.net> Contact: <sip:asterisk@178.60.201.227:5060> Call-ID: 053bbbb50a2cbe414a258a1e7c769c17@178.60.201.227:5060 CSeq: 102 MESSAGE User-Agent: Asterisk PBX 12.0.0-beta1 Content-Type: text/plain;charset=UTF-8 Content-Length: 19 "Prueba de Mensaje" Ya no es necesario enviar el mensaje a un canal abierto Elio Rojano Ruiz
  69. 69. Mensajería Instantánea GESTION DE PRESENCIA not_set: Estado de presencia SIN DEFINIR unavailable: Marcado como NO DISPONIBLE. available: Disponible para comunicación. away: No está delante del sistema y seguramente no responderá. Sinologic.net xa: No está y no se le espera. chat: Solo disponible para mensajería de texto (no por teléfono). dnd: No molestar. exten=>1234,hint,CustomPresence:led1 exten=>_XXXXXXXXX,1,Set(PRESENCE_STATE(CustomPresence:led1)=dnd,,On the phone) exten=>_XXXXXXXXX,n,Dial(SIP/Operador/${EXTEN}) exten=>h,1,Set(PRESENCE_STATE(CustomPresence:led1)=available,,) Elio Rojano Ruiz
  70. 70. API de Desarrollo
  71. 71. API de desarrollo Imprescindible para cualquier Framework API = Interfaces de Programación de Aplicaciones CLI AGI AMI ARI Asterisk REST Interface Elio Rojano Ruiz ASTERISK Sinologic.net
  72. 72. API de desarrollo ARI CLI ... AMI /info /channels AGI /applications /events ARI Sinologic.net canales ... Sorcerer STASIS BUS MESSAGE ASTERISK Elio Rojano Ruiz apps
  73. 73. API de desarrollo ARI permitirá realizar muchas cosas que actualmente se hacen con el Manager, aunque NO es un sustituto del Manager. Sinologic.net Permitirá crear ‘servicios’ que podrán ser lanzados vía peticiones REST STASIS es otra de las novedades de Asterisk 12 orientadas a desarrollo y un cambio bastante importante en la forma de trabajar con Asterisk Elio Rojano Ruiz
  74. 74. API de desarrollo Podemos obtener información similar al manager curl http://USER:PASS@www.sinologic.net:8088/ari/asterisk/info { "status":{ "startup_time":"2013-10-25T22:09:25.241+0200", "last_reload_time":"2013-10-25T22:09:25.241+0200" }, "build":{ "user":"root", "options":"LOADABLE_MODULES, BUILD_NATIVE, OPTIONAL_API", "machine":"x86_64", "os":"Linux", "kernel":"2.6.32-19-pve", "date":"2013-10-10 14:55:47 UTC" }, "system":{ "version":"12.0.0-beta1", "entity_id":"00:00:00:00:00:00" }, "config":{ "default_language":"en", "name":"", "setid":{"user":"","group":""} } Sinologic.net } Elio Rojano Ruiz
  75. 75. API de desarrollo Podemos obtener información similar al manager curl http://USER:PASS@www.sinologic.net:8088/ari/channels [ { "id":"1383507920.1", "state":"Up", "name":"SIP/webrtc", "caller":{ "name":"", "number":"" }, "connected":{ "name":"", "number":"" }, "accountcode":"", "dialplan":{ "context":"webrtc", "exten":"1", "priority":2 }, "creationtime":"2013-11-03T20:45:20.508+0100" Sinologic.net ] Elio Rojano Ruiz }
  76. 76. Nuevo canal SIP
  77. 77. Nuevo canal SIP El canal SIP necesita un cambio Sinologic.net Difícil de modificar Fácil de estropear Solo unos pocos elegidos pueden tocar Elio Rojano Ruiz
  78. 78. Nuevo canal SIP Sinologic.net Utilizar otro SIP Stack Elio Rojano Ruiz Reescribir chan_sip.c
  79. 79. Nuevo canal SIP PJSIP en Asterisk 12 Sinologic.net Hay que compilarlo aparte tranquilos: chan_sip sigue en vigor Elio Rojano Ruiz
  80. 80. Nuevo canal SIP Ejemplo básico pjsip.conf Transporte [transport-udp] type=transport protocol=udp ;,tcp,tls,ws,wss bind=0.0.0.0 localnet=192.168.1.0/24 external_media_address=178.60.101.227 external_signaling_address=178.60.101.227 Users Sinologic.net Trunks [mytrunk] type=registration transport=transport-udp outbound_auth=mytrunk_auth server_uri=sip:sip.example.com client_uri=sip:1234567890@sip.example.com contact_user=1234567890 retry_interval=60 forbidden_retry_interval=600 expiration=3600 [mytrunk_auth] type=auth auth_type=userpass password=1234567890 username=1234567890 realm=sip.example.com Elio Rojano Ruiz [erojano] transport=transport-udp type=endpoint context=outgoing mailbox=erojano disallow=all allow=alaw auth=auth-erojano aors=erojano [auth-erojano] type=auth auth_type=userpass username=erojano password=m1gr4ns3cr3t0 [erojano] type=aor max_contacts=3 minimum_expiration=60
  81. 81. ¿Preguntas?
  82. 82. Agradecimientos GRACIAS!!! ✴ La organización del VoIP2DAY ✴ Los desarrolladores y usuarios de la comunidad Asterisk ✴ Rosa por sus horas de investigación, consejos y apoyo. ✴ Tomás por su apoyo y pruebas con el ARI. ✴ Saúl por la documentación publicada sobre ICE y XMPP. ✴ Iñaki y Jose Luís por el JSSIP y la doc. sobre WebRTC ✴ Avanzada7 por permitirme estar aquí ✴ A todos vosotros por seguir estando ahí Sinologic.net Elio Rojano Ruiz

×