H.323 Firewall-Proxy. H323_Firewall-Proxy_Sna02_V01.doc 19.05.00 16:01



Ähnliche Dokumente
ICS-Addin. Benutzerhandbuch. Version: 1.0

Installation Hardlockserver-Dongle

Folgende Einstellungen sind notwendig, damit die Kommunikation zwischen Server und Client funktioniert:

Konfiguration VLAN's. Konfiguration VLAN's IACBOX.COM. Version Deutsch

OP-LOG

Step by Step Webserver unter Windows Server von Christian Bartl

Tutorial -

Grundlagen Firewall und NAT

Anleitung zur Nutzung des SharePort Utility

Lexware professional und premium setzen bis einschließlich Version 2012 den Sybase SQL-Datenbankserver

Kommunikations-Parameter

Leitfaden zur ersten Nutzung der R FOM Portable-Version für Windows (Version 1.0)

Mitarbeiter-Alarm. 1x Taster mit Kabel zum Anschluss an den seriellen Com-Port (optional) 1x Installationsprogramm auf CD 1x Lizenz

Powermanager Server- Client- Installation

Installationsleitfaden zum Fakturierungsprogramm

Neue Steuererklärung 2013 erstellen

Lizenzen auschecken. Was ist zu tun?

Wissenswertes über LiveUpdate

Artikel Schnittstelle über CSV

Dokumentation IBIS Monitor

Installationsanleitung für pcvisit Server (pcvisit 12.0)

How to install freesshd

Printserver und die Einrichtung von TCP/IP oder LPR Ports

Datensicherung. Beschreibung der Datensicherung

2. Die eigenen Benutzerdaten aus orgamax müssen bekannt sein

Ablaufbeschreibung für das neu Aufsetzen von Firebird und Interbase Datenbanken mit der IBOConsole

Konfigurationsanleitung Access Control Lists (ACL) Funkwerk. Copyright Stefan Dahler Oktober 2008 Version 1.0.

MSXFORUM - Exchange Server 2003 > Konfiguration NNTP unter Exchange 2003

FrogSure Installation und Konfiguration

Netzwerk-Migration. Netzwerk-Migration IACBOX.COM. Version Deutsch

Tapps mit XP-Mode unter Windows 7 64 bit (V2.0)

Handbuch PCI Treiber-Installation

Netzwerk einrichten unter Windows

Anleitung zur Daten zur Datensicherung und Datenrücksicherung. Datensicherung

AUTOMATISCHE -ARCHIVIERUNG. 10/07/28 BMD Systemhaus GmbH, Steyr Vervielfältigung bedarf der ausdrücklichen Genehmigung durch BMD!

Firmware-Update, CAPI Update

2 Die Terminaldienste Prüfungsanforderungen von Microsoft: Lernziele:

EchoLink und Windows XP SP2

Internet Security 2009W Protokoll Firewall

INSTALLATION VON INSTANTRAILS 1.7

Live Update (Auto Update)

Installation Linux agorum core Version 6.4.5

Inhalt. 1 Einleitung AUTOMATISCHE DATENSICHERUNG AUF EINEN CLOUDSPEICHER

Installation und Inbetriebnahme von Microsoft Visual C Express

Informationen zur Verwendung von Visual Studio und cmake

Virtual Channel installieren

Firewalls für Lexware Info Service konfigurieren

Workshop: Eigenes Image ohne VMware-Programme erstellen

Diese Anleitung erläutert die Einrichtung des Active Directory Modus im DNS-343.

Er musste so eingerichtet werden, dass das D-Laufwerk auf das E-Laufwerk gespiegelt

Adminer: Installationsanleitung

ACHTUNG: Es können gpx-dateien und mit dem GP7 aufgezeichnete trc-dateien umgewandelt werden.

Eine Einführung in die Installation und Nutzung von cygwin

Installationsanleitung OpenVPN

Wählen Sie bitte START EINSTELLUNGEN SYSTEMSTEUERUNG VERWALTUNG und Sie erhalten unter Windows 2000 die folgende Darstellung:

Einrichtung des Cisco VPN Clients (IPSEC) in Windows7

