SlideShare une entreprise Scribd logo
1  sur  83
Télécharger pour lire hors ligne
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 Rojano Ruiz
Introducción

Asterisk PBX

Sinologic.net
Asterisk SCF

Scalable Communications Framework
Septiembre 2012

Elio Rojano Ruiz
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

Asterisk 1.8

Asterisk 10

2011
2012

Asterisk 11
Asterisk 12

2013
2014
Elio Rojano Ruiz

Asterisk 13
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
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([buzón])
+
MinivmGreet
MinivmRecord
MinivmMWI
MinivmNotify
MinivmAccMess
MinivmDelete

Sinologic.net
Elio Rojano Ruiz
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
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
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
Multi-tenant
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
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)
...
[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
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
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)
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
SLIN

Sinologic.net
Elio Rojano Ruiz
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
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
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
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
SLIN 8/12/16/24/32/44/48/96/192
CELT
SILK
OPUS

Sinologic.net
Elio Rojano Ruiz
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
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
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
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 datos para almacenar el dialplan.
Bases de datos para almacenar el ASTDB.

Sinologic.net
PostgreSQL
ODBC
SQLite3
TDS
LDAP

Elio Rojano Ruiz
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
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
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
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 información: http://www.slideshare.net/saghul/ice-4414037
Elio Rojano Ruiz
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
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
WebRTC
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
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
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 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
Seguridad

Tema muy serio
Muchos tipos de ataques
Muchas formas de defensa

Sinologic.net
Solo falta que los uses
Elio Rojano Ruiz
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,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
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
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
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
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
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
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
Mensajeria
Instantanea
Mensajería Instantánea
Mensajeria Instantanea

VoIP >> Voz sobre IP

Sinologic.net
Voz

Mensajería

Elio Rojano Ruiz

Video
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 2014 ???

Lo ideal para Mensajería es
utilizar nuestro propio servidor
XMPP/Jabber

Elio Rojano Ruiz
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
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
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
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
API de Desarrollo
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
API de desarrollo

ARI
CLI

...

AMI

/info

/channels

AGI

/applications

/events

ARI

Sinologic.net
canales

...

Sorcerer

STASIS BUS MESSAGE
ASTERISK

Elio Rojano Ruiz

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

}
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 elegidos
pueden tocar

Elio Rojano Ruiz
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 Rojano Ruiz
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
¿Preguntas?
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

Contenu connexe

Tendances

Tendances (15)

Amenzas de seguridad en redes modernas - Seguridad informatica
Amenzas de seguridad en redes modernas - Seguridad informaticaAmenzas de seguridad en redes modernas - Seguridad informatica
Amenzas de seguridad en redes modernas - Seguridad informatica
 
Dispositivos de seguridad informática
Dispositivos de seguridad informáticaDispositivos de seguridad informática
Dispositivos de seguridad informática
 
Implementación de tecnologías de firewall
Implementación de tecnologías de firewallImplementación de tecnologías de firewall
Implementación de tecnologías de firewall
 
AAA Servers
AAA ServersAAA Servers
AAA Servers
 
Pruebas de Intrusión utilizando Open Source
Pruebas de Intrusión utilizando Open SourcePruebas de Intrusión utilizando Open Source
Pruebas de Intrusión utilizando Open Source
 
10 años de VoIP: Conocer el pasado para pronosticar el futuro.
10 años de VoIP: Conocer el pasado para pronosticar el futuro.10 años de VoIP: Conocer el pasado para pronosticar el futuro.
10 años de VoIP: Conocer el pasado para pronosticar el futuro.
 
Owasp presentacion latam tour (Ago 2011)
Owasp presentacion latam tour (Ago 2011)Owasp presentacion latam tour (Ago 2011)
Owasp presentacion latam tour (Ago 2011)
 
Fundamento de Redes - Capitulo 2
Fundamento de Redes - Capitulo 2 Fundamento de Redes - Capitulo 2
Fundamento de Redes - Capitulo 2
 
Itn instructor ppt_chapter2
Itn instructor ppt_chapter2Itn instructor ppt_chapter2
Itn instructor ppt_chapter2
 
