Page 1 of 2

Frage zu iptables

Posted: 2003-05-20 18:46
by sfeni
Sorry, dieser Thread handelt sich nich um 1und1 rooties, wenns nicht in dieses forum gehört einfach in off-topic. danke

Ich habe nun Debian als Router eingerichtet und folgendes Skript mit iptables gebaut:

Code: Select all

#!/bin/sh

#
# firewall
#

IPTABLES=/sbin/iptables
EXTIF="ppp0"
INTIF="eth0"

/sbin/modprobe ip_tables
/sbin/modprobe ip_conntrack
/sbin/modprobe ip_conntrack_ftp
/sbin/modprobe ip_conntrack_irc
/sbin/modprobe iptable_nat
/sbin/modprobe ip_nat_ftp

echo "1" > /proc/sys/net/ipv4/ip_forward
echo "1" > /proc/sys/net/ipv4/ip_dynaddr

$IPTABLES -P INPUT ACCEPT
$IPTABLES -F INPUT

$IPTABLES -P OUTPUT ACCEPT
$IPTABLES -F OUTPUT

$IPTABLES -P FORWARD DROP
$IPTABLES -F FORWARD

$IPTABLES -t nat -F

$IPTABLES -A FORWARD -i $EXTIF -o $INTIF -m state --state ESTABLISHED,RELATED -j ACCEPT
$IPTABLES -A FORWARD -i $INTIF -o $EXTIF -j ACCEPT
$IPTABLES -A FORWARD -j LOG

$IPTABLES -t nat -A POSTROUTING -o $EXTIF -j MASQUERADE
Und ein paar Zusatzinfos:

Code: Select all

sfeni:~# iptables -L
Chain INPUT (policy ACCEPT)
target     prot opt source               destination

Chain FORWARD (policy DROP)
target     prot opt source               destination
ACCEPT     all  --  anywhere             anywhere           state RELATED,ESTABLISHED
ACCEPT     all  --  anywhere             anywhere
LOG        all  --  anywhere             anywhere           LOG level warning

Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination
sfeni:~# iptables -L -t nat
Chain PREROUTING (policy ACCEPT)
target     prot opt source               destination

Chain POSTROUTING (policy ACCEPT)
target     prot opt source               destination
MASQUERADE  all  --  anywhere             anywhere

Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination
sfeni:~#
Wie kann ich nun das so einrichten, dass die Ports von außen nicht offen sind? Ich kann momentan auf alle offenen Ports von außen zugreifen und das will ich net, bzw. ich möchte nur bestimmte ports freigeben können.

Re: Frage zu iptables

Posted: 2003-05-20 18:51
by captaincrunch
Ganz dicht :

Code: Select all

iptables -A INPUT -i $EXTIF -j DROP

Re: Frage zu iptables

Posted: 2003-05-20 18:59
by sfeni
Ich habe noch einen bind auf dem router laufen, der alle anfragen forwardet. und wenn ich nun alles blocke funzt der nicht mehr. :-(
wie kann ich das nun einstellen?

Re: Frage zu iptables

Posted: 2003-05-20 19:08
by adjustman
CaptainCrunch wrote:Ganz dicht :

Code: Select all

iptables -A INPUT -i $EXTIF -j DROP
:lol: :lol:

Re: Frage zu iptables

Posted: 2003-05-21 00:41
by sfeni
*delete*
hab alles wieder gelöscht, was ich hier gepostet habe...

Code: Select all

$IPTABLES -A INPUT  -p udp -i $EXTIF --sport 53 --dport 1024:65535 -j ACCEPT
$IPTABLES -A INPUT -i $EXTIF -j DROP
so funktioniert es ;-)

Re: Frage zu iptables

Posted: 2003-05-21 07:49
by captaincrunch
Dafür :

Code: Select all

$IPTABLES -A INPUT  -p udp -i $EXTIF --sport 53 --dport 1024:65535 
-j ACCEPT
gibt's die State-Table, die auf magische Weise unter IPTables auch mit NS-UDP ziemlich gut funktioniert ... ;)

Re: Frage zu iptables

Posted: 2003-05-21 09:09
by sfeni
"State-Table" ? Was ist das?

Re: Frage zu iptables

Posted: 2003-05-21 09:11
by captaincrunch
"State-Table" ? Was ist das?
Das, was du oben mit dem "-m state --state ESTABLISHED,RELATED" erreichen wolltest ... ;)

Genauer : http://iptables-tutorial.frozentux.net/ ... ATEMACHINE

Re: Frage zu iptables

Posted: 2003-05-21 09:18
by sfeni
aso, ok.
verstehe das zwar nicht ganz, aber naja. wird schon passen.

wenn du kurz zeit hast, dann kannst du ja mal 1 oder 2 worte darüber verlieren, was man damit eigentlich genau erreicht. die regeln stammen nämlich nur teilweise von mir. :?

EDIT:
established: auch eingehenden traffic erlauben, wenn die verbindung von intern aufgebaut wurde
related: wenn diese verbindung zusätzliche verbindungen aufbaut, wie z.B. bei ftp, bei dem es eine control- und eine data-verbindung gibt, dann eingehenden traffic erlauben
könnte man das so beschreiben?