! " # $ " % & Nicki Wruck worldwidewruck

Firewalling. Michael Mayer IAV0608 Seite 1 von 6

Über die Internetseite Hier werden unter Download/aktuelle Versionen die verschiedenen Module als zip-dateien bereitgestellt.

How-to: Webserver NAT. Securepoint Security System Version 2007nx

Backup der Progress Datenbank

FuxMedia Programm im Netzwerk einrichten am Beispiel von Windows 7

Eprog Starthilfe. 5. Oktober Einleitung 2

(Hinweis: Dieses ist eine Beispielanleitung anhand vom T-Sinus 154 Komfort, T-Sinus 154 DSL/DSL Basic (SE) ist identisch)

Swisscom TV Medien Assistent

- Zweimal Wöchentlich - Windows Update ausführen - Live Update im Norton Antivirusprogramm ausführen

ADSL-Verbindungen über PPtP (Mac OS X 10.1)

Drägerware.ZMS/FLORIX Hessen

ftp://ftp.dlink.de/dpr/dpr-1061/documentation/dpr-1061%20printer%20compatible%20list.pdf

Firewalls für Lexware Info Service konfigurieren

Neue Schriftarten installieren

Step by Step VPN unter Windows Server von Christian Bartl

Advoware mit VPN Zugriff lokaler Server / PC auf externe Datenbank

Internet online Update (Internet Explorer)

INFORMATION MONITOR HSM SOFTWARE GMBH CLIENT-INSTALLATION

Wichtige Hinweise zu den neuen Orientierungshilfen der Architekten-/Objektplanerverträge

ecaros-update 8.2 Update 8.2 procar informatik AG 1 Stand: DP 02/2014 Eschenweg Weiterstadt

Windows Vista Security

mysql - Clients MySQL - Abfragen eine serverbasierenden Datenbank

Installation OMNIKEY 3121 USB

Installationshandbuch. Software Version 3.0

Windows 98 / Windows NT mit NCP WAN Miniport-Treiber 23. Oktober 1998

ANYWHERE Zugriff von externen Arbeitsplätzen

Qt-Projekte mit Visual Studio 2005

Virtual Private Network

Installationsanleitung für CashPro im Mehrbenutzerzugriff/Netzwerkbetrieb

.htaccess HOWTO. zum Schutz von Dateien und Verzeichnissen mittels Passwortabfrage

Ein Hinweis vorab: Mailkonfiguration am Beispiel von Thunderbird

Klicken Sie mit einem Doppelklick auf das Symbol Arbeitsplatz auf Ihrem Desktop. Es öffnet sich das folgende Fenster.

Nutzung von GiS BasePac 8 im Netzwerk

Benutzung der Avid Liquid Edition Schnittplätze an der Universität Innsbruck

mit ssh auf Router connecten

Hex Datei mit Atmel Studio 6 erstellen

Installationsanleitung für pcvisit Server (pcvisit 15.0)

CDRServer 2011 / Installationsanleitung Step-by-Step. elcom

Bei der Installation folgen Sie den Anweisungen des Installations- Assistenten.

OpenVPN unter Linux mit KVpnc Stand: 16. Mai 2013

Transkript:

H.323 Firewall-Proxy Projektarbeit SS2000 Sna02 Fach Kommunikationssysteme (KSy) Dozent: Dr. Andreas Steffen Studierende: Roman Buser (IT3a), Michael Stolz (IT3a) Termin: 14.3. 19.5.2000 Labor: E523 Arbeitsplätze: KSY007, KSY008, KSY123 H323_Firewall-Proxy_Sna02_V01.doc 19.05.00 16:01

Inhalt 1. ZUSAMMENFASSUNG 3 ABSTRACT 3 2. AUFGABENSTELLUNG SNA02 4 3. EINLEITUNG 6 AUSGANGSSITUATION 6 ÜBERBLICK H.323 7 INFRASTRUKTUR 7 DER LINUX FIREWALL (IPCHAINS) 8 4. ANALYSE 9 PROXY-SERVER VERSUS DYNAMISCHES FIREWALLING 9 LAUSCHANGRIFF 9 FIREWALL NETLINK DEVICE 9 H.323-ANALYSE 9 5. DESIGN 10 6. IMPLEMENTATION 11 7. TEST 12 TESTANORDNUNG 12 TESTABLAUF 12 TESTRESULTATE 12 8. INSTALLATION 13 9. SCHLUSSWORT 14 10. ANHÄNGE 15 VERZEICHNIS DER DATEIEN AUF DER CDROM 15 LITERATURVERZEICHNIS 15 LOGFILES 15 SOURCECODE 16 2

