Kapitel 4. Zertifikate für Endpunktsicherheit

Diese Arbeit wurde mithilfe von KI übersetzt. Wir freuen uns über dein Feedback und deine Kommentare: translation-feedback@oreilly.com

Wir müssen nur einmal Glück haben. Du musst jedes Mal Glück haben.

Die IRA an Margaret Thatcher, nach einem fehlgeschlagenen Attentatsversuch

Wenn du etwas wirklich tun willst, wirst du einen Weg finden. Wenn du es nicht willst, findest du eine Ausrede.

Jim Rohn

Die Unannehmlichkeiten der Sicherheit

VoIP Sicherheit kann als zwei separate (aber miteinander verbundene) Herausforderungen betrachtet werden:

  • Absicherung eines Systems gegen Mautbetrug (was in der Regel das Ziel von SIP-basierten Einbruchsversuchen ist)

  • Sicherung eines Systems gegen das Abhören von Anrufen (was mit dem Schutz der Privatsphäre zu tun hat und den Schutz vor Mautbetrug verbessert)

Es gibt natürlich noch viele andere Aspekte für die Sicherheit deines Systems, aber die meisten davon sind allgemeine Sicherheitskonzepte und nicht spezifisch für VoIP.

In diesem Kapitel werden wir uns auf einen Bereich der Sicherheit konzentrieren, der allzu oft übersehen wird, nämlich die Erstellung und Anwendung von Zertifikaten und Schlüsseln, um die Kommunikation zwischen Endpunkten und deinem System zu sichern. Bei der SIP-Kommunikation ist die Verschlüsselung optional (und wird leider die meiste Zeit nicht genutzt). Bei WebRTC ist sie jedoch erforderlich.

Dieses Kapitel sollte keineswegs als das letzte Wort zur Sicherung deines Asterisk-Systems betrachtet werden; in Kapitel 22 wird noch mehr behandelt. Wir hoffen jedoch, dass es dir eine solide Grundlage bietet, auf der du eine sichere Lösung aufbauen kannst.

SIP sichern

Wenn du einen beliebigen Server baust, der dem Internet ausgesetzt ist, und ein paar Stunden nach dem Einschalten wartest, wirst du feststellen, dass das System bereits Sonden angezogen hat, die versuchen festzustellen, ob es verwundbare SIP-Dienste hat. Kurze Zeit später wirst du feststellen, dass immer mehr Angriffe auf den Server erfolgen, um die Sicherheit deines Kontos zu gefährden. Herzlichen Glückwunsch, dein Server wurde automatisch in die Liste der SIP-Server aufgenommen, die von Kriminellen zu Betrugszwecken genutzt werden. Wenn einer dieser Angriffe erfolgreich ist, wird die kompromittierte Plattform wahrscheinlich Teil eines Netzwerks des organisierten Verbrechens und du bezahlst die Rechnung für nicht zurückverfolgbare Anrufe zu verschiedenen teuren Zielen.

Warnung

Wir spielen hier nicht herum; nimm deine SIP-Sicherheit nicht auf die leichte Schulter, sonst wirst du wahrscheinlich das Opfer eines sehr teuren Betrugsangriffs.

Abonnentennamen

Der Teil der SIP-Anmeldeinformationen (der userinfo Teil der URI) wird viel zu oft auf eine Durchwahlnummer gesetzt. Für die Adressierung von Anrufen ist diese Praxis in Ordnung, aber für die Authentifizierung eines Endpunkts ist sie überhaupt nicht zu empfehlen. Der Teilnehmername deiner Endpunkte sollte außerhalb deines Unternehmens keine Bedeutung haben. Eine MAC-Adresse ist dafür perfekt geeignet. Ohne eine tatsächliche Adresse zum Ausprobieren ist die Arbeit eines Angreifers sehr viel schwieriger geworden.

Bei vielen SIP-Telefonanlagen (darunter leider auch viele, die auf Asterisk basieren) wird die Durchwahlnummer den Anmeldedaten des Telefons zugeordnet. In diesem Buch wirst du sehen, dass die Nebenstellennummer nicht Teil der Anmeldedaten des Telefons ist. Das hat mehrere Vorteile, aber aus der Perspektive der Sicherheit besteht der Vorteil darin, dass ein Angreifer, der die Durchwahl kennt, nicht weiß, wie er einen Anruf über das System authentifizieren kann.

