Dial und Packetfilter von ISDNPM:
ISDNPM bietet die Möglichkeit Paket- und Wählfilter in der Datei "isdnuser.cfg" zu konfigurieren. Diese Konfigurationen werden wie bei ISDNPM üblich bei Programmstart gelesen, sind also nicht dynamisch änderbar.
Generell erfordert dieses Thema gute Kenntnisse des IP Protokolls. Ich gehe hier nur oberflächlich auf die technischen Hintergründe ein. Wer es genau wissen möchte, dem kann ich folgende Bücher empfehlen: »TCP/IP Internet Protokolle im Professionellen Einsatz« Verlag »Thomson Publishing - Datacom« oder »Internet Core Protocols« Verlag »O'Reilly«.
Inhalt:
Wozu braucht man diese Filter? (Top)
Mit einem ensprechendem DialFilter werden solche Pakete von Idletimer ignoriert und ISDNPM legt
nach der definierten Inaktivitätszeit (Parameter TimeOut) tatsächlich auf.
Ein typischer Fall für ein solches Sicherheitsproblem ist das TCPBUI-Protokoll (NetBIOS over IP). Im Gegensatz zum NETBUI (unter OS/2 MPTS Netbios) wird TCPBUI über IP übertragen. So ist es möglich über das Internet auf lokale Lan- oder Peerdaten zuzugreifen.
OS/2 Lan"s und Peer-Netze werden normaler Weise mit NETBUI betrieben und habe folglich dieses Problem nicht. Bei Windows Rechnern wird automatisch mit Installation des IP-Protokolls auch TCPBUI installiert. Wer auf Linux Rechnern Samba installiert hat, verwendet ebenfalls TCPBUI. Soll OS/2 in einem heterogenen Netz mit Linux und Windows betrieben werden, so ist hier ebenfalls das TCPBUI zu installieren.
Wenn nun der OS/2 Rechner in diesem Netz ein ISDNPM Gateway zum Internet ist, so ist es sinnvoll das LAN mit einem entsprechendem Filter vor illegalen Zugriffen aus dem Internet zu schützen.
Ein paar Beispiele für Filter.(Top)
Syntax und Funktionsbeschreibung der ISDNPM Filter:(Top)
--- Muster --- / --- Maske ---
45000000-00000000-0001/F0000000-00000000-00FF
45000000-00000000-0001 <- Muster
----------------------------------------------------------
4 IP - Version
5 Internet Header Length (IHL)
00 Service Type
0000 Total Length
- [dient nur der besseren Lesbarkeit]
0000 Identifikation (Fragmet)
0 Flag
000 Fragment Offset
- [dient nur der besseren Lesbarkeit]
00 Time to Live (TTL)
01 Protocol
----------------------------------------------------------
F0000000-00000000-00FF <- Maske
Es werden alle Werte des Musters die in der Maske mit einem "F" gekennzeichnet sind geprüft. Im Bsp. sind das lediglich "IP-Version" und "Protocol". Der 2. Wert (5 - IHL) wird also nicht ausgewertet - wozu auch, die Headerlänge von IP ändert sich nicht (abgesehen von IPv6).
Hier ein paar wichtige IP-Protokolle:
Protokoll : dezimal-Wert : Hex-Wert
ICMP : 01 : 01
IGMP : 02 : 02
TCP : 06 : 06
UDP : 17 : 11
Weitere Filter können analog diesem Schema erstellt werden. Besonders interessant ist es Ports zu
Filtern, da viele IP-Dienste an bestimmte Portnummern (well known ports) gebunden sind (zumindest per Definition, wer seine eigenen Ports verbiegt und die Filter nicht anpaßt, dem ist eh nicht zu helfen ;-) ).
Ein gutes Beispiel ist TCPBUI (NetBIOS over IP). Diese Protokoll wird von OS/2, Linux-Samba und Windows für LAN's verwendet. Im Gegensatz zum NETBUI kann TCPBUI, da es auf IP basiert, über physische Netzwerke hinweg gerouted werden. Das ist dann gleichzeitg der Nachteil. Das LAN kann von jedem Teilnehmer in IP-Netwerk (faktisch dem gesamten Internet) erreicht werden. Damit sich "bei uns" niemand einschleichen kann bauen wir jetzt einen Filter für TCPBUI.
Im ersten Schritt ermitteln wir welche IP-Ports TCPBUI verwendet. Die Liste der Ports ist in der Datei Boot:\mptn\etc\services hinterlegt. Dort ist nur noch nach der Zeichkette "NETBIOS" zu suchen. In einem OS/2 Fenster sieht das dann z.B. so aus:
[C:\]type c:\mptn\etc\services |find /i "NETBIOS" netbios-ns 137/tcp #NETBIOS Name Service netbios-ns 137/udp #NETBIOS Name Service netbios-dgm 138/tcp #NETBIOS Datagram Service netbios-dgm 138/udp #NETBIOS Datagram Service netbios-ssn 139/tcp #NETBIOS Session Service netbios-ssn 139/udp #NETBIOS Session ServiceDer Aufstellung ist zu entnehmen, daß die Ports 137-139 verwendet werden und das sowohl TCP als auch UDP benuzt wird. Aus den Erfahrungen des ICMP Filters können wir nun schon den ersten Teil der unseres NETBIOS-Filters erstellen. Der Filter muß auf IP-Pakete der Version 4 reagieren und dabei TCP oder UDP berücksichtigen. Nach meinem Wissen kann ISDNPM immer nur ein Muster Filtern. Folglich brauchen wir für TCP und UDP gesonderte Filter. Um alle 3 Ports auf TCP und UDP zu filtern, sind folgerichtig insgesamt 6 Filtereinträge nötig
[C:\]rexxtry say d2x(139) 8B ................................................ REXXTRY.CMD on OS/2Entsprechend ergeben sich folgende hexadezimalen Werte für die dezimalen Ports 137,138,139: 89,9A,9B
45000000-00000000-00060000-00000000-00000000-008B008B Muster
----------------------------------------------------------------------------------
4 IP - Version
5 Internet Header Length (IHL)
00 Service Type
0000 Total Length
-
0000 Identifikation (Fragmet)
0 Flag
000 Fragment Offset
-
00 Time to Live (TTL)
06 Protocol (hier TCP)
0000 IP-Header-Checksum
-
00000000 Source IP Address
-
00000000 Destination IP Address
-
008B Source Port
008B Destination Port (dez. 137)
----------------------------------------------------------------------------------
F0000000-00000000-00FF0000-00000000-00000000-FFFFFFFF Maske
Der vollständige Eintrag des Filters in der "isdnuser.cfg" muß wie folgt aussehen:
PaketFilter : 45000000-00000000-00010000-00000000-00000000-008B008B/F0000000-00000000-00FF0000-00000000-00000000-FFFFFFFFMit diesem Filter werden alle TCP Pakete die den eigenen und fernen Port Nr. 139 verwenden selektiert (source und destination Port muß gleichzeitig 139 sein). Je nach Wunsch und Ziel kann natürlich auch nur der "soure" oder "destination" Port gefiltert werden. In diesem Zusammenhang sei noch einmal auf das FLAG PACKETFILTERIN für Daten-Filter hingewiesen (siehe Punkt Bsp.).