1. Zusammenfassung Wir haben eine Firewallerweiterung geschrieben, die es ermöglicht, eine H.323 Verbindung durch einen Firewall hindurch zu benutzen, ohne das sämtliche Ports offen sein müssen. Da erst während der Verbindung vereinbart wird, welche Ports verwendet werden, ist das normalerweise nicht möglich. Um das zu erreichen überwachen wir den Verkehr auf den Verbindungen und geben bei Bedarf weitere Ports im Firewall frei. Zur Zeit werden noch nicht alle verwendeten Ports überwacht, sondern nur jener, auf dem die Verbindung initialisiert wird. Das zeigt aber bereits, dass unser Ansatz funktioniert. Abstract We implemented a firewall extension making it possible to use an H.323 connection through a firewall without opening every port. An ongoing connection will negotiate which ports are going to be used. A traditional firewall cant cope with this behaviour. Therefore we monitor traffic on the connections and open further firewall ports if needed. Until now we do not monitor all used ports, but only the one which is used to initialise the connection. This alone shows that our approach is a working solution. 3

2. Aufgabenstellung Sna02 Kommunikationssysteme (KSy) Projektarbeiten SS 2000 - Sna02 H.323 Firewall-Proxy Studierende: Roman Buser, IT3a Michael Stolz, IT3a Termine: Ausgabe: Dienstag, 14.03.2000 10:00-11:00 im E509 Abgabe: Freitag, 19.05.2000 Beschreibung: H.323 basierte Multimediaanwendungen, wie zum Beispiel Microsoft Netmeeting, vertragen sich schlecht mit sicheren Firewalls, da im Verlauf der Kommunikation dynamisch eine ganze Anzahl von im voraus unbekannten UDP und TCP Ports für die Übertragung von Audio/Video-Kanälen, respektive Anwenderdaten geöffnet werden müssen. In dieser Arbeit soll auf der Basis des Open H.323 Stacks ein Firewall-Proxy erstellt werden, der das Q.931 Call Setup Protokoll auf dem TCP-Port 1720, sowie das anschliessende H.245 Control Protokoll analysiert und die darüber ausgehandelten Multimedia Ports für die Dauer der Kommunikation im Firewall öffnet und nachher wieder schliesst. Alle zu einer H.323 Verbindung gehörenden IP-Pakete sollen durch den Firewall unverändert durchgeschalten werden, d.h. IP Masquerading ist im Rahmen dieser Arbeit nicht vorgesehen. Jede Verbindung soll in einem Logfile protokolliert werden. Aufgaben: Einarbeiten in den Open H.323 Source Code Einarbeiten in die Linux 2.2.x Firewall Regeln basierend auf ipchains Erstellen einer kurzen Software-Spezifikation für das H.323 Proxy-Modul Codieren des H.323 Proxy-Moduls unter Linux (GNU C++ Compiler / Debugger) Austesten des H.323 Proxy-Moduls mit folgenden Konstellationen: Netmeeting - Netmeeting (Direct Mode) Netmeeting - Netmeeting oder Hicom Xpress (via RADVision Gatekeeper) Netmeeting - RADVision ISDN Gateway (via RADVision Gatekeeper) Dokumentation der Projektarbeit Infrastruktur / Tools: Raum: E523 Rechner: 3 PCs mit Dual-Boot: SuSE Linux 6.3 / Windows NT 4.0 Telefone: 1 ISDN-Telefon VoIP: RADVision L2W-323 Gateway / Gatekeeper, MS Netmeeting 3.01 SW-Tools: GNU C++ Compiler / Debugger, Open H.323 Source Code Literatur / Links: Open H.323 Website: http://www.de.openh323.org Open H.323 Mailing List: 4