Du könntest also einen Benutzer mit der SIP-Adresse 100@shifteight.org haben, den dein Asterisk-System mit dem Gerät unter 0000f3101010@yourpbx.com verbindet. Wenn ein Anruf an 100 gerichtet wird, klingelt es bei 0000f3101010, aber der Anrufer weiß nichts über diesen Endpunkt.

Du wirst im Laufe dieses Buches sehen, dass wir eine Beziehung zwischen einer Durchwahl (die unserer Meinung nach mit einem Benutzer oder Dienst verknüpft werden sollte) und einer Gerätekennung (die ein SIP-Gerät oder eine Telefonnummer sein könnte) herstellen werden und dass eine einfache Tabelle verwendet werden kann, um sie miteinander zu verknüpfen (und damit sowohl die Sicherheit als auch die Flexibilität zu erhöhen).

Sichere SIP-Signalisierung

Standardmäßig werden SIP-Nachrichten im Klartext übertragen, ohne wirksame Sicherheit. Ein Man-in-the-Middle-Angriff ist in der Lage, alle möglichen Informationen über deine Anrufe zu erhalten. Transport Layer Security (TLS) wird verwendet, um dieses Risiko zu minimieren.

Wir werden im nächsten Kapitel mehr darüber sprechen, wie man Geräte für die Verwendung von TLS konfiguriert. Alles, was wir hier tun müssen, ist, die Zertifikate zu erstellen.

Es gibt drei gängige Möglichkeiten, Zertifikate zu erstellen. Wir geben Beispiele für zwei von ihnen (selbstsigniert und LetsEncrypt), überlassen es aber dem Leser, wie man offiziell ausgestellte Zertifikate erhält.

Selbstsignierte Zertifikate

Der Hauptvorteil eines selbstsignierten Zertifikats ist, dass du es nicht bei einer externen Stelle validieren musst. Der Nachteil ist, dass externe Stellen ihm deshalb nicht vertrauen.

Wenn du SIP-Geräte nur für die Verwendung innerhalb deiner kontrollierten Netzwerkumgebung absicherst, ist ein selbstsigniertes Zertifikat möglicherweise alles, was du brauchst. Dies gilt nicht als die beste Lösung, aber in manchen Fällen kann es ausreichen und ist in der Regel besser als gar nichts.

In dieser Welt voller automatisierter Kriminalität gibt es viel über Datenschutz und Sicherheit und die dafür notwendige Kryptografie zu lernen. Da es in diesem Buch jedoch um Asterisk geht, stellen wir dir ein Templating für die Erstellung der benötigten Komponenten zur Verfügung.

Das Toolkit openssl bietet ein Werkzeug, das die Aufgabe für uns erledigt. Wir führen es wie folgt aus:

$ sudo su asterisk -

$ mkdir /home/asterisk/certs

$ openssl req -x509 -nodes -newkey rsa:2048 -days 3650 \
-keyout /home/asterisk/certs/self-signed.key \
-out /home/asterisk/certs/self-signed.crt

Du wirst aufgefordert, einige Informationen anzugeben, und dann werden dein Schlüssel und dein Zertifikat in den Ordner /home/asterisk/certs geschrieben.

Du kannst den Befehl wie folgt ergänzen, um die Fragen zu umgehen (ändere die Angaben entsprechend deiner Situation):

-subj "/C=CA/ST=Ontario/L=Toronto/O=ShiftEight/CN=shifteight.org"

Der vollständige Befehl sollte dann in etwa so aussehen:

$ openssl req -x509 -nodes -newkey rsa:2048 -days 3650 \
> -keyout /home/asterisk/certs/self-signed.key \
> -out /home/asterisk/certs/self-signed.crt \
> -subj "/C=CA/ST=Ontario/L=Toronto/O=ShiftEight/CN=shifteight.org"

Dies erzeugt ein selbstsigniertes Zertifikat und einen privaten Schlüssel und speichert beide in /home/asterisk/certs/. Wir können sie später verwenden, wenn wir unsere SIP-Endpunkte konfigurieren.

