PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Firewallscript so ok?



mdkuser
17.10.03, 09:55
Hallo,
ich habe mich mal mit iptables beschäftigt, bin aber noch Newbie. Nun wuerde ich gern wissen, ob mein zusammengebasteltes Script noch Denkfehler aufweist oder so ok ist. Wäre nett, wenn das mal jemand von den Profis hier checken könnte.
Das Script soll folgendes ermöglichen:

- alles raus von internem und externen Interface
- alles rein zum internen Interface
- allen Input vom Internet nur zulassen wenn related, oder established (Ausnahme ssh auf Port 22)
- Routing von intern zu extern soll nur für IP-Bereich 192.168.1.* erfolgen
- Routing von aussen soll nur weitergeleitet werden wenn related oder established
- alle anderen ungültigen pakete und welche die nicht mit diesen Regeln matchen sollen verworfen werden werden

kurz gesagt:
Will ich also im LAN alles offen haben, zum Internet aber nur ssh, sonst nur related und established, alles andere sperren, ausserdem soll vom Lan zum Internet alles geroutet werden, aber nur für angegebenen IP-Bereich.



#!/bin/sh

IPT=/sbin/iptables
INET=eth0 #ppp0 #fuer Modemverbindung #ippp0 #fuer ISDN-Verbindung
LOC=eth1 #lokales Interface fuer Intranet
LO_IF=lo
LO_IP=127.0.0.1

#aktiviere IPv4 Weiterleitung und Dynamische Adressen
echo "1" > /proc/sys/net/ipv4/ip_forward
echo "1" > /proc/sys/net/ipv4/ip_dynaddr

#Default Policy auf alles verbieten setzen
$IPT -P INPUT DROP
$IPT -P OUTPUT DROP
$IPT -P FORWARD DROP

#alle Paketfilterketten löschen
$IPT -F INPUT
$IPT -F OUTPUT
$IPT -F FORWARD
$IPT -F -t nat
$IPT -X
$IPT -Z

#Regeln fuer Loopback-Interface setzen
$IPT -A OUTPUT -s $LO_IP -d $LO_IP -j ACCEPT
$IPT -A INPUT -s $LO_IP -d $LO_IP -i LO_IF -j ACCEPT

#Regeln fuer lokales Interface setzen
$IPT -A OUTPUT -o $LOC -j ACCEPT #alles Output zulassen
$IPT -A INPUT -i $LOC -j ACCEPT # alles Input zulassen

#Regeln fuer externes Interface setzen
$IPT -A OUTPUT -o $INET -j ACCEPT #alles Output zulassen
$IPT -A INPUT -p tcp -i $INET --source-port 22 -dport 22 -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT #nur ssh zulassen
$IPT -A INPUT -i $INET -m state --state RELATED,ESTABLISHED -j ACCEPT

#Regeln für Forwarding und Masquerading (NAT) setzen
$IPT -A FORWARD -i $INET -o $LOC -m state --state ESTABLISHED,RELATED -j ACCEPT
$IPT -A FORWARD -i $LOC -o $INET -j ACCEPT
$IPT -t nat -A POSTROUTING -o $INET -s 192.168.1.0/24 -j MASQUERADE #Maskierung nur für IPs 192.168.1.*

#alle anderen Pakete verwerfen
$IPT -A INPUT -i $INET -m state --state NEW,INVALID -j DROP
$IPT -A FORWARD -i $INET -m state --state NEW,INVALID -j DROP
$IPT -A INPUT -i $INET -j DROP


Ist das so ok?
Vielen Dank für Eure Hilfe!
Grüße