#/bin/sh ######################################################## # # # Skript: Firewall-Skript fuer DSL-Router # # # ######################################################## # Author: idef.x@infinity-community.com # # Datum : 16.02.2003 # # Status: funktiostuechtiges Beispiel # ######################################################## # Dieses Skript darf und soll von jedem kopiert # # und veraendert werden. # # Fuer Anregungen aller Art bin ich jederzeit dankbar. # ######################################################## #--- Forwarding aktivieren --- echo -n '.' echo 1 >> /proc/sys/net/ipv4/ip_forward echo 1 >> /proc/sys/net/ipv4/ip_dynaddr #--- Netfilter-Module laden --- echo -n '.' modprobe ip_tables echo -n '.' modprobe iptable_filter modprobe iptable_nat echo -n '.' modprobe ip_conntrack modprobe ip_conntrack_ftp modprobe ip_conntrack_irc echo -n '.' modprobe ip_nat_ftp modprobe ip_nat_irc echo -n '.' modprobe ipt_unclean modprobe ipt_state modprobe ipt_tcpmss echo -n '.' modprobe ipt_MASQUERADE modprobe ipt_TCPMSS modprobe ipt_LOG #--- alte Regeln löschen --- echo -n '.' iptables -t filter -F iptables -t nat -F #--- Default Policy setzen --- echo -n '.' iptables -t filter -P INPUT ACCEPT iptables -t filter -P FORWARD ACCEPT iptables -t filter -P OUTPUT ACCEPT iptables -t nat -P PREROUTING ACCEPT iptables -t nat -P POSTROUTING ACCEPT #--- Masquerading aktivieren --- echo -n '.' iptables -t nat -A POSTROUTING -o ppp0 -s 192.168.0.0/16 -j MASQUERADE #--- MSS der Pakete ins I-Net an die MTU von DSL (=1492) anpassen --- echo -n '.' iptables -A FORWARD -o ppp0 -p TCP --tcp-flags SYN,RST SYN -j TCPMSS --clamp-mss-to-pmtu #---- Massnahmen gegen Angriffsversuche ergreifen -----------------------------> echo -n '.' #-- ungewöhnliche/defekte Pakete verwerfen -- # forwarding iptables -A FORWARD -m unclean -j DROP # local input iptables -A INPUT -m unclean -j DROP #-- Pakete aus I-Net mit privaten (gefaelschten) Absenderadressen verwerfen -- # prerouting iptables -t nat -A PREROUTING -i ppp0 -s 192.168.0.0/16 -j DROP iptables -t nat -A PREROUTING -i ppp0 -s 10.0.0.0/8 -j DROP iptables -t nat -A PREROUTING -i ppp0 -s 172.16.0.0/12 -j DROP iptables -t nat -A PREROUTING -i ppp0 -s 127.0.0.0/8 -j DROP # forwarding iptables -A FORWARD -i ppp0 -s 192.168.0.0/16 -j DROP iptables -A FORWARD -i ppp0 -s 10.0.0.0/8 -j DROP iptables -A FORWARD -i ppp0 -s 172.16.0.0/12 -j DROP iptables -A FORWARD -i ppp0 -s 127.0.0.0/8 -j DROP # local input iptables -A INPUT -i ppp0 -s 192.168.0.0/16 -j DROP iptables -A INPUT -i ppp0 -s 10.0.0.0/8 -j DROP iptables -A INPUT -i ppp0 -s 172.16.0.0/12 -j DROP iptables -A INPUT -i ppp0 -s 127.0.0.0/8 -j DROP #---- Destination-NAT aktivieren ----------------------------------------------> echo -n '.' #-- eMule-Verbindungen nach 192.168.1.5 leiten -- #iptables -t nat -A PREROUTING -i ppp0 -p TCP --dport 4662 -j DNAT --to-destination 192.168.1.5 #iptables -t nat -A PREROUTING -i ppp0 -p UDP --dport 5662 -j DNAT --to-destination 192.168.1.5 #---- bestimmte Verbindungen aus I-Net erlauben --------------------------------> echo -n '.' #-- HTTP -- #iptables -A INPUT -i ppp0 -p TCP --dport 80 -j ACCEPT #-- SSH -- #iptables -A INPUT -i ppp0 -p TCP --dport 22 -j ACCEPT #-- FTP (mit offenen Ports für "passive mode") -- #iptables -A INPUT -i ppp0 -p TCP --dport 21 -j ACCEPT #iptables -A INPUT -i ppp0 -p TCP --dport 49152:65534 -j ACCEPT #-- Ping -- iptables -A INPUT -i ppp0 -p ICMP --icmp-type ping -j ACCEPT #-- Destination-NAT für lokales Netzwerk erlauben -- iptables -A FORWARD -i ppp0 -d 192.168.0.0/16 -j ACCEPT #---- alle uebrigen Verbindungen aus I-Net abweisen ---------------------------> echo -n '.' # forwarding iptables -A FORWARD -i ppp0 -m state --state NEW,INVALID -j LOG iptables -A FORWARD -i ppp0 -m state --state NEW,INVALID -j DROP # local input iptables -A INPUT -i ppp0 -m state --state NEW,INVALID -j LOG iptables -A INPUT -i ppp0 -m state --state NEW,INVALID -j DROP #---- Ende Firewall-Skript ----------------------------------------------------> echo -n '.'