Linux als Firewall

Grundschutz durch den Linux-Kernel

Neben der im folgenden beschriebenen Paketfilterung sind im Linux-Kernel Möglichkeiten zum Grundschutz schon eingebaut und sollten auch aktiviert werden. Zu finden sind diese im proc-Dateisystem. Sie lassen sich normalerweise mit dem Befehl sysctl kontrollieren. Eine Beschreibung der wichtigsten Parameter von sysctl finden Sie auf der nächsten Seite. Vollständige Beschreibungen aller vorhandenen Schalter stehen in den Kernel-Quellen unter documentation/proc.txt und documentation/networking/ip-sysctl.txt zur Verfügung.

Ein Beispiel für das Lesen einer Variable ist der Befehl

sysctl net.ipv4.icmp_destunreach_rate

Gesetzt wird ein Wert mit dem Befehl

sysctl -w net.ipv4.icmp_destunreach_rate=100

Besonders hervorzuheben ist der Eintrag /proc/sys/net/ipv4/ip_local_port_range. Dieser gibt an, aus welchem Bereich lokale Ports für Verbindungen stammen dürfen. Der Bereich ist im Kernel (net/ipv4/tcp_ipv4.c) standardmäßig auf 1024-4999 festgelegt, lässt sich aber während des Betriebs verändern. Aus Sicherheitsgründen sollten Sie den Bereich unbedingt auf 32768-60999 setzten. Denn dieser Portbereich wird sehr selten von einem Dienst statisch benutzt. Zudem stehen damit auch mehr Ports für gleichzeitige Verbindungen zur Verfügung, was für einen lokalen installierten Webcache von Vorteil sein kann. Der Befehl für die Änderung lautet

sysctl -w net.ipv4.ip_local_port_range="32768 60999"

Zusammen mit dem für IP-Maskierung festgelegten Portbereich von 61000-65095 lässt sich der Portbereich für eingehende Antwortpakete später in den Paketfilterregeln genau festlegen. Die Ports zur IP-Maskierung sind nur durch Patchen des Quellcodes (include/net/ip_masq) und Neukompilieren des Kernels änderbar.

Ausnahmen sind allerdings die Clients der r-Dienste (rlogin, rcmd, rexec) und ssh, falls das SUID-Bit gesetzt ist oder diese von "root" benutzt werden. Denn in diesem Fall werden Ports zwischen 512 und 1023 für abgehende Verbindungen benutzt. Grund dafür ist die Authentifizierungsmethode der r-Dienste auf Vertrauensbasis mit der Annahme, dass Ports zwischen 1 und 1023 nur von "root" benutzt werden können. Diese Methode sollte jedoch nur in abgeschotteten Netzwerken zum Einsatz kommen, deren teilnehmende Server ganz sicher unter der Kontrolle des Administrators sind.