Asterisk Crypto

aus PUG, der Penguin User Group
Wechseln zu: Navigation, Suche

Das Internet neigt oft dazu undicht zu sein, d.h. jeder will da irgendetwas abhören oder wenigstens Daten sammeln. Wer nun telefonieren will und dabei sicher sein will, dass niemand sonst zuhört, für den ist dieses Projekt genau richtig. Grundsätzlich ist es allerdings noch möglich, die Gespräche an den Asterisk Vermittlungsstellen, die gleichzeitig auch die VPN Router darstellen, abzuhören. Dennoch werden die Abhörmöglichkeiten so schon sehr stark reduziert.

Anatomie eines Telefonnetzes

Ein Telefonnetz besteht aus Benutzern, Vermittlungsstellen und Telefonkabeln. Bei VoIP übernimmt das Internet die Funktion der Telefonkabel. Die Vermittlungsstellen sorgen dafür, dass ein Gespräch zwischen zwei Benutzern hergestellt wird. Asterisk bietet alle Funktionen, die eine Vermittlungsstelle benötigt, um ihre Aufgabe wahrzunehmen.

Angriffsmöglichkeiten

In einem konventionellen Telefonnetz gehen alle Daten vom Telefon aus unverschlüsselt über die Kabel zur Vermittlungsstelle. Es ist mit geringem Aufwand also möglich, Telefongespäche abzuhören. Das gilt für VoIP genauso.

Gegenmaßnahmen

VoIP ist nur darauf angewiesen, das die IP Pakete ihren Weg von A nach B finden. Das funktioniert natürlich auch mit IPsec oder OpenVPN. Auf diese Weise wird erreicht, dass die gesamte Kommunikation zwischen den Vermittlungsstellen untereinander und auch mit den Benutzern verschlüsselt erfolgt.

Netzplan

Für das Projekt wird mit ca. 20 Benutzern und 2-3 Vermittlungsstellen gerechnet. Unter diesen Bedingungen ein IP-Netzplan entstanden.

Vermittlungsstellen

Die Vermittlungsstellen kommunizieren untereinander mit IPsec Tunneln, die die Loopback (Dummy) Interfaces der Linux Maschinen verbinden. Über diese Loopbackinterfaces wird ein GRE Tunnel konfiguriert, der auch dynamisches Routing innerhalb des VPNs zulässt. Die Authentifizierung der IPsec Verbindungen erfolgt über X.509 Zertifikate.

  • 10.51.0.0/24 wird für die Loopbackinterfaces der Asterisk Vermittlungsstellen verwendet. Jedes Loopbackinterface hat eine /32 Adresse.
  • 10.51.1.0/24 wird für die Transfernetze der GRE Tunnel verwendet. Es wird jeweils ein /30 Netz verwendet.
  • 10.51.2.0/24 wird für die Transfernetze der OpenVPN Tunnel für die Benutzer verwendet. Es wird jeweils ein /30 Netz verwendet.

Die Asterisk Vermittlungsstellen benutzen IAX2 für die Verbindungen untereinander,

Benutzer

Die Benutzer kommunizieren über OpenVPN mit den Vermittlungsstellen. Die Vermittlungsstellen schicken über die OpenVPN Konfiguration den Benutzern alle notwendigen Routen mit. Zunächst dürfte hier 10.51.0.0/16 reichen. Die Authentifizierung erfolgt über X.509 Zertifikate.

Für die Benutzer kann wahlweise SIP, IAX2 oder H.323 (wer sich das antun will) benutzt werden.

Rufnummernplan

Da eine Verbindung in das öffentliche Netz nicht geplant ist, kann einfach der Rufnummernplan der Telekom stark vereinfacht übernommen werden. Nach dem Stand der Dinge sollten folgende Nummernblöcke verwendet werden:

  • 69 für den Asterisk Server im Raum Frankfurt a.M. einschließlich Wiesbaden und Mainz und Vororten
  • 221 für den Asterisk Server im Raum Köln einschließlich der umliegenden Städte

Für die handvoll Benutzer sollten 4 stellige Rufnummern genügen, die kann jeder Asterisk Operator nach seinem eigenen Plan vergeben.

ToDo

  • Aufbau der IPsec und OpenVPN Infrastruktur
  • Aufbau der Asterisk Configs und Test
  • Anschluß der ersten Benutzer
  • Dokumentation der Ergebnisse und Erfahrungen

Konfigurationsbeispiel OpenSwan

ipsec.conf

