• Willkommen im Linux Club - dem deutschsprachigen Supportforum für GNU/Linux. Registriere dich kostenlos, um alle Inhalte zu sehen und Fragen zu stellen.

IPTABLES - Script Fehlerhaft???

Hallo!

Ich setze folgendes IP-Tables-Script ein (Mein System SuSE 9.2 Pro):

Code:
#! /bin/sh
# iptables-Filterskript ab SuSE Linux 7.1 (Kernel 2.4.x und 2.6.x)
# FileHomeName: /etc/init.d/iptablesfilter

# Deklaration der Variablen -------------------------------------------------

IPCHAINS=/sbin/ipchains			# Pfad fuer ipchains

IPTABLES=/usr/sbin/iptables		# Pfad fuer die Filterregeln

DEV_INT=eth0				# Netzwerkkarte im Server -
					# Verbindung zum internen Bereich 

DEV_EXT=dsl0				# bis SuSE 9.1: DSL,Modem(ppp0), ISDN-Karte(ippp0) 
					# ab Suse 9.2: Modem(modem0), DSL(dsl0), ISDN(ippp0)
					# Verbindung zum externen Bereich 

INT=192.168.1.0/24			# Adressbereich der LAN-PC - 
					# interner Bereich

EXT=0.0.0.0/0.0.0.0			# Adressbereich im Internet - 
					# externer Bereich (alle Adressen moeglich)

. /etc/rc.status
. /etc/rc.config

