Hilfe zu iptables - Firewallscript für Netzwerk
Posted: 03. Apr 2009 15:23
Hallo zusammen, ich hoffe bei euch ein bisschen Hilfe zu finden, da ich leider leicht überfordert bin, als relativer Linuxneuling, der dazu gaaanz komplizierte Terminalsachen nicht mag, ein Script aufzusetzen, welches das Netzwerk meiner Arbeit schützt. Vielleicht ein bisschen dazu, wie es bei uns aussieht: Wir haben ca. 15-20 Rechner (zumeist Windows, hoffentlich schaffen wir nach und nach den Wechsel) und leider nur eine Möglichkeit über Modem ins Internet zu kommen. Das Problem ist, dass der peruanische Anbieter, von dem wir abhängig sind, sehr unzuverlässig ist, sodass wir gerne einen Computer (unserer Linux Firewall-Router) aufsetzen wollen, der morgens mit 2 Modems sich einwählt und dann für den Tag das Internet bereitstellt und gleichzeitig noch unsere Rechner schützt. Nach vielem Suchen im Internet habe ich mir jetzt so einiges über iptables angelesen und bin mir immer noch ziemlich sicher es nicht verstanden zu haben. Was ich mit dem folgenden Script erreichen möchte, ist wie gesagt, dass die Computer, die sich über den Firewall-Router einwählen geschützt sind, jedoch normal im Internet arbeiten können. Ich würde mich freuen, wenn ihr mein Script mal durchsehen könnt (ist sehr zusammen gebastelt, kann also grobe Fehler enthalten) und mir sagt, was ich ändern muss, wie ich das realisieren kann und ob es sinnvoll ist, welche Ports ich öffne und welche nicht.
Vielen Dank für eure Hilfe. Könnt ihr mir ausserdem sagen, ob es möglich ist, dieses Script so abzuändern, dass es für 2 Modems gilt. Muss ich diese dann über die interfaces als z.B. ppp0 und ppp1 einrichten?
Liebe Grüsse God´s disciple
Code: Select all
# Firewallscript mit iptables
#
#!/bin/bash
INTERN=192.168.100.0/255
INTERN-DEV=eth0
EXTERN-DEV=ppp0
IPTABLES=/sbin/iptables
NAT_FORWARDING_TCP_PORT="21,25,80,110,143,443,993,5190,5222,6667,6668,1863"
INPUT_INTERNET_TCP_PORT="443,22"
case $1 in
start)
$0 stop
$IPTABLES -F INPUT
$IPTABLES -F FORWARD
$IPTABLES -F OUTPUT
$IPTABLES -P INPUT DROP
$IPTABLES -P OUTPUT DROP
$IPTABLES -P FORWARD DROP
echo 1 > /proc/sys/net/ipv4/ip_forward
echo "5" >/proc/sys/net/ipv4/icmp_ratelimit
echo "1" > /proc/sys/net/ipv4/conf/$EXTERN-DEV/rp_filter
#Defines the INPUT rules
$IPTABLES -t filter -A INPUT -i lo -j ACCEPT
$IPTABLES -t filter -A INPUT -p icmp -j ACCEPT
$IPTABLES -t filter -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
$IPTABLES -t filter -A INPUT -s 0.0.0.0/0 -p tcp -m multiport --dport $INPUT_INTERNET_TCP_PORT -j ACCEPT
$IPTABLES -t filter -A INPUT -p tcp ! --syn -j ACCEPT #syn packages
$IPTABLES -t filter -A INPUT -i $EXTERN_DEV -s 195.58.160.0/16 -p udp -j ACCEPT #Nameserver
$IPTABLES -t filter -A INPUT -i $EXTERN_DEV -s 195.58.161.0/16 -p udp -j ACCEPT #Nameserver
$IPTABLES -t filter -A INPUT -i $EXTERN_DEV -p udp --dport 53 -j ACCEPT
#Defines the OUTPUT rules
$IPTABLES -t filter -A OUTPUT -p icmp -j ACCEPT
$IPTABLES -t filter -A OUTPUT -o lo -j ACCEPT
$IPTABLES -t filter -A OUTPUT -o $EXTERN_DEV -d 0.0.0.0/0 -p tcp -m multiport --dport $NAT_FORWARDING_TCP_PORT -j ACCEPT #Outgoing ftp
$IPTABLES -t filter -A OUTPUT -p tcp ! --syn -j ACCEPT #syn packages
#Defines the NAT rules
$IPTABLES -A POSTROUTING -t nat -p tcp -o $EXTERN_DEV -s $INTERN -j MASQUERADE
$IPTABLES -A POSTROUTING -t nat -p udp -o $EXTERN_DEV -s $INTERN -j MASQUERADE
$IPTABLES -A POSTROUTING -t nat -p icmp -o $EXTERN_DEV -s $INTERN -j MASQUERADE
$IPTABLES -A FORWARD -p tcp ! --syn -j ACCEPT
$IPTABLES -A FORWARD -i $INTERN_DEV -o $EXTERN_DEV -s $INTERN -p tcp -m multiport --dport $NAT_FORWARDING_TCP_PORT -j ACCEPT
$IPTABLES -A FORWARD -m state --state NEW -p icmp -j ACCEPT
$IPTABLES -A FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT
$IPTABLES -A FORWARD -i $INTERN_DEV -o $EXTERN_DEV -s $INTERN -p tcp -j LOG --log-prefix "~~FILTER~~ FORWARD TCP! " --log-ip-options
$IPTABLES -A FORWARD -i $INTERN_DEV -o $EXTERN_DEV -s $INTERN -p udp -j LOG --log-prefix "~~FILTER~~ FORWARD UDP! " --log-ip-options
echo "Firewall & Routing activated"
;;
stop)
$IPTABLES -t filter -F INPUT
$IPTABLES -t filter -F OUTPUT
$IPTABLES -t filter -F FORWARD
$IPTABLES -t nat -F POSTROUTING
;;
restart)
$0 start
;;
*)
echo "Usage: $0 {startwd|stop|restart}"
;;
esac
Liebe Grüsse God´s disciple