Segura Voip v3

63
Alexandre B. Barreto [email protected] Implementando um Servidor VoIP Seguro (OpenSer/Asterisk) Alexandre de Barros Barreto [email protected] http://kabart.blogspot.com/ ITA

Transcript of Segura Voip v3

Page 1: Segura Voip v3

Alexandre B. [email protected]

Implementando um Servidor VoIP Seguro 

(OpenSer/Asterisk)Alexandre de Barros Barreto

[email protected]://kabart.blogspot.com/

ITA

Page 2: Segura Voip v3

Alexandre B. [email protected]

ObjetivoObjetivo

❖ Apresentar  modelos de  segurança aplicados  a  uma  rede VoIP,  bem  como apresentar  como  é possível  implementar esses  modelos  em uma  rede  Asterisk  e Openser.

Page 3: Segura Voip v3

Alexandre B. [email protected]

AgendaAgenda

❖ Questões  de  Segurança 

em Sistemas de Telefonia

❖ Apresentação  do  Estudo 

de Caso

❖ Arquiteturas  de  Auten­

ticação

❖ Arquiteturas  de 

Garantia do Sigilo

❖ Arquiteturas  de  Alta 

Disponibilidade

❖ VoIP Hardening

❖ Considerações Finais

Page 4: Segura Voip v3

Alexandre B. [email protected]

Questões de Segurança em Questões de Segurança em Sistemas de TelefoniaSistemas de Telefonia

Page 5: Segura Voip v3

Alexandre B. [email protected]

Segurança da InformaçãoSegurança da Informação

❖ “...  a  proteção  da  informação  de  vários  tipos  de ameaças  para  garantir  a  continuidade  do  negócio, minimizar  o  risco,  maximizar  o  retorno  sobre  os investimentos e as oportunidades de negócio.”

(ISO/IEC, 2005) 

Page 6: Segura Voip v3

Alexandre B. [email protected]

Ameaças de Sistemas de Ameaças de Sistemas de TelefoniaTelefonia

❖ Fraude de Tarifação (Toll Fraud)❖ Monitoramento de Sessão❖ Service Use and Abuse❖ Roubo de Identidade de Usuário e Terminal❖ SPT (Spam over Telephony)❖ Interrupção de Serviço (DoS)❖ Phreakers

Page 7: Segura Voip v3

Alexandre B. [email protected]

Ameaças Específicas de Ameaças Específicas de Sistemas VoIPSistemas VoIP

❖ Os  mesmos  dos  sistemas  de  telefonia convencional;

❖ Problemas  herdados  dos  sistemas  IP  que  o hospedam  (Buffer  Overflow,  SYN  Flood,  UDP Flood, etc);

❖ Session (Call) Hijacking;❖ DoS e DDoS;❖ Man­in­the­Middle (MITM);❖ SPIT (Spam over Internet Telephony).

Page 8: Segura Voip v3

Alexandre B. [email protected]

Contra­MedidasContra­Medidas

❖ Integridade

❖ Autenticidade

❖ Confidencialidade

❖ Disponibilidade. 

Page 9: Segura Voip v3

Alexandre B. [email protected]

Apresentação do Estudo de CasoApresentação do Estudo de Caso

Page 10: Segura Voip v3

Openser x AsteriskOpenser x Asterisk

OpenserOpenser❖ Proxy SIP completo❖ Derivado  do  projeto  SER 

(iptel)Implementa  em  toda sua plenitude a RFC 3261.

❖ Característica Principal❖ Desempenho  e  escala­

bilidade.❖ Limitação:

❖ Difícil Configuração.

AsteriskAsterisk❖ PABX  IP  completo  com 

suporte  a  uma  diversidade de protocolos.

❖ Características Principais❖ Recursos  de  Telefonia 

Avançados;❖ Simplicidade.

❖ Limitação:❖ Não é um proxy SIP.

Page 11: Segura Voip v3

