Um servidor VoIP exposto à internet recebe continuamente varreduras automáticas, tentativas de força bruta, tráfego SIP malformado e tentativas de fraude. A proteção não depende de uma única configuração: é uma prática em camadas que combina uma superfície de rede reduzida, autenticação forte, software atualizado, monitoramento e recuperação testada.
Este guia restaura todo o escopo do artigo original de segurança e o atualiza para o MagnusBilling 8, que utiliza Asterisk 20 e PJSIP. Faça as alterações em uma janela de manutenção, mantenha uma forma funcional de recuperação e verifique cada camada antes de avançar.
Checklist de segurança
- Reduza a exposição e use portas não padrão apenas como medida secundária para diminuir o ruído de varreduras.
- Publique o painel em um domínio dedicado com HTTPS.
- Ative autenticação em dois fatores para administradores e outros usuários privilegiados.
- Restrinja o acesso ao painel do MagnusBilling por IP autorizado via SSH.
- Ative reCAPTCHA no login quando for adequado ao ambiente.
- Coloque OpenSIPS ou Kamailio na frente do Asterisk em ambientes de produção muito expostos.
- Autentique peers SIP estáveis por IP quando possível e use credenciais fortes e exclusivas para endpoints dinâmicos.
- Use chaves SSH e só desative a autenticação por senha depois de confirmar o acesso pela chave.
- Mantenha o firewall do servidor e o Fail2Ban ativos e monitorados.
- Aplique atualizações de segurança do MagnusBilling e do Debian por um processo controlado.
- Substitua credenciais padrão, evite administradores previsíveis e use senhas fortes e exclusivas.
- Mantenha backups testados fora do servidor de produção e revise os logs de segurança regularmente.
1. Use portas não padrão com cuidado
Alterar uma porta padrão pode reduzir o ruído de varreduras genéricas, mas não torna seguro um serviço vulnerável. Política de firewall, listas de IP permitidos, autenticação e monitoramento continuam sendo os controles reais.
| Serviço | Padrão comum | Operação mais segura |
|---|---|---|
| SSH | 22/tcp | Restrinja por IP de origem ou VPN; uma porta alta alternativa pode reduzir o ruído. |
| HTTP | 80/tcp | Mantenha somente para validação de certificado ou redirecione para HTTPS na porta 443. |
| SIP | 5060/udp ou tcp | Restrinja os peers e coordene qualquer alteração do transporte PJSIP com todos os endpoints e provedores. |
- Se o firewalld for o firewall ativo, libere a nova porta SSH antes de alterar o sshd.
- Valide a configuração do SSH com sshd -t antes de recarregar o serviço.
- Depois que a nova conexão funcionar, atualize o Fail2Ban e as regras de monitoramento para acompanhar a nova porta SSH.
- O MagnusBilling 8 usa PJSIP. Não copie a configuração bindport do antigo chan_sip. Altere o transporte PJSIP gerenciado somente depois de confirmar como a instalação gera a configuração do Asterisk; então atualize em conjunto o firewall, os troncos, os endpoints e a sinalização externa.
- Depois de uma alteração SIP, confirme o transporte com asterisk -rx "pjsip show transports" e teste chamadas de entrada e saída.
# Exemplo apenas quando o firewalld for o firewall ativo
firewall-cmd --permanent --add-port=2222/tcp
firewall-cmd --reload
# Valide antes de recarregar o SSH
sshd -t
systemctl reload ssh 2. Ative a autenticação em dois fatores
Uma senha sozinha não deve proteger uma conta de administrador. Ative um método de autenticação em dois fatores mantido e compatível com sua instalação do MagnusBilling e exija-o dos usuários privilegiados.
- Torne o 2FA obrigatório para administradores.
- Ative-o para revendedores, equipe de suporte e outros usuários com acesso sensível.
- Guarde os códigos de recuperação fora do servidor e teste o processo de recuperação.
- Não permita que várias pessoas compartilhem a mesma conta administrativa; contas individuais preservam a rastreabilidade.
3. Use um domínio e HTTPS
Não opere o painel administrativo por HTTP puro. Atribua um hostname dedicado, emita um certificado confiável e redirecione o tráfego do navegador para HTTPS. A porta 80 pode permanecer disponível para validação ACME ou para um redirecionamento estrito; a sessão autenticada deve usar HTTPS.
apt update
apt install certbot python3-certbot-apache -y
certbot --apache 4. Ative o reCAPTCHA
O reCAPTCHA pode dificultar abusos automatizados no login, mas complementa — e não substitui — credenciais fortes, 2FA, limitação de tentativas e restrições por IP. Crie as chaves para o hostname exato do painel e informe-as na configuração do MagnusBilling.
- Use o hostname de produção ao registrar o site.
- Confirme que o login continua funcionando depois da ativação.
- Documente uma forma de recuperação caso o serviço externo de verificação fique indisponível.
Settings → buscar "recaptcha" 5. Coloque um proxy SIP na frente do Asterisk
Em um ambiente VoIP público de produção, implemente OpenSIPS ou Kamailio na borda SIP em vez de expor diretamente o backend Asterisk.
- Filtre sinalização malformada ou indesejada antes que ela chegue ao Asterisk.
- Aplique limites de taxa e controles contra floods na borda.
- Oculte a topologia do backend e exponha somente os caminhos de sinalização necessários.
- Centralize roteamento, listas de acesso e observabilidade para vários backends.
Internet
↓
OpenSIPS / Kamailio
↓
Asterisk 20 + MagnusBilling 8 6. Prefira autenticação SIP por IP para peers estáveis
Quando uma operadora ou um peer confiável possui endereços de origem estáveis e documentados, a identificação por IP elimina o caminho de tentativa de senha nessa relação. Limite a regra aos menores intervalos de endereço verificados.
- Não use redes amplas do provedor quando houver intervalos precisos disponíveis.
- Mantenha um processo documentado para alterações de IP da operadora.
- Usuários móveis e endpoints dinâmicos normalmente ainda precisam de autenticação digest; forneça a cada endpoint um segredo longo, aleatório e exclusivo.
- Combine autenticação com ACLs, limitação de taxa, limites por endpoint e monitoramento de fraude.
- Teste rotas de emergência, entrada e saída depois de alterar a identificação do tronco.
7. Use autenticação SSH por chave
Instale e teste uma chave antes de desativar o login por senha. Ed25519 é uma boa opção padrão para chaves novas; mantenha RSA somente quando a compatibilidade exigir.
ssh-keygen -t ed25519 -a 100
ssh-copy-id -p 2222 root@IP_DO_SERVIDOR
# /etc/ssh/sshd_config
PubkeyAuthentication yes
PasswordAuthentication no
PermitRootLogin prohibit-password
sshd -t
systemctl reload ssh 8. Mantenha firewall, Fail2Ban e software atualizados
As instalações do MagnusBilling 8 incluem Fail2Ban e configuração do firewall do host. Revise o estado deles depois de alterações de rede ou portas e investigue falhas repetidas de autenticação, em vez de presumir que os bloqueios automáticos cobrem todos os ataques.
- Faça backup do banco de dados, de /etc/asterisk e das personalizações locais antes de atualizar.
- Revise as notas da versão e de migração antes de alterar um servidor de produção.
- Execute atualizações em uma janela de manutenção e mantenha um caminho de reversão testado.
- Depois da atualização, verifique o painel, tarefas cron, endpoints PJSIP, troncos, chamadas de entrada e saída, tarifação e logs.
- Aplique regularmente as atualizações de segurança do Debian e reinicie quando alterações do kernel ou de bibliotecas críticas exigirem.
/var/www/html/mbilling/protected/commands/update.sh 9. Substitua o acesso administrativo padrão
Altere a senha inicial imediatamente. Crie um administrador nominal para cada operador e confirme que ele funciona antes de desativar ou excluir uma conta padrão.
- Evite nomes de usuário previsíveis e contas administrativas compartilhadas.
- Conceda somente as permissões necessárias para cada operador.
- Remova ou desative contas que não são mais usadas.
- Restrinja cada usuário do painel aos IPs autorizados por SSH quando esse modelo operacional for adequado à equipe.
10. Gere senhas fortes e exclusivas
Use um gerenciador de senhas e um segredo exclusivo para cada conta do painel, endpoint SIP, usuário de banco de dados e integração. Um segredo gerado com pelo menos 16 caracteres é uma base prática; credenciais privilegiadas e de máquinas devem ser mais longas.
- Nunca reutilize a senha do administrador do painel no SIP, SSH ou banco de dados.
- Não envie credenciais por tickets, mensagens de chat ou capturas de tela.
- Troque qualquer segredo que possa ter sido exposto e revise os logs em busca de uso indevido.
- Mantenha segredos fora do código-fonte, do histórico do shell e de exemplos públicos de configuração.
openssl rand -base64 24 Uma base de produção em camadas
Uma instalação protegida do MagnusBilling combina HTTPS, 2FA, restrição do painel por IP, chaves SSH, firewall restritivo, Fail2Ban, autenticação PJSIP segura, uma borda SIP quando necessária, software atualizado, segredos fortes, monitoramento e backups recuperáveis. Nenhum controle isolado substitui os demais.
A infraestrutura VoIP exposta à internet será testada por robôs. O objetivo é reduzir os caminhos de ataque acessíveis, dificultar o acesso não autorizado, detectar comportamentos anormais cedo e preservar uma rota de recuperação testada caso algum controle falhe.
Artigo original e nota de versão
Este guia reescrito restaura todos os tópicos do artigo arquivado e substitui orientações antigas da era chan_sip por recomendações para MagnusBilling 8 e PJSIP. Antes de alterar um servidor de produção, confirme os comandos e caminhos de configuração gerados na versão exata instalada.
