Servidores Proxy

Transcrição

Servidores Proxy
SIP Complemento
Telefonia IP
MAB – 618
Paulo Aguiar
Tel. (0xx21) 2598-3165
e-mail: [email protected]
Departamento de Computação /IM da UFRJ
Servidores de Redirecionamento
• Usado durante a inicialização de uma sessão
• Determina o(s) endereço(s) (URI) onde se encontra o dispositivo
sendo chamado, retornando esta informação ao UAC chamador.
• Não gera requisições SIP (se não atuar como proxy)
• Usado para encaminhamento de chamadas e “siga-me”
Redirect Server
1 REQUEST [email protected]
2 Contact [email protected]
3 ACK
4 REQUEST [email protected]
5 RESPONSE
[email protected]
[email protected]
MAB618
2
Servidores Proxy
• Atua como UAS e UAC
• Função principal: roteamento da chamada
•
•
•
•
Encaminhamento da sinalização
Autenticação e autorização
Interpreta a requisição, podendo alterar parte da mensagem
Encaminha a mensagem
1 REQUEST [email protected]
2 REQUEST [email protected]
3 RESPONSE
4 RESPONSE
SIP Proxy Server
[email protected]
[email protected]
MAB618
3
Servidores Proxy
• As requisições podem percorrer vários servidores proxies
vindo do chamador para o usuário chamado (multi-hop)
• Cada proxy :
• recebe e analisa as requisições
• checa se o domínio na URI da requisição é o seu próprio, caso
contrário repassa para o servidor SIP do domínio
correspondente (consulta DNS)
• Se o domínio da URI da Requisição coincidir :
•
•
•
•
•
•
Invoca o serviço de localização
Obtém informações de registro do usuário
Verifica a parte HOST do endereço SIP no DNS
Redireciona para o próximo HOP
Recebe as respostas
Redireciona as respostas
MAB618
4
Servidores Proxy
• Podem fazer requisições “FORK” para múltiplos servidores, e
criar uma árvore de busca
• Servidores SIP são registrados no DNS através registros SRV
ou NAPTR
• SRV (RFC 2782)
"_Service._Proto.Name TTL Class SRV Priority Weight Port Target“
"_sip._udp.ufrj.br 43200 IN SRV 10 10 5060 sip.ufrj.br."
• NAPTR (RFC 3403)
"domain-name TTL Class NAPTR order preference flags service regexp target“
"bigu.edu. 43200 IN NAPTR 60 50 "s" "SIP+D2U" "" _sip._udp.bigu.edu."
MAB618
5
Fluxos SIP – Via Proxy
Proxy
User
A
“Calls” dbaron
@MIT.EDU
User
B
MIT.EDU
INVITE: sip:[email protected]
INVITE: sip:[email protected]
100 - Trying
180 - Ringing
Rings
180 - Ringing
200 - OK
Answers
200 - OK
ACK
RTP
Talking
Hangs up
Talking
BYE
200 - OK
Fonte: Dennis Baron (MIT)
MAB618
6
Fluxos SIP – Via Gateway
Proxy
User
A
“Calls” joe
@MIT.EDU
Gateway
30161
MIT.EDU
INVITE: sip:[email protected]
INVITE: sip:[email protected]
100 - Trying
Rings
180 - Ringing
180 - Ringing
Answers
200 - OK
200 - OK
ACK
ACK
RTP
Talking
Hangs up
Talking
BYE
BYE
200 - OK
200 - OK
Fonte: Dennis Baron (MIT)
MAB618
7
SIP Trapezoid
Location
Server
DNS
Server
DNS
Registrar
SIP
Outgoing
Proxy
Incoming
Proxy
SIP
Originating
User Agent
SIP
SIP
SIP
RTP
Terminating
User Agent
Fonte: Dennis Baron (MIT)
MAB618
8
SIP Triangle?
Location
Server
DNS
Server
DNS
Registrar
Incoming
Proxy
SIP
Originating
User Agent
SIP
SIP
SIP
RTP
Terminating
User Agent
Fonte: Dennis Baron (MIT)
MAB618
9
SIP Peer to Peer!
Originating
User Agent
SIP
RTP
Terminating
User Agent
Fonte: Dennis Baron (MIT)
MAB618
10
P2P SIP
• Skype phenomenon has caused rethinking of need for
proxy/registrar
• 100% P2P SIP is on the way
• Basic idea: clients REGISTER to join DHT, which is then used for
routing
• http://www.p2psip.org/
Node A
Node-ID 023
302 Node B
1. REGISTER
2. REGISTER
200 OK
Node B
Node-ID 245
Alice-> Alice’s Node
Node C
Node-ID 520
Fonte: www.internet2.edu
MAB618
Alice’s Node
Node-ID 503
11
DNS
• RFC3263 especifica o DNS como o mecanismo preferencial
para determinar o endereço IP, porta e transporte do
hospedeiro para o qual a requisição SIP é enviada
• O transporte deve ser determinado pois requisições SIP
podem ser enviadas via UDP, TCP, SCTP ou TLS sobre TCP
para sessões seguras e codificadas, diferentemente de
outros protocolos mais limitados
MAB618
12
Registro SRV (RFC 2782)
•
Entrada no DNS para cada protocolo de transporte e servidor associado
•
•
"_Service._Proto.Name TTL Class SRV Priority Weight Port Target"
"_sip._udp.bigu.edu 43200 IN SRV 10 10 5060 sipserver.bigu.edu."
•
•
•
•
•
Transporte é UDP. Outros valores possíveis: TCP, SCTP ou TLS.
O tempo em cache é de 12 horas (43,200 segundos.): qualquer inteiro positivo de 32 bits.
A classe é IN (sempre verdadeiro) e o tipo do registro é SRV.
Prioridade = 10. Valores mais baixos são consultados primeiro.
Peso = 10. Determina a freqüência com que um registro é consultado proporcionalmente
entre registros de mesma prioridade. Valores mais altos indicam uma freqüência maior.
• A porta é 5060 e o servidor proxy FQDN (fully qualified domain name) é sipserver.bigu.edu
(e, como requisitado em DNS, o FQDN termina com ponto)
ns.bigu.edu. 43200 IN A 10.0.0.20
sipserver1.bigu.edu. 43200 IN A 10.0.0.21
sipserver2.bigu.edu. 43200 IN A 10.0.0.22 ;
sip._udp.bigu.edu. 43200 IN SRV 0 0 5060 sipserver1.bigu.edu.
sip._udp.bigu.edu. 43200 IN SRV 1 0 5060 sipserver2.bigu.edu.
sip._tcp.bigu.edu. 43200 IN SRV 0 4 5060 sipserver1.bigu.edu.
sip._tcp.bigu.edu. 43200 IN SRV 0 2 5060 sipserver2.bigu.edu.
_sips._tcp.bigu.edu. 43200 IN SRV 0 0 5060
sipserver1.bigu.edu.
_sips._tcp.bigu.edu. 43200 IN SRV 0 0 5060
sipserver2.bigu.edu.
MAB618
13
Registro NAPTR (RFC 3403)
• Permite ao domínio especificar preferencialmente qual transporte
SIP deve usar, mapeando entre o domínio e o registro SRV (RFC
3263)
• "domain-name TTL Class NAPTR order preference flags service
regexp target"
• "bigu.edu. IN NAPTR 60 50 "s" "SIP+D2U" "" _sip._udp.bigu.edu.“
•
•
•
•
O nome do domínio é bigu.edu (a direita do @, em user@host))
O tempo em cache é de 12 horas (43,200 segundos).
A classe é IN (sempre verdadeiro) e o tipo do registro é NAPTR.
A ordem em que os registros são lidos é 60. A preferência é 50. Valores mais
baixos são mais prioritários.
• O flag é s e depende da aplicação (no caso SIP?).
• O serviço é SIP+D2U (SIP sobre UDP). Possíveis valores: SIP+D2T (para SIP
sobre TCP), SIP+D2S (para SIP sobre SCTP) e SIPS+D2T (para SIP seguro
sobre TLS sobre TCP). TLS sobre UDP não é definido.
• A expressão regular regexp está vazia. O target é _sip._udp.bigu.edu. A
expressão regular e o campo target juntos formam o campo de substituição.
Somente um pode ser usado e o outro deve estar vazio.
MAB618
14
Saindo das Fronteiras do Proxy
• É possível enviar uma requisição para um proxy vizinho sem
realizar um procedimento de verificação no DNS
• Isto pode acontecer caso o proxy receba uma requisição cujo
domínio não é o seu próprio e caso ele tenha uma tabela
própria de redirecionamento
• Também é possível realizar pesquisa a servidores DNS para
redirecionar a chamada para fora da rede
MAB618
15
Servidores de Registro
• REGISTRAR server
• Recebe requisições to tipo REGISTER e armazena
a informação “endereço IP x endereço SIP”
• Acionados pelos servidores de redirecionamento
ou servidores proxy para localização de um
usuário na rede SIP
• Permite criar o conceito de mobilidade
MAB618
16
Localização
• O resultado final da localização de endereços é um mapeamento de
um SIP URI para outro
• Ex.: sip:[email protected] para sip:[email protected]
• Opcionalmente serviços de diretórios com localização de usuários
podem ser utilizados
• LDAP [RFC 2251]
• http://www.openldap.org
• whois
MAB618
17
Forking através do Proxy
• Um proxy pode ter mais do que um endereço para um certo
usuário
• Isso acontece quando mais do que uma URL SIP é registrada para um
usuário
• Pode acontecer também baseado em configuração de roteamento
estática
• Nestes casos, o proxy pode realizar o fork, enviando a requisição
para mais de um proxy de uma só vez (fork paralelo)
• Como alternativa ao envio simultâneo, o proxy pode operar de
forma seqüencial, enviando para um novo destino apenas se
receber uma resposta negativa do desatino anterior
MAB618
18
Forking através do Proxy
• Primeiro 200 OK que for recebido é o caminho a ser usado
pelo redirecionamento
• Todas as outras requisições não respondidas são canceladas,
enviando requisições CANCEL
• Entre os benefícios do proxy
• Permite uma rápida “pesquisa” em vários lugares
• O telefone pode tocar em mais de um lugar ao mesmo tempo
MAB618
19
Proxies: Stateful vs Stateless
• Definição de Proxy Stateless
• Recebe requisições, acessa os serviços de localização,
redireciona as requisições
• Não salva nenhuma informação depois que a requisição for
redirecionada (sem memória)
• Quando a resposta voltar, usa o cabeçalho Via para saber qual o
próximo hop a ser enviado
MAB618
20
Proxies: Stateful vs Stateless
• Definição de Proxy Stateful
• O proxy pode lembrar do pedido, mesmo após ter redirecionado
a requisição
• Pode aplicar lógica adicional após a resposta chegar (CGI)
• Um proxy deve ser stateful quando
• Realiza fork (para descobrir a melhor resposta)
• Envia a requisição usando multicast
• Usa TCP
MAB618
21
Proxies: Stateful vs Stateless
• Stateful vs. Stateless
• Stateless escalona bem para milhares de requisições
simultâneas
• Não tem grandes requisitos de memória
• Os requisitos de sockets são pequenos
• Stateful é melhor para serviços
• No projeto da rede de telefonia IP, é preciso verificar as
necessidades para apropriadamente decidir qual proxy instalar
MAB618
22
Detecção de Loop
•
•
Requisições podem acessar o
mesmo proxy duas vezes !
É necessário prover mecanismos
para prevenir o loop
Servidor
Proxy
Servidor
Proxy
Detecção
de Loop
Servidor
Proxy
Cliente
SIP
MAB618
Servidor
Proxy
23
Detecção de Loop
• SIP provê dois mecanismos de detecção
• Max-Forwards
• Contador decrementa de 1 para cada hop visitado
• Descarta a requisição quando chega em zero
• Prevenção e detecção de loop com cabeçalho Via
• Cada proxy insere endereço e checa se já existe
• Quebra a corrente se loop detectado
MAB618
24
Autenticação
MAB618
25
Registrando no SIP
• Proxy precisam conhecer onde os usuários estão localizados
num certo momento
• A mensagem SIP REGISTER permite que os clientes se
autentiquem com os servidores proxy
• Propriedades do REGISTER
• Contém uma lista de endereços de localização do usuário em
cabeçalhos Contact
• O servidor Registrar que será usado é identificado na Request
URI
MAB618
26
Registrando no SIP
• Propriedades do REGISTER
• Identifica usuário registrado no campo To
• Identifica a pessoa que esta realizando o registro no campo
From (normalmente igual ao campo To)
• Cabeçalho Expires indica o tempo de vida desejado deste
registro
• Pode ser diferente para cada Contact
MAB618
27
Respostas do Registrar
• Comportamento do Registrar na recepção de mensagem
REGISTER
• Verifica se o domínio recebido é o dele próprio
• Autentica usuário do cabeçalho From
• Adiciona a associação entre endereços
(campo To) ->> (campo Contact)
• Tempo de vida grande é diminuído
• Pode retornar, na resposta, a lista de todos os registros
correntes
• Pode retornar, na resposta, a lista de todos os tempos de vida
de todos os registros
MAB618
28
Autenticação e
Autenticação Segura
MAB618
29
Fluxos SIP – Processo de Registro
User
B
Registrar
Location
MIT.EDU
MIT.EDU
REGISTER: sip:[email protected]
401 - Unauthorized
REGISTER: (add credentials)
sip:[email protected]
Contact 18.18.2.4
200 - OK
Fonte: Dennis Baron (MIT)
MAB618
30
Registro autenticado
• Autenticação básica
• Passa senha em claro
• Autenticação HTTP Digest (RFC 2617)
• Realiza hash em campos da mensagem e desafio enviado pelo
servidor
MAB618
31
Autenticação Básica
• Ao receber uma requisição sem autenticação, servidor
responde com cabeçalho
• Www-Authenticate: Basic realm = “informação do domínio”
• Cliente reenvia a requisição repetindo o mesmo CALLID,
enviando usa identificação (ID) e senha, separadas por
vírgula e codificada com base64 usando o cabeçalho
• Authorization: Basic QWxhZGRpbjpvcGVuIHNlc2FtZQ==
Como senha passa em claro, esse método não é aconselhável
MAB618
32
Autenticação digest
• HTTP digest com uso de MD-5 para realizar hash sobre
vários campos e desafio enviado pelo servidor
•
•
•
•
•
•
URI da requisição
Nome do usuário (Username)
Desafio único (NONCE – number once)
Domínio (realm)
Senha do usuário (password)
qop= “auth”, mas opcionalmente, o corpo da mensagem pode
ser usado para garantir a integridade junto com a autenticação
especificando qop = “auth-int”
MAB618
33
SIP MD5 Digest
• Obtido em etapas
• #1 = MD5(username:realm:password)
• invariável dependente da senha secreta
• Este hash pode ser armazenado em diretório ou banco
• #2 = MD5(method:URI) para qop=“auth” ou
MD5(method:URI:MD5(corpo)) para qop = “auth-int”
• executado a cada primitiva
• HASH resposta: MD5(#1:NONCE:#2)
MAB618
34
Autenticação digest
• Uso de digest informado em resposta 401 (Unauthorized) no
cabeçalho WWW-Authenticate
• WWW-Authenticate = Digest realm="domínio",
qop="auth,auth-int",
nonce="Od1128f1806872deac4e01029b7c96b3",
stale=FALSE, algorithm=MD5,
opaque="5ccc069c403ebaf9f0171e9517f40e41"
• Cliente reenvia requisição, adicionando cabeçalho
• Authorization = Digest username=" fulano@domínio",
realm=“domínio",
nonce="0d1128f1806872deac4e01029b7c96b3",
uri="destination.test.org",
qop=auth,
response="2923fb70ddfdf57f7ffe5cc436ab4889“
opaque="5ccc069c403ebaf9f0171e9517f40e41“
algorithm=MD5
MAB618
35
SIP REGISTER
MAB618
36
SIP REGISTER – 401 Response
MAB618
37
SIP REGISTER com Credenciais
MAB618
38
Transporte SIP
• As mensagens SIP são enviadas via UDP ou TCP
• Preferível o uso do UDP
• Mais rápido
• Nenhum estado da conexão é necessário para o kernel
• Possível o suporte a multicast
MAB618
39
Transporte SIP
• Existe transporte seguro
• TLS sobre TCP (RFC 2246, RFC 3546)
• Existem mecanismos de confiabilidade adicionais para UDP
• Para suporte à sinalização SS7 na interação com PBX é
preferível o uso de SIP sobre SCTP (Stream Control
Transmission Protocol), orientado a mensagem
• Limitações do TCP
• Seqüenciamento na entrega orientado a fluxo (e não a
mensagens) pode causar causa atrasos desnecessários
• Falta de suporte a transferências a múltiplos hosts
• Vulnerabilidade a ataques de SYNC
• RFC 2960, IETF Sigtran
MAB618
40
Desconexão
Como desconectar depende de quando esta é feita
• Após a chamada ter sido configurada
• cada uma das partes envolvidas pode enviar uma requisição
BYE
• Desconexão vinda do chamador (emissor) antes da chamada
ter sido aceita
• Pelo envio de CANCEL
• Se a chamada for aceita após o CANCEL, então é preciso usar o
BYE
MAB618
41
Segurança
• Através de mecanismos legados como:
• HTTP
• Basic authentication
• Digest authentication
• CHAP (Challenge Handshake Authentication Protocol)
• PGP (Pretty Good Privacy)
• PKI
• Relativo à sinalização
• TLS - Transporte
• DTLS – Transporte
• S/MIME
• Relativo à mídia
• SRTP
• ZRTP
MAB618
42

Documentos relacionados

Grandstream Wave

Grandstream Wave G.711µ/a, G.722 (banda larga), G.726-32, iLBC, Opus, Speex, GSM e recursos Codecs de vídeo H.264, 720p DTMF Em áudio, RFC2833, SIP INFO Áudio de alta Viva-voz full duplex, neutralização de eco acús...

Leia mais