# Determine the base and follow a runlevel link name.
base=${0##*/}
link=${base#*[SK][0-9][0-9]}

# Force execution if not called by a runlevel directory.
test $link = $base && START_IPTABLESFILTER=yes
test "$START_IPTABLESFILTER" = yes || exit 0

# Shell functions sourced from /etc/rc.status:
rc_reset

# Start der Firewall --------------------------------------------------------

case "$1" in
start)

echo "  " # Leerzeile
echo "Die Firewall -iptablesfilter- wird eingerichtet ......."
echo "  " # Leerzeile

# Kernelmodule --------------------------------------------------------------

IPCHRESP=`$IPCHAINS -n -L 2>&1`	# ipchains-Regeln entladen, falls aktiviert
if test $? -eq 0; then
rmmod ipchains
fi

modprobe ip_tables			# Aktivierung der iptables-Regeln
# modprobe iptable_nat			# Aktivierung NAT (Network Adress Translation)
# modprobe ip_nat_ftp			# Aktivierung NAT fr FTP
modprobe ip_conntrack			# Kontrolle der Verbindungen
modprobe ip_conntrack_ftp		# Kontrolle der Verbindungen - FTP

# Kernelparameter werden eingestellt ----------------------------------------

echo 1 > /proc/sys/net/ipv4/ip_forward
echo 1 > /proc/sys/net/ipv4/ip_dynaddr
echo 1 > /proc/sys/net/ipv4/tcp_syncookies
echo 1 > /proc/sys/net/ipv4/icmp_echo_ignore_broadcasts
echo 1 > /proc/sys/net/ipv4/icmp_ignore_bogus_error_responses
# echo 5 > /proc/sys/net/ipv4/icmp_destunreach_rate
# echo 5 > /proc/sys/net/ipv4/icmp_echoreply_rate
# echo 5 > /proc/sys/net/ipv4/icmp_paramprob_rate
# echo 10 > /proc/sys/net/ipv4/icmp_timeexceed_rate

# Interface
echo 1 > /proc/sys/net/ipv4/conf/all/rp_filter
echo 0 > /proc/sys/net/ipv4/conf/all/accept_redirects
echo 0 > /proc/sys/net/ipv4/conf/all/accept_source_route
echo 0 > /proc/sys/net/ipv4/conf/all/bootp_relay
echo 1 > /proc/sys/net/ipv4/conf/all/log_martians

# Allgemeine Regeln ---------------------------------------------------------

# Loeschen alter Regeln
$IPTABLES -F
$IPTABLES -t nat -F
$IPTABLES -X

# Setzen der Basisregeln - alle Ketten werden blockiert!
$IPTABLES -P INPUT DROP
$IPTABLES -P FORWARD DROP
$IPTABLES -P OUTPUT DROP

# Regeln fuer lokale Prozesse und den Datenverkehr im Intranet---------------

# Datenverkehr auf dem Loopback-Interface wird erlaubt
$IPTABLES -A OUTPUT -o lo -j ACCEPT
$IPTABLES -A INPUT -i lo -j ACCEPT

# Datenverkehr mit dem LAN wird erlaubt
$IPTABLES -A OUTPUT -o $DEV_INT -d $INT -j ACCEPT
$IPTABLES -A INPUT -i $DEV_INT -s $INT -j ACCEPT

# Masquerading --------------------------------------------------------------

$IPTABLES -t nat -A POSTROUTING -o $DEV_EXT -j MASQUERADE

# Durchleitung P2P fuer Client 192.168.0.79 Port 6666
# $IPTABLES -A PREROUTING -t nat -p udp -i $DEV_EXT --dport 6666 \
#	-j DNAT --to 192.168.0.79:6666
# $IPTABLES -A PREROUTING -t nat -p tcp -i $DEV_EXT --dport 6666 \
#	-j DNAT --to 192.168.0.79:6666
# $IPTABLES -A FORWARD -p tcp -i $DEV_EXT --dport 6666 -j ACCEPT
# $IPTABLES -A FORWARD -p udp -i $DEV_EXT --dport 6666 -j ACCEPT


# Regeln fuer bestehende Verbindungen ---------------------------------------

# Ausgehende Pakete bei bereits aufgebauter Verbindung
$IPTABLES -A OUTPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
$IPTABLES -A FORWARD -i $DEV_INT -o $DEV_EXT \
	-m state --state ESTABLISHED,RELATED -j ACCEPT

# Eingehende Pakete zu einer bestehenden Verbindung
$IPTABLES -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
$IPTABLES -A INPUT -m state --state NEW,INVALID -j DROP
$IPTABLES -A FORWARD -i $DEV_EXT -o $DEV_INT \
	-m state --state ESTABLISHED,RELATED -j ACCEPT
$IPTABLES -A FORWARD -i $DEV_EXT -o $DEV_INT \
	-m state --state NEW,INVALID -j DROP

# INTERNET-Regeln fuer Pakete aus dem LAN -----------------------------------

# DNS-Anfragen der NETBIOS-Ports 137-139 aus dem LAN werden geblockt
# (Einwahlproblem)
$IPTABLES -A FORWARD -i $DEV_INT -p udp -s $INT \
	--sport 137:139 -o $DEV_EXT -j DROP
$IPTABLES -A FORWARD -i $DEV_INT -p tcp -s $INT \
	--sport 137:139 -o $DEV_EXT -j DROP

# Behandlung der ICMP-Pakete
$IPTABLES -A FORWARD -o $DEV_EXT -p ICMP --icmp-type echo-request -j ACCEPT

# DNS-Abfragen erlauben - Port 53 - tcp,udp
$IPTABLES -A FORWARD -o $DEV_EXT -m state --state NEW \
	-p udp --sport 1024: --dport 53 -j ACCEPT
$IPTABLES -A FORWARD -o $DEV_EXT -m state --state NEW \
	-p tcp --sport 1024: --dport 53 -j ACCEPT

# HTTP erlauben - Port 80 - tcp
$IPTABLES -A FORWARD -o $DEV_EXT -m state --state NEW \
	-p tcp --sport 1024: --dport 80 -j ACCEPT

# HTTPS erlauben - Port 443 - tcp
$IPTABLES -A FORWARD -o $DEV_EXT -m state --state NEW \
	-p tcp --sport 1024: --dport 443 -j ACCEPT

# FTP erlauben - ftp - tcp
$IPTABLES -A FORWARD -o $DEV_EXT -m state --state NEW \
	-p tcp --sport 1024: --dport ftp -j ACCEPT
$IPTABLES -A FORWARD -o $DEV_EXT -m state --state NEW \
	-p tcp --sport 1024: --dport 1024: -j ACCEPT

# SMTP erlauben (E-Mails an Mail-Provider senden) - Port 25 - tcp
$IPTABLES -A FORWARD -o $DEV_EXT -m state --state NEW \
	-p tcp --sport 1024: --dport 25 -j ACCEPT

# POP3 erlauben (E-Mails vom Mail-Provider holen) - Port 110 - tcp
$IPTABLES -A FORWARD -o $DEV_EXT -m state --state NEW \
	-p tcp --sport 1024: --dport 110 -j ACCEPT
 
# NNTP erlauben (Datenaustausch mit News-Groups) - Port 119 - tcp
$IPTABLES -A FORWARD -o $DEV_EXT -m state --state NEW \
	-p tcp --sport 1024: --dport 119 -j ACCEPT
	


# INTERNET-Regeln fuer Pakete vom Gateway-Server ----------------------------

# Behandlung der ICMP-Pakete
$IPTABLES -A OUTPUT -p icmp --icmp-type echo-request -j ACCEPT
$IPTABLES -A OUTPUT -p icmp --icmp-type source-quench -j ACCEPT
$IPTABLES -A OUTPUT -p icmp --icmp-type time-exceeded -j ACCEPT
$IPTABLES -A OUTPUT -p icmp --icmp-type parameter-problem -j ACCEPT
$IPTABLES -A OUTPUT -p icmp --icmp-type fragmentation-needed -j ACCEPT
$IPTABLES -A OUTPUT -p icmp --icmp-type port-unreachable -j ACCEPT

# DNS-Abfragen erlauben - Port 53 - tcp,udp
$IPTABLES -A OUTPUT -p udp --sport 1024: --dport 53 -j ACCEPT
$IPTABLES -A OUTPUT -p tcp --sport 1024: --dport 53 -j ACCEPT

# HTTP erlauben - Port 80 - tcp
$IPTABLES -A OUTPUT -p tcp --sport 1024: --dport 80 -j ACCEPT

# HTTPS erlauben - Port 443 - tcp
$IPTABLES -A OUTPUT -p tcp --sport 1024: --dport 443 -j ACCEPT

# FTP erlauben - ftp - tcp
$IPTABLES -A OUTPUT -p tcp --sport 1024: --dport ftp -j ACCEPT
$IPTABLES -A OUTPUT -p tcp --sport 1024: --dport 1024: -j ACCEPT

# SMTP erlauben (E-Mails an Mail-Provider senden) - Port 25 - tcp
$IPTABLES -A OUTPUT -p tcp --sport 1024: --dport 25 -j ACCEPT

# POP3 erlauben (E-Mails vom Mail-Provider holen) - Port 110 - tcp
$IPTABLES -A OUTPUT -p tcp --sport 1024: --dport 110 -j ACCEPT
 
# NNTP erlauben (Datenaustausch mit News-Groups) - Port 119 - tcp
$IPTABLES -A OUTPUT -p tcp --sport 1024: --dport 119 -j ACCEPT

# Der Rest wird gesperrt!
$IPTABLES -A INPUT -j DROP
$IPTABLES -A FORWARD -j DROP
$IPTABLES -A OUTPUT -j DROP

# Dial-on-Demand scharf machen (SuSE 8.0)!
# echo "DOD aktiviert!"
# cinternet -start
# SuSE 9.0 DSL-Modem (vor 2.4.21-144 beide Befehle aktivieren)!
# cinternet -i dsl0 --stop
# cinternet -i dsl0 --start

echo "..... und ist jetzt bereit!"
echo "  " # Leerzeile

# Remember status and be verbose
rc_status -v
;;

# Beenden der Firewall ------------------------------------------------------

stop)
echo "  " # Leerzeile
echo "Die Firewall -iptablesfilter- wird heruntergefahren ......."
echo "  " # Leerzeile