Re: Frage zu iptables

Posted: 2003-05-21 09:24
by captaincrunch
wenn du kurz zeit hast, dann kannst du ja mal 1 oder 2 worte darüber verlieren, was man damit eigentlich genau erreicht.
Kurz beschreiben ist gut ... ;)
established: auch eingehenden traffic erlauben, wenn die verbindung von intern aufgebaut wurde
related: wenn diese verbindung zusätzliche verbindungen aufbaut, wie z.B. bei ftp, bei dem es eine control- und eine data-verbindung gibt, dann eingehenden traffic erlauben
könnte man das so beschreiben?
Jau, besser hätte ich's auch nicht sagen können. Nur gut, dass ich dein Edit noch früh genug gesehen hatte ... ;)

Re: Frage zu iptables

Posted: 2003-05-21 09:38
by sfeni
Hehe, sonst hättest du wohl das ganze auch versucht zu beschreiben. :-)

Worauf du wahrscheinlich raus wolltest ist das, oder?

Code: Select all

$IPTABLES -A INPUT  -p udp -i $EXTIF --sport 53 --dport 1024:65535 -m state --state ESTABLISHED,RELATED -j ACCEPT

Re: Frage zu iptables

Posted: 2003-05-21 09:46
by captaincrunch
Nicht ganz. Dadurch, dass die Verbindung dann in den State-Tables steht, kannst du auf die Definition der Source und Destionation-Ports verzichten, und schaffst dir so zusätzliche Sicherheit, weil du nicht alles freigeben musst.

Bei mir würd's wahrscheinlich so aussehen :

Code: Select all

$IPTABLES -A INPUT  -p udp -i $EXTIF -m state --state ESTABLISHED,RELATED -j ACCEPT

Re: Frage zu iptables

Posted: 2003-05-21 09:54
by sfeni
ok, werde ich testen. danke schön

"hier wird man immer geholfen" 8)

Re: Frage zu iptables

Posted: 2003-05-21 17:17
by sfeni
Das ganze sieht nun so aus.
Bis jetzt funktioniert auch alles...

Code: Select all

#!/bin/sh

#
# firewall
#

IPTABLES=/sbin/iptables
EXTIF="ppp0"
INTIF="eth0"

/sbin/modprobe ip_tables
/sbin/modprobe ip_conntrack
/sbin/modprobe ip_conntrack_ftp
/sbin/modprobe ip_conntrack_irc
/sbin/modprobe iptable_nat
/sbin/modprobe ip_nat_ftp

echo "1" > /proc/sys/net/ipv4/ip_forward
echo "1" > /proc/sys/net/ipv4/ip_dynaddr

$IPTABLES -P INPUT ACCEPT
$IPTABLES -F INPUT

$IPTABLES -P OUTPUT ACCEPT
$IPTABLES -F OUTPUT

$IPTABLES -P FORWARD DROP
$IPTABLES -F FORWARD

$IPTABLES -t nat -F

$IPTABLES -A FORWARD -i $EXTIF -o $INTIF -m state --state ESTABLISHED,RELATED -j ACCEPT
$IPTABLES -A FORWARD -i $INTIF -o $EXTIF -j ACCEPT
$IPTABLES -A FORWARD -j LOG

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

$IPTABLES -A INPUT -p tcp -i $EXTIF -m state --state ESTABLISHED,RELATED -j ACCEPT
$IPTABLES -A INPUT -p udp -i $EXTIF -m state --state ESTABLISHED,RELATED -j ACCEPT

$IPTABLES -A INPUT -i $EXTIF -j DROP
Noch irgendwelche Verbesserungen?

Re: Frage zu iptables

Posted: 2003-05-21 17:35
by captaincrunch
Ja : Mach mal aus

Code: Select all

$IPTABLES -A INPUT -i $EXTIF -j DROP
ein

Code: Select all

$IPTABLES -A INPUT -i $EXTIF -j REJECT

Re: Frage zu iptables

Posted: 2003-05-21 17:38
by sfeni
ok, habs umgestellt.
wo liegt da der unterschied?

Re: Frage zu iptables

Posted: 2003-05-21 17:41
by captaincrunch
Ganz einfach : durch REJECT beendet der TCP-Stack die Verbindung durch ein RST, dem Client wird also mitgeteilt, dass die Verbindung nicht mehr besteht.
Beim DROP bekommt der Client keine Rückmeldung, und schickt munter weiter.

Re: Frage zu iptables

Posted: 2003-05-21 17:55
by sfeni
cool, das problem hatte ich heute auch schon bei einem test.
wollte mit telnet mal testen ob ich auf einen port komme und der hat ewig gebraucht bis er sagt keine verbindung, aber nun bricht er sofort ab.
danke

noch irgendwas zu verbessern?

Re: Frage zu iptables

Posted: 2003-05-21 17:59
by captaincrunch
Ja :

Code: Select all

