Professional Documents
Culture Documents
Objetivo
y Apresentar modelos de segurana aplicados a uma rede VoIP, bem como apresentar como possvel implementar esses modelos em uma rede Asterisk e Openser.
AlexandreB.Barreto kabart@gmail.com
Agenda
y Questes de Segurana y Arquiteturas emSistemasdeTelefonia GarantiadoSigilo de
y Apresentao do Estudo y Arquiteturas de Alta deCaso y Arquiteturas de Auten ticao Disponibilidade y VoIPHardening y ConsideraesFinais
AlexandreB.Barreto kabart@gmail.com
QuestesdeSeguranaem SistemasdeTelefonia
AlexandreB.Barreto kabart@gmail.com
SeguranadaInformao
y ... a proteo da informao de vrios tipos de ameaas para garantir a continuidade do negcio, minimizar o risco, maximizar o retorno sobre os investimentoseasoportunidadesdenegcio. (ISO/IEC,2005)
AlexandreB.Barreto kabart@gmail.com
AmeaasdeSistemasde Telefonia
y FraudedeTarifao(TollFraud) y MonitoramentodeSesso y ServiceUseandAbuse y RoubodeIdentidadedeUsurioeTerminal y SPT(SpamoverTelephony) y InterrupodeServio(DoS) y Phreakers
AlexandreB.Barreto kabart@gmail.com
AmeaasEspecficasde SistemasVoIP
y Os mesmos dos sistemas de telefonia convencional; y Problemas herdados dos sistemas IP que o hospedam (Buffer Overflow, SYN Flood, UDP Flood,etc); y Session(Call)Hijacking; y DoSeDDoS; y ManintheMiddle(MITM); y SPIT(SpamoverInternetTelephony).
AlexandreB.Barreto kabart@gmail.com
ContraMedidas
y Integridade y Autenticidade y Confidencialidade y Disponibilidade.
AlexandreB.Barreto kabart@gmail.com
ApresentaodoEstudodeCaso
AlexandreB.Barreto kabart@gmail.com
OpenserxAsterisk
Openser Asterisk
y ProxySIPcompleto y PABX IP completo com suporte a uma diversidade y Derivado do projeto SER deprotocolos. (iptel)Implementa em toda suaplenitudeaRFC3261. y CaractersticasPrincipais y CaractersticaPrincipal y Recursos de Telefonia y Desempenho e escala Avanados; bilidade. y Simplicidade. y Limitao:
y
y Limitao:
y
DifcilConfigurao.
NoumproxySIP.
AmbientedeEstudo
(a)UsuriosInternos (b)AsteriskxOpenser (c)UsuriosExternos (d)Entroncamento (e)OutrasRedes
ArquiteturasdeAutenticao
AlexandreB.Barreto kabart@gmail.com
ObjetivodaAutenticao
y Garantir a correta identificao dos usuriosdosistematelefnico; y Restringir o acesso aos recursos telefnicos;e y Garantir que seja possvel
implementarauditorianossistemas.
AlexandreB.Barreto kabart@gmail.com
Autenticao
yUsuriosxUsurios yUsuriosxServidores yServidoresxServidores
AlexandreB.Barreto kabart@gmail.com
Autenticao UsuriosxServidores
y RealizadoatravsdoOpenser. y TLS,HTTPDigestenoauthentication. y Usar autenticao digest para os usurios (HTTP Digest) usando banco dedados(MySQLouPostgress).
y
modparam(usrloc,db_mode,2)
AlexandreB.Barreto kabart@gmail.com
Autenticao UsuriosxServidores
y Armazenaraschavesusandohash y MD5(username,senha,realm)
y
modparam("auth_db", "password_column",senha)
AlexandreB.Barreto kabart@gmail.com
Autenticao UsuriosxServidores
y Usar os mtodos check_to() e check_from() para verificar se o um terminal no teve sua identidade roubada.
AlexandreB.Barreto kabart@gmail.com
Autenticao UsuriosxServidores
y Divida os usurios em grupos de forma a restringir o acesso dos recursos oferecidospeloseuproxy. y INSERT INTO 'grp' ('username', 'domain', 'grp', 'last_modified') VALUES ('1000' , 'empresa1.com', 'ld', '000000 0000:00:00');
y
if(uri=~^sip:00[19][19][09]{1}@){ If(is_user_in(credentials,ld)){...
AlexandreB.Barreto kabart@gmail.com
Autenticao Openser<>Asterisk(nicohost)
y Asterisk>Openser
y
AlexandreB.Barreto kabart@gmail.com
Autenticao Openser<>Asterisk(nicohost)
y Openser>Asterisk
y
rewriteuserpass(), rewritehostport()).
AlexandreB.Barreto kabart@gmail.com
Autenticao Openser<>Asterisk(nicohost)
Importante:CasooAsteriskno redirecionechamadasparao Openserpodeseusar (INSEGURO)aopodatabela trusteddoOpenser.
AlexandreB.Barreto kabart@gmail.com
Autenticao Openser<>Asterisk(nicohost)
y INSERT INTO 'trusted'
AlexandreB.Barreto kabart@gmail.com
Autenticao Openser<>Asterisk(hostsdistintos)
y No se deve usar a opo da tabela trusteddoOpenser. y Devese Openser. y Devese criar um tnel VPN (IPSEC ou TLS)entreosservidores.
AlexandreB.Barreto kabart@gmail.com
usar
os
mecanismos
de
Autenticao Asterisk<>Asterisk
y UsarIAX. y Usar suporte a autenticao segura viaRSA.
y
/var/lib/asterisk/keys
AlexandreB.Barreto kabart@gmail.com
Autenticao Asterisk<>Asterisk
y IAXcomRSA(/etc/iax.conf):
y
outkeys=nomedachaveprivada usada.
AlexandreB.Barreto kabart@gmail.com
AutenticaoOpenserxMysql (RegistrareLocationServer)
y OsparmetrosdeconexodoOpenserno Mysql atualmente so armazenados no arquivo .openserctlrc ($HOME) e no maisnoscriptdeinicializaodoOpenser (openser.cfg). y Devese proteger esse arquivo contra leituraindevida. y O servidor Mysql (preferencialmente) deveestaremoutramquinaeaconexo comeleprotegidacomumtnelVPN.
AlexandreB.Barreto kabart@gmail.com
ArquiteturasdeGarantiado Sigilo
AlexandreB.Barreto kabart@gmail.com
GarantiadoSigilo
(a)UsuriosInternos (b)AsteriskxOpenser (c)UsuriosExternos (d)Entroncamento (e)OutrasRedes
ProteoBaseadasemTneis
y Problemticoquandosedesejaimplementar paragarantiraseguranafimafimdocanal. y Necessidade de confiana transitiva entre elementosdarede. y Soluo ideal quando se deseja entroncar sistemas(Openser<>Gateway<>MySQL)
y
Ex:OpenVPN(TLS)eFreeSWan(IPSEC)
AlexandreB.Barreto kabart@gmail.com
OpenVPN
y Simplesdeconfigurareusar. y Bastanteestvel. y Possui clientes para Linux, Windows 2000/XP, OpenBSD, FreeBSD, NetBSD, Mac OS X, SolariseSmartphone(experimental). y Tutorialmuitobomem[7].
AlexandreB.Barreto kabart@gmail.com
ProteodaSinalizaoeda Mdia
AlexandreB.Barreto kabart@gmail.com
ProteodaSinalizaoedaMdia
y ProteonaSinalizao:Garantiranegociao de chaves entre os pares para criar um canal multimdiaseguro. y Proteo na Mdia: Garantir a conversao seguraentredoispares. Existeumconsensonoprotocolousadoparaa proteodamdia(SRTP),pormissono ocorrenasinalizao(TLS,MIKEY,ZRTP).
AlexandreB.Barreto kabart@gmail.com
ProteodaSinalizaoedaMdia
y Ideal pois ocasiona menos overhead do que as soluesbaseadasemtneis. y Problemticoquandoocanalprecisapassarpor algumtipodecodificaodoAsterisk. y AindanoexisteincorporadodentrodoAsterisk osuporteaoSRTP.
y
AlexandreB.Barreto kabart@gmail.com
ProteodaSinalizaoedaMdia
y No caso de entroncamento e usurioslocalizadosexternamentea empresa, a melhor soluo ainda usar tneis VPN (OpenVPN), mesmoemambientesmveis.
AlexandreB.Barreto kabart@gmail.com
ArquiteturasdeAlta Disponibilidade
AlexandreB.Barreto kabart@gmail.com
RequisitosdeAlta Disponibilidade
Estratgias
TolernciaaFalhas (Failover) DistribuiodeCarga (LoadBalancing)
AlexandreB.Barreto kabart@gmail.com
EstratgiasdeFailover
DNSBasedFailover
AlexandreB.Barreto kabart@gmail.com
EstratgiasdeLoadBalancing
LoadSharingbaseadoemDNS
AlexandreB.Barreto kabart@gmail.com
Openser (DNSFailover)
y PossuisuporteaDNSFailoverapartirda verso1.2. y Paranousarnecessriodesabilitar.
AlexandreB.Barreto kabart@gmail.com
Openser (DNSFailovereLoadSharing)
y ConfigurarBIND
y y
Prioridade=>quantomenor,maioraprioridade.
Peso=>Nocasodeprioridadesiguais,ospesossocalculados relativamente.
y
Ex. No caso de dois servios com mesma prioridade, onde S1 tem peso 5 e S2 peso 2, isso significa que a cada 7 requisies,5serodirecionadasaS1.
AlexandreB.Barreto kabart@gmail.com
Openser (DNSFailovereLoadSharing)
1)Crieumarquivodispatcher.cfg #groupsipaddressesofyour*units 1sip:gw1.example.com 1sip:gw2.example.com
Openser (DNSFailovereLoadSharing)
#Carregaomdulodispatcher loadmodule("dispatcher.so") #DefineotempoparaqueumatransaoINVITEsejafinalizada modparam("tm","fr_timer_avp","i:24") #Definefr_timercomo24segundos modparam("avpops","avp_aliases","fr_timer=i:24") #failoversupport>storedestsinavpvalue modparam("dispatcher","flags",2)
Openser (DNSFailovereLoadSharing)
route[0]{... if(is_method("INVITE")&&uri=~"sip:.*@gw.example.com"){ #replacedomainpartwithfirstdispatchertargetofgroup1(tag2) ds_select_domain("1","9");#alg9>usefirst,second,etc #Modificafr_timerpara3seconds avp_write("i:3","$avp(fr_timer)"); #trataseamsgumaretransmisso t_on_failure("1"); t_relay(); exit;}...}
Openser (DNSFailovereLoadSharing)
failure_route[1]{ ... #408=>Timeout if(t_check_status("408")){ #replacedomainpartwithnextdispatchertarget if(ds_next_domain()){ t_relay(); exit; } } ...}
FailovernoServiodeRegistro (ReplicaodoDB)
y ImplementadoviaserviodeClusternoMysql
y y
Instalao=>lertutorial[1]. Quando um registro do Openser fosse criado, ele seria replicado para as diversas bases de dadosexistentesnocluster. PormoOpenserprecisariainformarqualo bancofsicoqueeledesejaescrever,nocaso de falha, ele tentaria escrever no banco de dadoscomproblema.
AlexandreB.Barreto kabart@gmail.com
FailovernoServiodeRegistro (ReplicaodoDB)
Comofazercomqueo Openserdescubraquala basefsicadisponvel? ULTRAMONKEY
AlexandreB.Barreto kabart@gmail.com
FailovernoServiodeRegistro (ReplicaodoDB)
y UltraMonkey
y y
ImplementaaestratgiadeIPAddressTakeover. Permite a criao de um IP virtual, fazendo com queoOpenseraponteparaesseendereoenoo real. Nocasodeumapane,oprprioUltraMonkeytrata dedirecionararequisio.
AlexandreB.Barreto kabart@gmail.com
FailovernoServiodeRegistro (ReplicaodoDB)
y Necessrioconfigurar3arquivos: y ha.cf
y y
haresources authkeys
y Necessriohabilitarredirecionamento(/etc/sysctl)
y
net.ipv4.ip_forward=1
AlexandreB.Barreto kabart@gmail.com
FailovernoServiodeRegistro (ReplicaodoDB)
y /etc/ha.d/ha.cf debugfile logfile logfacility keepalive deadtime warntime initdead udpport bcasteth0 nodesrv01 nodesrv02
AlexandreB.Barreto kabart@gmail.com
FailovernoServiodeRegistro (ReplicaodoDB)
y /etc/ha.d/haresources srv01192.168.5.1sipProxy y /etc/ha.d/authkeys auth 1 1 sha1 senha Lembrardesetarparaquesoroottenha acessoaoarquivo chmod600/etc/ha.d/authkeys
AlexandreB.Barreto kabart@gmail.com
FailovernoAsterisk
solues anteriores y As solucionaram o problema do FailovereLoadSharingpara sistemas SIP e como resolver a questo para as redesnoSIP? Soluo:failovernoAsterisk comUltraMonkey y Necessrioque/etc/asterisk sejaigualnosdois servidores.
AlexandreB.Barreto kabart@gmail.com
IPVirtual 192.168.0.1
TelefonesIP,ATAse Softphones
HardeningdeSistemasVoIP
AlexandreB.Barreto kabart@gmail.com
y Desabilitarosserviosdesnecessrios y SO+Asterisk y SO+Openser y SO+DB y Ajustar as permisses dos arquivos, removendoosquepossuempermissodeUID. y Muda o proprietrio de todos os arquivos para oroot. y Apagarosdiretriosdemontagem(mnt,media, sys) y Removerpermissodeexecuo/dev/null
HardeningdoSistema Operacional
HardeningAsteriskeOpenser
y Fazer com que o Openser e o Asterisk funcionemcomousurionoroot. y LimitaroacessodoAsteriskedoOpenser.
y
y Habilitesyslogeoscoloqueremotamente.
AlexandreB.Barreto kabart@gmail.com
HardeningAsteriskeOpenser
y Limiteoacessoatty9
y
AsteriskeOpenserinJail
y Modifique o diretrio root visvel para o Asterisk e Openser (chroot). y Limite os comandos e programas que qualquer usurio (in jail)podeexecutar.
AlexandreB.Barreto kabart@gmail.com
TCPWrappersnoAsterisk
UsartantonoSIPcomo noIAXasregrasde ACLexistentesno Asterisk. permit deny
AlexandreB.Barreto kabart@gmail.com
ConsideraesFinais
y SistemasVoIPsomaisdifceisdeprotegerque sistemasIPtradicionais:
y
Usuriosquerem100%disponibilidade.
SEGURANAXDISPONIBILIDADEX PERFORMANCE
AlexandreB.Barreto kabart@gmail.com
Dvidas
AlexandreB.Barreto kabart@gmail.com
Bibliografia
[1] Davies, A. MySQL Cluster: Two Webserver Setup. http://dev.mysql.com/techresources/articles/mysqlclusterfor twoservers.html [2] Rosemberg, J. e Schulzrinne, H. RFC 3261: Locating SIP Servers. [3]Timme,Falko(ft@falkotimme.com).HowToSetUpALoad Balanced MySQL Cluster. http://www.howtoforge.com/loadbalanced_mysql_cluster_debi an
AlexandreB.Barreto kabart@gmail.com
Bibliografia
[4]Singh,K.eSchulzrinne,H.FailoverandLoadSharinginSIP Telephony. [5] Gonalves, F.E.A. Asterisk com Alta Disponibilidade. www.voffice.com.br. [6]AsteriskStability&Security. http://www.asteriskguru.com/downloads/asterisk_stability_ and_security.ppt [7]TutorialdoOpenVPN.http://openvpn.net/howto.html.
AlexandreB.Barreto kabart@gmail.com