Prevenção contra intrusões de asterisco

4

Deixe-me começar dizendo que sou um noob, e o que eu descobri até agora foi apenas tropeçar em mim. Já pesquisei por aí e a solução já pode estar disponível, mas provavelmente foi tudo muito mais que isso, por isso inclua o máximo de detalhes possível na sua solução.

Eu tenho um servidor Ubuntu 10.04 executando o Asterisk para um sistema telefônico automatizado. Seu único objetivo é receber chamadas e nunca se conecta a uma pessoa. É um sistema de licenciamento por telefone, então eles inserem as informações sobre seus produtos e nós emitimos um código de desbloqueio para eles digitarem no programa. Quando uma chamada é recebida, ela executa um script Perl com AGI, o script é uma série de prompts seguidos pela saída do código de desbloqueio.

Tudo isso está funcionando muito bem. No entanto, pareceu parar de trabalhar de vez em quando. Eu olhei para os logs do Asterisk e encontrei uma tonelada de entradas como esta:

[May 22 10:51:27] NOTICE[10663] chan_sip.c: Registration from '"guest12345"<sip:[email protected]>' failed for 'yy.yy.yy.yy' - No matching peer found

Estas são obviamente tentativas de invasão. xx.xx.xx.xx é o endereço IP do meu servidor e yy.yy.yy.yy é presumivelmente o endereço IP do intruso.

Eu pesquisei um pouco no Google e encontrei uma solução configurando o Fail2Ban, que parece estar funcionando. Esta manhã, proibiu dois endereços IP até agora depois de 5 tentativas de invasão sem sucesso.

Tenho certeza de que ninguém conseguirá entrar em apenas cinco tentativas, mas isso ainda parece menos seguro do que eu gostaria.

Meu entendimento é que o serviço Asterisk em execução no meu servidor sai e se registra com o meu provedor de VoIP de vez em quando para informar que ainda está conectado e pronto para receber chamadas. Tanto quanto eu sei, esse é o único "registro" necessário, então há uma maneira de eu bloquear todas as tentativas de registro fora?

Talvez eu esteja errado sobre isso, mas parece que eles estão tentando se registrar no meu servidor como se meu servidor fosse o provedor de VoIP. Talvez seja assim que você consegue um telefone de verdade para se conectar ao servidor do Asterisk? Como não há telefones reais envolvidos (somente chamadas recebidas, nunca transferidas para uma pessoa), existe uma maneira de desativar completamente essa parte?

EDITAR:
De sip.conf:
registerattempts=0      ; Number of registration attempts before we give up
                ; 0 = continue forever, hammering the other server
                ; until it accepts the registration
                ; Default is 0 tries, continue forever
register => 1111111:password:[email protected]:5060/700
[inphonex]
type=peer
username=1111111
fromuser=1111111
secret=password ; password used to login their website (same as in register =>)
host=sip.inphonex.com
fromdomain=sip.inphonex.com
nat=yes ; my asterisk is behind nat
canreinvite=yes
qualify=yes
context=inbound-inphonex; context to be used in extensions.conf for inbound calls from inphonex
disallow=all
allow=ulaw
allow=alaw
allow=gsm
insecure=port,invite
    
por Travesty3 24.05.2011 / 14:38

4 respostas

1

Você está correto em dizer que "é assim que você obtém um telefone de verdade para se conectar ao servidor Asterisk". Os telefones se registram no servidor na mesma porta usada para se registrar no provedor.

Se você estiver usando apenas o SIP para falar com o provedor, basta configurar um firewall para permitir somente o SIP do provedor.

O Fail2Ban é uma solução, mas dá aos adversários 5 chances quando não devem receber nenhum.

    
por 24.05.2011 / 17:36
2

Você pode usar o firewall iptables para bloquear todas as conexões de entrada, exceto SIP, do IP que o seu provedor de tronco usa.

iptables é enviado com, e. AsteriskNow, mas também pode ser baixado e instalado separadamente.

Eu não sou um especialista do iptables, então não vou tentar dar a você todos os detalhes sobre como configurá-lo no caso de eu errar, mas há uma grande quantidade de informações apenas um clique do google e como suas regras serão bastante simples, não deve ser muito complicado configurar

    
por 24.05.2011 / 15:11
2

Você está permitindo chamadas sip anônimas ou está se registrando em um servidor que transfere o usuário procurando por seu código de desbloqueio?

Se o servidor asterisco estiver se registrando em um serviço SIP, você poderá isolar suas portas SIP para permitir somente conexões de entrada do seu registro SIP, desde que elas permaneçam no meio. Em resposta à sua preocupação em manter o sistema em um servidor da Web utilizável, você ainda pode manter a porta 80 aberta para todas as conexões de entrada.

Se você estiver permitindo conexões de gotejamento anônimas de entrada, estará em uma posição mais difícil. Você obviamente não pode restringir conexões SIP por IP. Certifique-se de que todos os registros que você tem tenham senhas complexas e criem um caminho blackhole que elimine qualquer chamada que não corresponda ao URI do seu aplicativo. Fail2Ban como você já tem configuração também é a melhor resposta que eu encontrei para limitar os ataques.

    
por 24.05.2011 / 16:42
2

Se você NECESSAR permitir conexões SIP a partir de endereços externos arbitrários, configurar o Fail2Ban é provavelmente sua melhor solução, junto com LONG SIP Secrets (mínimo de 10-11 caracteres) . Supondo que você configure todos os dispositivos que se conectam ao seu servidor, os usuários legítimos nunca precisarão digitar seu segredo SIP.

Caso contrário, outros sugeriram que você realmente deseja bloquear o acesso ao servidor VOIP o máximo possível - Restringir as conexões SIP de entrada ao conjunto mínimo de endereços que precisam se conectar e possivelmente forçar os usuários remotos a acessarem uma VPN para acessar o servidor SIP (se não matar sua qualidade de áudio).

Uma nota sobre segurança geral, o Asterisk é bem conhecido por ter falhas de segurança & bugs à espreita - Esse cara criou um pouco de vocação para descobrir uma quebra nova e interessante no Asterisk.
Além das etapas acima para proteger o Asterisk de ser explorado, sugiro isolar a caixa VOIP o máximo possível (em sua própria sub-rede, em sua própria VLAN) para proteger o resto de sua infraestrutura caso alguém encontre uma maneira de e tenta fazer algo desagradável.

    
por 24.05.2011 / 17:23