# Loeschen alter Regeln
$IPTABLES -F
$IPTABLES -t nat -F
$IPTABLES -X

# Alle Ketten werden geoeffnet!
$IPTABLES -P INPUT ACCEPT
$IPTABLES -P FORWARD ACCEPT
$IPTABLES -P OUTPUT ACCEPT

# Kernelparameter werden zurueckgesetzt -------------------------------------

echo 0 > /proc/sys/net/ipv4/ip_forward
echo 0 > /proc/sys/net/ipv4/ip_dynaddr
echo 0 > /proc/sys/net/ipv4/tcp_syncookies
echo 0 > /proc/sys/net/ipv4/icmp_echo_ignore_broadcasts
echo 0 > /proc/sys/net/ipv4/icmp_ignore_bogus_error_responses
# echo 0 > /proc/sys/net/ipv4/icmp_destunreach_rate
# echo 0 > /proc/sys/net/ipv4/icmp_echoreply_rate
# echo 0 > /proc/sys/net/ipv4/icmp_paramprob_rate
# echo 0 > /proc/sys/net/ipv4/icmp_timeexceed_rate

# Interface
echo 0 > /proc/sys/net/ipv4/conf/all/rp_filter
echo 0 > /proc/sys/net/ipv4/conf/all/accept_redirects
echo 0 > /proc/sys/net/ipv4/conf/all/accept_source_route
echo 0 > /proc/sys/net/ipv4/conf/all/bootp_relay
echo 0 > /proc/sys/net/ipv4/conf/all/log_martians

# Dial-on-Demand scharf machen (SuSE 8.0)!
# echo "DOD deaktiviert!"
# cinternet -stop

echo "..... und ist jetzt deaktiviert!"
echo "  " # Leerzeile

# Remember status and be verbose
rc_status -v
;;

*)
echo "Usage: $0 {start|stop}"
exit 1
;;

esac
rc_exit

Die Initialisierung funktioniert, nur kann ich manche Seiten nicht aufrufen, FTp geht gar nicht.

Woran liegt es?


Vielen Dank für die Antwort.


marcus1907
 
A

Anonymous

Gast
wenn an deiner lokalen Maschiene etwas erlaubt werden soll, muss es auf der INPUT chain laufen, nicht auf FORWARD, so wie bei dir.... Allerdings sehe ich bei dir sehr viele FORWARD Regeln, du setzt deinen PC bestimmt als Router ein, oder? Auf jeden Fall müsste da noch rein:
Code:
iptables -A INPUT -p tcp --dport ftp -j ACCEPT
iptables -A INPUT -p tcp --dport 80 -j ACCEPT
iptables -A INPUT -p udp --dport 53 -j ACCEPT
iptables -A INPUT -p tcp --dport 53 -j ACCEPT
für FTP, DNS + HTTP
 
Oben