Sécurité de la téléphonie
Exposition réseau
Seul Kamailio est public : SIP 5060 et 5061 (TLS), WSS 7443 pour les softphones. Asterisk n'accepte le SIP que des
hôtes Kamailio et LiveKit SIP (sip_networks, ACL PJSIP) ; AMI, ARI, le JSONRPC de Kamailio, le protocole ng de
RTPengine et les ports de métriques écoutent sur l'adresse d'administration et le pare-feu du Manager ne les ouvre
qu'aux réseaux déclarés (admin_networks). Les plages média (RTP) sont les seules autres ouvertures.
TLS et certificats
Le Manager émet les certificats depuis son autorité. Kamailio sert SIP sur TLS, WSS et HTTPS sur le JSONRPC et les
métriques (tls_enabled, actif par défaut) ; un certificat public peut être fourni pour les opérateurs et les
navigateurs (tls_public_cert_file). Asterisk sert, quand tls_enabled est actif, SIP sur TLS, ARI en HTTPS et AMI
sur TLS. Les médias du softphone sont en DTLS-SRTP.
Secrets
Mots de passe SIP des extensions, secrets des trunks, codes de messagerie et de conférence, identifiants AMI et ARI,
secret JSONRPC et secret partagé WebRTC sont dans le coffre existant. L'API ne les renvoie jamais (champs en écriture
seule, has_secret) ; un pool PBX ne contient que des références openbao:// ou env://. Les mots de passe des
services laissés vides à l'installation sont générés et scellés par le Manager.
Softphone WebRTC
Le navigateur ne reçoit jamais le mot de passe SIP de l'extension. Navin Enterprise délivre des identifiants
éphémères (module auth_ephemeral de Kamailio, HMAC SHA-256 avec le secret partagé) ; Kamailio refuse une
expiration au-delà de ephemeral_max_ttl_s (3600 secondes par défaut). Les points de terminaison WebRTC d'Asterisk
n'acceptent que les adresses de Kamailio.
Protections SIP et fraude
- Anti-bruteforce. Une adresse externe est bannie (
ipban) aprèsban_failuresauthentifications refusées (10 par défaut) pendantban_time_s(900 secondes). - Anti-flood.
pikebannit une adresse au-delà depike_densityrequêtes par tranche de 2 secondes (30 par défaut) ; les opérateurs et les nœuds internes en sont exemptés. - Scanners. Les agents utilisateurs listés dans
scanner_user_agentssont refusés. - Quotas. Appels simultanés, appels par seconde, préfixes pays autorisés, préfixes surtaxés bloqués et durée maximale par tenant ; droits d'appel par extension (interne, national, international, surtaxé).
- Blocage immédiat. Un administrateur bloque un tenant ou une extension sur chaque Kamailio du pool (voir Exploitation).
Isolation des tenants
Chaque tenant a un identifiant court tid (t suivi des 12 premiers caractères hexadécimaux de son UUID) qui préfixe
ses points de terminaison, contextes, files et objets LiveKit ; accountcode porte l'UUID du tenant et chaque canal
la variable NAVIN_TENANT. Le compilateur refuse tout contexte qui référence un objet d'un autre tenant. Les tables
de Navin Enterprise ont toutes un tenant_id et passent par l'isolation existante du Control Plane. En modèle
dedicated, le tenant a son propre pool Asterisk et son jeu de dispatcher.
Enregistrements
Les enregistrements, messages vocaux et messages de SVI sont chiffrés par Navin Enterprise avant leur dépôt dans
SeaweedFS, sous des clés opaques tenants/{uuid}/{catégorie}/{aaaa}/{mm}/{uuid}. Seul Navin Enterprise les lit :
URL signées de 300 secondes, contrôle des droits, audit ; les identifiants S3 ne quittent jamais le serveur. LiveKit
Egress écrit dans un compartiment séparé avec des identifiants limités à ce compartiment.