http://www.de.openh323.org/list.html Open H.323 Tips zur Installation http://fbi.zhwin.ch/pa/openh323tips.txt ITU-T Recommendation H.323 Packet-Based Multimedia Communications Systems ITU-T Recommendation H.225.0 Call Signalling Protocols and Media Stream Packetization ITU-T Recommendation H.245 Control Protocol for Multimedia Communication ITU-T Recommendation X.680 Abstract Syntax Notation One (ASN.1): Specification of Basic Notation ITU-T Recommendation X.691 ASN.1 Encoding Rules: Specification of Packed Encoding Rules (PER) Linux Firewall and Proxy Server HOWTO http://metalab.unc.edu/mdw/howto/firewall-howto.html Linux Ipchains HOWTO http://www.rustcorp.com/linux/ipchains/howto.html Linux IP Masquerade HOWTO http://members.home.net/ipmasq/ipmasq-howto-1.82.html IP_Masq Module für Netmeeting 2 und Linux 2.0.x Kernel http://members.home.net/ipmasq/patches/ip_masq_h3231.c.tgz 12.3.2000 by Andreas Steffen PA 2000 5

3. Einleitung Ausgangssituation Stellen wir uns folgende Situation vor: Ein Betrieb hat ein geschütztes Intranet, das durch einen Firewall vom Internet getrennt wird. Um eine maximale Sicherheit vor Attacken aus dem Internet zu gewährleisten, schliesst der Firewall-Administrator alle nicht für ein spezifisches Protokoll notwendigen Ports und öffnet nur jene, für die ein Benutzer berechtigten Nutzen anmeldet. Probleme ergeben sich bei dieser Konfiguration sobald eine Anwendung verwendet werden soll, die im Betrieb dynamisch neue Ports verwendet, welche zwischen den Beteiligten Kommunikationspartnern ausgehandelt werden. Zum Beispiel H.323-Clients wie NetMeeting und Voxilla fallen in diese Kategorie. An dieser Stelle setzt unsere Projektarbeit an: Der Firewall soll sich automatisch so rekonfigurieren, dass H.323-Verbindungen möglich werden. NetMeeting-Client IP-Phone NetMeeting-Client Voxilla-Client Ethernet Internet Router Linux-Firewall H.323-Client 6

Überblick H.323 Um was es bei H.323 geht kann in [6] nachgelesen werden. Wie es genau funktioniert steht in [7]. Im folgenden gehe ich nur auf den Ablauf einer Verbindung ein. Signalling Channel Q.931 (TCP) Connect (Portnummer des Control Channels) Control Channel H.245 (TCP) open Logical Channel (Portnummer des Logical Channel) Logical Channel G.7xx; H.26x (UDP) T.120 (TCP) Ein Anruf erfolgt auf dem Signalling Channel, der auf TCP-Port 1720 ist. Er kann von einem beliebigen Port aus erfolgen. Wenn der Anruf angenommen wird, folgt die Vereinbarung der Portnummer des Control Channels, in dem diese Verbindung verwaltet wird. Dabei wird nur der Port des Angerufenen bestimmt. Der Port des Anrufers ist einfach eins nach dem Signalling Channel (ein Beispiel ist im Kapitel Testresultate). Im Control Channel wiederum werden die Portnummern sämtlicher benötigter Logical Channels vereinbart, wenn diese geöffnet werden. Wenn ein Logical Channel nicht mehr gebraucht wird, wird er hier auch wieder geschlossen. Die Daten im Signalling und Control Channel werden nach ASN.1 [10] codiert. Was innerhalb der Logical Channels abläuft, ist für diese Projektarbeit uninteressant. Infrastruktur Es standen uns drei PC-Arbeitsplätze im KSy-Labor mit folgender Konfiguration zur Verfügung. KSY007, KSY008: Hardware: Pentium III (450Mhz), 128MB RAM Siemens Multimedia-Keyboard 2 Ethernet-Karten (Digital DE500) Software: Windows NT 4.0 auf interner SCSI-Disk SuSE Linux 6.3 auf Wechselharddisk Netmeeting 2.11 Open H.323 Project [12] KSY123: Hardware: Pentium III (550Mhz), 128MB RAM 2 Ethernet-Karten (3Com 3c905C) Software: Windows NT 4.0 auf interner SCSI-Disk SuSE Linux 6.3 auf Wechselharddisk Kernel 2.2.13 (mit IP Chains Firewall und Firewall Netlink Device) 7

