Komplexe Architektur
Netzwerkgrundlagen für die Systemanalyse
Pakete filtern
Erst, wenn diese Hausaufgaben erledigt sind, ergibt es Sinn, den Einsatz einer Firewall zu erwägen. Eine solche vermittelt zwischen einem sicheren und einem unsicheren Netz. Sie schützt das sichere Netz so gut wie möglich, während sie den Zugang zum unsicheren Netz – oft das Internet – ermöglicht. Dazu sortiert der Paketfilter die unerwünschte Pakete aus. Statt eines Netzwerkes schützen Firewalls auch einzelne Hosts, zum Beispiel ein Notebook, das oft auf Reisen geht.
Linux verfügt mit Iptables einen leistungsfähigen Paketfilter, mit dem Sie leicht eine Firewall aufsetzen [12]. Das modulare Iptables verwendet Einstiegspunkte in Kernel-Routinen (Hooks), die Netfilter bereitstellt.
Wie der Name schon sagt, basiert Iptables auf Tabellen mit Regeln zum Bearbeiten von Paketen (Abbildung 6). Eine Regel bestimmt, was mit Paketen geschieht. Die Tabelle filter enthält beispielsweise Regeln zum Filtern von Daten. In nat finden sich Regeln, um Adressen und Ports von Paketen zu manipulieren. Regeln zum Verändern von Paketen landen in der Tabelle mangle. Eigene Tabellen fassen bestimmte Regeln in einer Art Unterprogramm zusammen.
Je nach Tabelle gibt es vorgegebene Regelketten (Chains), die bestimmen, welche Regel zum Einsatz kommt. Die Regelkette INPUT behandelt eingehende Pakete an lokale Prozesse, OUTPUT kümmert sich um solche von lokalen Prozessen nach außen. Das Weiterleiten von Paketen regelt die Kette FORWARD. Vor dem Routing nimmt unter Umständen PREROUTING Einfluss auf die Pakete, und POSTROUTING ist die letzte Eingriffsmöglichkeit, bevor diese auf die Reise gehen.
Oft zum Einsatz kommen die Regelketten INPUT und OUTPUT sowie bei Routern auch FORWARD in der Tabelle filter. Für jede Regelkette existiert in jeder Tabelle eine Standardrichtlinie (Policy), die festlegt, was mit Paketen passiert, auf die keine spezielle Regel passt. Sie gibt als Ziel ACCEPT für das Akzeptieren oder DROP für das Verwerfen von Paketen an.
Dabei existieren zwei grundsätzliche Möglichkeiten, einen Paketfilter aufzubauen: Entweder Sie verbieten alles, was nicht ausdrücklich erlaubt ist, oder Sie erlauben alles, was nicht ausdrücklich verboten ist. Bequemer mag die zweite Möglichkeit erscheinen, sicherer ist die erste.
Jede Regel enthält zwei Teile: Der erste Teil bestimmt, auf welche Pakete die Regel zutrifft. Kriterien zur Auswahl von Paketen sind unter anderem: Quell-IP-Adresse, Ziel-IP-Adresse, Quell-Port, Ziel-Port, Schnittstelle von Quelle oder Ziel. Der zweite Teil gibt an, wie der Filter mit diesen Paketen verfährt.
Neben den eingebauten Zielen ACCEPT und DROP existiert ein weiteres eingebautes Ziel namens REJECT. Bei DROP verwirft Iptables das Paket, ohne den Absender zu informieren. Bei REJECT sendet es den ICMP-Fehler Port unreachable zurück. Bei REJECT meldet der anfragende Client sofort eine abgelehnte Verbindung (Connection refused), während er bei DROP auf die Antwort wartet und nach einem Zeitlimit abbricht.
Das Ziel MASQUERADE schreibt IP-Adresse und Port eines Pakets um, und das Ziel LOG schreibt den Zugriff in eine Protokolldatei. Je nach Ziel beendet Iptables das Abarbeiten der Regelkette (ACCEPT, DROP, REJECT, MASQUERADE) oder setzt es fort (LOG).
Häufig stellt sich die Aufgabe, IP-Pakete ausgehender Verbindungen weiterzuleiten, IP-Pakete eingehender Verbindungen jedoch zu blockieren. Da die Antwortpakete ausgehender Verbindungen jedoch auf einem beliebigen Port zwischen 1024 und 65535 ankommen, gehört es zu den Aufgaben, Pakete an diese Ports zu akzeptieren, auch wenn ein eingehendes Paket gar kein solches Antwortpaket ist. Dadurch gestalten sich einerseits die Regeln komplizierter als nötig, andererseits öffnen sich mehr Löcher als nötig.
Hier kommt der Connection Tracker von Iptables ins Spiel. Er liest den Datenstrom mit und merkt sich, welche Verbindungen der Benutzer oder das System aufbauen. Dieser Mechanismus erlaubt wiederum eine Regel, die wie folgt lautet: Akzeptiere alle eingehenden Pakete, bei denen es sich um Antworten auf ausgehende Verbindungen handelt. Der Connection Tracker arbeitet schnell, da er sich nur das erste Paket einer Verbindung anzusehen braucht.
Glossar
TCP/IP
Transmission Control Protocol/Internet Protocol. Protokoll-Familie, auf der die Kommunikation in vielen Netzen basiert.
OSI
Siebenschichtiges Modell für die Netzwerkkommunikation. Standardisiert von der International Standards Organisation (ISO).
Ethernet
Kabelgebundene Netzwerktechnologie für lokale Netze (LANs). Weitgehend in IEEE 802.3 standardisiert.
WLAN
Wireless LAN. Netzwerktechnik für Funknetze. Standardisiert durch IEEE 802.11, basiert auf Ethernet.
MAC-Adresse
Weltweit eindeutige Adresse für eine Netzwerkhardware nach dem Ethernet-Standard (Karten für kabelgebundenes Ethernet, WLAN-Adapter, Bluetooth-Adapter). Eine 48-Bit-Zahl, üblicherweise in Hexadezimalschreibweise geschrieben, zum Beispiel:
00:02:8A:4F:58:42.IP-Adresse
Nummer zum Adressieren von Geräten in einem IP-Netzwerk. Bei IPv4 32 Bit unterteilt in vier Gruppen zu je 8 Bit, in üblicher Dezimalschreibweise zum Beispiel:
192.168.1.1.ARP
Address Resolution Protocol. Protokoll, um eine Netzwerkaddresse einer Hardwareadresse zuzuordnen.
Port
Adresszusatz in Form einer Nummer zwischen 0 und 65535, die dazu dient, Pakete den richtigen Diensten oder Clients zuzuordnen.
IANA
Internet Assigned Numbers Authority. Organisation, die unter anderen die Vergabe von IP-Adressen, Top-Level-Domains und Standard-Ports regelt.
HTTP
Hypertext Transport Protocol. Protokoll, um Daten über ein Netzwerk zu transportieren. Hauptsächlich fürs WWW eingesetzt.
SMTP
Simple Mail Transfer Protocol. Gängige Technik zum Versand von E-Mails.
POP3
Post Office Protocol 3. Protokoll, mit dem ein E-Mail-Client Mails von einem E-Mail-Server abholt.
IMAP
Internet Message Access Protocol. Protokoll für den Zugriff und zum Verwalten von Mails auf einem entfernten Server.
SSH
Secure Shell. Verschlüsselter Kommunikationskanal für Shell-Sitzungen auf entfernten Computern. Eignet sich auch zum Übertragen von Dateien.
DNS
Domain Name System. System und Protokoll, um Rechnernamen IP-Adressen und umgekehrt zuzuordnen. Beispiel: Der Server
www.linux-user.dehat die IP-Adresse87.106.38.241.NTP
Network Time Protocol. Ermöglicht die Zeitsynchronisation über ein Netzwerk.
TTL
Time-to-live. Lebenszeit eines Paketes. Gibt die maximale Anzahl der Hops an, die ein Paket machen darf.
WAN
Wide Area Network. Ein weiträumiges Netzwerk, das sich über einen großen geographischen Bereich erstreckt.
NAT
Network Address Translation. Ein Verfahren, um eine IP-Adresse durch eine andere zu ersetzen.
VLANs
Virtual Local Area Netwerk. Ein VLAN ist ein virtuelles lokales Netzwerk innerhalb eines physischen lokalen Netzwerks. Linux unterstützt die Implementation, die der IEEE-Standard 802.1q definiert.
DHCP
Dynamic Host Configuration Protocol. Protokoll zur dynamischen Konfiguration von Hosts.
KISS
Keep It Small and Simple. Prinzip, stets die einfachste mögliche Lösung für ein Problem zu wählen.
Telnet
Dienst und Programm zur zeichenbasierten Kommunikation in beide Richtungen, zum Beispiel für Shell-Sitzungen.
FTP
File Transfer Protocol. Protokoll zum Übertragen von Dateien.
Public-Key-Verfahren
Verschlüsselungsverfahren, das anstatt eines Passworts mit einem zweigeteilten Schlüssel arbeitet. Der private Schlüssel dient zum Entschlüsseln, der öffentliche zum Verschlüsseln.
[1] Wikipedia-Artikel zu TCP/IP: http://de.wikipedia.org/wiki/TCPIP und http://de.wikipedia.org/wiki/TCP/IP-Referenzmodell
[2] Wikipedia-Artikel zum OSI-Schichten-Modell: http://de.wikipedia.org/wiki/OSI-Modell
[3] Wikipedia-Artikel zum Masquerading: http://de.wikipedia.org/wiki/Masquerading
[4] Linux Advanced Routing and Traffic Control: http://www.lartc.org
[5] Routing: Jörg Fritsch, "Verkehrsplanung", Linux-Magazin Sonderheft 03/2006, S. 64
[6] Ralf Spenneberg, "Übersichtliche Verkehrsregelung", Linux-Magazin 02/2005: http://www.linux-magazin.de/Artikel/ausgabe/2005/02/tcng/tcng.html
[7] Virtuelle LANs: Chris Hübsch, "Patchen ohne Kabel", Linux Magazin 11/2006, S. 56 http://www.linux-magazin.de/Artikel/ausgabe/2006/11
[8] Buqtraq bei SecurityFocus: http://www.securityfocus.com
[9] Debian-Sicherheitsmeldungen: http://www.debian.org/security/
[10] Ubuntu-Sicherheitsmeldungen: http://www.ubuntu.com/usn
[11] Suse-Sicherheitsmeldungen: http://lists.suse.com/archive/suse-security-announce/
[12] Netfilter/Iptables: http://www.netfilter.org



