Ich habe so ein Skript umgeschrieben. Wenn ich das Skript starte, bekomme ich 8 Zeilen mit diser Fehlermeldung: "iptables: No chain/target/match by that" und "http:80" ist dicht. Normalerweiser sollte port 80 auch offen sein. Ich weiss es nicht , warum solche Fehlermeldungen bekomme ich. Vielleicht jemand hilft mir weiter, dann würde ich dankbar sein...


#!/bin/bash
#
# /etc/ppp/ip-up.local
#
# Version: 20020427 - 0.2
#
# Einige Parameter, die uns der pppd mit uebergibt
#
# Interface-name (Device der aktuellen Verbindung, z.B. ppp0)

DEV_INET0=eth0
# DEV_INET1=eth1

# local-IP-address (IP-Adresse, die wir vom Provider zuegwiesen bekommen
# haben
IP_INET0=192.168.0.104
# IP_INET1=81.2.136.126

# remote-IP-address (unsere Gegenstelle beim Provider)
#IP_GATEWAY=$5

#
# Einige weitere Variablen, die praktisch sein koennen bzw. die
# benoetigt werden
#
# Loopback Device. Hat jeder. Finger weg!
DEV_LOOP=lo
IP_LOOP=127.0.0.1

# Kürzel für alle IP-Adressen
ANY=0.0.0.0/0

# Das aktuelle Datum und die Uhrzeit
DATE=$(date)

# Vollen Pfad von iptables
IPTABLES=/usr/local/sbin/iptables

# IP-Forwarding im Kernel zunächst deaktivieren -wird am Schluss des Skriptes
# wieder aktiviert
echo 0 > /proc/sys/net/ipv4/ip_forward

# Benoetigte Module laden
modprobe ip_tables &> /dev/null
modprobe ip_conntrack &> /dev/null
modprobe ip_conntrack_ftp &> /dev/null
modprobe ipt_state &> /dev/null
modprobe iptable_nat &> /dev/null
modprobe ipt_REJECT &> /dev/null
modprobe ipt_MASQUERADE &> /dev/null

# Alle alten Regeln löschen, anschließend die Default-Policy setzen
$IPTABLES -F
$IPTABLES -X
$IPTABLES -F -t filter
$IPTABLES -F -t nat
$IPTABLES -F -t mangle
$IPTABLES -t filter -X
$IPTABLES -t nat -X
$IPTABLES -t mangle -X

# Wenn keine andere Regel greift, alles verwerfen
$IPTABLES -P INPUT DROP
$IPTABLES -P FORWARD DROP
$IPTABLES -P OUTPUT DROP

# PRE- und POST-Routing in der nat-Tabelle erlauben
$IPTABLES -t nat -P PREROUTING ACCEPT
$IPTABLES -t nat -P POSTROUTING ACCEPT
#
# Zunächst alle "illegalen" Pakete blocken - trotz der Default-Policy "DROP"
# sinnvoll, einzeln aufzulisten, um sie korrekt zu "REJECT"en und auch
# mitzuloggen.
#
# Ersteinmal alles löschen, was generell kaputt ist oder
# Angriffsversuche darstellen könnte.
$IPTABLES -N invalid
$IPTABLES -A INPUT -m state --state INVALID -i ! $DEV_LOOP -j invalid
$IPTABLES -A FORWARD -m state --state INVALID -j invalid
$IPTABLES -A INPUT -m unclean -i ! $DEV_LOOP -j invalid
$IPTABLES -A invalid -m limit -j LOG --log-prefix "invalid"
$IPTABLES -A invalid -j REJECT
#
# Scan-Pakete: log and drop
#
# Blocke sog. XMAS-Pakete, erzeugt einen Fehler! wurde auskommentiert
$IPTABLES -N xmas
$IPTABLES -A INPUT -p tcp --tcp-flags ALL ALL -j xmas
$IPTABLES -A FORWARD -p tcp --tcp-flags ALL ALL -j xmas
$IPTABLES -A xmas -m limit -j LOG --log-level info --log-prefix "xmas-scan "
$IPTABLES -A xmas -j REJECT