conn %default
        keyingtries=3
        compress=no
        authby=rsasig
        left=193.17.17.10
        leftnexthop=%defaultroute
        leftsubnet=10.51.0.1/32
        leftrsasigkey=%cert
        leftcert=10.51.0.1.crt
        rightrsasigkey=%cert
        rightca=%same

conn vpn1
        right=193.138.96.229
        rightid="/C=de/ST=Hessen/L=Taunusstein/O=Cryptonet/OU=VPN/CN=10.51.0.2/emailAddress=hostmaster@example.com"
        rightsubnet=10.51.0.1/32
        auto=add
        pfs=yes

GRE Tunnel

ip tunnel add vpn1 mode gre local 10.51.0.1 remote 10.51.0.2
#ip link set vpn1 mtu 1354
ip link set vpn1 up
ip addr add 10.51.1.1/30 dev vpn1

Das ip link set vpn1 mtu 1354 ist nur bei einigen DSL Anschlüssen notwendig, wenn die Autofragmentierung nicht klappt. Deshalb auch ping -s 2000 <host> testen. Nun sollten sich 10.51.1.1 und 10.51.1.2 anpingen können.

IAX2 Config Asterisk

Da sind eigentlich nur zwei Dateien wichtig:

/etc/asterisk/iax.conf

[CGN]
type=friend
host=10.51.1.2
username=CITY69
context=iax
bandwidth=high
qualify=yes
auth=md5
secret=SuperGeheim
permit = 10.51.1.2/255.255.255.255

/etc/asterisk/extensions.conf

[default]
...
include => iax ; Den Context ''iax'' einbinden
...

[iax]
exten => _221.,1,Dial(IAX2/CGN:SuperGeheim@10.51.1.2/${EXTEN:5}@iax)
exten => _221.,2,Hangup

Damit sollte es nun über die Asterisk Installation in Frankfurt möglich sein, mit der Vorwahl 221 einen User in Köln zu erreichen. Hier muss aber noch etwas Forschungsarbeit geleistet werden ;-) Diese Konfig ist das Resultat erster Experimente, das wird sich bestimmt noch erheblich ändern.

Verbliebene Angriffspunkte

Bei dieser Lösung hat ein Angreifer nur noch zwei Möglichkeiten. Dadurch gibt es nur noch eine sehr überschaubare Anzahl von Angriffspunkten, die sich jedoch leichter absichern lassen.

Asterisk Vermittlungsstellen / VPN Router

Die VPN-Router entschlüsseln und verschlüsseln den Datenverkehr, der über sie geht. An dieser Stelle liegt also Klartext vor. Aus diesem Grund müssen diese Router so gesichert werden, so dass Manipulationen sofort bemerkt werden. Die Konfigfiles und X.509 private Keys müssen in einer verschlüsselten Partition liegen. Der Start des IPsec Netzwerks ist dann ohne Kenntnis des Schlüssels nicht möglich, ebenso der Zugriff auf die IPsec Konfigurationen.

Das gilt genauso für die Asterisk Vermittlungsstellen.

Router des Benutzers

Der Router des Benutzers kann ebenfalls Angriffsziel sein, jedoch können hier die gleichen Sicherungsmaßnahmen durchgeführt werden wie bei den VPN-Routern.

Physikalischer Zugriff

Sollte ein Angreifer physikalischen Zugriff auf die Geräte bekommen (z.B. Einbruch in das Gebäude), dann hat der Angreifer nur die Möglichkeit, das laufende System zu manipulieren. Das ist allerdings ohne detaillierte Kenntnisse über die verwendete Hard-/Software praktisch kaum möglich. Sobald das Gerät gebootet wird, ist ohne Crypto-FS Passwort nichts mehr zu machen.

Noch sicherer

Die maximale Abhörsicherheit bekommt man jedoch erst durch eine Ende zu Ende Verschlüsselung zwischen den beiden VoIP Telefonen, zwischen denen ein Gespräch stattfinden soll. Wer so vertrauliche Gespräche führt, sollte sich dann auch Gedanken um TEMPEST machen. Ein drahtloses Telefon verbietet sich hier.

Wirklich abhörsichere Netze sind machbar, die Kosten steigen aber dann enorm an.

Prototyp

Inzwischen läuft ein kleines Crypto Telefonnetz mit 3 Asterisk Vermittlungsstellen. Die Vermittlungsstellen sind über IAX2 over IPsec miteinander verbunden, die Clients sind über IPsec oder OpenVPN angebunden. Die Sprachqualität ist sehr gut und wird praktisch nur durch die Anbindung der beteiligten Clients bestimmt.

Sonstiges

Kommentare, Kritik, Vorschläge etc. bitte unter Diskussion eintragen.

Christian