Product SiteDocumentation Site

B.4. Aufsetzenden einer Bridge-Firewall

Diese Informationen trug Francois Bayart bei, um Benutzern zu helfen, eine Linux Bridge/Firewall mit 2.4.x Kernel und iptables aufzusetzen. Ein Kernelpatch wird nicht mehr benötigt, da der Code Standardinhalt der Linux-Kernel-Distribution wurde.
Um die notwendigen Einstellungen im Kernel vorzunehmen, rufen Sie make menuconfig oder make xconfig auf. Aktivieren Sie im Abschnitt Networking options folgende Optionen:
[*] Network packet filtering (replaces ipchains)
[ ]   Network packet filtering debugging (NEW)
<*> 802.1d Ethernet Bridging
[*]   netfilter (firewalling) support (NEW)
Passen Sie auf, dass Sie Folgendes deaktiviert müssen, wenn Sie Firewall-Regeln anwenden wollen; anderenfalls wird iptables nicht funktioniert:
[ ]   Network packet filtering debugging (NEW)
Anschließend müssen Sie die korrekten Optionen im Abschnitt IP: Netfilter Configuration setzen. Dann kompilieren und installieren Sie den Kernel. Wenn Sie dies auf die Debian-Art machen wollen, installieren Sie kernel-package und benutzen Sie make-kpkg, um ein maßgeschneidertes Debian-Kernelpaket zu erstellen, das Sie mit dpkg auf Ihrem Server installieren können. Sobald der neue Kernel kompiliert und installiert ist, müssen Sie das Paket bridge-utils installieren.
Wenn Sie diesen Schritt abgeschlossen haben, können Sie die Konfiguration Ihrer Bridge fertigstellen. Im nächsten Abschnitt werden Ihnen zwei verschiedene mögliche Konfigurationen einer Bridge vorgestellt. Beide sind mit einer Übersicht eines hypothetischen Netzwerks und den notwendigen Befehlen versehen.

B.4.1. Eine Bridge mit NAT- und Firewall-Fähigkeiten

Die erste Konfigurationsmöglichkeit benutzt die Bridge als Firewall mit Network Address Translation (NAT, Übersetzung der Netzwerkadressen), die einen Server und interne LAN-Clienten schützt. Unten wird eine Darstellung der Anordnung des Netzwerks gezeigt:
Internet ---- Router ( 62.3.3.25 ) ---- Bridge (62.3.3.26 gw 62.3.3.25 / 192.168.0.1)
                                          |
                                          |
                                          |---- WWW-Server (62.3.3.27 gw 62.3.3.25)
                                          |
                                          |
                                         LAN --- Zipowz (192.168.0.2 gw 192.168.0.1)
Die folgenden Befehle zeigen, wie diese Bridge konfiguriert werden kann:
# Erstellen der Schnittstelle br0
/usr/sbin/brctl addbr br0

# Hinzufügen der Ethernet-Schnittstelle, welche die Bridge benutzen soll
/usr/sbin/brctl addif br0 eth0
/usr/sbin/brctl addif br0 eth1

# Starten der Ethernet-Schnittstelle
/sbin/ifconfig eth0 0.0.0.0
/sbin/ifconfig eth1 0.0.0.0

# Konfigurieren der Ethernet-Bridge
# Die Bridge wird korrekt und unsichtbar (transparente Firewall) sein.
# In einem traceroute ist sie versteckt, und Sie behalten Ihr echtes
# Gateway auf Ihren anderen Computern. Jetzt können Sie ein Gateway
# auf Ihrer Bridge konfigurieren und es auf Ihren anderen Computern als
# neues Gateway einsetzen

/sbin/ifconfig br0 62.3.3.26 netmask 255.255.255.248 broadcast 62.3.3.31

# Ich habe diese internen IPs für mein NAT benutzt 
ip addr add 192.168.0.1/24 dev br0
/sbin/route add default gw 62.3.3.25

B.4.2. Eine Bridge mit Firewall-Fähigkeiten

Eine zweite denkbare Konfiguration ist ein System, das als transparente Firewall für ein LAN mit einer öffentlichen IP-Adresse aufgesetzt ist.
Internet ---- Router (62.3.3.25) ---- Bridge (62.3.3.26)
                                        |
                                        |
                                        |---- WWW-Server (62.3.3.28 gw 62.3.3.25)
                                        |
                                        |
                                        |---- Mail-Server (62.3.3.27 gw 62.3.3.25)
