referat interpretation charakterisierung

REFERAT-Menü

Deutsch
Geographie
Geschichte
Chemie
Biographien
Elektronik
Englisch
Epochen
Französisch
Biologie
Informatik
Italienisch
Kunst
Latein
Literatur
Mathematik
Musik
Philosophie
Physik
Politik
Psychologie
Recht
Sonstige
Spanisch
Sport
Technik
Wirtschaft
Wirtschaftskunde-BWL

Firewall-regeln unter dem Kernel

Thema:

Firewall-regeln unter dem Kernel 2.4 (iptables)


Inhaltsverzeichnis

Was sind Iptables ? Seite 3

Übersicht über die Module von IP-Tables Seite 4

Grundsätzliche Funktionsweise Seite 5

Die drei Tabellen der Netfilter-Architektur Seite 6

Die Tabelle filter Seite 7 51198rte58rbz8y

Was wird praktisch mit den Tabellen gemacht ? Seite 8

Aufruf-Konventionen

  • Liste der Kommandos Seite 9

  • Generelle, begleitende Optionen tb198r1558rbbz

  • Filteroption

  • Aktion bei erfolgreicher Maskierung Seite 10

  • Welche Ziele sind wo erlaubt ? Seite 11

Protokolle Seite 12

  • ICMP - UDP

  • TCP (Paketfilter und UDP) Seite 13

Fazit Seite 14

Quellenangabe Seite 17


Was sind iptables ?

Bei "iptables" handelt es sich um einen Paketfilter.

Und zwar um einen Paketfilter unter der Linux- Kernel - Version 2.4.

Bei einem Paketfilter handelt es sich um eine Software zur Überwachung von eingehenden und ausgehenden Paketen.

Dabei wird anhand

  • des Paket - Headers,

  • der IP - Adresse

  • des Protokolls

  • des Ports

vom Senders bzw. vom Empfängers entschieden was mit dem Paket passieren soll.

Es kann akzeptiert werden oder auch verworfen werden (ACCEPT oder DROOPEN).

Dies wird in Form von Regeln in die jeweiligen Tabellen eingetragen (Dazu später mehr).

In Linux sind seit der 1.1 Kernel - Version Paketfilter enthalten.

Die erste Version (basierend auf "ipfw" von BSD) wurde 1994 portiert.

Diese Version wurde dann weiter entwickelt und mit Hilfe des Tools "ipfwadm" im Kernel 2.0 verwendet.

Ab dem Kernel 2.2 kam "ipchains" zum Einsatz und Mitte 1999 mit der neu überarbeiteten Kernel - Version 2.4 das Tool "iptables".

Iptables besteht aus 2 Komponenten :

  • den Kernel Modulen

  • den Userspace-Kommandos

Wenn man Iptables verwenden will muss man die Userspace-Kommandos installieren. Bei Mandrake, RedHat, SuSE und anderen Verwandten Linux-Distributionen liegt diese Software meistens als rpm-Paket vor.

z.B bei Mandrake bei einem erst ab i586-kompatiblen Rechner:

iptables-1.2.5-1mdk.i586.rpm

Ob sie schon installiert ist überprüft man einfach mit dem Befehl:

rpm -q iptables

Wenn das nicht der Fall sein sollte, einfach installieren

Man wechsle also am besten zuerst in das Verzeichnis wo sich das rpm-Paket befindet (Wichtig: Als Root ).In unserem Falle z.B ins Verzeichnis

/mnt/nfs/mdk-82/i586/Mandrake/RPMS/

Und installiert das Programm Paket

rpm -i iptables-1.2.5-1mdk.i586.rpm

und dazu muss man noch das Modul "ip_tables" laden,

wenn es denn noch nicht geladen ist.

Überprüfen kann man das mit dem Befehl:

lsmod | grep –i ip

und falls es dann nötig ist, kann man das Modul mit folgendem Befehl laden:

insmod ip_tables

Wenn es dann zu Fehlermeldungen kommt muss man den Kernel neu konfigurieren.

Und sollte man einen Rechner als Firewall einsetzen wollen dann,

muss IP-Forwarding aktiviert sein.

Dies macht man (als Root) mit dem Befehl:

echo1> /proc/sys/net/ipv4/ip_forward

Iptables enthält auch ein Kompatibilitäts-Modul für ipchains

(Name des Moduls: ipchains)

und auch eins für ipfwadm (Name des Moduls: ipfwadm).

Diese Module schließen sich aber gegenseitig aus. Das zuerst geladene Modul "gewinnt". Bei SuSE 7.2 zum Beispiel wird in einem Initialisierungs-Skript das Kernel-Modul "ipchains" geladen. Dann funktioniert "iptables" nicht.

Übersicht über die Standard-Module von IP-Tables

