Iptables

Aus Gentoo Linux Wiki

Wechseln zu: Navigation, Suche
Dieser Artikel ist Teil der Security Sammlung.
Firewall Dienste absichern Verschlüsselung alphabetischer Security Index


Dieser Artikel wird derzeit stark erweitert, überarbeitet und in Einzelartikel aufgespaltet:

Inhaltsverzeichnis

[Bearbeiten] Einleitung

iptables ist ein Paketfilter. Er untersucht die Pakete, die einen Rechner verlassen oder erreichen. Das heißt, er kann bestimmte Netzwerkpakete basierend auf Art, Quelle, Ziel usw. zurückweisen.

Dieser Artikel soll zeigen, wie man Regeln erstellen kann und was man mit den Regeln bewirken kann.

[Bearbeiten] Voraussetzungen

Welches Wissen wird vorrausgesetzt, um den Artikel verstehen zu können?

  • Man sollte Grundlagen über die Netzwerktechnologie kennen.
  • Man sollte wissen, was eine Firewall ist.
  • Man sollte wissen, wie man mit dem Linux-Kernel umgeht.

[Bearbeiten] Quellen

Falls du irgendwo meinst dir nicht hundert Prozent sicher zu sein, lies dir folgende Artikel doch mal durch:

[Bearbeiten] Installation

Bevor wir beginnen, stelle sicher, dass deine Hardware richtig konfiguriert ist. Vor allen Dingen sollte deine Netzwerkverbindung einwandfrei funktionieren.

[Bearbeiten] iptables im Kernel konfigurieren

Um iptables zu bekommen, muss die Kernel-Option "Network packet filtering (replaces ipchains)" NETFILTER aktiviert sein. Die Option findest du unter:

Code: make menuconfig
Networking--->
  Networking Options---->
   Network Packet Filtering (replace Ipchains)

ACHTUNG: Die Option "Fast switching" übergeht alle Network-Packet-Filtering-Optionen. Stelle sicher, dass die Option nicht aktiviert ist, da sonst alle Einstellungen unbrauchbar werden. Du erhältst nun eine Liste der verschiedenen Möglichkeiten, wie du deine Firewall konfigurieren kannst. Wir brauchen für iptables die "IP tables support"-Option. Aktiviere diese Option entweder

  • als Modul
  • oder direkt im Kernel.

Grundsätzlich ist zu empfehlen, Module für die Protokollversionen 4 und 6 zu nutzen, also reicht ein normales <SPACE>, da standardmäßig Module erstellt werden.

[Bearbeiten] iptables einbinden

dazu natürlich ein

emerge iptables

wenn der Vorgang beendet ist, kann man die iptables sofort starten:

/etc/init.d/iptables restart

Da noch keine Regeln erstellt sind, passiert eigentlich auch nichts. Wichtig: iptables ist ein Filter, der zur Laufzeit gesetzt wird. Ist der Dienst nicht aktiv, werden sämtliche Änderungen ignoriert

Damit iptables beim Hochfahren des Systems gestartet wird, sollte es in den Runlevel eingefügt werden

rc-update add iptables default

Nun kann man entsprechend seinen Vorstellungen die Regeln zu iptables hinzufügen. Der Einfachheit halber empfehlen wir ein bash-Skript zum Konfigurieren von iptables. Bei mir sieht das so aus

makeNAT.sh

#!/bin/bash
IPTABLES='/sbin/iptables'
#
# Schnittstellen als Variablen festlegen
EXTIF='ppp0'
INTIF1='eth0'
INTIF2='eth1'
# IP-Forwarding im Kernel einschalten
/bin/echo 1 > /proc/sys/net/ipv4/ip_forward
#
# Alle Regelungen in IPTables löschen
echo -e "       + reseting IPTables"
$IPTABLES -F
$IPTABLES -X
#
# Alles was nicht geregelt ist wird abgelehnt
# Standardregel waere ACCEPT
$IPTABLES -P INPUT DROP
$IPTABLES -P FORWARD DROP
$IPTABLES -P OUTPUT DROP
#
# Masq/NAT einschalten für lokales Netzwerk
echo -e "       - enable Masquerade"
$IPTABLES -t nat -A POSTROUTING -o $EXTIF -j MASQUERADE
#
# Datentransfer nach aussen immer erlauben
$IPTABLES -A FORWARD -i $INTIF1 -o $EXTIF -m state --state NEW,ESTABLISHED -j ACCEPT
#
# und ein paar Dienste freischalten
echo -e "       - Allowing access to the SSH server"
$IPTABLES -A INPUT --protocol tcp --dport 22 -j ACCEPT
echo -e "       - Allowing access to the HTTP server"
$IPTABLES -A INPUT --protocol tcp --dport 80 -j ACCEPT
#
# ganz wichtig, irgendwo müssen ja die Windowsraubkopien geladen werden
echo -e "       - Allowing access to the MLDONKEY server"
$IPTABLES -A INPUT --protocol udp --dport 4662 -j ACCEPT
$IPTABLES -A INPUT --protocol tcp --dport 4662 -j ACCEPT
# 
# alles andere geht in die Tonne
echo -e "       - disable rest of trafic"
# block out all other Internet access on $EXTIF
$IPTABLES -A INPUT -i $EXTIF -m state --state NEW,INVALID -j DROP
$IPTABLES -A FORWARD -i $EXTIF -m state --state NEW,INVALID -j DROP

wenn das passt, sollte man die erstellten iptables-Regeln noch sichern, damit sie beim nächsten Neustart auch verwendet werden

/etc/init.d/iptables save

[Bearbeiten] Frontends

[Bearbeiten] Grafische Oberfläche

Für Benutzer, die noch nicht ganz mit der Syntax von iptables vertraut sind, gibt es eine gute grafische Schnittstelle namens kmyfirewall. Das Tool kann aktuelle Konfigurationen von iptables auslesen und es können eigene Initscripts erstellt werden, sodass iptables automatisch beim Starten des Systems aktiviert wird. Siehe auch http://kmyfirewall.sourceforge.net/

http://www.simonzone.com/software/guarddog/

[Bearbeiten] Firehol

Wer sich nicht mit der recht komplexen Konfiguration von iptables befassen kann/will, aber nicht auf eine grafische Oberfläche zurückgreifen kann, dem sei das iptables-Frontend Firehol (http://firehol.sf.net) empfohlen. Es hat keine grafische Benutzerschnittstelle, sondern wird über eine .conf-Datei und Shell-Skripte gesteuert. Die Syntax ist jedoch deutlich simpler als die von iptables selbst. Zudem hat Firehol eine Funktion, die die benötigten Einstellungen "errät". Auch die Manpage ist recht eingängig. Zugleich sind auch sehr ausgefeilte Konfigurationen der Firewall möglich, und man kann sogar direkte iptables-Befehle in die Konfiguration einbinden.

Trotz der relativ einfachen Bedienung von Firehol sind (zumindest grundlegende) Kenntnisse von iptables dringend empfohlen. (Stichworte: Policies, eingehende gegenüber ausgehenden Verbindungen, Definieren von IP- und Port-Bereichen, "iptables-save", etc.)


Beachte bitte die Diskussion zu diesem Artikel.


'Persönliche Werkzeuge
Andere Sprachen