Es ist wahrscheinlich eine gute Idee, deine Zertifikate unter chmod zu hinterlegen, damit nur die entsprechenden Benutzer/Gruppen darauf zugreifen können:

$ chmod 640 /home/asterisk/certs/*

Beende das asterisk Benutzerkonto.

$ exit

$ who am i # You should be astmin again.

Es gibt eine Alternative zu selbstsignierten Zertifikaten: Wenn du deinem Server einen Domainnamen zugewiesen hast, der vom öffentlichen Internet aus erreichbar ist, kannst du mit LetsEncrypt ein geprüftes Zertifikat erstellen. Lies weiter.

LetsEncrypt-Zertifikate

Wenn du an einer sicheren Kommunikation über das öffentliche Internet interessiert bist (und das bist du, glaub uns), dann sind Domain-Zertifikate, die von einer Zertifizierungsstelle (CA) bereitgestellt werden, nützlich.

Das Projekt LetsEncrypt bietet kostenlose digitale Zertifikate zur Domainvalidierung (DV) an. Das kostenlose Tool der Let's Encrypt Foundation namens certbot ermöglicht es dir, die Beschaffung und Verwaltung von vertrauenswürdigen Zertifikaten zu automatisieren.

Dein Server braucht mindestens einen voll qualifizierten Domainnamen (FQDN), der einer externen IP-Adresse entspricht, die am Rechner ankommt. Jede Firewall, die dazwischen liegt, muss den Datenverkehr für diesen Hostnamen an das System weiterleiten, für das du das Zertifikat beantragst. Wenn du das aus irgendeinem Grund nicht kannst, wird die Beschaffung eines vertrauenswürdigen Zertifikats komplexer (und würde den Rahmen dieses Buches sprengen).

certbot kann mit wie folgt installiert werden: yum

$ sudo yum -y install certbot

Sobald es installiert ist, musst du nur noch Folgendes ausführen:

$ sudo certbot certonly

How would you like to authenticate with the ACME CA?
-------------------------------------------------------------------------------
1: Spin up a temporary webserver (standalone)
2: Place files in webroot directory (webroot)
-------------------------------------------------------------------------------
Select the appropriate number [1-2] then [enter] (press 'c' to cancel): 1

Wenn du einen Webserver hast oder mit Option 2 zufrieden bist, ist das in Ordnung, aber diese Schritte gehen davon aus, dass du keinen Webserver hast und daher den eingebauten temporären Webserver verwenden musst/willst, den certbot zur Authentifizierung verwendet. Dieser Server wird verwendet, um zu beweisen, dass du die Domain kontrollierst, für die du ein Zertifikat beantragst.

Beantworte die nächsten Fragen entsprechend und gib an dieser Stelle den Hostnamen ein, den du der IP-Adresse deines Servers zugewiesen hast:

Please enter in your domain name(s) (comma and/or space separated)  (Enter 'c'
to cancel): asteriskbook.shifteight.org

(ersetze asteriskbook.shifteight.org durch den von dir zugewiesenen Domänennamen).

certbot und wenn alles gut gegangen ist, solltest du eine ähnliche Meldung wie die folgende erhalten:

IMPORTANT NOTES:
 - Congratulations! Your certificate and chain have been saved at:
   /etc/letsencrypt/live/asteriskbook.shifteight.org/fullchain.pem
   Your key file has been saved at:
   /etc/letsencrypt/live/asteriskbook.shifteight.org/privkey.pem
   Your cert will expire on 2018-07-23. To obtain a new or tweaked
   version of this certificate in the future, simply run certbot
   again. To non-interactively renew *all* of your certificates, run
   "certbot renew"
 - Your account credentials have been saved in your Certbot
   configuration directory at /etc/letsencrypt. You should make a
   secure backup of this folder now. This configuration directory will
   also contain certificates and private keys obtained by Certbot so
   making regular backups of this folder is ideal.
 - If you like Certbot, please consider supporting our work by:
   Donating to ISRG / Let's Encrypt:   https://letsencrypt.org/donate
   Donating to EFF:                    https://eff.org/donate-le

Du hast jetzt die Zertifikate, die du brauchst, um verschiedene TLS-Dienste in deinem System zu aktivieren. Wir werden sie im nächsten Kapitel einsetzen.

Nicht allzu schwierig, oder?

Hinweis

Denke daran, dass die meisten Zertifikate, die du von einer externen Quelle erhältst, ein Ablaufdatum haben. Im Fall von LetsEncrypt beträgt die aktuelle Gültigkeitsdauer drei Monate. Wenn du Zertifikate in der Produktion einsetzt, musst du wissen, wie du sie verwalten kannst (z. B. durch die Automatisierung der Erneuerung, die von LetsEncrypt gut vereinfacht wurde).

Kauf von Zertifikaten bei einer offiziellen Zertifizierungsstelle

Wenn die LetsEncrypt-Zertifikate nicht den von dir benötigten Grad der Validierung bieten - wenn du zum Beispiel eine Organisationsvalidierung (OV) oder eine erweiterte Validierung (EV) benötigst - musst du die Dienste einer Zertifizierungsstelle in Anspruch nehmen, die diese Dinge anbietet. Diese Fragen gehen über den Rahmen dieses Buches hinaus.

Wenn du die Beispiele für die Abschnitte "Selbstsigniert" und "LetsEncrypt" durchgearbeitet hast, hast du zumindest ein grundlegendes Verständnis davon, wie du Zertifikate von einer Zertifizierungsstelle erhältst, da viele der Schritte ähnlich sind.

Medien sichern

Die Zertifikate, die wir erhalten haben, können verwendet werden, um sowohl die Signalisierung als auch die Nutzdaten selbst zu sichern (d.h. das Gesprochene oder das übertragene Video). Beachte, dass die Mechanismen zur Sicherung der Signalisierung zum SIP-Protokoll gehören, während die Mechanismen zur Sicherung der Medien zum RTP-Protokoll gehören. Bedenke, dass die Verschlüsselung der SIP-Signale nicht automatisch auch die Verschlüsselung des (RTP) -Verkehrs bedeutet.

Verschlüsseltes RTP

Durch die Verschlüsselung des Echtzeitprotokolls können wir unsere Medienströme sichern.

Es gibt zwei gängige Mechanismen für die Verschlüsselung von Medien: SDES und DTLS-SRTP. SDES ist ein Medienverschlüsselungsmechanismus, der darauf vertraut, dass die Signalisierung sicher ist. Mit anderen Worten: Wenn du TLS zur Sicherung deiner SIP-Signale verwendest, wird deine Medienverschlüsselung wahrscheinlich mit SDES durchgeführt.

DTLS-SRTP hingegen vertraut der Signalisierung nicht. Das ist wichtig, denn der WebRTC-Standard verlangt, dass die Medien auf diese Weise verschlüsselt werden.

Die Zertifikate, die wir hier erstellt haben, sollten in beiden Szenarien funktionieren. In den nächsten Kapiteln, wenn wir SIP- oder WebRTC-Endpunkte konfigurieren, werden wir detaillierter auf die Verwendung der Zertifikate eingehen. Für den Moment reicht es aus, dass wir die Zertifikate erstellt haben und sie zur Verfügung stehen.

Fazit

Mach keinen Fehler: Sicherheit macht alles komplizierter. In den guten alten Zeiten konntest du eine SIP-Verbindung mit einem halben Dutzend Konfigurationszeilen einrichten und das war's. Das geht heute nicht mehr, und obwohl diese Art der Konfiguration immer noch funktioniert (du brauchst nur UDP statt TLS und ein Passwort), haben wir uns entschlossen, ab dieser Ausgabe in allen Konfigurationsbeispielen , wo immer möglich, sicherere Optionen zu wählen. Wir erheben nicht den Anspruch, das letzte Wort in Sachen VoIP-Sicherheit zu sprechen, aber wir werden Beispiele liefern, die mehr als nur ein Lippenbekenntnis zu diesem Konzept sind.

Als Nächstes werden wir besprechen, wie du Endpunkte auf deinem Asterisk-System konfigurierst (mit den Schlüsseln und Zertifikaten, die wir gerade erstellt haben).

Get Asterisk: The Definitive Guide, 5. Auflage now with the O’Reilly learning platform.

O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.