Der Linux Firewall (ipchains) Der Linux-Kernel kann mit Unterstützung für einen Packet-Filtering-Firewall kompiliert werden. In Version 2.2 des Kernels nennt sich dieser Firewall IP Firewall Chains oder kurz ipchains. Der Pfad, den ein Paket beim Passieren des Firewalls durchläuft, ist recht kompliziert: Checksum WRONG DENY OK Sanity WRONG DENY OK input Chain DENY/REJECT ACCEPT/REDIRECT Demasquerade lo interface Local Process Routing Decision forward Chain DENY/REJECT output Chain DENY/REJECT ACCEPT Es existieren 3 eingebaute Chains (input, forward, output), welche das Paket durchlaufen muss. Innerhalb jeder Chain wird anhand von Regeln (rules) entschieden, zu welchem Ziel (target) ein Paket als nächstes befördert wird. Sechs Ziele (ACCEPT, REJECT, DENY, MASQ, REDIRECT, RETURN) sind vordefiniert, es kann aber auch eine benutzerdefinierte Chain erzeugt und als Ziel angegeben werden. Die genaue Funktionsweise der ipchains kann in [1] nachgelesen werden. 8

4. Analyse Der Titel der Projektarbeit ist leider etwas verwirrend. Aus der Aufgabenstellung geht hervor, dass kein eigentlicher Proxy-Server zu realisieren ist, sondern eine Art dynamisches Firewalling. Proxy-Server versus dynamisches Firewalling Ein richtiger H.323 Proxy-Server tritt gegenüber den beiden kommunizierenden Clients als ihr Kommunikationspartner auf und stellt intern die Verbindung zwischen den beiden her. Damit das funktioniert, muss allerdings ein grosser Aufwand betrieben werden: Analyse des gesamten Verkehrs auf allen beteiligten Channels, Anpassen der IP-Adressen und Portnummern in diesen Datenströmen, Weiterreichen der Daten. Somit stellt ein Proxy-Server im Grunde genommen 2 komplette Clients dar. Einen richtigen Proxy-Server zu schreiben, wäre also zu aufwändig für eine 7-wöchige Projektarbeit. Unter dynamischem Firewalling mit H.323-Unterstüzung verstehen wir hingegen die Fähigkeit des Firewall, über ihn laufende H.323-Verbindungen zu analysieren und sich so zu rekonfigurieren, dass von den H.323- Clients neu vereinbarte Channels auf den entsprechenden TCP- resp. UDP-Ports freigegeben werden. Im Gegensatz dazu wird ein konventioneller Firewall von der Systemadministratorin aufgesetzt und ändert ohne ihr Zutun seine Konfiguration nicht. Recherchen im WWW ergaben, dass auch andernorts auf diesem Gebiet entwickelt wird [2][3]. Lauschangriff Als erstes stellt sich die Frage, wie sich das Q.931 Call Setup Protokoll auf Port 1720 mitverfolgen lässt. Offensichtlich der einzige Punkt, an dem angesetzt werden kann, ist der Linux-Firewall. Nur dort sind die Pakete zugänglich, welche den Firewall-Server passieren sollen. Die naheliegendste Lösung wäre also, ein Firewallmodul zu schreiben, welches die gewünschte Funktionalität bietet, wie es beispielsweise für den Kernel 2.0 existiert [4]. Dieses Modul müsste den hohen Anforderungen genügen, die an Kernelcode gestellt werden. Die Verwendung des umfangreichen, in C++ geschriebenen, Open H.323 Stacks würde damit wohl unmöglich werden. Firewall Netlink Device Eine zweite Möglichkeit ergibt sich durch die Firewalloption CONFIG_IP_FIREWALL_NETLINK: Man kann dann eine Firewallrule (Option o von ipchains) erzeugen, welche die übereinstimmenden Pakete auf ein spezielles Character Device (firewall netlink device) kopiert. Dort kann ein Programm aus dem Userspace auf die Pakete zugreifen. Nach der Analyse/Überprüfung der Pakete können diese mittels Ethertap Device (/dev/tap0) wieder in den Kernel eingespiesen werden. Dieses Device wird mit der Kerneloption CONFIG_ETHERTAP aktiviert. Die Library libfw-0.2 stellt ein Interface mit dieser Funktionalität zur Verfügung. Dadurch wird der Programmierer von der Verwendung der oben genannten Devices verschont. Diese Lösung hat zudem den Vorteil der Zukunftssicherheit, da aller Voraussicht nach im Kernel 2.4 eine ähnliche Funktion enthalten sein wird [5]. H.323-Analyse Um die so erhaltenen Pakete zu analysieren, greifen wir auf das Open H.323 Project [12] zurück. Es stellt einen H.323-Stack zur Verfügung. Dieser hat Funktionen, welche die ASN.1 [10] Struktur in eine C++ Klassenstruktur abbilden. Darin werden die Meldungen auf dem Signalling und Control Channel (definiert in [8][9]) übertragen. Wie diese Struktur verwendet wird, kann dem Testprogramm DumpH323 entnommen werden, welches auch zu [12] gehört (dump323/main.cxx). Um mit den ASN.1 Daten umzugehen, benötigen wir auch noch die PWLib [13], welche die ASN.1 Typen definiert. Die Meldungen sind in einzelne TPKTs [11] eingepackt und werden in einem TCP-Stream übertragen. TPKTs geben dem TCP-Stream eine Paketstruktur. Dadurch kann das Ende einer Meldung problemlos erkannt und die Analyse des Inhaltes gestartet werden. 9