Exploration network chapter11
Exploration network chapter11Exploration network chapter11
Exploration network chapter11
 
Beep intrusion-detected
Beep intrusion-detectedBeep intrusion-detected
Beep intrusion-detected
 
Socket
SocketSocket
Socket
 
Internet y Firewall MGA-NIC 2007
Internet y Firewall MGA-NIC 2007Internet y Firewall MGA-NIC 2007
Internet y Firewall MGA-NIC 2007
 
Configurar equipos red - IOS
Configurar equipos red - IOSConfigurar equipos red - IOS
Configurar equipos red - IOS
 
Cuadro
CuadroCuadro
Cuadro
 

En vedette

Team 3 status report#2
Team 3 status report#2Team 3 status report#2
Team 3 status report#2
Joaquim Jaime
 
Mf marketing presentation-ma-2012
Mf marketing presentation-ma-2012Mf marketing presentation-ma-2012
Mf marketing presentation-ma-2012
Mattress Factory
 
Projeto caracterização IEE Dep Ruy Ramos
Projeto caracterização IEE Dep Ruy RamosProjeto caracterização IEE Dep Ruy Ramos
Projeto caracterização IEE Dep Ruy Ramos
Impactto Cursos
 

En vedette (6)

Team 3 status report#2
Team 3 status report#2Team 3 status report#2
Team 3 status report#2
 
Art noveau 2
Art noveau 2Art noveau 2
Art noveau 2
 
Examen abierto nacional por internet omi 2005
Examen abierto nacional por internet omi 2005Examen abierto nacional por internet omi 2005
Examen abierto nacional por internet omi 2005
 
RPD exam Final year
RPD exam Final yearRPD exam Final year
RPD exam Final year
 
Mf marketing presentation-ma-2012
Mf marketing presentation-ma-2012Mf marketing presentation-ma-2012
Mf marketing presentation-ma-2012
 
Projeto caracterização IEE Dep Ruy Ramos
Projeto caracterização IEE Dep Ruy RamosProjeto caracterização IEE Dep Ruy Ramos
Projeto caracterização IEE Dep Ruy Ramos
 

Similaire à V2 d2013 elio rojano - 12 pruebas de asterisk

Slackware asterisk
Slackware asteriskSlackware asterisk
Slackware asterisk
pavel
 
Slackware asterisk
Slackware asteriskSlackware asterisk
Slackware asterisk
pavel
 
Presentacion de voip y asterisk
Presentacion de voip y asteriskPresentacion de voip y asterisk
Presentacion de voip y asterisk
johanapreciosa
 

Similaire à V2 d2013 elio rojano - 12 pruebas de asterisk (20)

Charla Asterisk - UPCI
Charla Asterisk - UPCICharla Asterisk - UPCI
Charla Asterisk - UPCI
 
10 años de vo ip. conocer el pasado para pronosticar el futuro | ELIO ROJANO ...
10 años de vo ip. conocer el pasado para pronosticar el futuro | ELIO ROJANO ...10 años de vo ip. conocer el pasado para pronosticar el futuro | ELIO ROJANO ...
10 años de vo ip. conocer el pasado para pronosticar el futuro | ELIO ROJANO ...
 
ORIGIN STACK EL APLIANCE DE VIRTUALIZACIÓN ENTERPRISE
ORIGIN STACK EL APLIANCE DE VIRTUALIZACIÓN ENTERPRISE ORIGIN STACK EL APLIANCE DE VIRTUALIZACIÓN ENTERPRISE
ORIGIN STACK EL APLIANCE DE VIRTUALIZACIÓN ENTERPRISE
 
Sipml5 to Elastix
Sipml5 to ElastixSipml5 to Elastix
Sipml5 to Elastix
 
SIPML5toElastix
SIPML5toElastixSIPML5toElastix
SIPML5toElastix
 
Documento de homologación esbc 500
Documento de homologación esbc 500Documento de homologación esbc 500
Documento de homologación esbc 500
 
Curso de VoIP / Parte 04: Conceptos avanzados
Curso de VoIP / Parte 04: Conceptos avanzadosCurso de VoIP / Parte 04: Conceptos avanzados
Curso de VoIP / Parte 04: Conceptos avanzados
 
