Linux Firewall mit iptables

From JonDonym Wiki
Jump to: navigation, search

En2.png De2.png  Hauptseite (de) | Linux Server Setup

Firewall mit iptables nutzen

Eine restriktive Firewall sollte in jedem Fall genutzt werden. Man kann verschiedene GUI-Tools nutzen, Firewall-Regeln zu erstellen. Ein kleines übersichtliches Firewall-Skript ist aber auch schnell geschrieben und einfach anzupassen. Der Code kann mit Copy&Paste übernommen und beim Einrichten der Netzwerkverbindung automatisch ausgeführt werden.

Der Kopf des Firewall-Skripts mit dem Setzen der Default-Einstellungen:

#!/bin/sh
IPT=/sbin/iptables
IFACE="eth0"
# Alle Werte zurücksetzen
$IPT -t mangle -F
$IPT -t mangle -X
$IPT -t nat -F
$IPT -t nat -X
$IPT -F
$IPT -X
# forwarding deaktivieren
echo 0 > /proc/sys/net/ipv4/ip_forward
# Default-Policies setzen
$IPT -P INPUT DROP
$IPT -P FORWARD DROP
$IPT -P OUTPUT ACCEPT
# loopback freischalten
$IPT -A INPUT -i lo -j ACCEPT
$IPT -A OUTPUT -o lo -j ACCEPT
# Antworten auf bestehende Verbindungen erlauben
$IPT -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT

Wenn der Server vom Monitoring des ISP überwacht werden soll, kann es nötig sein, die Antworten auf Ping-Pakete zu erlauben. Besser ist es allerding, den Monitoring-Port des Mix zu nutzen und die folgende Regel nicht zu aktivieren. Verbietet man die Antworten auf Pings, ist der Server bei einfachen Netzscans nicht erkennbar und wird damit weniger angegriffen.

# ICMP erlauben (nur für einige ISPs nötig)
$IPT -A INPUT -m state --state NEW -p icmp -j ACCEPT

Die folgenden Regeln für SSH-Verbingungen sichern den SSH-Daemon zusätzlich ab. Bei 3 falschen Login-Versuchen wird die IP-Adresse für 120sec gesperrt. Eine vergleichbare Funtionalität lässt sich mit dem Tool fail2ban umsetzen.

# SSH erlauben, max. 3 Versuche in 120sec (Port anpassen!)
$IPT -A INPUT -i $IFACE -p tcp --dport 22022 -m state --state NEW -m recent --set --name SSH
$IPT -A INPUT -i $IFACE -p tcp --dport 22022 -m state --state NEW -m recent --rcheck --seconds 120 --hitcount 4 --rttl --name SSH -j REJECT --reject-with tcp-reset
$IPT -A INPUT -i $IFACE -p tcp --dport 22022 -m state --state NEW -j ACCEPT

Dann können die einzelen Server-Dienste freigeschaltet werden. Auch die Dienste auf den VServern sind freizuschalten. Das Beispiel 123.123.123.123 ist durch die IP-Adresse des Mix-Servers zu ersetzen:

# enable mix server
$IPT -A INPUT -i $IFACE -p tcp -d 123.123.123.123 --dport 443 -j ACCEPT
$IPT -A INPUT -i $IFACE -p tcp -d 123.123.123.123 --dport 80 -j ACCEPT
$IPT -A INPUT -i $IFACE -p tcp -d 123.123.123.123 --dport 6544 -j ACCEPT
# enable mix monitoring
$IPT -A INPUT -i $IFACE -p tcp -d 123.123.123.123 --dport 8080 -j ACCEPT

Für Middle- und Exit-Mix Server können Verbindungen zum Mix auf die IP-Adresse des Vorgängers in der Kaskade eingeschänkt werde. Die Adresse 234.234.234.234 im Beispiel ist durch die Adresse des pertner-Mix zu ersetzen:

# enable mix server
$IPT -A INPUT -i $IFACE -p tcp -d 123.123.123.123 -s 234.234.234.234 --dport 6544 -j ACCEPT 
# enable mix monitoring (if required)
$IPT -A INPUT -i $IFACE -p tcp -d 123.123.123.123 --dport 8080 -j ACCEPT

In der letzen Zeile ist alles weitere zu verwerfen:

$IPT -A INPUT -j DROP
Personal tools