# Blocke NULL Pakete
$IPTABLES -N null_scan
$IPTABLES -A INPUT -p tcp --tcp-flags ALL NONE -j null_scan
$IPTABLES -A FORWARD -p tcp --tcp-flags ALL NONE -j null_scan
$IPTABLES -A null_scan -m limit -j LOG --log-level info --log-prefix \
"null-scan "
$IPTABLES -A null_scan -j REJECT

# Spoofed packets: log and drop
$IPTABLES -N spoofing
$IPTABLES -A FORWARD -i $DEV_INET0 -s 192.168.0.0/16 -j spoofing
$IPTABLES -A FORWARD -i $DEV_INET0 -s 172.16.0.0/12 -j spoofing
$IPTABLES -A FORWARD -i $DEV_INET0 -s 10.0.0.0/8 -j spoofing
#$IPTABLES -A FORWARD -i $DEV_INET1 -s 192.168.0.0/16 -j spoofing
#$IPTABLES -A FORWARD -i $DEV_INET1 -s 172.16.0.0/12 -j spoofing
#$IPTABLES -A FORWARD -i $DEV_INET1 -s 10.0.0.0/8 -j spoofing
$IPTABLES -A spoofing -m limit -j LOG --log-level info --log-prefix "spoofing "
$IPTABLES -A spoofing -j REJECT

# icmp handling - ICMP-Pakete werden erlaubt, bis auf type 5 (redirect)
$IPTABLES -N icmp_allow
$IPTABLES -N icmp_reject
$IPTABLES -A INPUT -p icmp --icmp-type ! 5 -j icmp_allow
$IPTABLES -A INPUT -i $DEV_INET0 -p icmp --icmp-type 5 -m limit -j icmp_reject
#$IPTABLES -A INPUT -i $DEV_INET1 -p icmp --icmp-type 5 -m limit -j icmp_reject
$IPTABLES -A icmp_allow -j ACCEPT
$IPTABLES -A icmp_reject -m limit -j LOG --log-prefix "icmp_rej "
$IPTABLES -A icmp_reject -j REJECT --reject-with icmp-host-unreachable
#
# Bereits bestehende Verbindungen werden immer akzeptiert: das spart
# das explizite freischalten der INPUT-Pakete bei erlaubten Verbindungen ein
$IPTABLES -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
$IPTABLES -A OUTPUT -m state --state ESTABLISHED,RELATED -j ACCEPT

# Verbindungen zum loopback-Device - Das ist NOTWENDIG
$IPTABLES -N lo_accept
$IPTABLES -A INPUT -i $DEV_LOOP -m state --state NEW -j lo_accept
$IPTABLES -A OUTPUT -o $DEV_LOOP -m state --state NEW -j lo_accept
$IPTABLES -A lo_accept -j ACCEPT
# Pings vom Gateway erlauben
$IPTABLES -N icmp_gate
$IPTABLES -A OUTPUT -p icmp -j icmp_gate
$IPTABLES -A INPUT -p icmp -j icmp_gate
$IPTABLES -A icmp_gate -j ACCEPT

# Erlaube www/ftp vom Gateway (z. B. beim Update übers Inet)
$IPTABLES -N www_gate
$IPTABLES -A OUTPUT -p tcp --dport 21 -s $IP_INET0 -m state --state NEW \
-o $DEV_INET0 -j www_gate
$IPTABLES -A INPUT -p tcp --dport 21 -d $IP_INET0 -m state --state NEW \
-i $DEV_INET0 -j www_gate
$IPTABLES -A OUTPUT -p tcp --dport 80 -s $IP_INET0 -m state --state NEW \
-o $DEV_INET0 -j www_gate
$IPTABLES -A INPUT -p tcp --dport 80 -d $IP_INET0 -m state --state NEW \
-i $DEV_INET0 -j www_gate

#$IPTABLES -A OUTPUT -p tcp --dport 21 -s $IP_INET1 -m state --state NEW \
# -o $DEV_INET1 -j www_gate
#$IPTABLES -A OUTPUT -p tcp --dport 80 -s $IP_INET1 -m state --state NEW \
# -o $DEV_INET1 -j www_gate
$IPTABLES -A www_gate -j ACCEPT

