|
Letzte
Bearbeitung dieses Dokuments: |
Voraussetzungen für das Verständnis dieses Dokuments:* Generelle
Kenntnisse über die Bedienung von Personal-Computer (PC). |
Ungefährer Zeitbedarf zum Durcharbeiten dieses Dokuments:Arbeitszeit: ca. 1/2 bis 1 Stunde; abhängig von der vorhandenen Linux-Routine. |
Dieses Dokument beschreibt die Installation von Firewall und Masquerading unter Verwendung von ipchains.
Eine
Firewall ist eine Software, die (abhängig von einer
Konfigurationsdatei) erlaubt:
* Zu definieren, welchem
Computer des internen Netzwerkes überhaupt Zugriff auf das
Internet erlaubt wird.
* Zu definieren, welche Arten von
TCP/IP-Paketen zwischen internem Netzwerk und Internet ausgetauscht
werden dürfen.
* Zu definieren, welche 'Ports' für
die Steuerung des Computers durch einen entfernten Computer verwendet
werden dürfen.
Die Kontrolle von TCP/IP-Paketen und
'Ports' kann so fein eingestellt werden, daß für jeden
Computer im internen Netzwerk eine genau abgestimmte Sicherungsstufe
möglich ist.
Masquerading
(oder Native Address Translation – NAT) ist eine Software, die
Anforderungen von einem Computer im internen Netzwerk an einen
Computer im Internet weiterleitet (sofern dieses von der Firewall
erlaubt wird) und die Antwort wieder an den anfordernden Computer
weitergibt.
Damit wird ermöglicht, daß mehrere Computer
im internen Netzwerk gleichzeitig über nur eine
Internet-Verbindung auf das Internet zugreifen können.
Für
einen Computer im Internet sieht es dabei so aus, als ob diese
Anfragen nur von einem Computer (dem Router) gesendet werden.
Für
mich als Anfänger war es schwierig, alle Möglichkeiten
Begriffe, die mit der Einrichtung eines (zuverlässigen und
sicheren) Zugangs zum Internet verbunden sind, zu verstehen und in
'wichtig' und 'Zusatz' zu trennen.
Besonders hilfreich war Heimo
Schöns HowTo
(http://howto.htlw16.ac.at/at-highspeed-howto.html
);
das mir erleichtert hat, die Aufgaben abzugrenzen und diese Schritt
für Schritt auszuführen.
Das dokumentierte Script ist eine Modifikation der von Dennis G. Allard und Don Cohen (http://oceanpark.com/notes/firewall_example.html) erstellten Datei.
Vorbedingungen
Script-Datei
für Firewall und Masquerading
Abschließender
Test
Linux mit verfügbarem Paket 'iptables' installiert; d.h. RedHat Linux Version 8.0 oder höher.
Angemeldet (logged in) als Benutzer 'root'.
Die
Verbindung zum internen Netzwerk erfolgt über die
Ethernet-Verbindung mit dem symbolischen Namen 'eth1'.
Die
Verbindung zum Internet erfolgt per Punkt-zu-Punkt Verbindung über
(A)DSL-Modem mit dem symbolischen Namen 'ppp0'.
Wenn Ihre
Konfiguration verschieden ist (z.B. über Modem für ein
Kabel-TV System), beachten Sie bitte die kommentierten Hinweise im
vorgestellten Script.
Das
vorgestellte Script geht von folgenden Einstellungen aus:
* Die
Verbindung zum internen Netzwerk erfolgt über die
Netzwerk-Schnittstelle mit dem symbolischen Namen 'eth1'.
* Die
Verbindung zum Internet-Service-Provider erfolgt über eine
Punkt-zu-Punkt-Verbindung mit dem symbolischen Namen 'ppp0'.
Bitte
prüfen Sie, ob die Einstellungen auch auf Ihren 'Router'
zutreffen.
Beachten Sie bitte die Kommentare im folgenden Script;
darin werden Hinweise gegeben, wie Anpassungen an andere
Netzwerk-Schnittstellen vorgenommen werden können.
Die
Regeln für die Firewall und das Weiterleiten (routing) sind
in
der Datei
/etc/opt/rc.firewall-iptables
festgelegt.
Laden
Sie die Datei
rc.firewall-iptables
herunter
(z.B. auf eine Diskette oder einen USB-Stick) und speichern Sie
diese Datei im Verzeichnis
/etc/opt
des
Computers der für die Verbindung mit dem Internet vorgesehen
ist.
Wenn
die Verbindung zum Internet-Service-Provider (ISP) nicht über
PPTP (Point-to-Point-Tunneling-Protocol) erfolgt sondern direkt über
eine Ethernet-Verbindung (üblich bei Internet-Zugängen von
Kabel-TV-Versorgern) dann Ändern Sie die entsprechenden
EXTIF
-Variablen
(zu Beginn des Scripts).
Damit
die Script-Datei automatisch gestartet werden kann, braucht sie eine
spezielle Berechtigung.
Diese wird mit folgendem Kommando
vergeben:[root]#
chmod
4711 /etc/opt/rc.firewall-iptables
Hier
der Inhalt der Datei
/etc/opt/rc.firewall-iptables:
#!/bin/sh
#
#
rc.firewall-iptables
#
# Beispiel für Firewall und
Masquerading mit Verwendung von iptables
#
# Oktober, 2004;
konfiguriert von Kurt Gstöttner, http://www.javascout.biz
#
#
Dieses Script basiert auf einem Beispiel von
# Dennis G. Allard
und Don Cohen, http://oceanpark.com
#
#
Das Kopieren dieses Script ist erlaubt (und erwünscht) unter der
Voraussetzung,
# daß die obigen Urheber erwähnt
werden.
#
# Keine Garantie für die Richtigkeit und
Funktionsfähigkeit;
# Verwendung auf eigene Gefahr !!
#
#
#
Definition der Schnittstelle zum internen Netzwerk.
# eth1
verwenden weil anzunehmen ist, dass diese Verbindung über
Ethernet (mit Kabel oder Funk) besteht.
INTIF="eth1"
#
#
Definition der Schnittstelle zum Internet-Service-Provider (ISP).
#
ppp0 verwenden wenn die Verbindung über ein Modem oder ein
Tunneling-Protokoll erfolgt.
EXTIF="ppp0"
# eth0
verwenden wenn die Verbindung direkt über Ethernet erfolgt (z.B.
Kabel-Modem).
#EXTIF="eth0"
#
# Hier beginnt die
Konfiguration mit iptables.
# Dynamische TCP/IP-Adresse, die vom
ISP zugeteilt wurde,
# aus der Ausgabe von ifconfig
extrahieren.
# Ein kurzer, umfassender Kommando-Block – aber
er funktioniert ;-)
EXTIP="`ifconfig $EXTIF | awk
/$EXTIF/'{next}//{split($0,a,":");split(a[2],a,"
");print a[1];exit}'`"
echo -n "Externe
Schnittstelle $EXTIF mit IP $EXTIP ."
#
#
Modul-Abhängigkeit prüfen; eventuell fehlende Module werden
nachgeladen.
depmod -a
#
# IP-forwarding einschalten und
dynamisches Adressieren erlauben; ein gutes
#
Installationsprogramm sollte das inaktiviert haben (Sicherheitslücke
ohne aktive Firewall).
echo 1 >
/proc/sys/net/ipv4/ip_forward
echo 1 >
/proc/sys/net/ipv4/ip_dynaddr
#
# Standard Richtlinien für
die Firewall setzen.
# N.B.: alle Beispiele hatten das Kommando
INPUT DROP, aber sobald ich es verwendet
# habe, hat NAT (Native
Address Tranlation) nicht mehr funktioniert. K.G. Oktober
2004
#iptables -P INPUT DROP
iptables -P FORWARD DROP
iptables
-P OUTPUT ACCEPT
#
# Löschen aller zusätzlich
definierten Regeln
iptables -F INPUT
iptables -F
FORWARD
iptables -F OUTPUT
iptables -F -t nat
#
#
#
Alle TCP/IP-Pakete vom lokalen PC (jenem, auf dem diese Firewall
läuft)
#
und PCs am internen Netzwerk erlauben.
iptables -A INPUT -i lo -s
0/0 -d 0/0 -j ACCEPT
iptables -A INPUT -i $INTIF -s 0/0 -d 0/0 -j
ACCEPT
#
# Alle getarnten TCP/IP-Pakete (die von der
Schnittstelle zum Internet kommen, aber als
# Absender eine
TCP/IP-Adresse des internen Netzwerks oder des lokalen PC haben)
verwerfen.
iptables -A INPUT -i $EXTIF -s 192.168.0.0/24 -d 0/0 -j
DROP
iptables -A INPUT -i $EXTIF -s 127.0.0.0/8 -d 0/0 -j DROP
#
#
Alle TCP/IP-Pakete, die vom internen Netzwerk kommen und zum externen
Internet
# gesandt werden, akzeptieren.
iptables -A FORWARD -i
$INTIF -o $EXTIF -j ACCEPT
#
# Alle Pakete, die vom Internet
als Antwort auf eine Anfrage aus dem internen Netz
# kommen,
wieder an den PC im internen Netz weiterleiten.
iptables -A
FORWARD -i $EXTIF -o $INTIF -m state --state ESTABLISHED,RELATED -j
ACCEPT
#
# Alle Pakete, die vom Internet als Antwort auf eine
Anfrage des lokalen PCs kommen,
# wieder an diesen weiterleiten.
#
Dieses Kommando erlaubt, einen Web-Browser auch auf jenem PC zu
verwenden,
# auf dem die Firewall läuft.
iptables -A
FORWARD -i $EXTIF -m state --state ESTABLISHED,RELATED -j ACCEPT
#
#
Native Address Translation (NAT) aktivieren.
# Damit werden
TCP/IP-Pakete, die aus dem Internet als Antwort auf Anfragen von PCs
im
# internen Netzwerk (oder vom Lokalen PC) kommen, an den
anfragenden PC weitergegeben.
iptables -A POSTROUTING -t nat -s
192.168.0.0/24 -o $EXTIF -j SNAT --to-source $EXTIP
##
ENDE DES SCRIPTS
Der
abschließende Test kann erst erfolgen, wenn die jeweilige
Verbindung zum Internet eingerichtet ist.
Ein vorläufiger
Test, ob das Script ohne Syntax-Fehler ausgeführt wird, erfolgt
mit folgendem Kommando:[root]#
/etc/opt/rc.firewall-iptables