Die folgenden Befehle zeigen, wie diese Bridge konfiguriert werden kann:
# Erstellen der Schnittstelle br0
/usr/sbin/brctl addbr br0

# Hinzufügen der Ethernet-Schnittstelle, welche die Bridge benutzen soll
/usr/sbin/brctl addif br0 eth0
/usr/sbin/brctl addif br0 eth1

# Starten der Ethernet-Schnittstelle
/sbin/ifconfig eth0 0.0.0.0
/sbin/ifconfig eth1 0.0.0.0

# Konfigurieren der Ethernet-Bridge
# Die Bridge wird korrekt und unsichtbar (transparente Firewall) sein.
# In einem traceroute ist sie versteckt, und Sie behalten Ihr echtes
# Gateway auf Ihren anderen Computern. Jetzt können Sie ein Gateway
# auf Ihrer Bridge konfigurieren und es auf Ihren anderen Computern als
# neues Gateway einsetzen

/sbin/ifconfig br0 62.3.3.26 netmask 255.255.255.248 broadcast 62.3.3.31
Wenn Sie mit traceroute die Route des Linux-Mail-Servers verfolgen, sehen Sie die Bridge nicht. Wenn Sie mit ssh auf die Bridge zugreifen wollen, müssen Sie ein Gateway haben oder erst auf einen anderen Server wie den »Mail Server« zugreifen, um dann über die interne Netzwerkkarte auf die Bridge zuzugreifen.

B.4.3. Grundlegende Iptables-Regeln

Dies ist ein Beispiel für grundlegende Regeln, die für beide Einstellungen benutzt werden können:

Beispiel B.1. Grundlegende Iptables-Regeln

iptables -F FORWARD
iptables -P FORWARD DROP
iptables -A FORWARD -s 0.0.0.0/0.0.0.0 -d 0.0.0.0/0.0.0.0 -m state --state INVALID -j DROP
iptables -A FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT

# Zwei lustige Regeln, aber nicht bei klassischen Iptables. Sorry ...
# Limit ICMP 
# iptables -A FORWARD -p icmp -m limit --limit 4/s -j ACCEPT
# Übereinstimmende Strings, eine gute, einfache Methode, um Viren sehr
# schnell abzublocken
# iptables -I FORWARD -j DROP -p tcp -s 0.0.0.0/0 -m string --string "cmd.exe"

# Abblocken aller MySQL-Verbindungen, nur um sicher zu gehen
iptables -A FORWARD -p tcp -s 0/0 -d 62.3.3.0/24 --dport 3306 -j DROP

# Regeln für den Linux Mail-Server

# Erlaube FTP-DATA (20), FTP (21), SSH (22)
iptables -A FORWARD -p tcp -s 0.0.0.0/0 -d 62.3.3.27/32 --dport 20:22 -j ACCEPT

#Dem Mail-Server erlauben, sich mit der Außenwelt zu verbinden
# Beachten Sie: Dies ist *nicht* für die vorherigen Verbindungen
# notwendig (erinnern Sie sich: stateful filtering) und könnte entfernt
# werden:
iptables -A FORWARD -p tcp -s 62.3.3.27/32 -d 0/0 -j ACCEPT

# Regeln für den WWW-Server

# AErlaube HTTP ( 80 ) Verbindungen mit dem WWW-Server
iptables -A FORWARD -p tcp -s 0.0.0.0/0 -d 62.3.3.28/32 --dport 80 -j ACCEPT

# Erlaube HTTPS ( 443 ) Verbindungen mit dem WWW-Server
iptables -A FORWARD -p tcp -s 0.0.0.0/0 -d 62.3.3.28/32 --dport 443 -j ACCEPT

# Dem WWW-Server erlauben, sich mit der Außenwelt zu verbinden
# Beachten Sie: Dies ist *nicht* für die vorherigen Verbindungen
# notwendig (erinnern Sie sich: stateful filtering) und könnte entfernt
# werden:
iptables -A FORWARD -p tcp -s 62.3.3.28/32 -d 0/0 -j ACCEPT