[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

firewall im detail



Hallo,
ich habe soeben (in den letzten 4 Stunden) meine Firewall-Rules
überarbeitet und Debian-like integriert. Dabei habe ich erst einmal
alles verboten um anschließend das zu erlauben, was ich brauche, soweit
die Theorie...leider sieht die Praxis etwas anders aus.

Ich habe nur einen Rechner, der etwas sicherer gemacht werden soll. Dies
ist auch mein Arbeits-/Bastelrechner. (das muß jetzt nicht kommentiert
werden, ich hätte auch lieber noch nen seperaten Rechner für die
Firewall :)

Was nicht funktioniert sind meine OUTPUT-Rules, so daß ich z.B. ftp
nutzen kann. Ich möchte das nur speziellen Programmen erlauben.

# Erlaube ftp raus
$IPTABLES -A OUTPUT -m state --state NEW -p tcp -s $WAN_IP -d $WORLD
--sport $UNPRIVPORTS --dport 20: -o $WAN_DEV -j ACCEPT

Die Fehlermeldung lautet:
Bad argument `$WAN_DEV'
Try `iptables -h' or 'iptables --help' for more information.

Mit der Hilfe und der Doku im Netz komme ich nicht weiter.

Außerdem funktionieren meine pings nicht. Keine Ahnung warum, ehrlich
nicht. Das komplette Script kommt im Anhang.

Gruß
Uli

firewall.sh:
ration

IPTABLES=/sbin/iptables
WAN_DEV="ppp0"
LAN_DEV="eth1"
LAN_IP="192.168.1.10"
LAN_NET="192.168.1.0/24"

# world, unprivports
WORLD="0/0"
UNPRIVPORTS="1024:65535"

# Load modules
modprobe ip_conntrack_ftp
modprobe ip_nat_ftp

# Löscht alle Chains
$IPTABLES -F
$IPTABLES -X

# Set default policies
$IPTABLES -P INPUT DROP
$IPTABLES -P FORWARD DROP
$IPTABLES -P OUTPUT DROP

# Loggen. erstmal loggen, dann rejecten
$IPTABLES -N reject-log
$IPTABLES -A reject-log -j LOG --log-prefix "Firewall: rejected"
$IPTABLES -A reject-log -j REJECT

# Anti spoofing Regeln
$IPTABLES -A INPUT -s 127.0.0.1/255.0.0.0 -i ! lo -j reject-log

# Loopback erlauben
$IPTABLES -A INPUT -i lo -j ACCEPT
$IPTABLES -A OUTPUT -o lo -j ACCEPT

# DynIP herausfinden
[ -z "$WAN_IP" ] &&\
WAN_IP='ifconfig $WAN_DEV |grep inet |cut -d : -f 2 |cut -d \  -f 1'

# Aussteigen, wenn keine IP verfügbar
[ -z "$WAN_IP" ] && echo "$WAN_DEV not configured, aborting." && exit 1


##############################
## Regeln für home.sky.net
##############################

# Erlaube ftp und ftp-data auf dport 20:21 rein
$IPTABLES -A INPUT -m state --state NEW -p tcp -s $WORLD --sport
$UNPRIVPORTS --dport 20:21 -i $WAN_DEV -j ACCEPT
# passive mode ftp
$IPTABLES -A INPUT -m state --state NEW -p tcp -s $WORLD --sport
$UNPRIVPORTS --dport $UNPRIVPORTS -i $WAN_DEV -j ACCEPT

# Erlaube ftp raus
#$IPTABLES -A OUTPUT -m state --state NEW -p tcp -s $WAN_IP -d $WORLD
--sport $UNPRIVPORTS --dport 20: -o $WAN_DEV -j ACCEPT


# Erlaube ssh rein
$IPTABLES -A INPUT -m state --state NEW -p tcp -s $WORLD --sport
$UNPRIVPORTS --dport 22:22 -i $WAN_DEV -j ACCEPT
$IPTABLES -A INPUT -m state --state NEW -p tcp -s $WORLD --sport
1020:1023 --dport 22:22 -i $WAN_DEV -j ACCEPT

# ssh raus
#$IPTABLES -A OUTPUT -m state --state NEW -p tcp -s $WAN_IP -d $WORLD
--sport $UNPRIVPORTS --dport 22:22 -o $WAN_DEV -j ACCEPT
#$IPTABLES -A OUTPUT -m state --state NEW -p tcp -s $WAN_IP -d $WORLD
--sport 1020:1023 --dport 22:22 -o $WAN_DEV -j ACCEPT


# Erlaube smtp raus
#$IPTABLES -A OUTPUT -m state --state NEW -p tcp -s $WAN_IP -d $WORLD
--sport 1024: --dport 25:25 -o $WAN_DEV -j ACCEPT


# Erlaube dns raus
#$IPTABLES -A OUTPUT -m state --state NEW -p tcp -s $WAN_IP -d $WORLD
--sport 1024: --dport 53:53 -o $WAN_DEV -j ACCEPT
#$IPTABLES -A OUTPUT -m state --state NEW -p udp -s $WAN_IP -d $WORLD
--sport 1024: --dport 53:53 -o $WAN_DEV -j ACCEPT


# Erlaube http und https raus
#$IPTABLES -A OUTPUT -m state --state NEW -p tcp -s $WAN_IP -d $WORLD
--sport 1024: --dport 80:80 -o $WAN_DEV -j ACCEPT
#$IPTABLES -A OUTPUT -m state --state NEW -p tcp -s $WAN_IP -d $WORLD
--sport 1024: --dport 443:443 -o $WAN_DEV -j ACCEPT


# Erlaube pop3 raus
#$IPTABLES -A OUTPUT -m state --state NEW -p tcp -s $WAN_IP -d $WORLD
--sport 1024: --dport 110:110 -o $WAN_DEV -j ACCEPT


# Erlaube identd für IRC
$IPTABLES -A INPUT -m state --state NEW -p tcp -s $WORLD --dport 113:113
-i $WAN_DEV -j ACCEPT

###########################################
# Routing für mobil.sky.net
###########################################

# http
$IPTABLES -A FORWARD -p tcp -s $LAN_NET --sport 1024: --dport 80:80 -o
$WAN_DEV -m state --state NEW,ESTABLISHED -j ACCEPT
$IPTABLES -A FORWARD -p tcp -d $LAN_NET --sport 80:80 --dport 1024: -o
$LAN_DEV -m state --state ESTABLISHED -j ACCEPT


# https
$IPTABLES -A FORWARD -p tcp -s $LAN_NET --sport 1024: --dport 443:443 -o
$WAN_DEV -m state --state NEW,ESTABLISHED -j ACCEPT
$IPTABLES -A FORWARD -p tcp -d $LAN_NET --sport 443:443 --dport 1024: -o
$LAN_DEV -m state --state ESTABLISHED -j ACCEPT


# smtp
#$IPTABLES -A FORWARD -p tcp -s $LAN_NET --sport 1024: --dport 25:25 -o
$WAN_DEV -m state --state NEW,ESTABLISHED -j ACCEPT
#$IPTABLES -A FORWARD -p tcp -d $LAN_NET --sport 25:25 --dport 1024: -o
$LAN_DEV -m state --state ESTABLISHED -j ACCEPT


#pop3
#$IPTABLES -A FORWARD -p tcp -s $LAN_NET --sport 1024: --dport 110:110
-o $WAN_DEV -m state --state NEW,ESTABLISHED -j ACCEPT
#$IPTABLES -A FORWARD -p tcp -d $LAN_NET --sport 110:110 --dport 1024:
-o $LAN_DEV -m state --state ESTABLISHED -j ACCEPT


# dns
$IPTABLES -A FORWARD -p tcp -s $LAN_NET --sport 1024: --dport 53:53 -o
$WAN_DEV -m state --state NEW,ESTABLISHED -j ACCEPT
$IPTABLES -A FORWARD -p tcp -d $LAN_NET --sport 53:53 --dport 1024: -o
$LAN_DEV -m state --state ESTABLISHED -j ACCEPT
$IPTABLES -A FORWARD -p udp -s $LAN_NET --sport 1024: --dport 53:53 -o
$WAN_DEV -m state --state NEW,ESTABLISHED -j ACCEPT
$IPTABLES -A FORWARD -p udp -d $LAN_NET --sport 53:53 --dport 1024: -o
$LAN_DEV -m state --state ESTABLISHED -j ACCEPT

##################
## icmp Regeln
##################

$IPTABLES -N icmp-rules

$IPTABLES -A icmp-rules -p icmp --icmp-type destination-unreachable -j
ACCEPT
$IPTABLES -A icmp-rules -p icmp --icmp-type source-quench -j ACCEPT
$IPTABLES -A icmp-rules -p icmp --icmp-type time-exceeded -j ACCEPT
$IPTABLES -A icmp-rules -p icmp --icmp-type parameter-problem -j ACCEPT
$IPTABLES -A icmp-rules -m limit --limit 6/m -j LOG --limit-burst 10
--log-prefix "FIREWALL:icmp-drop"
$IPTABLES -A icmp-rules -j DROP

# Jetzt werden alle icmp-Packete an die entsprechende Kette
# weitergegeben
$IPTABLES -A INPUT -p icmp -j icmp-rules
$IPTABLES -A FORWARD -p icmp -j icmp-rules
$IPTABLES -A OUTPUT -p icmp -j icmp-rules



#############################
# Der letzte Check
#############################

$IPTABLES -N default

$IPTABLES -A default -m state --state INVALID -j RETURN
$IPTABLES -A default -m state --state ESTABLISHED,RELATED -j ACCEPT
$IPTABLES -A default -m state --state NEW -i ! $WAN_DEV -j ACCEPT

# Log alles, was bis hierher kommt
$IPTABLES -A default -j LOG -m limit --limit 30/minute --log-prefix
"Dropping: "
# Drop den Rest
$IPTABLES -A default -j DROP

# Alles über default leiten
$IPTABLES -A INPUT -j default
$IPTABLES -A FORWARD -j default
$IPTABLES -A OUTPUT -j default


## -- eof firewall.sh



Reply to: