> Inhalt: Technik, Anwendungsprogramme und Organisation

Linux** – Firewall und Masquerading

* Bitte beachten Sie die Hinweise und Bestimmungen bezüglich Urheberrecht, Haftungsausschluß und geschützte Marken oder Warenzeichen die für dieses Web-Dokument und möglicherweise auch für 'verlinkte' Dokumente gelten.

  • Der Betreiber dieser Web-Site (www.javascout.biz) ist nicht verantwortlich für den Inhalt von Web-Sites, die innerhalb dieses Web-Dokumentes oder anderer Dokumente von www.javascout.biz verlinkt sind.

  • Wenn dieses Web-Dokument oder andere Dokumente dieser Web-Site (www.javascout.biz) Rechte von Ihnen verletzen, oder sie glauben, daß Rechte Anderer (Dritter Personen) dadurch verletzt werden, informieren Sie bitte den Betreiber dieser Web-Site.
    Eine E-Mail können Sie ganz einfach durch anklicken des Symbols oder Textes im Frame rechts oben senden.

Dieses Dokument drucken.

 Letzte Bearbeitung dieses  Dokuments:
2010-09-01

Voraussetzungen für das Verständnis dieses Dokuments:

* Generelle Kenntnisse über die Bedienung von Personal-Computer (PC).
* Kenntnisse, wie Dateien mit Linux auf eine Diskette bzw. von einer Diskette kopiert werden können. Dafür wird der Befehl 'mcopy' empfohlen.

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.

Danke für Vorarbeiten an:

Inhaltsverzeichnis

Vorbedingungen 
Script-Datei für Firewall und Masquerading 
Abschließender Test
 

Vorbedingungen:

zum Inhaltsverzeichnis

Script-Datei für Firewall und Masquerading

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.

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

zum Inhaltsverzeichnis

Abschließender Test

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