Ambiente de EstudoAmbiente de Estudo(a) Usuários Internos(b) Asterisk x Openser(c) Usuários Externos(d) Entroncamento(e) Outras Redes

Page 12: Segura Voip v3

Alexandre B. [email protected]

Arquiteturas de AutenticaçãoArquiteturas de Autenticação

Page 13: Segura Voip v3

Alexandre B. [email protected]

Objetivo da AutenticaçãoObjetivo da Autenticação

❖Garantir  a  correta  identificação  dos 

usuários do sistema telefônico;

❖Restringir  o  acesso  aos  recursos 

telefônicos; e

❖Garantir  que  seja  possível 

implementar auditoria nos sistemas.

Page 14: Segura Voip v3

Alexandre B. [email protected]

AutenticaçãoAutenticação

❖Usuários x Usuários

❖Usuários x Servidores

❖Servidores x Servidores

Page 15: Segura Voip v3

Alexandre B. [email protected]

AutenticaçãoAutenticaçãoUsuários x ServidoresUsuários x Servidores

❖ Realizado através do Openser.

❖ TLS, HTTP Digest e no­authentication.

❖ Usar  autenticação  digest  para  os 

usuários  (HTTP  Digest)  usando  banco 

de dados (MySQL ou Postgress).

❖ modparam (“usrloc”, “db_mode”, 2)

Page 16: Segura Voip v3

Alexandre B. [email protected]

AutenticaçãoAutenticaçãoUsuários x ServidoresUsuários x Servidores

❖ Armazenar as chaves usando hash

❖ MD5 (username, senha, realm)

❖ modparam("auth_db", 

"password_column", “senha”)

❖ modparam("auth_db",  "calculate_ha1", 

yes)

Page 17: Segura Voip v3

Alexandre B. [email protected]

AutenticaçãoAutenticaçãoUsuários x ServidoresUsuários x Servidores

❖Usar  os  métodos  check_to()  e 

check_from()  para  verificar  se  o  um 

terminal  não  teve  sua  identidade 

roubada.

Page 18: Segura Voip v3

Alexandre B. [email protected]

AutenticaçãoAutenticaçãoUsuários x ServidoresUsuários x Servidores

❖ Divida os usuários em grupos de  forma a restringir  o  acesso  dos  recursos oferecidos pelo seu proxy.

❖ INSERT  INTO  'grp'  ('username', 'domain',  'grp',  'last_modified')  VALUES ('1000'  ,  'empresa1.com',  'ld',  '0000­00­00 00:00:00');