5. Design Unser Programm hat folgende Struktur: SigChAnalyser sigchdemux() UUConn addforward() addbackward() x x LogCh Firewall addtcprule() deltcprule() addudprule() deludprule() addlistenrule() dellistenrule() 2 CtrCh ctrchanalyse() H323fwadm ( H323 Firewall Administration ): - Wrapper-class für die Funktionen der libfw-0.2. - Es können Rules gesetzt und gelöscht werden. Das wird von allen Channel Objekten gemacht. - Wenn die Rules neue Daten liefern, werden Callback-Funktionen der Channel Objekte aufgerufen. - Sollte als Singleton implementiert werden SigChAnalyser ( Signalling Channel Analyser ): - Gibt die Nutzdaten der Pakete vom Signalling Channel an das richtige UUConn Objekt weiter. Welches das ist, wird anhand der Sender- und Empfänger-IP-Adresse bestimmt. Falls es noch nicht existiert, wird es erzeugt. - Verwaltet die Rules des Signalling Channels (beide Richtungen; mehrere Verbindungen) UUConn ( User to User Connection ): - Für jede Verbindung die über den Firewall geht, existiert ein Objekt dieser Klasse. Es analysiert die Daten vom SigChAnalyser und erstellt wenn gefordert die zwei zugehörigen CtrCh Objekte. Für jede Richtung eines. - Verwaltet eine Liste mit den Logical Channel Objekten CtrCh ( Control Channel ): - Sammelt und analysiert die Daten des Control Channels. Es erhält nur die Daten einer Richtung. Die Daten erhält es vom H323fwadm. Wenn gefordert werden die LogCh Objekte erstellt oder gelöscht. - Verwaltet die Rule eines Control Channel (eine Richtung) LogCh ( Logical Channel ): - Verwaltet nur die Rules eines Logical Channel (beide Richtungen). Sonst passiert hier nichts. Um diese Klassenorganisation zu verwenden, wird zuerst je ein Objekt der Klasse H323fwadm und SigChAnalyser erzeugt. Letzteres erzeugt dann die weiteren Objekte. 10

