Wir verwenden Cookies, um die Benutzererfahrung zu verbessern und den Website-Verkehr zu analysieren. Lesen Sie, wie wir Cookies verwenden und wie Sie diese steuern können, indem Sie auf „Datenschutzeinstellungen“ klicken.

Datenschutzeinstellungen Ich stimme zu

Datenschutzeinstellungen

Wenn Sie eine Website besuchen, kann diese Informationen über Ihren Browser speichern oder abrufen, normalerweise in Form von Cookies. Da wir Ihr Recht auf Privatsphäre respektieren, können Sie sich dafür entscheiden, die Datenerfassung bei bestimmten Arten von Diensten nicht zuzulassen. Wenn Sie diese Dienste jedoch nicht zulassen, kann dies Auswirkungen auf Ihr Erlebnis haben.


Firewall mit iptables

Firewalling mit iptables

Heutzutage ist es schon fast fahrlässig ohne Firewall ins Internet zu gehen, denn man würde ja auch nicht das Haus verlassen und dabei alle Fenster und Türen offen lassen.Einbrechen könnte man im Falle verschlossener Fenster und Türen dennoch, wobei man dem Angreifer den Einbruch erschweren würde.

Und genau dies soll unser Ziel sein. Es sei darauf hingewiesen, dass diese Firewall keine absolute Sicherheit bietet, aber sie ist für den Privatnutzer einfach zu administrieren und genügt dennoch einem hohen Maß an Sicherheit.

Bevor wir in die Materie einsteigen möchte ich noch erwähnen, dass iptables nur von Kernel - Versionen ab Version 2.4 unterstützt werden. Ferner sollte der Benutzer distributionseigene Firewalls, wie beispielsweise die SuSE Firewall 2, deaktivieren.

Im folgenden sollen die wichtigsten Befehle rund um iptables erläutert werden und uns somit zu einem sofort einsetzbaren Firewallscript führen.

Standardmäßig sind schon 3 Chains ( INPUT / FORWARD / OUTPUT ) gegeben und deren Policy steht anfangs auf ACCEPT.

Bezüglich einer gesamten Chain kann man:

Die Policy für eine eingebaute Chain ändern ( -P ). Das geschieht beispielsweise mittels

# iptables -P INPUT DROP . Es würden also hereinkommende Pakete verworfen werden ( DROP ). Weiterhin wäre es denkbar Pakete anzunehmen ( ACCEPT ) oder dies mit Rückmeldung zu verwerfen ( DENY ).

Auflisten aller Regeln ( - L ).

Löschen aller Regeln ( -F ).


Hinsichtlich einer einzelnen Regel kann man:

Eine Regel an eine Chain anfügen ( -A ).

Eine Regel in eine Chain einfügen ( -I ).

Eine Regel in einer Chain ersetzen ( -R ).

Eine Regel in einer Chain löschen ( -D ).


Hierbei ist die Reihenfolge wichtig, da der Kernel die Regeln nacheinander abarbeitet und sobald die erste Regel für ein Paket zutrifft, werden die restlichen Regeln nicht mehr beachtet.


Neben den 3 oben genannten Standardchains kann auch der Benutzer eigene Chains erstellen, wobei gilt:

Benutzerchain definieren und benennen ( -N ).

Eine (leere) Benutzerchain löschen ( -X ).


Abschließend gibt es noch Parameter für die jeweiligen Regeln, die da wären:

Adresse(n) inkl. Port [Source] ( -s ).

Adresse(n) inkl. Port [Destination] ( -d ).

Device ( -i ).

Protokoll ( -p ).

Aktion [Target] ( -j ).

Sämtliche iptables - Variablen sind mit dem Befehl
# man iptables einzusehen.

Anhand eines Beispieles sollen die bisher dargestellten Befehle verdeutlicht werden.

Wir wollen für einen IRC - Client die Ports 3334 - 3335 öffnen. Das Protokoll soll TCP sein, die Regel soll an die INPUT - Chain angefügt werden und als Device kommt ja nur ein Internetdevice ( ppp0 für DSL und ippp0 für ISDN ) in Frage.

Demnach muss der Befehl lauten:

# iptables -A INPUT -i ppp0 -p tcp --dport 3334:3335 -j ACCEPT