# timeserver: erlaubt das Holen der aktuellen Zeit aus dem Inet
$IPTABLES -N ntp_gate
$IPTABLES -A OUTPUT -p udp --dport 123 -s $IP_INET0 -m state --state NEW \
-o $DEV_INET0 -j ntp_gate
#$IPTABLES -A OUTPUT -p udp --dport 123 -s $IP_INET1 -m state --state NEW \
# -o $DEV_INET1 -j ntp_gate
$IPTABLES -A ntp_gate -j ACCEPT

# DNS erlauben
$IPTABLES -N dns_gate
$IPTABLES -A OUTPUT -p udp -o $DEV_INET0 --dport 53 -m state --state NEW \
-j dns_gate
$IPTABLES -A INPUT -p udp -i $DEV_INET0 --dport 53 -m state --state NEW \
-j dns_gate

#$IPTABLES -A OUTPUT -p udp -o $DEV_INET1 --dport 53 -m state --state NEW \
# -j dns_gate
$IPTABLES -A dns_gate -j ACCEPT

# ssh-Verbindungen erlauben (aus dem lokalen Netz, vom Gateway nach aussen):
# Bei gewünschten Verbindungen von aussen an das Gateway entpsrechende Zeile
# mit aktivieren!
$IPTABLES -N ssh_gate
$IPTABLES -A OUTPUT -p tcp -m state --state NEW --dport 22 -j ssh_gate
$IPTABLES -A INPUT -p tcp -m state --state NEW -d $IP_INET0 --dport 22 \
-j ssh_gate
#$IPTABLES -A INPUT -p tcp -m state --state NEW -d $IP_INET1 --dport 22 \
# -j ssh_gate
$IPTABLES -A ssh_gate -j ACCEPT

# Smtp-Verbindungen vom Gateway nach aussen erlauben
$IPTABLES -N smtp_gate
$IPTABLES -A OUTPUT -p tcp -o $DEV_INET0 -m state --state NEW \
--dport 25 -j smtp_gate
$IPTABLES -A INPUT -p tcp -i $DEV_INET0 -m state --state NEW \
--dport 25 -j smtp_gate
#$IPTABLES -A OUTPUT -p tcp -o $DEV_INET1 -m state --state NEW \
# --dport 25 -j smtp_gate
$IPTABLES -A smtp_gate -j ACCEPT

# Pop3-Verbindungen vom Gateway nach aussen erlauben
$IPTABLES -N pop3_gate
$IPTABLES -A OUTPUT -p tcp -o $DEV_INET0 -m state --state NEW \
--dport 110 -j pop3_gate
$IPTABLES -A INPUT -p tcp -i $DEV_INET0 -m state --state NEW \
--dport 110 -j pop3_gate
#$IPTABLES -A OUTPUT -p tcp -o $DEV_INET1 -m state --state NEW \
# --dport 110 -j pop3_gate
$IPTABLES -A pop3_gate -j ACCEPT

#
# Abschluss-Regeln
#

# Alles Loggen, was bis jetzt durchgegangen ist. Sollte man sich genauer
# anschauen, wenn das im Log auftaucht
$IPTABLES -A INPUT -m limit -j LOG --log-prefix "FINAL IN "
$IPTABLES -A OUTPUT -m limit -j LOG --log-prefix "FINAL OUT "
$IPTABLES -A FORWARD -m limit -j LOG --log-prefix "FINAL FOR "

# Und dann alles abblocken, was bis hierin durchgegangen ist
$IPTABLES -A INPUT -j REJECT
$IPTABLES -A OUTPUT -j REJECT
$IPTABLES -A FORWARD -j REJECT

# Forwarding im Kernel nun wieder aktivieren
echo 1 > /proc/sys/net/ipv4/ip_forward
echo 1 > /proc/sys/net/ipv4/conf/all/proxy_arp

# IP-Spoofing aktivieren - Sollte unter SuSE leichter in /etc/rc.config
# gesetzt werden, ansonsten hier aktivieren
for f in /proc/sys/net/ipv4/conf/*/rp_filter; do
echo 1 > $f
done