6. Implementation Die Analyse der Pakete erfolgt mit Funktionen aus dem Open H.323 Project [12]. Verwendet werden die Klassen q931, h225, h245. Des weiteren greifen wir auf die Pwlib [13] zurück. Diese stellt diverse Containerklassen und die ASN.1 Typen zur Verfügung. Im momentanen Stand des Projektes wird nur der Signalling Channel überwacht. Da H323fwadm auf einer C- Library (libfw-0.2) basiert, konnten die Callback-functions nicht als Klassen-Memberfunctions ausgeführt werden. Deshalb ist die Callback-function des SigChAnalysers als friend-function implementiert. Das dient nur zu Demonstrationszwecken. In einer weiteren Version muss eine Object-Verwaltung integriert werden, damit die Callback-functions Member-functions sein können. Am besten wäre es den Code der ipchains Library anzupassen (fwinterface.c). Der Code zur Analyse des Control Channel ist bereits vorhanden und getestet, wird aber momentan nicht benutzt. Die Portnummer des Control Channels wird in den Meldungen setup, connect, alerting und facility gesucht. Die Portnummern der Logical Channels werden vorerst nur aus der open Logical Channel Meldung gelesen. Bei Bedarf müssen weitere Meldungen analysiert werden. Die vollständigen ASN.1 Spezifikationen dieser Meldungen sind in [8] und [9]. Wenn jetzt H323fwadm ein neues Paket an einen Channel übergibt, überprüft dieser zuerst ob ein ganzes TPKT [11] vorliegt. Sobald das der Fall ist, werden die darin enthaltenen Daten ausgewertet und anschliessend gelöscht (Das löschen ist noch nicht implementiert). 11

7. Test Testanordnung 160.85.21.0 /255.255.255.0 eth1 eth0 160.85.128.0 /255.255.240.0 Voxilla-Client KSY007 Linux-Firewall KSY123 NetMeeting-Client KSY008 Die Routingtables der beteiligten PCs werden so konfiguriert, dass aller Verkehr von KSY008 zu KSY007 und umgekehrt über KSY123 laufen muss. Auf KSY123 kommen die Daten jeweils auf dem einem Netzwerkinterface hinein und verlassen KSY123 auf dem Anderen. Somit muss der Firewall gezwungenermassen passiert werden. Testablauf 1. Starten unserer Firewall-Extension ( analyse > analyse.log 2>&1 ) 2. Anruf von Netmeeting zu Voxilla 3. Anruf annehmen 4. Verbindung in Voxilla beenden. 5. Anruf von Netmeeting zu Voxilla 6. Anruf ablehnen Testresultate Die Ausgaben vom Firewall wurden in der Datei analyse.log abgelegt. Sie enthält den gesamten Verkehr des Signalling Channels. Entscheidend ist jedoch nur Zeile 277: Analyse.log(277): H245 Port : 1034 # Das ist der eine Port der für den Control Channel verwendet wird. Der andere entspricht der Portnummer des Signalling Channels plus eins. In unserem Fall 1405+1 = 1406. Diese Nummer wird noch nicht aus den Daten extrahiert. Wir sehen, dass die Firewall-Extension sämtliche Anrufe, die durch den Firewall erfolgen, erkennen und analysieren kann. Damit ist das erste Ziel unserer Arbeit erfüllt. Der gefundene Control Channel könnte nun auf analoge Weise behandelt werden. 12

8. Installation a) Als erstes muss ein geeigneter Kernel kompiliert werden, da der bei SuSE 6.3 mitgelieferte modulare Kernel kein Firewall Netlink Device beinhaltet. Es müssen die folgenden Optionen gesetzt werden: CONFIG_FIREWALL=y CONFIG_IP_FIREWALL=y CONFIG_IP_FIREWALL_NETLINK=y CONFIG_ETHERTAP=y Wie man den Linux-Kernel kompiliert, ist in [14] detailliert beschrieben. b) Danach muss das Firewall Netlink Device im /dev-verzeichnis angelegt werden: mknod m 600 /dev/fwmonitor c 36 3 c) Als nächstes werden die Dateien unserer Projektarbeit in einem frei wählbaren Verzeichnis ausgepackt (z.b. ~/src): cd ~/src tar xvif /cdrom/h323fwext_0.1.tar.bz2 d) Der Pfad muss in der Datei ~/src/analyzer/setpath folgendermassen angepasst werden: FWEXT_ROOT_PATH=~/src e) Pfad setzen:. analyzer/setpath f) Programm starten: analyzer/analyse g) Das Programm kann mit cd analyzer; make neu compiliert werden, falls gewünscht (Achtung: dauert etwas) 13

