#!/bin/sh # Meine Firewall-Regeln # Verbindungsaufbau nur vom LAN ins Internet zulassen. # Nur Antwortpakete aus dem Internet akzeptieren. # Siehe auch Netfilter-Howto: # http://www.netfilter.org/documentation/HOWTO/packet-filtering-HOWTO.html # Nötigen Kernel-Module laden modprobe ipt_MASQUERADE modprobe ip_conntrack modprobe ip_conntrack_ftp modprobe ipt_REJECT modprobe ipt_LOG # Alte Regeln löschen iptables -F iptables -t nat -F iptables -t mangle -F iptables -X # Alle nutzerdefinierten Tabellen löschen # Default Policy: # Leider gibt es bei der Default-Policy kein "REJECT" iptables -P INPUT DROP iptables -P OUTPUT ACCEPT iptables -P FORWARD DROP # Spoofing Protection: # Absender oder Zieladresse muss dem IP-Bereich # der Netzwerkkarte übereinstimmen. for f in /proc/sys/net/ipv4/conf/*/rp_filter; do echo 1 > $f done # Antwort-Pakete sind erlaubt iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT iptables -A FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT # Anfragen vom internen Netzwerk akzeptieren iptables -A INPUT -i eth0 -j ACCEPT iptables -A INPUT -i ath0 -j ACCEPT # Protkolliere Verbindungsaufbau nach außen iptables -A OUTPUT -o ppp0 -m state --state NEW -j LOG --log-prefix "output-ok " iptables -A FORWARD -o ppp0 -m state --state NEW -j LOG --log-prefix "forward-ok " # Verbindungsaufbau vom LAN (FORWARD) ins Internet ist zugelassen. iptables -A FORWARD -i ! ppp0 -m state --state NEW -j ACCEPT # Accept all from loopback (127.0.0.1) iptables -A INPUT -i lo -j ACCEPT # REJECT anstatt DROP erleichtert das Fehlerfinden # und warten auf Timeouts entfällt. iptables -A INPUT -j LOG --log-prefix "input-reject " iptables -A INPUT -j REJECT iptables -A FORWARD -j LOG --log-prefix "forward-reject " iptables -A FORWARD -j REJECT # Masquerading: # "Verstecke" das interne Netz hinter der öffentlichen IP-Adresse von ppp0 iptables -t nat -A POSTROUTING -o ppp0 -j MASQUERADE echo 1 > /proc/sys/net/ipv4/ip_forward