$IPTABLES -P INPUT ACCEPT
sollte ein

Code: Select all

$IPTABLES -P INPUT DROP
sein ... ;)

Re: Frage zu iptables

Posted: 2003-05-21 18:04
by sfeni
danach funzt gar nichts mehr :-(
außerdem löscht der alle regeln eh wieder ;-)

Code: Select all

$IPTABLES -F INPUT
[/code]

Re: Frage zu iptables

Posted: 2003-05-21 23:22
by rootmaster
die INPUT-chain muss beim inneren interface des gateways für pakete aus dem intranet auf ACCEPT stehen ;)

"back to the roots"

Re: Frage zu iptables

Posted: 2003-05-21 23:37
by sfeni
stimmt, da hätte ich wohl mitdenken müssen...
werds dann mal ausprobieren.

Re: Frage zu iptables

Posted: 2003-05-22 09:02
by sfeni
Wie kann ich dem ganzen denn noch eine Log-File geben in der alles mitgeloggt wird?

Re: Frage zu iptables

Posted: 2003-05-22 13:38
by sfeni
ich habe nun ein kleines, bzw. teilweise großes, problem:
wieso brauchen manche seiten sehr sehr lange zu laden oder funktionieren gar nicht?

mit der suse standard-iptables konfiguration ging das wunderbar, aber nun mit dem selbstgebauten skript geht das nicht mehr so gut.

Re: Frage zu iptables

Posted: 2003-06-26 13:40
by sfeni
nachdem dies nun funktioniert, habe ich mal wieder eine frage...
wieso erreiche ich hiermit meinen vnc server auf meinem rechner im netzwerk von außen nicht?

Code: Select all

#!/bin/sh

#
# firewall
#

IPTABLES=/sbin/iptables
EXTIF="ppp0"
INTIF="eth0"

case "$1" in

start)
/sbin/modprobe ip_tables
/sbin/modprobe ip_conntrack
/sbin/modprobe ip_conntrack_ftp
/sbin/modprobe ip_conntrack_irc
/sbin/modprobe iptable_nat
/sbin/modprobe ip_nat_ftp

echo "1" > /proc/sys/net/ipv4/ip_forward
echo "1" > /proc/sys/net/ipv4/ip_dynaddr

$IPTABLES -P INPUT ACCEPT
$IPTABLES -F INPUT

$IPTABLES -P OUTPUT ACCEPT
$IPTABLES -F OUTPUT

$IPTABLES -P FORWARD DROP
$IPTABLES -F FORWARD

$IPTABLES -t nat -F

$IPTABLES -A FORWARD -i $EXTIF -o $INTIF -m state --state ESTABLISHED,RELATED -j ACCEPT
$IPTABLES -A FORWARD -i $INTIF -o $EXTIF -j ACCEPT
$IPTABLES -A FORWARD -j LOG

$IPTABLES -t nat -A PREROUTING -p tcp -i $EXTIF --dport 5500 -j DNAT --to 10.0.0.2:5500
$IPTABLES -t nat -A PREROUTING -p tcp -i $EXTIF --dport 5800 -j DNAT --to 10.0.0.2:5800
$IPTABLES -t nat -A PREROUTING -p tcp -i $EXTIF --dport 5900 -j DNAT --to 10.0.0.2:5900
$IPTABLES -t nat -A POSTROUTING -o $EXTIF -j MASQUERADE

$IPTABLES -A INPUT -p tcp -i $EXTIF -m state --state ESTABLISHED,RELATED -j ACCEPT
$IPTABLES -A INPUT -p udp -i $EXTIF -m state --state ESTABLISHED,RELATED -j ACCEPT
$IPTABLES -A INPUT -p tcp -i $EXTIF --dport 21 --syn -j ACCEPT
$IPTABLES -A INPUT -p tcp -i $EXTIF --dport 22 --syn -j ACCEPT
$IPTABLES -A INPUT -p tcp -i $EXTIF --dport 3306 --syn -j ACCEPT
$IPTABLES -A INPUT -p tcp -i $EXTIF --dport 4661 --syn -j ACCEPT
$IPTABLES -A INPUT -p tcp -i $EXTIF --dport 4662 --syn -j ACCEPT
$IPTABLES -A INPUT -p udp -i $EXTIF --dport 4665 -j ACCEPT
$IPTABLES -A INPUT -p tcp -i $EXTIF --dport 5500 --syn -j ACCEPT
$IPTABLES -A INPUT -p tcp -i $EXTIF --dport 5800 --syn -j ACCEPT
$IPTABLES -A INPUT -p tcp -i $EXTIF --dport 5900 --syn -j ACCEPT
$IPTABLES -A INPUT -i $EXTIF -j REJECT
;;

restart)
$0 stop && $0 start
;;

stop)
$IPTABLES -F INPUT
$IPTABLES -F OUTPUT
$IPTABLES -F FORWARD
$IPTABLES -F -t nat
;;
esac
EDIT:
Wie kann ich dem ganzen denn noch eine Log-File geben in der alles mitgeloggt wird?