next up previous contents
Next: Formulierung der Terme in Up: Programmierung von Paket-Filtern Previous: Programmierung von Paket-Filtern

Erstellung logischer Terme

Es ist relativ einfach, mit Hilfe von Paket-Filtern Verbindungen zwischen zwei bestimmten Hosts zu erlauben oder auch zu verbieten. Da aber die Sicherheitspolitik es meist erforderlich macht, daß eine genauere Kontrolle ausgeübt wird, werden normalerweise zusätzlich zu den IP-Adressen zumindest noch die Ports sowie das Transportprotokoll überprüft. Auch kann mit Hilfe des ACK-Flags untersucht werden, ob es sich um einen Verbindungsaufbau oder die Fortsetzung einer bestehenden TCP-Verbindung handelt (vgl. Kap. [*]).

Dies soll an einem kleinen Beispiel verdeutlicht werden. Angenommen, man möchte mail von und zu einem bestimmten mailserver innerhalb des Firmennetzes von allen externen Hosts aus erlauben. Jeder andere Verkehr durch den Firewall soll verboten sein. Ein Filter der dies implementiert könnte wie in Tabelle [*] gezeigt aussehen. Bei den folgenden Beispielen wurde jeweils auf eine Angabe des protocol-Feldes verzichtet, um die Tabellen nicht zu unübersichtlich werden zu lassen. Mit Ausnahme der letzten Regel handelt es sich immer um TCP, die letzte Regel sollte für beliebige Protokolle gelten.


 

 
Tabelle: Einsatz des ACK-Flags bei der Filterprogrammierung
Nr. Aktion Source Port Dest. Port Flags Bemerkung
1 allow mailserver * * * * Der mailserver darf beliebige Pakete versenden
2 allow * * mailserver 25 * externe Hosts dürfen nur Verbindungen zum SMTP-Port unseres mailservers aufbauen
3 allow * * mailserver * ACK externen Hosts wird die Fortsetzung beliebiger Verbindungen mit dem mailserver gestattet
4 block * * * * * Alles andere ist verboten


Regel 1 dient dazu, daß der mailserver Verbindungen zu externen Rechnern aufbauen kann. Da auf eine Untersuchung des ACK-Flags verzichtet wird, erlaubt diese Regel gleichzeitig die Fortsetzung bereits bestehender Verbindungen. Regel 2 hingegen erlaubt es externen Rechnern, Kontakt zum mailserver aufzunehmen. Der Verbindungsaufbau wird dabei aber auf Verbindungen zum SMTP-Port (Port 25) beschränkt. Um es den externen Rechnern zu ermöglichen, auf von innen initiierte Verbindungen zu antworten, wurde Regel 3 eingefügt. Sie gestattet jedes Paket, daß an einen beliebigen Port des mailservers gerichtet ist, es sei denn, dieses Paket hat das ACK-Flag nicht gesetzt und dient somit also zum Neuaufbau einer Verbindung. Eine Regel in der Art von Regel 4 sollte grundsätzlich den Schluß der Filterregeln bilden, um alle Pakete, die nicht explizit durch die anderen Filterregeln gestattet werden, zu verwerfen. Da die Regeln in der angegebenen Reihenfolge abgearbeitet werden und abgebrochen wird, wenn eine Regel auf das entsprechende Paket angewandt werden konnte, kommt diese Regel nur dann zum Einsatz, wenn keine andere Regel auf das eingetroffene Paket paßt.

Ein nächstes Beispiel (Tabelle [*]) zeigt, daß es möglich ist, mehrere Rechner zu einer Gruppe zusammenzufassen, um somit nicht für jeden Rechner eigene Regeln aufstellen zu müssen. In diesem Beispiel soll die Behandlung der mail analog zum vorherigen Beispiel erfolgen, während es zusätzlich allen internen Rechnern möglich sein soll, telnet-Verbindungen zu externen Rechnern aufzubauen.


 

 
Tabelle: Zusammenfassen mehrerer Rechner zu einer Gruppe
Nr. Aktion Source Port Dest. Port Flags. Bemerkung
1 allow mailserver * * * * Der mailserver darf beliebige Pakete versenden
2 allow * * mailserver 25 * externe Rechner dürfen
              Verbindungen zum mail-
              Port unseres mailservers aufbauen
3 allow * * {our hosts} * ACK externen Rechnern ist die Fortsetzung bereits bestehender Verbindungen zu allen internen Rechnern erlaubt
4 allow {our hosts} * * 23 * interne Rechner dürfen telnet-Verbindungen zu
              beliebigen Rechnern auf-
              bauen
5 block * * * * * Alles andere ist verboten


