Diese Informationen trug Francois Bayart bei, um User zu helfen, eine Linux
Bridge / Firewall mit 2.4.x Kernel und iptables
aufzusetzen. Es
wird lediglich noch der Bridge-Firewall-Patch benötigt, den Sie auf der
sourceforge
download page
finden.
Wenn Sie zum Beispiel einen 2.4.18er Kernel benutzen, müsen Sie den
entsprechenden patch
herunterladen und anschliessend auf die installierten Kernel-Quellen anwenden:
Zipowz:/usr/src# apt-get install kernel-source-2.4.18 Zipowz:/usr/src# cd kernel-source-2.4.18 Zipowz:/usr/src/kernel-source-2.4.18# patch -p1 < ../bridge-nf-0.0.6-against-2.4.18.diff patching file include/linux/netfilter.h patching file include/linux/netfilter_ipv4.h patching file include/linux/skbuff.h patching file net/bridge/br.c patching file net/bridge/br_forward.c patching file net/bridge/br_input.c patching file net/bridge/br_netfilter.c patching file net/bridge/br_private.h patching file net/bridge/Makefile patching file net/Config.in patching file net/core/netfilter.c patching file net/core/skbuff.c patching file net/ipv4/ip_output.c patching file net/ipv4/netfilter/ip_tables.c patching file net/ipv4/netfilter/ipt_LOG.c
Jetzt rufen Sie die Kernel-Konfiguration auf (mit Ihrer lieblings Methode: make menuconfig, make xconfig, ...). Aktivieren Sie diese Optionen unter Networking option:
[*] Network packet filtering (replaces ipchains) [ ] Network packet filtering debugging (NEW) <*> 802.1d Ethernet Bridging [*] netfilter (firewalling) support (NEW)
Passen Sie auf, dass Sie dieses hier deaktiviert haben, wenn Sie Firewall-Regeln anwenden wollen, oder iptables funktioniert nicht.
[ ] Network packet filtering debugging (NEW)
Anschliessend müssen Sie die korrekten Optionen im Abschnitt IP:
Netfilter Configurationsetzen. 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
neues Debian Paket zu erstellen, das Sie auf Ihrem Server installieren
können (oder auf einem anderen System benutzen können). Sobald der
neue Kernel kompiliert und installiert ist, müssen Sie die
bridge-utils
installieren.
Jetzt können Sie zwei verschiedene Konfigurationen betrachten, die Ihnen zeigen, wie sie das konfigurieren können, sobald diese Schritte erledigt sind. Beide Konfigurationen sind mit einer Netzwerk-Karte und den notwendigen Kommandos zur konfiguration der Bridge aufgeführt.
Die erste benutzt eine Bridge als Firewall mit Network Address Translation (NAT), die einen Server und interne LAN-Clienten schützt.
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 )
Diese Kommandos zeigen, wie die Bridge konfiguriert werden kann:
# So wird die Schnittstelle br0 erstellt: /usr/sbin/brctl addbr br0 # Hinzufügen der Ethernet-Schnittstellen, die die Bridge benutzen # soll /usr/sbin/brctl addif br0 eth0 /usr/sbin/brctl addif br0 eth1 # Die Schnittstellen einfach starten /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.32 # Ich habe benutze diese internen IPs für mein NAT ip addr add 192.168.0.1/24 dev br0 /sbin/route add default gw 62.3.3.25
Dieses System ist als transparente Firewall für ein LAN mit öffentlichen IP-Addressen aufgesetzt.
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 )
Diese Kommandos zeigen, wie die Bridge konfiguriert werden kann:
# So wird die Schnittstelle br0 erstellt: /usr/sbin/brctl addbr br0 # Hinzufügen der Ethernet-Schnittstellen, die die Bridge benutzen # soll /usr/sbin/brctl addif br0 eth0 /usr/sbin/brctl addif br0 eth1 # Die Schnittstellen einfach starten /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.32
Wenn Sie traceroute auf den Linux-Mail-Server schicken, 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.
Dies ist ein Beispiel für grundlegende Regeln, die für beide Beispiele benutzt werden könnten:
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 # Uebereinstimmende 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 Verbindingen, nur um ganz 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 Aussenwelt zu verbinden # Beachten Sie: Dies ist *nicht* fuer die vorherigen Verbindungen # notwendig (Erinnern Sie sich: stateful filtering) und koennte entfernt # werden: iptables -A FORWARD -p tcp -s 62.3.3.27/32 -d 0/0 -j ACCEPT # Regeln fuer den WWW-Server # # Erlaube 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 Aussenwelt zu verbinden # Beachten Sie: Dies ist *nicht* fuer die vorherigen Verbindungen # notwendig (Erinnern Sie sich: stateful filtering) und koennte entfernt # werden: iptables -A FORWARD -p tcp -s 62.3.3.28/32 -d 0/0 -j ACCEPT
Anleitung zum Absichern von Debian
2.5 (beta) 14 febrero 2004Sat, 17 Aug 2002 12:23:36 +0200jfs@computer.org