❖ if (uri=~”^sip:00[1­9][1­9][0­9]{1}@”){If (is_user_in(“credentials”, “ld”)){...

Page 19: Segura Voip v3

Alexandre B. [email protected]

AutenticaçãoAutenticaçãoOpenser<­>Asterisk (único host)Openser<­>Asterisk (único host)

❖ Asterisk ­> Openser

❖ Usar  o  método  register  do 

Asterisk, ser criado um usuário no 

asterisk e ser criado uma conta no 

Openser.

Page 20: Segura Voip v3

Alexandre B. [email protected]

AutenticaçãoAutenticaçãoOpenser<­>Asterisk (único host)Openser<­>Asterisk (único host)

❖ Openser ­> Asterisk

❖ Deve­se  criar  um  usuário  no 

Asterisk e usar o método funções 

Openser  (rewriteuser(), 

rewriteuserpass(), 

rewritehostport()).

Page 21: Segura Voip v3

Alexandre B. [email protected]

AutenticaçãoAutenticaçãoOpenser<­>Asterisk (único host)Openser<­>Asterisk (único host)

Importante: Caso o Asterisk não 

redirecione chamadas para o 

Openser pode­se usar 

(INSEGURO) a opção da tabela 

trusted do Openser.

Page 22: Segura Voip v3

Alexandre B. [email protected]

AutenticaçãoAutenticaçãoOpenser<­>Asterisk (único host)Openser<­>Asterisk (único host)

❖ INSERT  INTO  'trusted' 

('src_ip','proto','from_pattern') 

VALUES ('localhost', 'any','^sip:.*$');

❖autocreatepeer=yes (Asterisk)

Page 23: Segura Voip v3

Alexandre B. [email protected]

AutenticaçãoAutenticaçãoOpenser<­>Asterisk (hosts distintos)Openser<­>Asterisk (hosts distintos)❖Não  se  deve  usar  a  opção  da  tabela 

trusted do Openser.

❖Deve­se  usar  os  mecanismos  de 

autenticação  existentes  no  Asterisk  e 

Openser.

❖Deve­se  criar  um  túnel  VPN  (IPSEC  ou 

TLS) entre os servidores.

Page 24: Segura Voip v3

Alexandre B. [email protected]

AutenticaçãoAutenticaçãoAsterisk<­>AsteriskAsterisk<­>Asterisk

❖ Usar IAX.

❖ Usar  suporte  a  autenticação  segura 

via RSA.

❖ A  CA  deve  preferencialmente 

ficar offline e protegida.

❖ /var/lib/asterisk/keys

Page 25: Segura Voip v3

Alexandre B. [email protected]

AutenticaçãoAutenticaçãoAsterisk<­>AsteriskAsterisk<­>Asterisk

❖ IAX com RSA (/etc/iax.conf):

❖ auth = rsa

❖ inkeys  =  nome  do  arquivo  de 

chave pública.

❖ outkeys = nome da chave privada 

usada.

Page 26: Segura Voip v3

Alexandre B. [email protected]

Autenticação Openser x MysqlAutenticação Openser x Mysql((Registrar e Location ServerRegistrar e Location Server))

❖ Os parâmetros de conexão do Openser no Mysql  atualmente  são  armazenados  no arquivo  .openserctlrc  ($HOME)  e  não mais no script de inicialização do Openser (openser.cfg).

❖ Deve­se  proteger  esse  arquivo  contra leitura indevida.

❖ O  servidor  Mysql  (preferencialmente) deve estar em outra máquina e a conexão com ele protegida com um túnel VPN.

Page 27: Segura Voip v3

Alexandre B. [email protected]

Arquiteturas de Garantia do Arquiteturas de Garantia do SigiloSigilo

Page 28: Segura Voip v3

Garantia do SigiloGarantia do Sigilo(a) Usuários Internos(b) Asterisk x Openser(c) Usuários Externos(d) Entroncamento(e) Outras Redes

Page 29: Segura Voip v3

Alexandre B. [email protected]

Proteção Baseadas em TúneisProteção Baseadas em Túneis

❖ Problemático quando se deseja  implementar 

para garantir a segurança fim a fim do canal.

❖ Necessidade  de  confiança  transitiva  entre 

elementos da rede.

❖ Solução  ideal  quando  se  deseja  entroncar 

sistemas (Openser<>Gateway <>MySQL)

❖ Ex: OpenVPN (TLS) e FreeSWan (IPSEC)

Page 30: Segura Voip v3

Alexandre B. [email protected]

OpenVPNOpenVPN

❖ Simples de configurar e usar.

❖ Bastante estável.

❖ Possui  clientes para Linux, Windows 2000/XP, OpenBSD,  FreeBSD,  NetBSD,  Mac  OS  X, Solaris e Smartphone (experimental).

❖ Tutorial muito bom em [7].

Page 31: Segura Voip v3

Alexandre B. [email protected]

Proteção da Sinalização e da Proteção da Sinalização e da MídiaMídia

Page 32: Segura Voip v3

Alexandre B. [email protected]

Proteção da Sinalização e da MídiaProteção da Sinalização e da Mídia❖ Proteção na Sinalização: Garantir a negociação 

de  chaves  entre  os  pares  para  criar  um  canal 

multimídia seguro.

❖ Proteção  na  Mídia:  Garantir  a  conversação 

segura entre dois pares.

Existe um consenso no protocolo usado para a 

proteção da mídia (SRTP), porém isso não 

ocorre na sinalização (TLS, MIKEY, ZRTP).

Page 33: Segura Voip v3

Alexandre B. [email protected]

❖ Ideal pois ocasiona menos overhead do que as 

soluções baseadas em túneis.

❖ Problemático quando o canal precisa passar por 

algum tipo de codificação do Asterisk.

❖ Ainda não existe incorporado dentro do Asterisk 

o suporte ao SRTP.❖ No Openser esse suporte deve ser prestado 

pelo Media Proxy (não experimentado).

Proteção da Sinalização e da MídiaProteção da Sinalização e da Mídia

Page 34: Segura Voip v3

Alexandre B. [email protected]

Proteção da Sinalização e da MídiaProteção da Sinalização e da Mídia

❖No  caso  de  entroncamento  e 

usuários localizados externamente a 

empresa,  a  melhor  solução  ainda  é 

usar  túneis  VPN  (OpenVPN), 

mesmo em ambientes móveis.

Page 35: Segura Voip v3

Alexandre B. [email protected]

Arquiteturas de Alta Arquiteturas de Alta DisponibilidadeDisponibilidade

Page 36: Segura Voip v3

Requisitos de Alta Requisitos de Alta DisponibilidadeDisponibilidade

Page 37: Segura Voip v3

Alexandre B. [email protected]

EstratégiasEstratégias

Tolerância a Falhas(Failover)

Distribuição de Carga(Load Balancing)

Page 38: Segura Voip v3

Alexandre B. [email protected]

Estratégias de FailoverEstratégias de FailoverDNS Based Failover

Page 39: Segura Voip v3

Alexandre B. [email protected]

Estratégias de Load BalancingEstratégias de Load BalancingLoad Sharing baseado em DNS 

Page 40: Segura Voip v3

Alexandre B. [email protected]

OpenserOpenser(DNS Failover)(DNS Failover)

❖Possui suporte a DNS Failover a partir da 

versão 1.2.

❖Para não usar é necessário desabilitar.

Page 41: Segura Voip v3

Alexandre B. [email protected]

OpenserOpenser(DNS Failover e Load Sharing)(DNS Failover e Load Sharing)

❖ Configurar BIND

❖ Prioridade => quanto menor, maior a prioridade.❖ Peso => No caso de prioridades iguais, os pesos são calculados 

relativamente.❖ Ex.  No  caso de  dois  serviços  com mesma  prioridade,  onde 

S1  tem  peso  5  e  S2  peso  2,  isso  significa  que  a  cada  7 requisições, 5 serão direcionadas a S1.

Page 42: Segura Voip v3

OpenserOpenser(DNS Failover e Load Sharing)(DNS Failover e Load Sharing)

1) Crie um arquivo dispatcher.cfg

# group  sip addresses of your * units1 sip:gw­1.example.com1 sip:gw­2.example.com

Page 43: Segura Voip v3

OpenserOpenser(DNS Failover e Load Sharing)(DNS Failover e Load Sharing)

# Carrega o módulo dispatcherloadmodule("dispatcher.so")

#Define o tempo para que uma transação INVITE seja finalizadamodparam("tm", "fr_timer_avp", "i:24") 

# Define fr_timer como 24 segundosmodparam("avpops","avp_aliases","fr_timer=i:24")

# failover support ­­> store dests in avp valuemodparam("dispatcher", "flags", 2)

Page 44: Segura Voip v3

OpenserOpenser(DNS Failover e Load Sharing)(DNS Failover e Load Sharing)

route[0] {...   if (is_method("INVITE") && uri=~"sip:.*@gw.example.com") {      # replace domain part with first dispatcher target of group 1 (tag 2)     ds_select_domain("1", "9"); # alg 9 ­­> use first, second, etc

     # Modifica fr_timer para 3 seconds     avp_write("i:3", "$avp(fr_timer)");

     # trata se a msg é uma retransmissãot_on_failure("1"); 

     t_relay();     exit;   } ... }

Page 45: Segura Voip v3

OpenserOpenser(DNS Failover e Load Sharing)(DNS Failover e Load Sharing)

failure_route[1] {...   # 408 => Timeout   if (t_check_status("408")) {     # replace domain part with next dispatcher target     if (ds_next_domain()) {       t_relay();       exit;     }   }   ...}

Page 46: Segura Voip v3

Alexandre B. [email protected]

Failover no Serviço de RegistroFailover no Serviço de Registro(Replicação do DB)(Replicação do DB)

❖ Implementado via serviço de Cluster no Mysql❖ Instalação => ler tutorial [1].❖ Quando um registro do Openser  fosse criado, 

ele seria  replicado para as diversas bases de dados existentes no cluster.

❖ Porém o Openser precisaria  informar qual é o banco físico que ele deseja escrever, no caso de  falha,  ele  tentaria  escrever  no  banco  de dados com problema.

Page 47: Segura Voip v3

Alexandre B. [email protected]

Failover no Serviço de RegistroFailover no Serviço de Registro(Replicação do DB)(Replicação do DB)

Como fazer com que o Openser descubra qual a base física disponível?

ULTRAMONKEY

Page 48: Segura Voip v3

Alexandre B. [email protected]

Failover no Serviço de RegistroFailover no Serviço de Registro(Replicação do DB)(Replicação do DB)

❖ UltraMonkey❖ Implementa a estratégia de IP Address Takeover.❖ Permite  a  criação  de  um  IP  virtual,  fazendo  com 

que o Openser aponte para esse endereço e não o real.

❖ No caso de uma pane, o próprio UltraMonkey trata de direcionar a requisição.

Page 49: Segura Voip v3

Alexandre B. [email protected]

Failover no Serviço de RegistroFailover no Serviço de Registro(Replicação do DB)(Replicação do DB)

❖ Necessário configurar 3 arquivos:❖ ha.cf❖ haresources❖ authkeys

❖ Necessário habilitar redirecionamento (/etc/sysctl)❖ net.ipv4.ip_forward = 1

Page 50: Segura Voip v3

Alexandre B. [email protected]

Failover no Serviço de RegistroFailover no Serviço de Registro(Replicação do DB)(Replicação do DB)

❖ /etc/ha.d/ha.cf  debugfile  /var/log/ha­debug logfile  /var/log/ha­log logfacility  local0 keepalive  200ms deadtime  2 warntime  1 initdead  120 udpport  694 bcast eth0

  node srv01node srv02

Page 51: Segura Voip v3

Alexandre B. [email protected]

Failover no Serviço de RegistroFailover no Serviço de Registro(Replicação do DB)(Replicação do DB)

❖ /etc/ha.d/haresources  srv01 192.168.5.1  sipProxy

❖ /etc/ha.d/authkeys auth 11 sha1 senha

Lembrar de setar para que só o root tenha acesso ao arquivo

chmod 600 /etc/ha.d/authkeys

Page 52: Segura Voip v3

Alexandre B. [email protected]

Failover no AsteriskFailover no Asterisk

❖ As  soluções  anteriores solucionaram  o  problema  do Failover e Load Sharing para sistemas  SIP  e  como resolver  a  questão  para  as redes não SIP?

Solução: failover no Asterisk com UltraMonkey

❖ Necessário que /etc/asterisk seja igual nos dois servidores.

Asterisk Primário

192.168.0.2

Asterisk Backup

192.168.0.3

IP Virtual 192.168.0.1

Telefones IP, ATAs e Softphones

Cabo Ethernet Cross para 

Failover192 .168 .1/24

Page 53: Segura Voip v3

Alexandre B. [email protected]

Hardening de Sistemas VoIPHardening de Sistemas VoIP

Page 54: Segura Voip v3

Hardening do Sistema Hardening do Sistema OperacionalOperacional

❖ Desabilitar os serviços desnecessários❖ SO + Asterisk❖ SO + Openser❖ SO +DB

❖ Ajustar  as  permissões  dos  arquivos, removendo os que possuem permissão de UID.

❖ Muda o proprietário de  todos os arquivos para o root.

❖ Apagar os diretórios de montagem (mnt, media, sys)

❖ Remover permissão de execução /dev/null

Page 55: Segura Voip v3

Alexandre B. [email protected]

Hardening Asterisk e OpenserHardening Asterisk e Openser

❖ Fazer  com  que  o  Openser  e  o  Asterisk funcionem como usuário não root.

❖ Limitar o acesso do Asterisk e do Openser.❖ Os  arquivos  de  configuração  (/etc)  o 

Asterisk e Openser apenas precisam ler e não escrever nos mesmos.

❖ Habilite syslog e os coloque remotamente.

Page 56: Segura Voip v3

Alexandre B. [email protected]

Hardening Asterisk e OpenserHardening Asterisk e Openser

❖ Limite o acesso a tty9❖ O  Asterisk  rodando  no  modo  safe_asterisk 

abre uma console de root sem senha na tty9 (/usr/sbin/safe_asterisk).

❖ Use  o  Tripwire  para  gerar  uma  assinatura  de sua máquina.

❖ Habilite um firewall para limitar o acesso a seus servidores. 

Page 57: Segura Voip v3

Alexandre B. [email protected]

Asterisk e Openser in JailAsterisk e Openser in Jail

❖ Modifique  o  diretório root  visível  para  o Asterisk  e  Openser (chroot).

 ❖ Limite  os  comandos  e 

programas  que qualquer  usuário  (in jail) pode executar.

Page 58: Segura Voip v3

Alexandre B. [email protected]

TCPWrappers no AsteriskTCPWrappers no Asterisk

Usar tanto no SIP como no IAX as regras de ACL existentes no 

Asterisk.

permit

deny

Page 59: Segura Voip v3

Alexandre B. [email protected]

Considerações FinaisConsiderações Finais

❖ Sistemas VoIP são mais difíceis de proteger que sistemas IP tradicionais:

❖ Usuários querem 100% disponibilidade.

SEGURANÇA X DISPONIBILIDADE X SEGURANÇA X DISPONIBILIDADE X PERFORMANCEPERFORMANCE

Page 60: Segura Voip v3

Alexandre B. [email protected]

DúvidasDúvidas

Page 61: Segura Voip v3

Alexandre B. [email protected]

BibliografiaBibliografia

[1]  Davies,  A.  MySQL  Cluster:  Two  Webserver  Setup. http://dev.mysql.com/tech­resources/articles/mysql­cluster­for­two­servers.html

[2]  Rosemberg,  J.  e  Schulzrinne,  H.  RFC  3261:  Locating  SIP Servers. 

[3] Timme, Falko ([email protected]). How To Set Up A Load­Balanced  MySQL  Cluster. http://www.howtoforge.com/loadbalanced_mysql_cluster_debian

Page 62: Segura Voip v3

Alexandre B. [email protected]

BibliografiaBibliografia

[4] Singh, K. e Schulzrinne, H. Failover and Load Sharing in SIP Telephony.

[5]  Gonçalves,  F.E.A.  Asterisk  com  Alta  Disponibilidade. www.voffice.com.br.

[6] Asterisk Stability & Security. http://www.asteriskguru.com/downloads/asterisk_stability_and_security.ppt

[7] Tutorial do OpenVPN. http://openvpn.net/howto.html.

Page 63: Segura Voip v3

Alexandre B. [email protected]

Implementando um Servidor VoIP Seguro 

(OpenSer/Asterisk)Alexandre de Barros Barreto

[email protected]://kabart.blogspot.com/

ITA