Die Regel 1 und 2 erfüllen in diesem Beispiel die gleichen Aufgaben wie im vorhergehenden. Regel 3 wurde dahingehend abgeändert, daß nun externe Hosts Verbindungen, die von beliebigen internen Rechnern initiiert wurden, fortsetzen können. Dies schließt natürlich insbesondere den mailserver mit ein. Um telnet-Verbindungen von innen nach außen zu erlauben, wurde Regel 4 eingefügt. Sie erlaubt es allen internen Rechnern, Verbindungen zu Port 23 eines beliebigen Rechners aufzubauen. Die Fortsetzung dieser Verbindungen durch den externen Rechner erfolgt dann wiederum mit Hilfe von Regel 3. Hierbei ist allerdings zu beachten, daß man sich nicht darauf verlassen kann, daß auf einem externen Rechner Port 23 für den telnet-server verwendet wird. Dies ist zwar der well-known port für telnet, eine Garantie hierfür besteht aber nicht. Regel 5 sorgt wieder dafür, daß keine Pakete den Filter passieren können, die nicht ausdrücklich dazu berechtigt wurden.

Ebenso wie es möglich ist, Gruppen von Hosts zu bilden, mit deren Hilfe sich einfachere Regeln aufstellen lassen, kann man ganze Portbereiche zulassen oder ausschließen, ohne für jeden Port eine eigene Regel verwenden zu müssen. Das in Tabelle [*] dargestellte Beispiel soll dies verdeutlichen.


 

 
Tabelle: Zulassen bzw. Ausschließen ganzer Portbereiche
Nr. Aktion Source Port Dest. Port Flags Bemerkung
1 allow * * {out hosts} * ACK Externe Hosts dür-
              fen bestehende Verbindungen fortsetz-
              en
2 allow {our hosts} * * * * Interne Hosts dür-
              fen Verbindungen
              auch initiieren
3 block * * {our hosts} 6000-6100 * Hier sind die X-Server angesiedelt
4 allow * * {our hosts} $\ge$1024 * Verbindungen zu nicht-privilegierten
              Ports sind erlaubt
5 block * * * * * Alles andere ist verboten


Mit Hilfe von Regel 1 und 2 wird es wieder allen internen Hosts ermöglicht, Verbindungen aufzubauen, auf die alle externen Hosts antworten können. Da die Regeln in der Reihenfolge abgearbeitet werden, in der sie aufgeschrieben wurden, wurde die Regel, die vermutlich am häufigsten zutrifft, an den Anfang gesetzt. Dies führt zu einer Verbesserung der Performance, da weniger Regeln untersucht werden müssen, ist aber auch gefährlich, da gewisse Abhängigkeiten zwischen den Regeln bestehen können, so daß die Reihenfolge nicht unbedingt geändert werden kann. Regel 4 erlaubt es externen Hosts, Verbindungen zu Ports im nicht-privilegierten Bereich aufzubauen. Dies kann zum Beispiel bei FTP-Verbindungen notwendig sein, da hierbei der server einen Datenkanal zum client auf einem nicht-privilegierten Port eröffnet. Da aber auch im nicht-privilegierten Bereich einige wichtige server angesiedelt sein können, werden vor diese Regel noch weitere Regeln gesetzt, die diese Ports ausdrücklich ausschließen. Im Beispiel wurde mit Hilfe der Regel 3 der ganze Bereich ausgeschlossen, in dem X-server angesiedelt sein können. Da die Regeln der Reihe nach abgearbeitet werden, wird Regel 4 gar nicht mehr beachtet, wenn Regel 3 bereits zutrifft. Regel 5 blockt wie üblich alle Pakete ab, auf die keine andere Regel zutrifft.

Weiterhin von Bedeutung ist die Möglichkeit, das Interface festzulegen, auf dem ein Paket von einem bestimmten Host eintreffen muß. Eine beliebte Angriffsmethode ist es, als Absender eine Adresse des internen Netzes anzugeben, auch wenn das Paket aus dem externen Netz stammt. Legt man nun fest, daß Pakete aus dem firmeneigenen Netz nur an einem bestimmten Interface erscheinen können, so können solche Versuche unterbunden werden (siehe Abbildung [*]/Tabelle [*]).


  
Abbildung: Paket-Filter mit Unterscheidung des empfangenden Interfaces
\begin{figure}
 \begin{center}
 \leavevmode \epsfysize=3cm \epsffile{filterabb5.eps}
 \end{center}\end{figure}


 

 
Tabelle: Unterscheidung nach dem empfangenden Interface
Nr. Aktion Source Port Dest. Port Interface Bemerkung
1 block {our hosts} * * * Interface1 Alle Pakete, die als Absender einen internen Host haben aber auf Interface 1 eintreffen sind verboten


Die Regel sorgt dafür, daß jedes Paket, dessen Absenderadresse einen Host des internen Netzes bezeichnet, verworfen wird, sofern es an Interface 1, also dem Interface zum externen Netz ankommt.


next up previous contents
Next: Formulierung der Terme in Up: Programmierung von Paket-Filtern Previous: Programmierung von Paket-Filtern
Root on HPHEGER0
8/28/1998