MagnusBilling
Security

Como deixar o MagnusBilling o mais seguro possível (Debian)

Guia completo e prático para proteger o MagnusBilling 8 e o Asterisk no Debian com firewall, HTTPS, 2FA, controles SIP, chaves SSH e atualizações seguras.

ENPTES

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çoPadrão comumOperação mais segura
SSH22/tcpRestrinja por IP de origem ou VPN; uma porta alta alternativa pode reduzir o ruído.
HTTP80/tcpMantenha somente para validação de certificado ou redirecione para HTTPS na porta 443.
SIP5060/udp ou tcpRestrinja os peers e coordene qualquer alteração do transporte PJSIP com todos os endpoints e provedores.
Nunca feche a porta ou a sessão SSH atual antes que uma segunda conexão tenha funcionado na porta nova.
  • 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.

Confirme o DNS antes de solicitar o certificado. Depois, teste a renovação e verifique se HTTP redireciona para HTTPS sem expor uma segunda URL desprotegida do painel.
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.

Um proxy SIP acrescenta uma fronteira de segurança e também outro sistema para operar. Restrinja explicitamente o tráfego do proxy para o Asterisk e monitore as duas camadas.
  • 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.

Mantenha a sessão SSH original aberta e primeiro confirme uma nova sessão autenticada pela chave. Verifique também o acesso pelo console ou pelo provedor de hospedagem antes de remover o último caminho por senha.
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.

Restringir o acesso ao painel por IP autorizado via SSH

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.

Ler o artigo original arquivado