fix: liberar SIP/RTP da rede privada no firewall + ver/editar senha SIP do ramal

nftables bloqueava incondicionalmente SIP (5060/udp) e RTP (10000-20000)
vindos da interface LAN — impedia qualquer softphone real de registrar,
já que o OpenSIPS que ficaria na frente (docs/OPENSIPS.md) não foi
implantado. Liberado para toda a faixa RFC1918 (10.0.0.0/8, 172.16.0.0/12,
192.168.0.0/16), mantendo AMI/ARI bloqueados incondicionalmente. Aplicado
ao vivo no servidor.

Ramais: agora dá para ver e trocar a senha SIP diretamente no formulário
de edição (GET /extensions/:id/password, decifra sob demanda — diferente
da senha de login, a senha SIP é cifrada, não hasheada, porque o próprio
Asterisk precisa dela em texto puro para autenticar; expor sob permissão
extensions.update e auditado é razoável). Evita ter que redefinir toda
vez que o operador esquece a senha configurada num softphone.
This commit is contained in:
2026-08-27 21:32:15 -03:00
parent a10a40a489
commit 6fc7a842bd
7 changed files with 166 additions and 18 deletions

View File

@@ -34,11 +34,23 @@ table inet b2bcall_fw {
# SSH nunca é bloqueado
tcp dport 22 accept
# SIP/RTP liberados para toda a faixa RFC1918 (rede privada) na
# interface LAN — necessário para softphones/ramais reais de agentes
# registrarem no Asterisk, já que o OpenSIPS (que ficaria na frente,
# ver docs/OPENSIPS.md) não foi implantado nesta fase. Avaliado
# ANTES das regras de drop abaixo: nftables usa a primeira regra
# terminante que casar. Origem fora do RFC1918 (ex.: internet
# pública) continua caindo nas regras de drop — o Asterisk nunca
# deve receber SIP de fora da rede privada (agente.md seção 5).
ip saddr { 10.0.0.0/8, 172.16.0.0/12, 192.168.0.0/16 } iifname "ens18" udp dport 5060 accept
ip saddr { 10.0.0.0/8, 172.16.0.0/12, 192.168.0.0/16 } iifname "ens18" tcp dport { 5060, 5061 } accept
ip saddr { 10.0.0.0/8, 172.16.0.0/12, 192.168.0.0/16 } iifname "ens18" udp dport 10000-20000 accept
# --- Serviços administrativos/telefônicos sensíveis do Asterisk ---
# Nunca devem ser alcançáveis pela LAN (interface ens18). Habilitar
# exceções pontuais aqui somente quando o IP do OpenSIPS/tronco for
# conhecido e explicitamente autorizado (ver docs/OPENSIPS.md, a
# ser criado na Fase 2 de telefonia).
# AMI/ARI nunca devem ser alcançáveis pela LAN (interface ens18),
# mesmo de origem RFC1918 — só a aplicação (containers, via rede
# Docker interna) precisa falar com eles. SIP/RTP de origem fora do
# RFC1918 também caem aqui (bloqueados, ver acima).
iifname "ens18" tcp dport { 5038, 8088, 8089 } counter drop
iifname "ens18" tcp dport { 5060, 5061 } counter drop
iifname "ens18" udp dport 5060 counter drop