Modul
Beschreibung
Modul
Beschreibung
iptable_nat
Implementiert die Tabelle nat
iptable_mangle
implementiert Tabelle mangle
iptable_filter
Implementiert die Tabelle filter
ipt_unclean
noch nicht getestet (experimental)
ipt_tos
Filter für type of service
ipt_state
Filter für Verbindungsstatus
ipt_owner
Filter auf erzeugenden Nutzer (lokal)
ipt_multiport
Filter für mehrere Ports auf einmal
ipt_mark
Filter auf MARK-Symbole von Paketen
ipt_mac
MAC-Filter
ipt_limit
Begrenzerfilter
ipt_TOS
type of service setzen
ipt_REJECT
Zurückweisen von Paketen
ipt_REDIRECT
transparentes Umleiten von Paketen
ipt_MIRROR
paket mirroring (source, destination)
ipt_ MASQUERADE
Masquerading
ipt_MARK
packet marking
ipt_LOG
packet logging (Target LOG)
ipfwadm
ipfwadm Kompatibilitaets-modul
ipchains
ipchains Kompatibilitaets-modul
ip_queueing
packet queueing (Weiterreichen an Userspace)
ip_nat_ftp
NAT-Support für FTP
ip_contrack_ftp
dasselbe für FTP
ip_conntrack
Verbindungsverfolgung (connection tracking)

Diese so genannten Kernel-Module befinden sich in den Verzeichnissen :

/lib/modules/2.4.*/kernel/net/ipv4/netfilter/

/lib/modules/2.4.*/kernel/net/ipv6/netfilter/

Bei der C’t-HEISE-Knoppix-Version (4/2003) z.B in den Verzeichnissen:

/lib/modules/2.4.20-xfs/kernel/net/ipv4/netfilter/

/lib/modules/2.4.20-xfs/kernel/net/ipv6/netfilter/


Grundsätzliche Funktionsweise

Am Weg den ein Datenpaket durch den Kernel macht, möchte ich die Funktion verständlicher machen.

INPUT
Alle Pakete die an einen lokalen Prozess gerichteten sind landen hier.
OUTPUT
Alle Pakete die von einem lokalen Prozess ausgehen sind laufen hier durch.
PREROUTING
Kurz bevor eine Routing-Entscheidung getroffen wird, müssen die Pakete hier durch (Erstes Paket).
FORWARD
Hier müssen alle zu routenden Pakete durch.
POSTROUTING
Alle zu routenden Pakete laufen nach dem Routing hier durch.

In diesen Chains sind entsprechende Regeln einzutragen, um bestimmte Zwecke zu erreichen bzw. bestimmte Schutzvorrichtungen aufzubauen.

Man kann aber noch benutzerdefinierte Chains hinzufügen.


Die drei Tabellen(tables) in der Netfilter-Architektur

In IPtables gibt es drei Arten von Tabellen:

  • filter

  • nat

  • mangle

Diese "tables" haben den Zweck, die verschiedenen Arten der Paketbehandlung auf Module zu verteilen und nur die Module zu laden, die grade bzw. für die gestellte Anforderung benötigt werden.

Jeder dieser Tabellen erthält eigene Regeln.

filter

Die Standard-Tabelle ist filter, die immer dann verwendet wird, wenn keine andere Tabelle ausdrücklich angegeben wird, deswegen schauen wir sie uns auf der nächsten Seite genauer an.

Diese Tabelle besteht aus den Chains (Ketten): INPUT, FORWARD, OUTPUT.

Man kann aber noch (wie gesagt) benutzerdefinierte Chains hinzufügen.

nat

Die Tabelle nat dient der Network Adress Translation bzw. dem Port-Forwarding.

Sie besteht aus den chains: PREROUTING, OUTPUT und POSTROUTING.

Diese Chains werden für jedes erste Paket einer neuen Verbindung aufgerufen und führen Änderungen an den Port-Nummern oder an den IP-Nummern der Pakete durch.

mangle

In der Tabelle mangle können tiefer greifende Änderungen an den Paketen vorgenommen werden. Die Pakete können markiert werden oder eine TOS (Type of Service Bits) Manipulation kann vorgenommen werden.

Diese Tabelle besteht aus den Chains: PREROUTING und OUTPUT.

Diese Tabellen gibt es nur wenn Regeln in diesen Tabellen angelegt worden sind.

Das bedeutet, dass die Effizienz eines solchen Paketfilters eventl. sehr hoch sein kann.

Denn wenn man nur einfache Filterfunktionen nutzt, müssen die nicht vorhandenen Tabellen gar nicht erst geladen und durchlaufen werden. Das spart halt Zeit.

Ex muss aber sehr auf den Zusammenhang zwischen Tabellen und Ketten (tables/Chains) geachtet werden. Um darüber Überblick zu schaffen habe ich diesem Thema eine Seite gewidmet, später mehr dazu.
Die Tabelle filter

Wenn ein Paket eine Kette erreicht, wir diese Kette untersucht und das Schicksal des Paketes bestimmt. Wenn die Kette besagt dass das Paket zu verwerfen ist ,wird es verworfen (gelöscht). Wenn die Kette es akzeptiert wird das Paket weitergeleitet.

