**!!! ACHTUNG - evtl. veraltet - ACHTUNG !!!**
Diese Seite wurde zuletzt am 8. Juli 2014 um 17:02 Uhr geändert.
Grundsätzlich sollte man alles in ein Shell-Skript packen.
Darüber hinaus dann natürlich die Umgebungsvariable "PATH" anpassen, das ausführbare Binary nebst Pfad und die Netzwerkschnittstellen in eine Variable schreiben, z. B. so:
#!/bin/bash
export PATH="$PATH:/sbin"
IPTABLES="/sbin/iptables"
RED="eth0"
GREEN="dummy0"
[[...]]
Bevor die eigentlichen Regeln dran sind, können noch ein paar grundlegende Einstellungen gemacht werden, z. B. so:
[[...]]
if [[|-e /proc/sys/net/ipv4/conf/all/rp_filter ]]; then
for f in /proc/sys/net/ipv4/conf/*/rp_filter; do
echo 1 > $f
done
fi
echo 0 > /proc/sys/net/ipv4/tcp_ecn
modprobe ip_conntrack
modprobe ip_conntrack_ftp
modprobe ip_nat_ftp
[[...]]
Da man die Regeln bestimmt nicht nur aktivieren, sondern auch deaktivieren möchte, packt man sich das ganze am Besten gleich per "case" in die Alternativen "start", "stop", "restart" und "reset".
Start könnte z. B. so aussehen:
# routing (off) + DROP all + cleanup
echo 0 > /proc/sys/net/ipv4/ip_forward
$IPTABLES -P INPUT DROP
$IPTABLES -P OUTPUT DROP
$IPTABLES -P FORWARD DROP
$IPTABLES -t nat -F
$IPTABLES -t nat -X
$IPTABLES -F
$IPTABLES -X
# input
$IPTABLES -N RED-INPUT
$IPTABLES -A INPUT -i lo -j ACCEPT
$IPTABLES -A INPUT -i $GREEN -j ACCEPT
$IPTABLES -A INPUT -i $RED -j RED-INPUT
$IPTABLES -A RED-INPUT -p tcp --dport 22 -j ACCEPT
# output
$IPTABLES -N RED-OUTPUT
$IPTABLES -A OUTPUT -o lo -j ACCEPT
$IPTABLES -A OUTPUT -o $GREEN -j ACCEPT
$IPTABLES -A OUTPUT -o $RED -j RED-OUTPUT
$IPTABLES -A RED-OUTPUT -p tcp --dport 21 -j ACCEPT
$IPTABLES -A RED-OUTPUT -p tcp --dport 53 -j ACCEPT
$IPTABLES -A RED-OUTPUT -p udp --dport 53 -j ACCEPT
$IPTABLES -A RED-OUTPUT -p tcp --dport 80 -j ACCEPT
$IPTABLES -A RED-OUTPUT -p tcp --dport 123 -j ACCEPT
$IPTABLES -A RED-OUTPUT -p udp --dport 123 -j ACCEPT
$IPTABLES -A RED-OUTPUT -p tcp --dport 443 -j ACCEPT
$IPTABLES -A RED-OUTPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
$IPTABLES -A RED-OUTPUT -j REJECT
# forward
$IPTABLES -N FORWARD-GREEN
$IPTABLES -N FORWARD-RED
$IPTABLES -A FORWARD -i $GREEN -j FORWARD-GREEN
$IPTABLES -A FORWARD -i $RED -j FORWARD-RED
$IPTABLES -A FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT
$IPTABLES -A FORWARD -j DROP
$IPTABLES -A FORWARD-GREEN -o $GREEN -j ACCEPT
$IPTABLES -A FORWARD-GREEN -o $RED -j ACCEPT
$IPTABLES -A FORWARD-GREEN -j REJECT
$IPTABLES -A FORWARD-RED -j DROP
# dnat
$IPTABLES -t nat -A PREROUTING -i $RED -p tcp --dport 25 -j DNAT --to-destination 192.168.0.25:25
# snat
$IPTABLES -t nat -A POSTROUTING -s 192.168.0.0/255.255.255.0 -d ! 192.168.0.0/255.255.255.0 -j SNAT --to-source
# routing (on)
echo 1 > /proc/sys/net/ipv4/ip_forward
# tws => 64k (max)
echo 0 > /proc/sys/net/ipv4/tcp_window_scaling
Stop könnte z. B. so aussehen:
# ACCEPT all + cleanup
$IPTABLES -P INPUT ACCEPT
$IPTABLES -P OUTPUT ACCEPT
$IPTABLES -P FORWARD ACCEPT
$IPTABLES -t nat -F
$IPTABLES -t nat -X
$IPTABLES -F
$IPTABLES -X
Ein Restart ruft nacheinander "stop" und "start" auf.
Um die Counter (hilfreich zum auffinden von fehlenden Regeln per "iptables -n -L -v") resetten zu können, könnte "reset" z. B. so aussehen:
# reset counters
$IPTABLES -t nat -Z
$IPTABLES -Z
Hier und da fehlen viell. noch ein paar Informationen, aber für den Anfang sollte es das hier erstmal tun.