9. Schlusswort Die vorliegende Version unseres Programms überwacht erst den Signalling Channel. Der ganze Verkehr darin wird ausgegeben. Die Portnummern werden herausgefiltert und nochmals separat ausgegeben. Die übrigen Channels werden weder überwacht, noch werden die benötigten Ports geöffnet. Der Hauptgrund für den geringen Funktionsumfang liegt an der grossen Einarbeitungszeit in die vorhandenen Sourcecodes, die wir benötigten. Deren Dokumentation reicht von knapp bis nicht existent. Das Open H.323 Projekt ist sehr umfangreich und man muss zuerst herausfinden, welchen Teil davon man braucht. Die Verbindung von C und C++ war auch nicht problemlos. So ist momentan noch nicht entschieden, wie die Callback-functions von der C-Library aus aufgerufen werden sollen. Auch das linken bereitet Probleme. Es ist zwingend erforderlich, dass in der Kommandozeile zuerst die Objectfiles und dann die Libraryfiles aufgeführt werden. Wenn die Libraryfiles voneinander abhängen, ist auch hier die Reihenfolge entscheidend. In einer Fortsetzung gibt es also noch viel zu tun. ##### ####### # # # #" #" # ##vvvvv## ## vvv ## # ## ## ## ### ### +++##### ##++ ++++++# #++++++ +++++++# #+++++++ +++++#######+++++ +++ +++ 14

10. Anhänge Verzeichnis der Dateien auf CDROM H323_Firewall-Proxy_Sna02_V01.doc Projektdokumentation H323fwext_0.1.tar.bz2 Sourcecode- und Binaries-Archiv des gesamten H323fwext-Projekts (im bzip2-tar-format) H323fwadm-dev.tar.bz2 Sourcecode- und Binaries-Archiv des H323fwadm-Teils (im bzip2-tar-format)./archiv Diverse tar-archive zu den Themen H.323 und Firewalls: u.a. ipchains, tcpdump, libfw-0.2, Open H.323 Stack, pwlib Literaturverzeichnis [1] Linux IPCHAINS-HOWTO, v1.0.7, March 1999, Paul Russell. http://www.linuxdoc.org/howto/ipchains-howto.html [2] SPF: Stateful Packet Filtering. ftp://ftp.interlinx.bc.ca/pub/spf [3] THE SINUS FIREWALL PAGE. http://www.ifi.unizh.ch/ikm/sinus/firewall/ [4] IP Masq module for Net Meeting 2. http://members.home.net/ipmasq/patches/ip_masq_h3231.c.tgz [5] The Netfilter Project: Packet Mangling for Linux 2.3+ http://antarctica.penguincomputing.com/~netfilter/ [6] A Primer on the H.323 Series Standard http://www.databeam.com/standards/index.html [7] ITU-T Recommendation H.323: Packet-Based Multimedia Communications Systems [8] ITU-T Recommendation H.225.0: Call Signalling Protocols and Media stream Packetization [9] ITU-T Recommendation H.245: Control Protocol for Multimedia Communication [10] ITU-T Recommendation X.680: Abstract Syntax Notation One (ASN.1). Specification of Basic Notation [11] RFC 1006 ISO Transport Service on top of the TCP [12] The Open H.323 Project http://www.openh323.org [13] Portable Windows Library http://www.equival.net/pwlib/ [14] The Linux Kernel HOWTO http://www.linuxdoc.org/howto/kernel-howto.html Logfiles./analyzer/analyse.log 15

Sourcecode./analyzer/include crtch.h H323fwadm.h logch.h sigchanalyser.h tcpstream.h uuconn.h fwinterface.hpp./analyzer/src crtch.cxx H323fwadm.cxx logch.cxx main.cxx sigchanalyser.cxx tcpstream.cxx uuconn.cxx 16