Jede Kette besteht aus Regeln, in den Regeln ist festgelegt was mit den jeweiligen Paketen passieren soll. Diese Regeln werden solange untersucht bis die Regel die auf das Paket zutrifft gefunden ist. Wenn keine Regel gefunden wird, wird der Kernel sich die Policy der Kette ansehen und entscheiden was passieren soll.

In diesem Fall sollte das Paket verworfen werden (Die Policy sollte so gesetzt sein).

1.Der Kernel sieht sich die Zieladresse des eingehenden Paketes an (Routing).

2.Wenn das Paket für diesen Rechner bestimmt ist, kommt es in die INPUT-Kette.

Danach bekommt der wartende Prozess das Paket .

3.Wenn aber das Paket für eine anderes Interface gedacht ist geht direkt zur

FORWARD- Kette.

Wenn es dort akzeptiert wird, kann es weiter geleitet werden

(IP-Forwarding muss aktiviert sein).Wenn nicht werden die Pakete einfach verworfen.

4.Pakete die von diesem Rechner verschickt werden sollen, kommen direkt in die

OUTPUT-Kette. Falls diese Pakete dann akzeptiert werden, können sie zu anderen

Schnittstellen weitergeleitet werden.


Was wird praktisch mit den Tables/Chains gemacht ?

Nochmal auf ein Blick:

 

Table/Chain
 
filter/INPUT
hier landen alle Pakete, die an einen lokalen Prozess gerichtet sind. Damit lassen sich Zugriffe auf lokale Prozesse hier perfekt regulieren, z.B.:
  • Zugriff auf einen lokal laufenden Server nur aus bestimmten Netzen
  • Nur Pakete durchlassen, die zu einer bestehenden Verbindung gehören
filter/OUTPUT
hier gehen alle Pakete durch, die von einem lokalen Prozess erzeugt wurden. Damit lassen sich lokale Prozesse nach außen schützen, z.B.:
  • keine ausgehenden "verdächtigen" Verbindungen am Server (Schutz eines Servers vor Daten-Klau)
  • keine "losen" Pakete nach draußen -- nur gültige Verbindungen
filter/FORWARD
durch diese Chain gehen alle Pakete durch, die durch diese Maschine geroutet werden. Hiermit lassen sich also alle Rechner in jeweils dem Zielnetz des Routing schützen, z.B.:
  • kein UDP nach außen, außer DNS
  • keine öffnenden Verbindungen nach innen
  • Pakete, die zu keiner Verbindung gehören, werden gefiltert
nat/PREROUTING
Wenn Adress-Übersetzungen durchgeführt werden, müssen alle Pakete vor dem Routing hier durch.
Hier lassen sich von zu routende Pakete verändern:
  • die Ziel-IP-Adresse
  • der Ziel-Port
nat/OUTPUT
vom lokalen Rechner stammende Pakete
gehen hier durch;
Änderungen genauso wie bei nat/PREROUTING.
nat/POSTROUTING
Hier gehen nochmals alle Pakete, die geroutet worden sind, durch (auch lokal erzeugte Pakete). Hier werden Angaben über die Herkunft eines Paketes verändert,wie:
  • Quell-IP-Adresse
  • Masquerading
    (Sonderform von Quell-IP-Änderung)
mangle/PREROUTING
mangle/OUTPUT
ähnlich den "nat" Chains, nur mit dem Unterschied,
dass hier spezielle Paket-Parameter geändert werden können, wie:
  • die TTL (Time to live)


Aufruf-Konventionen

Die Kommandos werden in Groß-Buchstaben geschrieben. z.B. -A

Die Ziele werden mit großen Wörtern geschrieben z.B. ACCEPT

Die Chains auch aus einen Wort in groß. z.B. INPUT

Tabellen werden aus einen Wort in klein geschrieben. z.B. filter

Und Optionen werden in Klein-Buchstaben dargestellt z.B. -t

Kommandos*

-A
<Chain-Name>
<regel >
Eine Regel an das ENDE einer Chain/Tabelle anfügen
-D
<Chain-Name>
<regel >
Eine Regel aus einer Chain/Tabelle löschen
-C
<Chain-Name>
<regel >
Ein Paket testen mit bestimmten Bedingungen auf eine Chain/Tabelle
-R
<Chain-Name>
<Nr> <regel >
Ersetzen einer Regel durch eine neue Regeln
-I
<Chain-Name>
<Nr> <regel >
Eine Regel am ANFANG einer Tabelle/Chain einfügen
-L
[<Chain-Name>]
 
Die Regeln einer Tabelle/Chain auflisten
 
-F
 
[<Chain-Name>]
 
Alle Regeln einer Tabelle/Chain löschen.
Wenn keine Chain angegeben wird ,werden alle Chains geleert.
-Z
[<Chain-Name>]
 
Stellt Paket- und Bytezähler einer Chain auf Null
-N
<Chain-Name>
 
Erstellt eine benutzerdefinierte Chain
-X
<Chain-Name>
 
Löscht eine benutzerdefinierte Chain
-P
<Chain-Name>
<Ziel>
Legt die Policy einer Chain fest
-E
<Chain-Name>
<Neuer Chain-Name>