[OT] Reihenfolge der iptables rules
Hi, ich baue gerade eine kleine Firewall für dem Übergang zwischen Wlan und dem restlichen Netzwerk, bisher habe ich meine Firewalls immer unter OBSD mit PF oder PIXen erstellt, geht aber diesesmal aufgrund einiger Besonderheiten nicht... Ich stoße bei dem erstellen der rules auf ein Problem: Wenn ich $IPT -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT $IPT -A INPUT -m tcp -p tcp --dport ssh -j ACCEPT $IPT -A INPUT -p tcp -j REJECT --reject-with tcp-reset $IPT -A INPUT -p udp -j REJECT --reject-with icmp-admin-prohibited $IPT -A INPUT -s 192.168.17.0/255.255.255.0 -p icmp -j ACCEPT $IPT -A INPUT -s ! 192.168.17.0/255.255.255.0 -p icmp --icmp-type echo-request -j ACCEPT $IPT -A INPUT -s ! 192.168.17.0/255.255.255.0 -p icmp -j REJECT --reject-with icmp-admin-prohibited $IPT -A INPUT -d 127.0.0.1 -j ACCEPT wird die ja doch sehr grobe letzte Regel einfach ignoriert (vermutlich wegen den Rejects darüber), setze ich -A INPUT -d localhost ganz nach oben, läuft alles. Für eben diesen Fall gibts bei pf pass in quick (PF geht nach meinem verständis erst alle Regeln durch und nimmt nicht die erste die halbwegs passt...). Meine Frage: Ich habe eine vergleichbare Funktion in der doku zu iptables nicht gefunden, gibt's sowas nicht? Und wie soll ich dann z.B. zusätzliche Ports öffnen (z.B. einfach für einen DNS-Server der noch auf den Server soll)? ein -A INPUT -p udp --dport 53 -j ACCEPT wird ja nicht funktionieren, da die Rule am Ende angefügt wird und somit garnicht erst gelesen wird. Alle Regeln entfernen oder irgendwie dazwischenquetschen ist ja auch nicht sehr elegant. Greetings Chris
Re: [OT] Reihenfolge der iptables rules
On Thu, Jun 01, 2006 at 12:07:15PM +0200, Chris C. wrote: ich baue gerade eine kleine Firewall für dem Übergang zwischen Wlan und dem restlichen Netzwerk, bisher habe ich meine Firewalls immer unter OBSD mit PF oder PIXen erstellt, geht aber diesesmal aufgrund einiger Besonderheiten nicht... Ich stoße bei dem erstellen der rules auf ein Problem: Wenn ich $IPT -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT $IPT -A INPUT -m tcp -p tcp --dport ssh -j ACCEPT $IPT -A INPUT -p tcp -j REJECT --reject-with tcp-reset $IPT -A INPUT -p udp -j REJECT --reject-with icmp-admin-prohibited $IPT -A INPUT -s 192.168.17.0/255.255.255.0 -p icmp -j ACCEPT $IPT -A INPUT -s ! 192.168.17.0/255.255.255.0 -p icmp --icmp-type echo-request -j ACCEPT $IPT -A INPUT -s ! 192.168.17.0/255.255.255.0 -p icmp -j REJECT --reject-with icmp-admin-prohibited $IPT -A INPUT -d 127.0.0.1 -j ACCEPT Du benutzt eine etwas ungewöhnliche Reihenfolge. Normalerweise baut man einen Regelsatz so auf, dass man das erlaubt, was erlaubt sein soll. Und am Ende kommt die große Böse REJECT- oder DROP-Regel. Damit sollte deine Logik etwas einfacher werden. Meine Vorlage für ein iptables-Skript: http://workaround.org/moin/IptablesScript Von Cisco PIX weiß ich nur, dass ich darum einen großen Bogen mache, wo ich kann. ;) Gruß Christoph -- ~ ~ .signature [Modified] 1 line --100%--1,48 All signature.asc Description: Digital signature
Re: [OT] Reihenfolge der iptables rules
Chris C. [EMAIL PROTECTED] schrieb am Thu, Jun 01, 2006 at 12:07:15PM +0200: Hi, ich baue gerade eine kleine Firewall für dem Übergang zwischen Wlan und dem restlichen Netzwerk, bisher habe ich meine Firewalls immer unter OBSD mit PF oder PIXen erstellt, geht aber diesesmal aufgrund einiger Besonderheiten nicht... Hi, hast du dir schon mal den fwbuilder angesehen? Das ist zwar was zum klicken, aber vielleicht passt es ja. Gruss, Paul signature.asc Description: Digital signature
Re: [OT] Reihenfolge der iptables rules
Am Donnerstag 01 Juni 2006 12:40 schrieb Christoph Haas: On Thu, Jun 01, 2006 at 12:07:15PM +0200, Chris C. wrote: [...] Du benutzt eine etwas ungewöhnliche Reihenfolge. Normalerweise baut man einen Regelsatz so auf, dass man das erlaubt, was erlaubt sein soll. Und am Ende kommt die große Böse REJECT- oder DROP-Regel. Damit sollte deine Logik etwas einfacher werden. H eigentlich habe ich es immer genau andersherum gemacht, block in all und dann passen was man haben möchte. Meine Vorlage für ein iptables-Skript: http://workaround.org/moin/IptablesScript Thx, schaue ich mir gerade an. Von Cisco PIX weiß ich nur, dass ich darum einen großen Bogen mache, wo ich kann. ;) :) Naja, ich hab die PIXe schon seit ewigkeiten genutzt, aber seit ich PF genutzt habe ... vorallem CARP, pfsync, authpf sind sehr nützliche Helfer, aber das geht auf einer Linux-Liste wohl zu weit vom Theme ab (es sei denn es gibt jetzt einen Port für linux :)) Also gehe ich recht in der Annahme, dass ich neue Regeln immer irgendwie oben zwischenschieben muss, damit sie nicht von den REJECT Regeln übergangen wegen? Gruß Christoph Greetings Chris
Re: [OT] Reihenfolge der iptables rules
Gruesse! * Chris C. [EMAIL PROTECTED] schrieb am [01.06.06 12:07]: Hi, ich baue gerade eine kleine Firewall für dem Übergang zwischen Wlan und dem restlichen Netzwerk, bisher habe ich meine Firewalls immer unter OBSD mit PF oder PIXen erstellt, geht aber diesesmal aufgrund einiger Besonderheiten nicht... Ich stoße bei dem erstellen der rules auf ein Problem: Wenn ich $IPT -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT $IPT -A INPUT -m tcp -p tcp --dport ssh -j ACCEPT $IPT -A INPUT -p tcp -j REJECT --reject-with tcp-reset $IPT -A INPUT -p udp -j REJECT --reject-with icmp-admin-prohibited $IPT -A INPUT -s 192.168.17.0/255.255.255.0 -p icmp -j ACCEPT $IPT -A INPUT -s ! 192.168.17.0/255.255.255.0 -p icmp --icmp-type echo-request -j ACCEPT $IPT -A INPUT -s ! 192.168.17.0/255.255.255.0 -p icmp -j REJECT --reject-with icmp-admin-prohibited $IPT -A INPUT -d 127.0.0.1 -j ACCEPT wird die ja doch sehr grobe letzte Regel einfach ignoriert (vermutlich wegen den Rejects darüber), Jep, die Reihenfolge der Regeln in der sequentiellen Abarbeitung ist bindend. setze ich -A INPUT -d localhost ganz nach oben, läuft alles. Für eben diesen Fall gibts bei pf pass in quick (PF geht nach meinem verständis erst alle Regeln durch und nimmt nicht die erste die halbwegs passt...). Aber sie paßt ja nicht halbwegs, sondern sie paßt ;-) Jedweder TCP-Verkehr wird rejected. Punkt. Meine Frage: Ich habe eine vergleichbare Funktion in der doku zu iptables nicht gefunden, gibt's sowas nicht? Und wie soll ich dann z.B. zusätzliche Ports öffnen (z.B. einfach für einen DNS-Server der noch auf den Server soll)? ein -A INPUT -p udp --dport 53 -j ACCEPT wird ja nicht funktionieren, da die Rule am Ende angefügt wird und somit garnicht erst gelesen wird. Alle Regeln entfernen oder irgendwie dazwischenquetschen ist ja auch nicht sehr elegant. a) Spezielle Regeln nach vorne b) Dann die allgemeinen c) am Ende die last chance Regeln d) ganz am Ende (wenn ein Paket bis dahin gelangt) greift dann die Tables-Policy, die i.d.R. auf DROP stehen sollte Abgesehen von Minimal-Home-Rechner-Paketfilter bietet sich bei iptables aber an, mit eigenen Tables zu arbeiten. Dann ist auch das Einfügen eigener Rules transparenter. Z.B. ein Table für erlaubte Dinge, einer für abgewiesene Pakete ohne Logging und einer für abgewiesene mit Logging. Diese eigenen Tables jeweils als Target (-j) für INPUT,OUTPUT und ggf. FORWARD. In diesen eigenen Tables ist die Reihenfolge der Regeln dann meist egal, da diese ja meist einen konkreten Fall abdecken und sich nicht überschneiden. Also eher modular arbeiten als sequentiell. Die Doku gibt da hinreichend Beispiele. Greetings Chris Gruß Gerhard -- It's nice to be important... but it's more important to be nice. -- Haeufig gestellte Fragen und Antworten (FAQ): http://www.de.debian.org/debian-user-german-FAQ/ Zum AUSTRAGEN schicken Sie eine Mail an [EMAIL PROTECTED] mit dem Subject unsubscribe. Probleme? Mail an [EMAIL PROTECTED] (engl)
Re: [OT] Reihenfolge der iptables rules
Hi, Chris C. wrote: Hi, [..] wird die ja doch sehr grobe letzte Regel einfach ignoriert (vermutlich wegen den Rejects darüber), setze ich -A INPUT -d localhost ganz nach oben, läuft alles. Für eben diesen Fall gibts bei pf pass in quick (PF geht nach meinem verständis erst alle Regeln durch und nimmt nicht die erste die halbwegs passt...). Ein quick benötigst Du bei Linux nicht. Im Gegensatz zu OpenBSD, sorgt der erste Treffer dafür, dass das Packet die weiteren Regeln nicht mehr durchläuft. Bei OpenBSD durchläuft das Packet die Regeln aber immer vollständig, es sei denn, Du nimmst es mit quick raus. OpenBSD nimmt übrigens keine Packete die 'halbwegs passen', sondern matched wie Linux nur bei exakter Übereinstimmung;-) -hth -Jörg -- Haeufig gestellte Fragen und Antworten (FAQ): http://www.de.debian.org/debian-user-german-FAQ/ Zum AUSTRAGEN schicken Sie eine Mail an [EMAIL PROTECTED] mit dem Subject unsubscribe. Probleme? Mail an [EMAIL PROTECTED] (engl)
Re: [OT] Reihenfolge der iptables rules
On Thu, Jun 01, 2006 at 12:07:15PM +0200, Chris C. wrote: [...] da die Rule am Ende angefügt wird und somit garnicht erst gelesen wird. Alle Regeln entfernen oder irgendwie dazwischenquetschen ist ja auch nicht sehr elegant. Es gibt kein dazwischenquetschen aber es gibt ein Einfuegen an einer bestimmten Position mittels -I int anstatt -A. Was daran unelegant sein sollte, entgeht mir. Wenn ich meine Regeln dynamisch anpasse, mache ich genau das, falls ich fuer bestimmte Faelle nicht vorher schon eine eigene Tabelle angelegt hatte, bei der ich dann wieder nur anhaengen kann. Mittels iptables -L -n --line-numbers kannst Du Dir auch die Zeilen der Ausgabe numieren lassen. Um mit iptables umgehen zu lernen gibt es ein sehr gutes Iptables Tutorial[1] von Oskar Andreasson und ein Script Easy Firewall Generator for IPTables [2], dass danach Firewalls generiert. --jc [1] http://iptables-tutorial.frozentux.net/ [2] http://easyfwgen.morizot.net/gen/ -- Ignorance more frequently begets confidence than does knowledge. -- Charles Darwin -- Haeufig gestellte Fragen und Antworten (FAQ): http://www.de.debian.org/debian-user-german-FAQ/ Zum AUSTRAGEN schicken Sie eine Mail an [EMAIL PROTECTED] mit dem Subject unsubscribe. Probleme? Mail an [EMAIL PROTECTED] (engl)
Re: [OT] Reihenfolge der iptables rules
Am Donnerstag 01 Juni 2006 15:44 schrieb Juergen Christoffel: On Thu, Jun 01, 2006 at 12:07:15PM +0200, Chris C. wrote: [...] da die Rule am Ende angefügt wird und somit garnicht erst gelesen wird. Alle Regeln entfernen oder irgendwie dazwischenquetschen ist ja auch nicht sehr elegant. Es gibt kein dazwischenquetschen aber es gibt ein Einfuegen an einer bestimmten Position mittels -I int anstatt -A. Was daran unelegant sein sollte, entgeht mir. Wenn ich meine Regeln dynamisch anpasse, mache ich genau das, falls ich fuer bestimmte Faelle nicht vorher schon eine eigene Tabelle angelegt hatte, bei der ich dann wieder nur anhaengen kann. Ja, ich hatte die Doku auf netfilter.org zwar gelesen, aber das mit dem -I irgendwie falsch interpretiert. Mittels iptables -L -n --line-numbers kannst Du Dir auch die Zeilen der Ausgabe numieren lassen. Um mit iptables umgehen zu lernen gibt es ein sehr gutes Iptables Tutorial[1] von Oskar Andreasson und ein Script Easy Firewall Generator for IPTables [2], dass danach Firewalls generiert. Hmmm... eigentlich blöde wegen einem einzigen Spezialfall so einen aufwand zu betreiben, aber OK... lernen verlangsamt ja angeblich den verdummungsprozess ;-) Dank euch allen. Greetings Chris --jc [1] http://iptables-tutorial.frozentux.net/ [2] http://easyfwgen.morizot.net/gen/ -- Ignorance more frequently begets confidence than does knowledge. -- Charles Darwin
Re: [OT] Reihenfolge der iptables rules
Am Donnerstag, 1. Juni 2006 17:10 schrieb Chris C.: Am Donnerstag 01 Juni 2006 15:44 schrieb Juergen Christoffel: On Thu, Jun 01, 2006 at 12:07:15PM +0200, Chris C. wrote: [...] da die Rule am Ende angefügt wird und somit garnicht erst gelesen wird. Alle Regeln entfernen oder irgendwie dazwischenquetschen ist ja auch nicht sehr elegant. Es gibt kein dazwischenquetschen aber es gibt ein Einfuegen an einer bestimmten Position mittels -I int anstatt -A. Was daran unelegant sein sollte, entgeht mir. Wenn ich meine Regeln dynamisch anpasse, mache ich genau das, falls ich fuer bestimmte Faelle nicht vorher schon eine eigene Tabelle angelegt hatte, bei der ich dann wieder nur anhaengen kann. Ja, ich hatte die Doku auf netfilter.org zwar gelesen, aber das mit dem -I irgendwie falsch interpretiert. Mittels iptables -L -n --line-numbers kannst Du Dir auch die Zeilen der Ausgabe numieren lassen. Um mit iptables umgehen zu lernen gibt es ein sehr gutes Iptables Tutorial[1] von Oskar Andreasson und ein Script Easy Firewall Generator for IPTables [2], dass danach Firewalls generiert. Hmmm... eigentlich blöde wegen einem einzigen Spezialfall so einen aufwand zu betreiben, aber OK... lernen verlangsamt ja angeblich den verdummungsprozess ;-) Dank euch allen. Im Gegensatz zu pf, wenn ich das richtig verstanden habe, arbeitet iptables die Regeln von oben nach unten ab und nimmt die erste Regel, die passt, alle darunter werden für das Paket dann ignoriert. Um eine Regel z.B. an 2. Stelle einzufügen, ist -I das richtige: iptables -I INPUT 2 -p tcp --dport 22 -j ACCEPT um z.B. ssh zusätzlich zu erlauben. Mfg, Thomas
Re: [OT] Reihenfolge der iptables rules
On Thu, Jun 01, 2006 at 05:40:25PM +0200, Thomas Gräber wrote: Im Gegensatz zu pf, wenn ich das richtig verstanden habe, arbeitet iptables die Regeln von oben nach unten ab und nimmt die erste Regel, die passt, alle darunter werden für das Paket dann ignoriert. Jein: zwar arbeitet iptables die Regeln erst mal von oben nach unten ab. Aber zum einen kannst Du in iptables z.B. mittels -j die Reihenfolge der Abarbeitung aendern. Zum anderen gibt es Regeln, die durchaus die weitere Verarbeitung zulassen, sonst koenntest Du z.B. nicht erst loggen und dann ein reject erzeugen. Ein Beispiel: $IPT -A icmp_packets --fragment -p ICMP -j LOG --log-prefix DROP: $IPT -A icmp_packets --fragment -p ICMP -j DROP Hier wird erst ein Log-Eintrag erzeugt, dann das Packet weggeworfen (es koennte auch akzeptiert werden). --jc -- Ignorance more frequently begets confidence than does knowledge. -- Charles Darwin -- Haeufig gestellte Fragen und Antworten (FAQ): http://www.de.debian.org/debian-user-german-FAQ/ Zum AUSTRAGEN schicken Sie eine Mail an [EMAIL PROTECTED] mit dem Subject unsubscribe. Probleme? Mail an [EMAIL PROTECTED] (engl)
Re: [OT] Reihenfolge der iptables rules
On Thu, Jun 01, 2006 at 05:10:19PM +0200, Chris C. wrote: Am Donnerstag 01 Juni 2006 15:44 schrieb Juergen Christoffel: Es gibt kein dazwischenquetschen aber es gibt ein Einfuegen an einer bestimmten Position mittels -I int anstatt -A. Ja, ich hatte die Doku auf netfilter.org zwar gelesen, aber das mit dem -I irgendwie falsch interpretiert. Ausser -I und -A kannst Du uebrigens auch mittels -R Regeln ersetzen. Ich erlaube zum Beispiel meiner Workstation zuhause, die bei DSL-Flatrate alle 24 Stunden eine neue IP-Adresse kriegt, bestimmte Zugriffe auf einem externen Host. Auf diesem Host laeuft ein Script, dass die Regeln aendert, wenn sich die Adresse aendert: #! /bin/bash CHAIN=dsl_in MYHOST=$(host gipsnich.dyndns.org | awk '{print $NF}') # list: iptables -v -n --line-numbers -L dsl_in ### some sanity checks first # check if chain exists if iptables -n -L $CHAIN /dev/null ; then : ok else echo $0: chain $CHAIN missing, exiting exit 1 fi # check if ip address looks ok if expr $MYHOST : '.*[0-9][0-9].[0-9][0-9]' /dev/null; then : ok else echo $0: bogus ip address $MYHOST, exiting exit 1 fi iptables -R dsl_in 1 -p TCP -s $MYHOST --dport 80 -j ACCEPT iptables -R dsl_in 2 -p TCP -s $MYHOST --dport 443 -j ACCEPT iptables -R dsl_in 3 -p TCP -s $MYHOST --dport 25 -j ACCEPT iptables -R dsl_in 4 -p TCP -s $MYHOST --dport 53 -j ACCEPT Hier ist eine eigene Chain dsl_in eingetragen, die fuer eingehende Verbindungen aus dem Adressbereich meines Providers angesprungen wird und nur die private Adresse filtert. Alle anderen fallen unten aus der Chain wieder raus in die normale Verarbeitung. Dank der separaten Chain bin ich immer sicher, dass die hart kodierten Positionen 1..4 in der Chain auch stimmen. Denn bei den uebergeordneten Chains koennte sich das durch -I weiter vorne schon mal aendern, was dann komplexeres Parsen erzwingen wuerde --jc -- Ignorance more frequently begets confidence than does knowledge. -- Charles Darwin -- Haeufig gestellte Fragen und Antworten (FAQ): http://www.de.debian.org/debian-user-german-FAQ/ Zum AUSTRAGEN schicken Sie eine Mail an [EMAIL PROTECTED] mit dem Subject unsubscribe. Probleme? Mail an [EMAIL PROTECTED] (engl)