SIP usa TLS
SIP TLS
Riepilogo:
1. FreeSwitch richiede l’agente.File PEM con le autorizzazioni corrette per fungere da server TLS.
2. La sicurezza del livello di trasporto (TLS) è un protocollo utilizzato per proteggere i messaggi SIP dall’intercesso.
3. TLS è un’evoluzione del precedente protocollo SSL utilizzato per la crittografia Web.
4. I certificati e la crittografia asimmetrica sono componenti chiave di TLS.
5. I certificati vengono utilizzati per autenticare le entità e le autorità dei certificati verificano la loro autenticità.
6. La crittografia simmetrica e asimmetrica viene utilizzata per la crittografia e la decrittografia dei dati.
7. TLS utilizza la crittografia simmetrica per l’autenticazione e la crittografia asimmetrica per la crittografia dei dati sfusi.
8. I TL possono essere utilizzati per stabilire in modo sicuro conversazioni SIP su Internet non sicuro.
9. FreeSwitch supporta la segnalazione crittografata (SIP) con certificati firmati e audio/media crittografato (SRTP).
10. FreeSwitch consente la configurazione della porta per SIP all’interno del profilo SIP.
Domande:
1. Quale file richiede FreesWitch per agire come server TLS?
Risposta: FreeSwitch richiede l’agente.File PEM.
2. Perché è importante avere le autorizzazioni corrette per l’agente.PEM?
Risposta: Le autorizzazioni errate possono impedire all’ascoltatore TLS di funzionare correttamente.
3. A cosa è usato i TL in SIP?
Risposta: TLS viene utilizzato per proteggere i messaggi SIP dall’intercesso.
4. Qual è la differenza tra TLS e SSL?
Risposta: TLS è un’evoluzione di SSL e viene utilizzata sia per i protocolli Web che per il SIP.
5. Per cosa sono i certificati utilizzati in TLS?
Risposta: I certificati vengono utilizzati per autenticare le entità.
6. Qual è lo scopo delle autorità di certificazione?
Risposta: Le autorità del certificato verificano l’autenticità dei certificati.
7. Quali sono i due tipi di crittografia utilizzati in TLS?
Risposta: Crittografia simmetrica e asimmetrica.
8. Come funziona la crittografia simmetrica?
Risposta: I dati sono crittografati e decrittografati utilizzando la stessa chiave.
9. Come funziona la crittografia asimmetrica?
Risposta: I dati sono crittografati e decrittografati utilizzando una chiave pubblica e una chiave privata.
10. A cosa usa la crittografia simmetrica?
Risposta: TLS utilizza la crittografia simmetrica per l’autenticazione.
11. A cosa usa la crittografia asimmetrica asimmetrica?
Risposta: TLS utilizza la crittografia asimmetrica per la crittografia dei dati di massa.
12. I TL possono essere utilizzati per stabilire conversazioni SIP sicure su Internet non sicuro?
Risposta: Sì, i TL possono essere utilizzati per conversazioni SIP sicure su Internet non sicuro.
13. Cosa supporta FreeSwitch in termini di segnalazione crittografata?
Risposta: FreeSwitch supporta la segnalazione crittografata nota come SIPS.
14. Qual è la porta predefinita per i sorsi?
Risposta: La porta predefinita per SIPS è la porta TCP 5061.
15. Cosa può essere configurato all’interno del profilo SIP in FreeSwitch?
Risposta: La porta per SIPS può essere configurata all’interno del profilo SIP in freeswitch.
SIP TLS
FreeSwitch richiede un solo file per agire come server TLS e questo è l’agente.File PEM. Questo contiene il certificato e la chiave che utilizzerà per l’ascolto. Nota è estremamente importante che il tuo agente.PEM (e facoltativamente Cacert.PEM) Avere le autorizzazioni di lettura per l’utente Freewitch verrà eseguito come. Ciò significa che se usi -u freeswitch vuoi “agente chmod 640.PEM CACERT.Pem “e” Chown Root.Agente FreeSwitch.PEM CACERT.pem “. Le autorizzazioni errate non consentiranno all’ascoltatore TLS di girare correttamente. Sui tuoi vari.XML:
Comprensione della sicurezza del livello di trasporto (TLS)
Nel corso di diversi articoli di blog i’ve ha menzionato alcuni degli aspetti di sicurezza del SIP. Nel dimostrarlo con l’autenticazione SIP ho discusso dell’uso di messaggi di risposta e intestazioni di autenticazione. Questo tipo di sicurezza viene consegnato a livello di protocollo. In altre parole, i clienti e i server siptano i messaggi che applicano la sicurezza a livello di identità. Naturalmente, poiché SIP stesso è un protocollo basato sul testo, abbiamo bisogno di qualcosa che protegga i messaggi e il loro contenuto da occhi indiscreti. accedere Sicurezza del livello di trasporto (Tls).
TLS è un’evoluzione di un protocollo precedente chiamato Livello di socket sicuro (SSL). SSL è stato sviluppato diversi anni fa da Netscape (ricorda Netscape?) ed è stato utilizzato per crittografare i dati inviati tra un browser Web e un server Web. Sapevi che stavi usando SSL quando la riga dell’indirizzo del browser conteneva “https” e non “http.” Alcuni browser visualizzerebbero anche un simbolo di blocco quando SSL era in uso.
Come la maggior parte degli altri protocolli utilizzati da SIP, TLS è controllato dal Task Force di ingegneria Internet (Ietf). Inizialmente, TLS e SSL Weren’T tanto diverso l’uno dall’altro. Tuttavia, dalla sua definizione originale nel 1999, TLS ha continuato a evolversi in un protocollo di trasporto altamente sicuro sia per i protocolli Web che in tempo reale come SIP.
Al centro di TLS lo sono Certificati e i concetti di simmetrico E Crittografia asimmetrica. Potrei scrivere migliaia di parole su questi tre, ma puoi imparare abbastanza per essere pericoloso in pochi paragrafi.
Innanzitutto, un certificato è una forma di ID digitale che un’entità utilizza per identificarsi. Pensalo come un pilota’L Licenza per componenti IP. Tuttavia, per impedire alle persone cattive di forgiare quel pilota’licenze s, autorità di certificazione (circa) esistono che vengono utilizzati per convalidare l’autenticità del certificato. Ci sono CA private che un’impresa opera. Ci sono anche CAS pubblici che sono disponibili via Internet. Verisign è un esempio di noto pubblico pubblico.
Next arriva la crittografia simmetrica e asimmetrica. Entrambi hanno a che fare con il modo in cui i dati sono crittografati e non crittografati. Nel caso della crittografia simmetrica, i dati sono crittografati con una chiave. Esso’s anche non crittografato con la stessa chiave. Quindi, se due entità diverse hanno quella chiave possono inviare dati crittografati avanti e indietro e nessuno senza quella chiave capirà cosa stanno dicendo. La forza della crittografia simmetrica è che è veloce e utilizza una quantità minima di potenza di elaborazione. La debolezza è che hai bisogno di un meccanismo sicuro per scambiare la chiave.
I dati sono anche crittografati con la crittografia asimmetrica, ma in questo caso ci sono due chiavi: la chiave pubblica e privata. La chiave pubblica è generalmente contenuta nel certificato di un’entità IP e chiunque abbia quel certificato avrà la chiave pubblica. La chiave privata è tenuta segreta e non viene mai rivelata a nessuno. Queste due chiavi lavorano insieme per crittografare e decrittografare i dati inviati su una connessione IP.
I dati crittografati con la chiave pubblica non possono essere crittografati con una chiave privata associata. I dati crittografati con la chiave privata non possono essere crittografati con la chiave pubblica corrispondente. Questa forma di crittografia è nota come Crittografia a chiave pubblica. Richiede più potenza di elaborazione della crittografia simmetrica, ma crea un collegamento dati sicuro che solo il client e il server possono decifrare.
Ho scritto che TLS usa la crittografia sia simmetrica che asimmetrica. Utilizza simmetrici per l’autenticazione e asimmetrica per la crittografia dei dati sfusi. Nel nostro caso, tali dati in blocco sarebbero i messaggi e le risposte SIP. Si noti che questi dati non includono il flusso dei media effettivi come G.711 o g.729. Tali dati sono crittografati utilizzando Protocollo sicuro in tempo reale (Srtp) – Un blog per un altro giorno.
Se stai ancora leggendo, applaugo la tua tenacia. Questa non è una roba facile da capire. Tieni presente quanto segue, però, e dovresti stare bene. I certificati vengono utilizzati per verificare l’autenticità di client e server. Le autorità del certificato esistono per verificare che i certificati non siano forgiati. Le chiavi pubbliche e private vengono utilizzate per crittografare i messaggi scambiati tra entità SIP. Ciò significa che con TLS è possibile utilizzare in sicurezza Internet non sicuro per stabilire conversazioni SIP sicure. Anche se i tuoi messaggi SIP vengono intercettati, hanno vinto’tieni qualcuno del bene poiché non saranno in grado di capire cosa viene detto.
SIP TLS
FreeSwitch supporta sia la segnalazione crittografata nota come SIP che può essere SSL o TLS con certificati firmati, sia audio/media crittografato noto come SRTP. La convenzione tipica è quella di avere il canale di controllo SIP non crittografato sulla porta UDP 5060 (sebbene gli standard consentano anche l’utilizzo della porta TCP 5060) e un canale di controllo SIP crittografato SSL o crittografato TLS noto come SIPS sulla porta TCP 5061 . Le illustrazioni seguenti raffigurano SIP come sulla porta 5060 e SIPS come sulla porta 5061 e sulla porta (x). FreeSwitch consente di configurare questa porta all’interno del profilo SIP.
I dati RTP utilizzano UDP, ma la porta utilizzata da RTP è dinamica in quanto è negoziata all’interno del canale di controllo SIP. FreeSwitch può essere configurato per utilizzare un intervallo di porte specifico per i flussi RTP. Nella sezione 1 di questa pagina esamineremo l’anatomia di una connessione SIP e possibili configurazioni in modo da poter scegliere quale configurazione si adatta meglio al tuo scenario e configurare di conseguenza il sistema FreeSwitch.
Anatomia di una connessione SIP
Innanzitutto, rivediamo l’anatomia di una connessione SIP al fine di dissipare qualsiasi confusione che possa derivare dal presupposto che la crittografia implica che i flussi audio (o RTP) siano crittografati.
Nella Figura 1 noterai che ci sono effettivamente tre connessioni separate, un TCP per il controllo e gli altri due sono UDP per passare i flussi audio da e verso l’interruttore. Il canale di controllo facilita una serie di capacità, ma per quanto riguarda la crittografia quelle di cui siamo principalmente preoccupati sono le cifre DTMF composte durante la chiamata, come un PIN della banca o qualche altro tipo di codice di accesso che è personale e, soprattutto, informazioni private. Con lo scenario illustrato nella Figura 1, chiunque sulla rete può annusare e decodificare questi dati preziosi.
Anatomia di una connessione SIPS
La risposta a questo problema è illustrata nella Figura 2 e per crittografare il canale SIP con un involucro SSL o TLS in modo tale che chiunque annushi i pacchetti sul filo non possa decrittografare i dati nel canale di controllo. Noterai che nella Figura 2 lo descriviamo come sulla porta 5061, ma con Freewitch puoi infatti configurarlo per essere su una particolare porta che desideri. Questo scenario qui lascia ancora i pacchetti per i dati audio in chiaro. Qualcuno che annusano i pacchetti sarà in grado di ricostruire la tua conversazione udibile e “ascoltare” senza troppe difficoltà.
* Nota: I telefoni IP possono pubblicizzare che supportano la crittografia, ma potresti voler controllare le specifiche per convalidare che supportano entrambi i certificati firmati SSL e TLS.
Anatomia di una connessione SIPS e SRTP
Nella Figura 3 noterai che non solo il canale di controllo è crittografato, ma i flussi RTP sono anche crittografati e inviati come SRTP. In questo modo, e solo in questo modo, la tua intera conversazione è ragionevolmente sicura da EavesRoppers. Questo è anche importante poiché le cifre DTMF possono anche essere inviate anche nei dati RTP (inband). Avere sia SIPS che la crittografia SRTP è la migliore opzione quando si tratta di assicurarsi che le chiamate SIP siano sicure.
* Nota: I telefoni IP possono pubblicizzare che supportano la crittografia, dovrai controllare le specifiche dei telefoni per determinare se supporta SRTP. Di seguito si diranno di più insieme a problemi di interoperabilità con determinati telefoni nella parte inferiore di questa pagina.
Freeeswitch Critty Crivabilities
Questa pagina coprirà solo la crittografia TLS, SSL e SRTP.
Crittografia TLS, SSL e SRTP
FreeSwitch supporta SIP tramite SSL e/o TLS, insieme alle funzionalità di crittografia SRTP. Non è chiaro se FreeSwitch crittograferà i flussi video poiché questo non è stato testato nel laboratorio KJV, tuttavia sospetto che lo farà. Se conduci test crittografando il video SRTP, aggiungi in ogni modo i risultati al wiki.
Crittografia ZRTP ZRTP è ora deprezzato e verrà rimosso dai documenti
ZRTP è una capacità di crittografia opportunistica che può essere compilata in freeswitch. Vedere la pagina ZRTP per la forma di istituzione e ulteriori informazioni relative a ZRTP.
Crittografia ibrida
FreeSwitch può infatti crittografare i dati per il traffico SIP che lo attraversa. In questo modo è possibile fornire crittografia per i telefoni IP che non supportano nativamente la crittografia. Poiché esiste una pletora di hardware SIP che non supporta la crittografia, questa configurazione può rivelarsi utile per qualsiasi numero di situazioni pratiche.
Nella Figura 4 noterai che il canale di controllo SIP dal telefono allo switch non è crittografato mentre il canale di controllo da FreeSwitch all’altro SIP PBX è crittografato. È importante capire che in questa situazione il controllo SIP e i dati RTP (audio) sono entrambi non crittografati tra il telefono IP e FreeSwitch. Quindi, se il tuo telefono IP SIP è da qualche parte dietro un router NAT su un modem via cavo e FreeSwitch non è dietro questo router, sia la LAN del telefono che la connessione a Internet a FreeSwitch sono interamente aperte, il che significa che qualcuno potrebbe annusare quei pacchetti e ottenere informazioni preziose.
Inoltre, anche i dati RTP (audio) tra FreeSwitch e l’endpoint remoto illustrato come “Altro SIP PBX” sono non crittografati e possono essere intercettati, tuttavia il canale di controllo per questa connessione è crittografato e quindi ragionevolmente sicuro. Se FreeSwitch era sulla stessa LAN del telefono, la possibilità di intercettazione è inferiore, ma i dati audio sono ancora in grado di essere intercettati.
Nella Figura 5 noterai che sia i dati SIP e RTP dal telefono IP non sono crittografati, mentre i dati SIP e RTP all’altro SIP PBX sono sia SIPS che SRTP crittografati. Questa opzione crittograferà sia il canale di controllo che i dati audio per le connessioni tra FreeSwitch e altri endpoint che supportano la crittografia.
Deve ancora capire che la connessione dal telefono a Freeswitch è interamente in grado di essere intercettata da un pacchetto sniffer.
Scegliere tra le opzioni di crittografia
Ci sono una varietà di opzioni di crittografia per FreeSwitch come descritto sopra. TLSV1 crittografa tutto sulla connessione TCP; Questo ha il rovescio della medaglia che jitter o ritardi dovuti a TCP possono verificarsi. UDP è generalmente preferito per RTP e l’utilizzo di TLSV1 ha un numero maggiore di traffico. Finalmente c’è SSLV23; Ciò crittografa il canale di controllo SIP su una connessione TCP crittografata utilizzando i certificati SSL, ma per impostazione predefinita non fornisce nulla per i dati RTP. Le informazioni di accesso e i metadati delle chiamate vengono trasmessi sul canale di controllo, quindi se questo è ciò che ti interessa proteggere questo è sufficiente e non aggiunge alcun sovraccarico ai dati RTP. Se si desidera crittografare i dati vocali stessi (quindi i dati vocali non possono essere compresi), può essere combinato con SRTP. SRTP abilita la crittografia dei dati RTP con sovraccarico minore a ciascuno dei pacchetti UDP RTP. Ciò ha il vantaggio che i dati delle chiamate siano crittografati ma è ancora oltre l’UDP, quindi non dovrebbe esserci praticamente alcuna differenza con SRTP come con esso. Il tasto di crittografia utilizzato per SRTP viene scambiato sul canale di controllo (che SSLV23 crittografa), quindi ti dà qualcosa del meglio di entrambi i mondi. Generalmente SSLV23 + SRTP è il più amichevole firewall/ha il minor numero di modifiche per le installazioni esistenti. Sslv23 + srtp è anche abbastanza facile da configurare sul server freeswitch e molto probabilmente il metodo di crittografia più supportato per la maggior parte dei telefoni client e SIP, quindi in genere dovrebbe essere dove qualcuno dovrebbe iniziare per la crittografia dei dati delle chiamate.
Sui telefoni IP e sulla crittografia
Alcuni fornitori pubblicizzano che il loro prodotto supporta la crittografia SIP. La domanda diventa come supporta la crittografia SIP. Quindi esaminiamo questo congrillo contorto di marketing.
- Il telefono può supportare SSL e/o SIP crittografato TLS, ovvero dire “SIP”.
- Il telefono potrebbe arrivare al punto di supportare TLS con certificati firmati.
- Oltre a questi avvertimenti, il telefono potrebbe arrivare al punto di supportare i dati audio crittografati SRTP.
- Ultimo ma non meno importante, assicurati che il telefono IP supporti standard SIPS e/o crittografia SRTP. Essenzialmente non è troppo inverosimile che un produttore venga inventato un metodo di crittografia con il cervello che funziona solo con i loro prodotti.
AVVERTIMENTO: Controlla le specifiche e fai le tue ricerche prima di acquistare qualsiasi telefono IP SIP che si pubblicizza come in grado di eseguire la crittografia. Potresti anche verificare se ci sono problemi con la versione del firmware SIP che il tuo telefono è in esecuzione e la sua interoperabilità con FreeSwitch.
Limitazioni dell’implementazione FreeSwitch TLS/SSLV23 (FS-3877)
Sfortunatamente la configurazione predefinita di Lib _ Sofia Stack e Freewitch ha un comportamento predefinito (possibilmente inaspettato) che può causare problemi di crittografia difficili da diagnosticare. Quando un client si collega a un server crea un canale TCP crittografato utilizzato per comunicare con il server. Ogni volta che effettua una chiamata, registri, ecc., Lo fa usando questa sessione TCP. Sfortunatamente, quando Freeswitch tenta di comunicare con il cliente per raccontargli di una chiamata in arrivo, notifica, ecc., Stabilisce un secondo canale TCP dal server al client. Sebbene ciò sia crittografato, può causare alcuni problemi per alcune configurazioni di firewall e per molte delle opzioni di sicurezza TLS/SSL in FreeSwitch. Se FreeSwitch non può stabilire questo canale, il client sarà in grado di effettuare chiamate ma non sarà in grado di ricevere chiamate (o qualsiasi altra cosa che sia originata dal server al client). Inoltre, molte caratteristiche TLS possono agire inaspettatamente, quindi la direzione è importante da considerare. Ad esempio, TLS-Verify-Policy Set su “Out” farà sì che FreeSwitch provi a verificare il certificato client quando si collega al client, quindi anche se il client si sta inizialmente connesso al server e ciò salterebbe la convalida per le chiamate dal server-> client, FreeSwitch lo verificherebbe. Inoltre, ciò può aprire fori di sicurezza, ad esempio l’impostazione della politica su “in” per la verifica dei client in arrivo non verificherebbe il certificato client quando il server si collega al client, il che consentirebbe che si verifichi un attacco MITM lì. Cose come la convalida del soggetto possono anche essere difficili, soprattutto se FreeSwitch agisce come cliente. Ad esempio, la convalida dell’oggetto controlla il nome host a cui FreeSwitch si collega contro il nome comune del certificato, mentre un bel controllo di sicurezza non può essere fatto quando il server si collega a FreeSwitch (come a quel punto FreesWitch tenta effettivamente di controllare l’indirizzo IP rispetto al nome comune). Inoltre, la convalida a scopo (assicurarsi che quando FreeSwitch si colleghi a un server è un certificato che è stato emesso per un server e non un client o viceversa) non è attualmente supportato. Ciò consente attacchi MITM contro un server FreeSwitch utilizzando un certificato client (o viceversa), ma a causa della connessione che va in entrambi i modi, la convalida a scopo non è attualmente supportata (poiché una connessione in arrivo può provenire da un certificato di server durante la connessione). Quindi, mentre il certificato di FreeSwitch _ cert assegna correttamente lo scopo che non è attualmente utilizzato dallo stesso Freeswitch. Una soluzione per evitare questo foro MITM è quella di emettere certificati client da una CA diversa per ora.
Configurazione
FreesWitch supporta la crittografia del traffico di segnalazione SIP tramite SSL e/o TLS. La convenzione è quella di eseguire i sorsi sulla porta 5061 . Sono possibili configurazioni più complesse, tuttavia non saranno trattate in questa documentazione.
Avrai bisogno di quanto segue per compilare FreeSwitch con il supporto di crittografia TLS:
- Pacchetto LibSSL-Dev (il pacchetto OpenSSL Development).
Se non si dispone del pacchetto LIBSSL-Dev installato, il problema sarà il profilo SIP _ che contiene le direttive di configurazione di crittografia specificate di seguito nel passaggio 2 non avrà inizio.
Se hai compilato FreeSwitch senza questo pacchetto installato, non ci sarà supporto per la crittografia e dovrai ricompilarlo dopo aver installato il pacchetto LiBSSL-Dev.
Per Debian do apitude Installa libsssl-dev (su Lenny Installa libcurl4-openssl-dev) e quindi compila.
Passaggio 1 – Genera il certificato Ca (root)
Per utilizzare TLS/SSL è necessario almeno due certificati: il certificato di root (CA) e un certificato per ogni server. C’è una sceneggiatura a // freeswitch/bin/gentls _ cert o all’interno della fonte Tarball /Scripts/Gentls _ Cert Questo aiuta a generare questi file. Supponendo che il nome DNS del tuo FreeSwitch PBX sia PBX.Freeswitch.org, con
./Gentls_cert setup -cn pbx.Freeswitch.Org -Alt DNS: PBX.Freeswitch.org -org freeswitch.org
Ciò creerà certificato e tasto CA insieme alla directory e al certificato COF/SSL/CA nella cartella conf/ssl.
[ Nota: Il nome dato per -CN e -Alt dovrebbe essere lo stesso del nome DNS dell’installazione di FreeSwitch e usato come nome del Registrar al telefono (almeno su Polycom). ] È possibile modificare la riga “Days = 2190” nel file cert Gentls _ per rendere valido il certificato per il tempo più lungo. Tuttavia, renderlo troppo a lungo ha qualche problema avvolgente, sembra.
Passaggio 2: genera il certificato del server
./Gentls_cert create_server -cn pbx.Freeswitch.Org -Alt DNS: PBX.Freeswitch.org -org freeswitch.org
crea il certificato del server a // freeswitch/conf/ssl/agente.PEM. Questo file contiene il certificato e la chiave privata. Dovrebbe contenere il nome di dominio nel nome comune e alternativo. Se è necessario generare certificati per altri server, utilizzare il flag -out per Gentls _ cert per specificare il nome del certificato di output/file chiave e copialo sul server remoto.
Per impostare una nuova CA e creare un nuovo certificato sotto Windows, vai qui.
Affinché il nuovo certificato abbia effetto (l’unico modo per usarlo FreeSwitch), FreeSwitch deve essere riavviato.
Nota: Il nome dato per -CN e -Alt dovrebbe essere lo stesso del nome DNS dell’installazione di FreeSwitch e usato come nome del Registrar al telefono (almeno su Polycom). Questo è necessario per l’occhio (e probabilmente anche il pangolino).
Rivedi il tuo certificato
Puoi rivedere i dettagli del tuo certificato con il comando:
OpenSSL X509 -NOOUT -Inform Pem -Text -in/usr/local/freeswitch/conf/ssl/agente.PEM
Passaggio 3 – Configurazione del profilo Sofia
FreeSwitch richiede un solo file per agire come server TLS e questo è l’agente.File PEM. Questo contiene il certificato e la chiave che utilizzerà per l’ascolto. Nota è estremamente importante che il tuo agente.PEM (e facoltativamente Cacert.PEM) Avere le autorizzazioni di lettura per l’utente Freewitch verrà eseguito come. Ciò significa che se usi -u freeswitch vuoi “agente chmod 640.PEM CACERT.Pem “e” Chown Root.Agente FreeSwitch.PEM CACERT.pem “. Le autorizzazioni errate non consentiranno all’ascoltatore TLS di girare correttamente. Sui tuoi vari.XML:
Attenzione: TLS è disabilitato per impostazione predefinita; Imposta.
Passaggio 4 Configurazione client
Tutti i clienti dovrebbero avere almeno il certificato di root CA installato su di essi per garantire la sicurezza. Senza abilitare la verifica a catena (che il certificato del server è stato emesso dalla CA approvata) è possibile un attacco MITM contro un cliente. Il certificato CA è il Conf/SSL/Cafile.PEM Contiene solo un certificato e i client lo utilizzano per garantire che il certificato del server sia emesso dalla CA. Inoltre, si desidera (o è necessario a seconda del dispositivo) installare un certificato client emesso dalla stessa CA. È possibile generare un certificato client utilizzando il comando:
./Gentls_cert create_client -cn client1 -out client1
Questo creerà client1.PEM (Nota che il nome comune qui non ha davvero importanza, raramente un server sarebbe mai abilitato per controllare l’oggetto di un certificato client in modo da poterlo impostare su ciò che desideri). Questo certificato/coppia chiave deve essere installato sul client (consigliato per ogni client per la sicurezza) ma non è necessario rimanere sul server, anche se si desidera che il server verifichi il certificato client. Se il client è un altro server freeswitch che client1.pem vorresti rinominare l’agente.PEM. Nota Se l’altro server FreeSwitch utilizza anche questo certificato come server e non solo un client, assicurarsi di seguire i passaggi sopra utilizzando il comando Crea _ Server per creare un certificato di server.
Certificati commerciali
La maggior parte dei certificati di server Web commerciale dovrebbe funzionare per FreeSwitch. Ad esempio, i certificati Thawte SSL123 (la loro opzione più economica) sono noti per funzionare in almeno un’installazione. Se hai dubbi sul fatto che un certificato funzionerà, è necessario acquistare il certificato solo da una società che offre una politica di rimborso di 30 giorni.
Profilo multiplo TLS
Se hai più profili SIP Sofia, potresti ritrovarti a voler consentire il supporto TLS per ciascuno dei profili. Tuttavia, ciascuno può essere rappresentato a terzi utilizzando un record DNS diverso. In questo caso, crea semplicemente una nuova directory sotto // freeswitch/conf/ssl/per ogni record DNS . Quindi posizionare un agente.Pem e Cafile.PEM in ciascuna delle directory. Punta ogni profilo alla singola directory che contiene il suo agente specifico.File PEM.
Risoluzione dei problemi
Problemi con TLSV1
Se hai optato per questa configurazione nel tuo profilo SIP _:
Ci sono un certo numero di gotcha e snafus possibili con TLS. TLS funziona su TCP, anziché su UDP, quindi assicurati che eventuali firewall siano configurati per funzionare con TCP. Generare il certificato adeguato e assicurarsi che sia caricato nel telefono o ATA. Inoltre, assicurati che il tempo sia configurato correttamente sul tuo endpoint in quanto riceverai messaggi di errore criptici a “cattivo certificato” se il tempo è troppo lontano e non riuscirà a svashare correttamente. (Ad esempio, i certificati hanno attributi “non validi prima” e “non validi dopo”.) Se il tuo telefono non si registra o non funziona correttamente, potresti prendere in considerazione il controllo dell’elenco di interoperabilità e/o la documentazione dei telefoni e la revisione del firmware. Se non riesce ancora a funzionare correttamente, potresti considerare SSLV23 come un fallback.
Problemi con SSLV23
Se hai optato per questa opzione di configurazione nel profilo SIP _:
Questo ti darà la possibilità di crittografare i dati. La sicurezza è simile a quella di con server Web, è possibile verificare le radici affidabili del certificato, è supportata l’autenticazione del certificato client, è possibile convalidare soggetti e date di certificazione (alcune di queste dipendono dal supporto client per la funzione). Questo potrebbe in effetti essere quello che vuoi e considerando che diversi telefoni non supportano TLS, ma supportano SSL, potresti voler configurare di conseguenza.
Se il tuo profilo SIP non riesce ad avviare
Se vai nella CLI FreeSwitch e digita:
Potresti scoprire che il tuo profilo SIP _ per il quale hai configurato le impostazioni TLS/SSL. Dovrebbe essere così, probabilmente ti manca il pacchetto LibSSL-Dev o l’agente.Il file PEM non è in atto o ha autorizzazioni errate. Assicurati che l’utente FreeSwitch esegua, così come le autorizzazioni di lettura ai certificati e alle chiavi. L’accensione della registrazione del debug di topt di Sofia in alto aiuterà a stampare errori sul perché non si sta avviando correttamente. Fare riferimento alla distribuzione per installare il pacchetto di sviluppo OpenSSL. Ciò è necessario per il codice che esegue la crittografia all’interno di Freeswitch da compilare nel binario. Abilitare un livello più elevato di debug a Sofia (Sofia Loglevel All 9, o il topt di Loglevel Loglevel di Sofia generalmente ne dà abbastanza) e nella console può aiutare a debug e problemi di stretta di mano.
Errore di negoziazione TLS “nessuna cifra corrispondente”
Se ricevi un messaggio di errore “No corrispondenza”.File PEM. Se ricevi ancora l’errore, rigenerare sia la chiave che il certificato e crea un nuovo agente.PEM con la nuova chiave e il certificato, quindi riprova.
Ulteriori fasi di debug
Se si hanno ancora problemi a far funzionare TLS, sono suggeriti:
- ) Imposta il loglevel di Sofia su 9 ( < param name="log-level" value="9"/>) in Autoload _ Configs/Sofia.conf.XML
- ) Imposta il loglevel della console FreeSwitch su Debug (F8)
- ) Ricarica mod _ Sofia e rivedi i registri
- ) Se tutto sembra a posto sul lato server, prova a usare i softphone basati su freeswitch o freeswitch come fsclient o fscomm. Questi ti permetteranno di fare lo stesso sul lato client (incluso l’allegato FS _ CLI per ottenere i dati di registro) per provare a vedere eventuali errori che il client potrebbe avere
- ) L’ultima risorsa ha messo tutti i registri su Pastebin e chiedi aiuto.
Usando FreeSwitch come client SSL/TLS
FreeSwitch può comunicare con un altro server e fungere da client SIP (aka usa un altro gateway). Per fare questo dovresti avere il caffettiera.PEM sul client nella cartella Conf/SSL con il certificato CA. Avrai anche bisogno di un agente.File PEM (questa può essere una coppia di chiavi pubbliche/private generata casualmente o un certificato client valido) nella stessa cartella utilizzata del certificato client.
Opzioni TLS avanzate
FreesWitch supporta alcuni parametri TLS avanzati nelle impostazioni del profilo vedere i file di configurazione di Sofia per i dettagli.
Configurazione rapida di SSLV23 con SRTP
Installa rapida sul profilo interno se il nome host interno del server è PBX.Freeswitch.Org:
./Gentls_cert setup -cn pbx.Freeswitch.Org -Alt DNS: PBX.Freeswitch.org -org freeswitch.org ./Gentls_cert create_server -cn pbx.Freeswitch.Org -Alt DNS: PBX.Freeswitch.org -org freeswitch.org
Se i tuoi clienti supportano/convalidano il certificato del server, copiare il certificato CA conf/ssl/cafile.PEM ai tuoi clienti.
Chiedi ai tuoi client di connettersi a FreeSwitch sulla porta 5061 anziché a 5060 e abilita TLS (e se possibile SRTP) sul client. Se il tuo client è FreeSWitch Imposta Transport = TLS in TLS-Bind-Params oltre alle opzioni di abilitazione sopra dal server. Infine sul server FreeSwitch per le chiamate limitate per il client, vorrai abilitare loro di esaminare SRTP impostando RTP _ Secure _ Media = True per la chiamata (vedere il passaggio 5 di seguito per maggiori dettagli su come farlo in modo più programmatico per i clienti che supportano solo questo).
Riavvia il server FreeSwitch (o ricarica mod _ Sofia) e fai connettere il tuo client e dovresti essere in grado di effettuare e ricevere chiamate sicure! Per migliorare la sicurezza, controllare le opzioni TLS complete e abilitare il controllo del certificato (anche per interrompere il MITM).
Passaggio 5: protezione dei canali RTP (opzionale)
Le chiamate che provengono dal telefono hanno RTP _ Secure _ Media set se TLS è impostato. Controlla l’estensione globale. C’è una sezione commentata che out richiederà SRTP sulla gamba in uscita se la gamba in entrata è crittografata. Abilitare questo sarà problematico con la maggior parte degli ITS poiché non supportano TLS.
Per le chiamate che provengono (o vengono instradate tramite) Freeeswitch e vengono terminate sull’utente/ endpoint (E.G., chiama a un telefono), la seguente modifica consentirà SRTP se l’endpoint si è registrato con TLS. Si noti che è una configurazione valida per registrarsi con TLS ma non richiede SRTP. Ciò disabilita l’opzione di configurazione valida per l’utente/ endpoint. Richiederebbe inoltre un ulteriore perfezionamento per supportare ZRTP sugli utenti/ endpoint che si connettono con TLS. In tal caso, un approccio migliore sarebbe quello di impostare qualcosa sulla voce della directory dell’utente che specifica quale crittografia RTP supporta. (In altre parole, c’è una ragione per cui questa non è l’impostazione predefinita.)
Modifica conf/directory/default.XML e cambia il quadrante param a:
Perché è una buona idea
Nel primer di crittografia SIP sopra abbiamo discusso del perché la crittografia dei dati RTP potrebbe essere una buona idea. Questo è in gran parte fatto nel dialplan e ha una propria pagina dedicata alla sua funzionalità.
SRTP di per sé senza TLS non è sicuro poiché le chiavi vengono scambiate tra i due endpoint nel SIP Clear Over, il che è insicuro senza TLS o SSL.
Vedere la pagina RTP sicura per come distribuire SRTP.
Si noti che il parametro SIP_SECURE_MEDIA non è più implementato e si dovrebbe impostare RTP_SECURE_MEDIA
Per connessione completamente sicura (segnalazione + media) utilizzare TLS + SRTP. TLS senza SRTP protegge SIP. Srtp senza TLS non è davvero sicuro RTP!
Passaggio 6 – record DNS NAPTR e SRV (opzionale)
Configurazione di DNS NAPTR e SRV per TLS
Questo non è richiesto poiché TLS funzionerà senza di essa, ma è consigliato. Se hai intenzione di impostare TLS potresti prenderti il tempo per impostare i record DNS SRV e NAPTR corretti.
Ecco un esempio dei record NAPTR di cui avrai bisogno (crea sottotitoli per “dominio.com “se necessario):
dominio.com. In naptr 10 0 “s” “sorsi+d2t” “” _sips._tcp.dominio.com.
dominio.com. In NAPTR 20 0 “S” “SIP+D2T” “” _SIP._tcp.dominio.com.
dominio.com. In NAPTR 30 0 “S” “SIP+D2U” “” _SIP._udp.dominio.com.
Se si configura con –Nable-SCTP e hai caricato SCTP su Linux, è possibile aggiungere questo record:
dominio.com. In naptr 10 0 “s” “sorsi+d2s” “” _sip._sctp.dominio.com.
Quindi vorrai impostare questi record SRV oltre al NAPTR sopra:
_sips._tcp.dominio.com. In SRV 10 0 5061 SIP.dominio.com.
_sorso._udp.dominio.com. In SRV 10 0 5060 SIP.dominio.com.
_sorso._tcp.dominio.com. In SRV 10 0 5060 SIP.dominio.com.
Se si configura con –Nable-SCTP e hai caricato SCTP su Linux, è possibile aggiungere questo record:
_sorso._sctp.dominio.com. In SRV 10 0 5060 SIP.dominio.com.
Esempio: i telefoni Snom onoreranno pienamente sia il NAPTR che l’SRV come Will Sofia-Sip su chiamate in uscita provenienti da FreeSwitch.
