[linux-l] Ip-tables

Martin Peikert list at nolog.org
Do Okt 23 10:35:05 CEST 2003


Webmaster at Miera.de wrote:

> Wenn ich das Script so starte, kann ich kein Ping auf einen Server machen.

Das ist wirklich merkwürdig, da Deine Policy immer noch auf ACCEPT 
steht, oder habe ich da etwas übersehen?

> Nachher möchte ich standartmäßig nur den ssh port offen
> haben und den rest bei bedarf zuschalten können.
> 
> Vielleicht könnt ihr mir ja sagen was ich falsch mache...

Du loggst zu wenig ;)

> Hier mein sctipt:
---8<---
> #################################################################
> # Alle Regeln aufheben ##########################################
> #################################################################
> 
> iptables -F
> iptables -F -t nat
> iptables -F -t filter
> 
> #################################################################
> # IP Forwarding aktivieren ######################################
> #################################################################
> 
> echo 1> /proc/sys/net/ipv4/ip_forward

Und genau ab hier sollte die Kiste offen sein und alles weiterleiten...

Du solltest *VORHER* die Policy auf DROP setzen:
iptables -P INPUT DROP
iptables -P OUTPUT DROP
iptables -P FORWARD DROP

Desweiteren wäre zum Debuggen ein wenig Logging angebracht, als letzte 
Regel in jeder Kette ein -j LOG mit Präfix wäre nicht schlecht:
  iptables -A INPUT   -j LOG --log-prefix " INPUT END "
  iptables -A OUTPUT  -j LOG --log-prefix " OUTPUT END "
  iptables -A FORWARD -j LOG --log-prefix " FORWARD END "
Sollte ein Paket hier aufschlagen das durchkommen soll, weisst Du, dass 
Dir die passende Regel fehlt. Dann siehst Du auch etwas. Interessant zum 
Debuggen ist natürlich auch
  iptables -I INPUT   1 -j LOG --log-prefix " Entering INPUT "
  iptables -I OUTPUT  1 -j LOG --log-prefix " Entering OUTPUT "
  iptables -I FORWARD 1 -j LOG --log-prefix " Entering FORWARD "
So manches Paket hat es bei mir nie in die FORWARD-Chain geschafft, wenn 
ich mal wieder das Forwarding-im-Kernel-einschalten vergessen hatte...

Das Logging kannst Du auch auf den nat-table ausweiten - und zum 
Hardcore-Loggen auch noch vor jede Regel schreiben. Wenn eine Regel den 
Target LOG hat, so wird damit die Behandlung des Pakets, so es passt, 
nicht beendet. Bei allen anderen Targets gilt: First match hits - und 
beendet die Behandlung des Pakets.

Insgesamt gilt: Am Anfang loggen bis zum Umfallen - die Regeln kann man 
später, wenn man weiss, was passiert, auch wieder entfernen :)


HTH
GTi





Mehr Informationen über die Mailingliste linux-l