Freie Bahn für Telefonie_Deaktivieren des VoIP-ALG einer Fortigate-Firewall

Voice-over-IP-Kommunikation über das Protokoll SIP stellt besondere Anforderungen an die eingesetzte Perimeter-Firewall: SIP besitzt die Eigenschaft, auf Applikationsebene eine Aushandlung von layer4-5-Informationen vorzunehmen. Die beiden VoIP-Endpunkte handeln über die SIP-Protokollerweiterung SDP („Session Description Protocol“) direkt untereinander aus, über welche IP-Adressen und mit welchen UDP-Ports VoIP-Mediendaten versendet oder empfangen werden. In einem völlig transparenten Netz ergibt dieser Mechanismus durchaus Sinn. Sobald sich jedoch Firewalls mit NAT-Mechanismen im Pfad befinden, funktioniert dies nicht mehr ohne weiteres, da die Firewalls im NAT-Prozess IP- und Port-Informationen in den IP-Paketen verändern.

Firewall-Hersteller moderner Next-Generation-Firewalls – wie beispielsweise die von NETHINKS eingesetzten Firewalls des Herstellers Fortinet – haben zur Lösung dieses Problems sogenannte „Application Layer Gateways“ oder kurz „ALGs“ eingeführt. Das SIP-ALG klinkt sich auf Applikationsebene in die SDP-Kommunikation zwischen zwei VoIP-Endstellen ein und verändert die SDP-Informationen so, dass sie mit der eigenen NAT-Datenbank korrespondieren. Somit soll dem SIP-Gateway im öffentlichen Internet eine Gegenstelle präsentiert werden, die auch transparent mit einer öffentlichen IP-Adresse erreichbar ist. Leider zeigt sich in der Praxis, dass dieser Mechanismus oft fehleranfällig ist und zu Problemen wie einseitiger Sprachübertragung führt. Der von NETHINKS eingesetzte NT/Communication Server besitzt von Haus aus Funktionen, um die Kommunikation über NAT-Grenzen hinweg zu ermöglichen. Wir schalten daher grundsätzlich die VoIP-ALG-Funktionen auf Firewalls von Fortinet ab.

So werden die VoIP-Funktionen einer Fortigate-Firewall deaktiviert

Zum Deaktivieren jeglicher VoIP-Funktionalität auf einer Firewall von Fortinet bedarf es mehrerer Schritte.

1. Deaktivieren des Session Helpers:
Hierzu muss der in der Konfiguration enthaltene Session-Helper von der Firewall gelöscht werden. Über den Konfigurationsmodus bewegt man sich hierzu in den Bereich der Session-Helper und lokalisiert die ID des SIP-Session-Helpers.

config system session-helper
show

In der nun erscheinenden Liste findet man einen Config-Block, der in etwa wie folgt aussieht:

edit 13
set name sip
set protocol 17
set port 5060

Der Session-Helper in diesem Bespiel ist also der Eintrag „13“, wobei hier auch eine beliebige andere Nummer erscheinen kann. Dieser Eintrag muss nun gelöscht werden. Dies geschieht einfach aus der momentanen position mit dem Befehl

delete 13

Dabei ist zu beachten, dass die ID des zu löschenden Eintrags, hier „13“, mit dem Eintrag in der Konfiguration korrespondieren muss.

2. Deaktivieren des VoIP-Profils
Fortinet-Firewalls besitzen ein VoIP-Profil, über das die Geräte auf spezielle Nachrichten auf Applikationsebene reagieren können. Unsere Empfehlung: Auch dieses Profil sollte deaktiviert werden.

config voip profile
edit default
config sip
set rtp disable

3. Deaktivieren des SIP-ALGs und des SIP-Helpers
Um das eigentliche SIP ALG zu deaktivieren, führt man folgende Schritte aus:

config system settings
set sip-helper disable
set sip-nat-trace disable
set default-voip-alg-mode kernel-helper-based

4. Firewall rebooten
Um diese Konfiguration zu aktivieren, sollte das Gerät neu gestartet werden.

Mit diesem Vorgehen haben wir unseren SIP-Communication-Server bereits über hundert Mal erfolgreich mit Hilfe einer Fortinet-Firewall mit einen öffentlichen SIP-Uplink integriert. Auch die Kommunikation zwischen den beliebten IP-Telefonen von snom und unseren gehosteten TK-Anlagen funktioniert in dieser Konfiguration absolut stabil und verlässlich. Natürlich ist dieses Vorgehen nicht allgemeingültig; das SIP-ALG hat in diversen Szenarien durchaus eine Daseinsberechtigung. In Verbindung mit dem NT/Communication Server ist die Deaktivierung des Fortinet-SIP-ALGs jedoch letztendlich die stabilste Konfiguration.

Haben Sie Fragen zu Lösungen aus dem Hause NETHINKS? Sprechen Sie uns an – wir beraten Sie gern!

Bild: © ahasoft – Fotolia.com

2 Kommentare » Schreiben Sie ein Kommentar

  1. Hallo,
    vielen Dank für die hilfreiche Anleitung. Eine Korrektur:
    set default-voip-alg-mode kernel-helper based
    Dieser Cli Command muss zwischen helper und based auch einen Bindestrich haben sonst kommt eine Fehlermeldung.
    Viele Grüsse Andy

Schreibe einen Kommentar

Benötigte Felder sind mit * markiert.