Nachdem nun die grundlegenden Funktionen von iptables erklärt wurden, wobei dies wirklich nur ein kurzer Auszug sein sollte, um den Einblick in die Thematik zu verschaffen, können wir uns an das Erstellen des Scripts heranwagen.

Bevor wir dies tun, möchte ich noch anmerken, dass eine Firewall auf zweierlei Policies basieren kann.

Einerseits ist es möglich generell alles zu blockieren und nach und nach die benötigten Dienste freizuschalten. Hierbei würden die Default - Policies auf DENY oder DROP stehen. Dies ist der sicherste Ansatz, jedoch ist er auch mit viel Wissen und Arbeit verbunden.

Andererseits kann man generell alles erlauben, was nicht ausdrücklich verboten wird. Es stehen demnach die Default - Policies auf ACCEPT.


Wir wollen uns mit dem zweiten Ansatz beschäftigen, da dieser leichter umzusetzen ist. Hierzu überprüfen wir zunächst mit # iptables -L ob die Policies auf ACCEPT stehen. Falls dem so ist, können wir nachfolgendes Script einfach so verwenden. Natürlich muss jenes noch an die Bedürfnisse des jeweiligen Benutzers angepasst werden.

In unserem Beispiel sollen die Ports für den IRC - Client ( s.o. ) und für ein File - Sharing - Tool geöffnet werden.

#!/bin/sh

#

#definierten Zustand erstellen und alle Regeln loeschen

iptables -F

iptables -t nat -F

#

#Ein Router sollte Pakete vom Typ Destination-unreachable bearbeiten

iptables -A INPUT -i ppp0 -p icmp --icmp-type destination-unreachable -j ACCEPT

#

#Edonkey-Ports oeffnen

iptables -A INPUT -i ppp0 -p tcp --dport 4661:4662 -j ACCEPT

iptables -A INPUT -i ppp0 -p udp --dport 4665 -j ACCEPT

#

#Ports fuer IRC oeffnen

#

iptables -A INPUT -i ppp0 -p tcp --dport 3334:3335 -j ACCEPT

#

#Kette erstellen, die neue Verbindungen blockt, es sei denn, sie kommen von innen

#oder es sind Antwortpakete (ESTABLISHED)

iptables -N block

iptables -A block -m state --state ESTABLISHED,RELATED -j ACCEPT

iptables -A block -m state --state NEW -i ! ppp0 -j ACCEPT

iptables -A block -j DROP

#

#Von Input und Forward Ketten zu dieser Kette springen

iptables -A INPUT -j block

iptables -A FORWARD -j block

#

iptables -t nat -A POSTROUTING -o ppp0 -j MASQUERADE

#

#####ENDE########

Das Script kann per Link in die Datei /etc/ppp/ip-up eingebunden werden. Somit aktiviert sich die Firewall beim Starten der Internetverbindung, was auch sinnvoll ist, denn solange man offline arbeitet, benötigt man auch keine Firewall.

Durch das Festlegen der Benutzerchain block werden nur Pakete durchgelassen, die Antwortpakete ( Status ESTABLISHED,RELATED ) oder neue Pakete sind, die nicht über ppp0, also dem Internet, stammen. Diese Regeln werden dann noch in die INPUT - und FORWARD - Chain eingebunden. Schließlich wird das Masquerading aktiviert, das dann auf alle Pakete wirkt, welche die FORWARD - Chain erfolgreich passiert haben.

Somit reagiert der Rechner auf keinerlei Anfragen aus dem Internet und er ist demnach �unsichtbar�.

Wenn Sie weitere Dienste freischalten wollen, muss dies immer vor der Benutzerchain block erfolgen, da diese sonst nicht mehr berücksichtigt werden würden.

Ihre Firewall können Sie mittels verschiedener Webtools testen, die ich im folgenden nennen möchte:

https://grc.com/x/ne.dll?bh0bkyd2

http://www.linuxdelta.de/portscan.php

http://scan.sygatetech.com/

Abschließend sei noch einmal darauf hingewiesen, dass dies eine sehr einfache Firewall ist, deren Verhältnis zwischen Aufwand und Nutzen sehr gering ist und somit dem Anwender eine leicht konfigurierbare Lösung bietet.

Viel Spaß!

Sie k?nnen keine Kommentare abgeben!