Originstack esp v2.5
Originstack esp v2.5Originstack esp v2.5
Originstack esp v2.5
 
Extendiendo la Seguridad de Elastix con Snort
Extendiendo la Seguridad de Elastix con SnortExtendiendo la Seguridad de Elastix con Snort
Extendiendo la Seguridad de Elastix con Snort
 
Los mejores trucos de Asterisk
Los mejores trucos de AsteriskLos mejores trucos de Asterisk
Los mejores trucos de Asterisk
 
Asterisk y Cisco HA Conceptos - Webinar Bitsense y Proydesa
Asterisk y Cisco HA Conceptos - Webinar Bitsense y ProydesaAsterisk y Cisco HA Conceptos - Webinar Bitsense y Proydesa
Asterisk y Cisco HA Conceptos - Webinar Bitsense y Proydesa
 
Beini S.O Ttrabajo
Beini S.O TtrabajoBeini S.O Ttrabajo
Beini S.O Ttrabajo
 
Manual Asterisk en FreeBSD
Manual Asterisk en FreeBSDManual Asterisk en FreeBSD
Manual Asterisk en FreeBSD
 
Presentacion Hardware Elastix 2015 - Colombia
Presentacion Hardware Elastix 2015 - Colombia Presentacion Hardware Elastix 2015 - Colombia
Presentacion Hardware Elastix 2015 - Colombia
 
SMBD 2011
SMBD 2011SMBD 2011
SMBD 2011
 
SMBD 2011
SMBD 2011SMBD 2011
SMBD 2011
 
Slackware asterisk
Slackware asteriskSlackware asterisk
Slackware asterisk
 
Slackware asterisk
Slackware asteriskSlackware asterisk
Slackware asterisk
 
Extendiendo la seguridad en Elastix con Snort IDS/IPS
Extendiendo la seguridad en Elastix con Snort IDS/IPSExtendiendo la seguridad en Elastix con Snort IDS/IPS
Extendiendo la seguridad en Elastix con Snort IDS/IPS
 
Presentacion de voip y asterisk
Presentacion de voip y asteriskPresentacion de voip y asterisk
Presentacion de voip y asterisk
 

Dernier

redes informaticas en una oficina administrativa
redes informaticas en una oficina administrativaredes informaticas en una oficina administrativa
redes informaticas en una oficina administrativa
nicho110
 

Dernier (12)

EL CICLO PRÁCTICO DE UN MOTOR DE CUATRO TIEMPOS.pptx
EL CICLO PRÁCTICO DE UN MOTOR DE CUATRO TIEMPOS.pptxEL CICLO PRÁCTICO DE UN MOTOR DE CUATRO TIEMPOS.pptx
EL CICLO PRÁCTICO DE UN MOTOR DE CUATRO TIEMPOS.pptx
 
Innovaciones tecnologicas en el siglo 21
Innovaciones tecnologicas en el siglo 21Innovaciones tecnologicas en el siglo 21
Innovaciones tecnologicas en el siglo 21
 
pruebas unitarias unitarias en java con JUNIT
pruebas unitarias unitarias en java con JUNITpruebas unitarias unitarias en java con JUNIT
pruebas unitarias unitarias en java con JUNIT
 
investigación de los Avances tecnológicos del siglo XXI
investigación de los Avances tecnológicos del siglo XXIinvestigación de los Avances tecnológicos del siglo XXI
investigación de los Avances tecnológicos del siglo XXI
 
Avances tecnológicos del siglo XXI y ejemplos de estos
Avances tecnológicos del siglo XXI y ejemplos de estosAvances tecnológicos del siglo XXI y ejemplos de estos
Avances tecnológicos del siglo XXI y ejemplos de estos
 
redes informaticas en una oficina administrativa
redes informaticas en una oficina administrativaredes informaticas en una oficina administrativa
redes informaticas en una oficina administrativa
 
How to use Redis with MuleSoft. A quick start presentation.
How to use Redis with MuleSoft. A quick start presentation.How to use Redis with MuleSoft. A quick start presentation.
How to use Redis with MuleSoft. A quick start presentation.
 
