Code: Alles auswählen
iptables -A FORWARD -i eth3 -o eth3 -m state --state ESTABLISHED,RELATED,NEW -j ACCEPT
Code: Alles auswählen
iptables -A FORWARD -i eth3 -o eth3 -m state --state ESTABLISHED,RELATED,NEW -j ACCEPT
Code: Alles auswählen
0 0 DROP 0 -- any any anywhere anywhere
Genau das habe ich auch vorhin rausgefunden,DynaBlaster hat geschrieben:Ja, der iptables-Regelsatz wird von oben nach unten abgearbeitet. D.h., dass die erste zutreffende Regel auf das Paket angewendet wird, alle nachfolgende Regeln spielen dann keine Rolle mehr.
Aber noch einmal: dein ganzens Script am Stück wäre hilfreich, einist ziemlich schwer zu interpretieren. Die beiden Nullen am Anfang deuten allerdings darauf hin, dass diese Regel bisher auf kein Paket zugetroffen hat.Code: Alles auswählen
0 0 DROP 0 -- any any anywhere anywhere
Code: Alles auswählen
PORT=2668
TARGET_PORT=2668
DMZ_IP=10.0.0.23
DMZ_IF=eth3
NET_LAN=10.0.0.0/8
iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A FORWARD -m state --state NEW -i eth4 -p tcp --dport $PORT -j ACCEPT
iptables -A FORWARD -i ppp0 -o eth3 -m state --state ESTABLISHED,RELATED,NEW -j ACCEPT
iptables -A FORWARD -i eth3 -o eth3 -m state --state ESTABLISHED,RELATED,NEW -j ACCEPT
iptables -A PREROUTING -t nat -i eth3 -p tcp --dport $PORT -j DNAT --to $DMZ_IP:$PORT
#iptables -A PREROUTING -t nat -i eth3 -p tcp --dport $PORT -j DNAT --to $DMZ_IP:$PORT
#iptables -A PREROUTING -t nat -i eth3 -p tcp --dport $PORT -j DNAT --to $DMZ_IP:$PORT
#iptables -t nat -A POSTROUTING -d $NET_LAN -s $NET_LAN -j SNAT --to-source $DMZ_IP
Code: Alles auswählen
IF_INET=ppp0 # internet-facing interface
IF_LAN=eth3 # lan-facing interface
IP_LAN=10.0.0.10 # IP address of $IF_LAN
LAN_HOST[0]=10.0.0.23 # IP address of linux box
#LAN_HOST[1]=192.168.0.xx # ...
#...
NET_LAN=10.0.0.0/8
TCP_PORTS=2688,3668 # open tcp ports
iptables -A FORWARD -i $IF_LAN -j ACCEPT
iptables -A FORWARD -d ${LAN_HOST[0]} -j ACCEPT
iptables -t nat -A PREROUTING -d $IP_LAN -p TCP -m multiport \
--dports $TCP_PORTS -j DNAT --to-destination ${LAN_HOST[0]}
# for LAN computers to access each other using external addresses
iptables -t nat -A POSTROUTING -d $NET_LAN -s $NET_LAN \
-j SNAT --to-source $IP_LAN
iptables -A FORWARD -p tcp -i $IF_LAN -o $IF_LAN -d ${LAN_HOST[0]} -m multiport --dport $TCP_PORTS -j ACCEPT
iptables -A FORWARD -p tcp -i $IF_INET -o $IF_LAN -d ${LAN_HOST[0]} -m multiport --dport $TCP_PORTS -j ACCEPT
iptables -t nat -A PREROUTING -i ppp0 -p tcp --dport 2688 -j DNAT --to ${LAN_HOST[0]}
Nicht wirklich. Bei einer Standard-Installation sind keine iptables-regeln aktiv. Wenn du ein zusätzliches Debian-Paket installiert hast, dass diese Aufgabe übernommen hat bzw. anscheinend übernimmt, würde ich dessen Deinstallation vorschlagen und im Anschluss eine manuelle Einrichtung durchführen - sprich ein eigenes Script erstellen, nach /etc/init.d/ kopieren und anschließend in die Runlevel verlinken ...Hast du eine Ahnung wo die iptable config ist?
Woody solltest du auch nicht mehr verwenden. Etch ist zur Zeit der Stable-Zweig von Debian.Ich benutze leider debian etch nicht woody.
Ich hatte mich damals beim runterladen versehen und bisher keine Zeit gehabt woody noch einmal runterzuladen
Code: Alles auswählen
#!/bin/bash
#---------------------------------------------
# Spezifikationen
#---------------------------------------------
LAN_DEV=eth3
LAN_IP=10.0.0.10
LAN_NETWORK=10.0.0.0/8
EXT_DEV=ppp0
#--------------------------------------------------------
# stopping
#--------------------------------------------------------
function stopFirewall() {
# alle Ketten und Regeln löschen
iptables -F
iptables -t nat -F
iptables -X
iptables -t nat -X
# default policies setzen: ALLES ERLAUBT
iptables -P INPUT ACCEPT
iptables -P FORWARD ACCEPT
iptables -P OUTPUT ACCEPT
# Routing-Fähigkeiten des Kernels aktivieren
echo "1" > /proc/sys/net/ipv4/ip_forward
}
#---------------------------------------------------------
# starting
#---------------------------------------------------------
function startFirewall() {
# alle Ketten und Regeln löschen
iptables -F
iptables -t nat -F
iptables -X
iptables -t nat -X
# default policies setzen: ALLES VERBOTEN
iptables -P INPUT DROP
iptables -P OUTPUT DROP
iptables -P FORWARD DROP
# Routing-Fähigkeiten des Kernels aktivieren
echo "1" > /proc/sys/net/ipv4/ip_forward
# Loopback-Device erlauben
iptables -A INPUT -i lo -j ACCEPT
iptables -A OUTPUT -o lo -j ACCEPT
#------------------------------------------------
# INPUT
#------------------------------------------------
# hier können einzelne Ports für Dienste geöffnet werden, die auf dem Rechner selbst laufen
# beispielsweise ein SSH-Server auf TCP-Port 22
# Beispiel A) der SSH-Server ist nur aus dem LAN erreichbar
#iptables -A INPUT -i $LAN_DEV -s $LAN_NETWORK -d $LAN_IP -p TCP --dport 22 -m state --state NEW -j ACCEPT
# Besipiel B) der SSH-Server ist von überall erreichbar
#iptables -A INPUT -p TCP --dport 22 -m state --state NEW -j ACCEPT
# connection-tracking
iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
#------------------------------------------------
# OUTPUT
#------------------------------------------------
# hier wird der ausgehende Traffic des Rechners konfiguriert
# Beispiel A) nur den SSH-Server-Traffic ins LAN erlauben
#iptables -A OUTPUT -o $LAN_DEV -d $LAN_NETWORK -s $LAN_IP -p TCP --sport 22 -m state --state ESTABLISHED,RELATED -j ACCEPT
# Beispiel B) nur den SSH-Traffic erlauben, allerdings von überall
#iptables -A OUTPUT -p TCP --sport 22 -m state --state ESTABLISHED,RELATED -j ACCEPT
# Bespiel C) dem Rechner generellen Zugang zum Internet erlauben: Traffic der vom Rechner selbst generiert wird, wird grundsätzlich erlaubt
# die Antwortpakete werden über "iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT" erlaubt
iptables -A OUTPUT -j ACCEPT
#------------------------------------------------
# FORWARD
#------------------------------------------------
# alle Clients aus dem LAN haben vollen Internetzugriff über ppp0
iptables -A FORWARD -i $LAN_DEV -o $EXT_DEV -s $LAN_NETWORK -j ACCEPT
iptables -A FORWARD -i $EXT_DEV -o $LAN_DEV -d $LAN_NETWORK -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -t nat -A POSTROUTING -o $EXT_DEV -j MASQUERADE
# damit dein Serverdienst auf 10.0.0.23:2688 aus dem Internet erreichbar ist:
iptables -t nat -A PREROUTING -i $EXT_DEV -p TCP --dport 2688 -j DNAT --to 10.0.0.23:2688
iptables -A FORWARD -i $EXT_DEV -o $LAN_DEV -d $LAN_NETWORK -p TCP --dport 2688 -m state --state NEW -j ACCEPT
}
#-------------------------------------------------------------
# start-stop script
#-------------------------------------------------------------
case "$1" in
start)
echo -n "Starting Firewall"
startFirewall
echo "... done"
;;
stop)
echo -n "Stopping Firewall"
stopFirewall
echo "... done"
;;
restart)
$0 stop
$0 start
;;
*)
echo "Usage: firewall {start|stop|restart}"
exit 1
;;
esac
Wenn du das hier meinst:Darf man fragen, was beim ersten SCript gefehlt hat?
Ich habe es versucht rauszufinden, aber zu keinem ERgebnis gekommen
Code: Alles auswählen
PORT=2668
TARGET_PORT=2668
DMZ_IP=10.0.0.23
DMZ_IF=eth3
NET_LAN=10.0.0.0/8
# dies hier betrifft alle Pakete, die zu einer bestehenden Verbindung gehören
# und für den Rechner [10.0.0.10] bestimmt sind
iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
# das hier betrfifft Pakete, die auf eth4 ankommen und eine neue Verbindung mit Port TCP 2668 aufbauen wollen
# überflüssig, eth4 bekommt keine Pakete, sondern ppp0
iptables -A FORWARD -m state --state NEW -i eth4 -p tcp --dport $PORT -j ACCEPT
# hier werden alle Pakete durchgelassen, die an ppp0 ankommen und den Rechner über eth3 wieder verlassen
iptables -A FORWARD -i ppp0 -o eth3 -m state --state ESTABLISHED,RELATED,NEW -j ACCEPT
# hier werden alle Paket die an eth3 ankommen und den Rechner über eth3 wieder verlassen, erlaubt
# macht imho keinen Sinn, denn diese Pakete können 10.0.0.23 auch direkt erreichen
iptables -A FORWARD -i eth3 -o eth3 -m state --state ESTABLISHED,RELATED,NEW -j ACCEPT
# hier nun werden Pakete, die an eth3 ankommen und als Zielport TCP 2668 ausweisen, so manipuliert,
# dass sie nach 10.0.0.23:2668 geschickt werden
# eigentlich auch überflüssig, da die Clients aus 10.0.0.0/8
# den Server 10.0.0.23:2668 auch direkt erreichen können
iptables -A PREROUTING -t nat -i eth3 -p tcp --dport $PORT -j DNAT --to $DMZ_IP:$PORT
Code: Alles auswählen
# der "Rückweg" von eth3 über ppp0 ins Internet
iptables -A FORWARD -i eth3 -o ppp0 -m state --state ESTABLISHED,RELATED -j ACCEPT
# und das PREROUTING für Pakete aus dem Internet
iptables -A PREROUTING -t nat -i ppp0 -p tcp --dport $PORT -j DNAT --to $DMZ_IP:$PORT
Funktioniert das Portforwarding überhaupt bei dir, hast du das schon mal getestet ?roli hat geschrieben:Nein, nur für "ESTABLISHED,RELATED"gms hat geschrieben:und in der Forwad Chain gibt es kein ACCEPT für State NEW ?
Ansonsten wäre das ein Grund ein CERT Vulnerability Advisory anzulegenDynaBlaster hat geschrieben:Code: Alles auswählen
iptables -A FORWARD -i $EXT_DEV -o $LAN_DEV -d $LAN_NETWORK -p TCP --dport 2688 -m state --state NEW -j ACCEPT
Code: Alles auswählen
#iptables -A OUTPUT -o $LAN_DEV -s $LAN_NETWORK -s $LAN_IP -p TCP --sport 22 -m state --state ESTABLISHED,RELATED -j ACCEPT
Code: Alles auswählen
#iptables -A OUTPUT -o $LAN_DEV -d $LAN_NETWORK -s $LAN_IP -p TCP --sport 22 -m state --state ESTABLISHED,RELATED -j ACCEPT
Code: Alles auswählen
#iptables -A OUTPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
Code: Alles auswählen
#iptables -A OUTPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
Code: Alles auswählen
iptables -A OUTPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A OUTPUT -p UDP --dport 53 -m state --state NEW -j ACCEPT
iptables -A OUTPUT -p TCP --dport 80 -m state --state NEW -j ACCEPT
deshalb habe ich dann ja auch gemeint, gleich alles in der OUTPUT-Kette erlaubenDynaBlaster hat geschrieben:Das Problem bei dieser OUTPUT-Regel ist halt, dass der Rechner von sich aus keine Verbindungen aufbauen kann, sondern nur auf fremd-initiierte Verbindungen antworten darf. Das kann unter Umständen natürlich sinnvoll sein, allerdings ist so selbst ein "aptitude update" oder gar eine simple DNS-Anfrage unmöglich.
so ist das natürlich am "sichersten", ist aber auch wartungsintensiver als z.B:DynaBlaster hat geschrieben: Wenn man dem "Connection-Tracking-Prinzip" treu bleiben will, müsste man das dann bespielsweise für DNS und HTTP so erweitern:
Code: Alles auswählen
iptables -A OUTPUT -m state --state ESTABLISHED,RELATED -j ACCEPT iptables -A OUTPUT -p UDP --dport 53 -m state --state NEW -j ACCEPT iptables -A OUTPUT -p TCP --dport 80 -m state --state NEW -j ACCEPT
Code: Alles auswählen
iptables -A OUTPUT -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT
sehe ich auch so.DynaBlaster hat geschrieben:Hehe, aber dann kann ich auch gleich die Default-Policy der OUTPUT-Kette auf ACCEPT lassen und mir die spätere Definintion von OUTPUT-Regeln sparen.
Wie auch immer: meine Output-Policy steht privat jedenfalls auf ACCEPT.
rechts so, weiter soDynaBlaster hat geschrieben:Mir gings halt hier ums Prinzip.