PROYECTO FINAL. Tutorial para publicar en SlideShare.pptx
PROYECTO FINAL. Tutorial para publicar en SlideShare.pptxPROYECTO FINAL. Tutorial para publicar en SlideShare.pptx
PROYECTO FINAL. Tutorial para publicar en SlideShare.pptx
 
Buenos_Aires_Meetup_Redis_20240430_.pptx
Buenos_Aires_Meetup_Redis_20240430_.pptxBuenos_Aires_Meetup_Redis_20240430_.pptx
Buenos_Aires_Meetup_Redis_20240430_.pptx
 
EVOLUCION DE LA TECNOLOGIA Y SUS ASPECTOSpptx
EVOLUCION DE LA TECNOLOGIA Y SUS ASPECTOSpptxEVOLUCION DE LA TECNOLOGIA Y SUS ASPECTOSpptx
EVOLUCION DE LA TECNOLOGIA Y SUS ASPECTOSpptx
 
Avances tecnológicos del siglo XXI 10-07 eyvana
Avances tecnológicos del siglo XXI 10-07 eyvanaAvances tecnológicos del siglo XXI 10-07 eyvana
Avances tecnológicos del siglo XXI 10-07 eyvana
 
Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...
Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...
Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...
 

V2 d2013 elio rojano - 12 pruebas de asterisk

  • 1.
  • 4. Introducción Asterisk PBX Sinologic.net Asterisk SCF Scalable Communications Framework Astricon - Octubre 2010 Elio Rojano Ruiz
  • 5. Introducción Asterisk PBX Sinologic.net Asterisk SCF Scalable Communications Framework Septiembre 2012 Elio Rojano Ruiz
  • 7. Introducción El software como las ideas cuanto mejores son más se pueden aprovechar Sinologic.net Elio Rojano Ruiz
  • 8. 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
  • 9. 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
  • 11. Flexibilidad + Flexible Sinologic.net + Opciones + Potente + Soluciones Elio Rojano Ruiz
  • 13. 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
  • 14. 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
  • 15. 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
  • 17. 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
  • 22. 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
  • 23. 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
  • 24. 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)
  • 26. 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
  • 27. 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
  • 28. 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
  • 29. 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
  • 31. 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
  • 32. 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
  • 33. 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
  • 34. 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
  • 36. 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
  • 37. 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
  • 38. 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
  • 39. 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
  • 40. Bases de datos Las capas de abstracción tendrán mucha importancia a partir de ahora. Sinologic.net Elio Rojano Ruiz
  • 42. NAT Sinologic.net NAT es un problema Elio Rojano Ruiz
  • 43. NAT Sinologic.net IAX2 no es una solución al NAT Mapear puertos tampoco Usar DMZ menos aún Elio Rojano Ruiz
  • 44. 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
  • 45. 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
  • 46. 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
  • 48. 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
  • 49. 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
  • 52. 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
  • 53. Seguridad Tema muy serio Muchos tipos de ataques Muchas formas de defensa Sinologic.net Solo falta que los uses Elio Rojano Ruiz
  • 54. Seguridad 1234 no es una contraseña pass100 tampoco Sinologic.net Elio Rojano Ruiz
  • 55. 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
  • 56. 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
  • 57. 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
  • 58. 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
  • 59. 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
  • 60. 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
  • 61. 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
  • 63. Mensajería Instantánea Mensajeria Instantanea VoIP >> Voz sobre IP Sinologic.net Voz Mensajería Elio Rojano Ruiz Video
  • 65. 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
  • 66. Mensajería Instantánea Sinologic.net ¿Cuantas empresas tienen su propio servidor XMPP/Jabber? Elio Rojano Ruiz
  • 68. 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
  • 69. 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
  • 70. 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
  • 72. 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
  • 74. 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
  • 75. 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
  • 76. 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 }
  • 78. 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
  • 79. Nuevo canal SIP Sinologic.net Utilizar otro SIP Stack Elio Rojano Ruiz Reescribir chan_sip.c
  • 80. Nuevo canal SIP PJSIP en Asterisk 12 Sinologic.net Hay que compilarlo aparte tranquilos: chan_sip sigue en vigor Elio Rojano Ruiz
  • 81. 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
  • 83. 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