PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : IPTables -Verständnis Problem



predator66
26.04.08, 10:14
Hallo zusammen,

ich habe ein kleineres Problem mit meine rIPtables Fireall, ich verstehe nämlich die genaue Bedeutung eines Befehls nicht so richtig.

iptables -m state --state ESTABLISHED,RELATED -j ACCEPT

MIr wurde in einem anderen Forum gesagt das ich das eingeben soll um HTTP zum laufen zu bringen, soweit so gut klappt auch alles, aber ich habe denn Sinn dieses BEfehls nict so ganz Verstanden, außerdem gehe ich davon aus das wenn ich das so ausführe, alle anderen Regeln wertlos sind weil dieser Befehl doch alles und jeden erlaubt und "über allen anderen" steht in der Form , oder etwa nicht?

Auszug aus meiner Config:

iptables -P INPUT DROP
iptables -P OUTPUT ACCEPT

iptables -A INPUT -i eth1 -p tcp --dport 22 -j ACCEPT

iptables -m state --state ESTABLISHED,RELATED -j ACCEPT

--

Wen ich das so eingebe, dann wird doch die Regel für Port 22 bzw. sogar die Standard Policy von der m-state Regel überlagert oder nicht?

MfG

asi_dkn
26.04.08, 10:44
Moin,

Die Regel:

iptables -m state --state ESTABLISHED,RELATED -j ACCEPT
besagt nur, das Pakete welche zu einer bereits bestehenden Verbindung gehören auch akzeptiert werden. Zudem fehlt die Zuordnung zu einer Kette, der Befehl wird so nicht funktionieren.

Du erlaubst SSH, also werden durch die Regel alle weiteren Pakete welche zu deiner SSH Verbindung gehören auch erlaubt. Die restlichen Regeln werden dadurch aber nicht nutzlos. Wenn Beispielsweise jemand auf den Port 80 auf deinem Rechner zugreiffen will, wird dieser durch die Policy davon abgehalten. Keine Verbindung, also trifft auch die oben erwähnte Regel nicht zu.

Edit:
Ich weiss nicht ob ich mich da selber nicht irre, aber die Regel solltest du zu oberst in deiner Kette definieren. Iptables arbeitet sich immer von oben nach unten durch die Liste. Zudem würde ich dir empfehlen auch die andere Regel (erlauben der SSH Verbindung) stateful zu konfigurieren. Statefull Packetfiltering ist vor allem bei hohem Durchsatz wesentlich performanter. Da macht es meiner Meinung nach auch sinn die "ESTABLISHED,RELATED" Regel zu oberst zu definieren, da Pakete bestehender Verbindungen dann schneller erlaubt werden und die restlichen Regeln nicht durchlaufen werden müssen. Man möge mich korrigieren falls ich mich irre.

predator66
26.04.08, 11:20
Moin,

Die Regel:

iptables -m state --state ESTABLISHED,RELATED -j ACCEPT
besagt nur, das Pakete welche zu einer bereits bestehenden Verbindung gehören auch akzeptiert werden. Zudem fehlt die Zuordnung zu einer Kette, der Befehl wird so nicht funktionieren.

Du erlaubst SSH, also werden durch die Regel alle weiteren Pakete welche zu deiner SSH Verbindung gehören auch erlaubt. Die restlichen Regeln werden dadurch aber nicht nutzlos. Wenn Beispielsweise jemand auf den Port 80 auf deinem Rechner zugreiffen will, wird dieser durch die Policy davon abgehalten. Keine Verbindung, also trifft auch die oben erwähnte Regel nicht zu.

Edit:
Ich weiss nicht ob ich mich da selber nicht irre, aber die Regel solltest du zu oberst in deiner Kette definieren. Iptables arbeitet sich immer von oben nach unten durch die Liste. Zudem würde ich dir empfehlen auch die andere Regel (erlauben der SSH Verbindung) stateful zu konfigurieren. Statefull Packetfiltering ist vor allem bei hohem Durchsatz wesentlich performanter. Da macht es meiner Meinung nach auch sinn die "ESTABLISHED,RELATED" Regel zu oberst zu definieren, da Pakete bestehender Verbindungen dann schneller erlaubt werden und die restlichen Regeln nicht durchlaufen werden müssen. Man möge mich korrigieren falls ich mich irre.

Ah danke das war sehr hilfreich, ich war mir nur unsicher, ob diese m-state regel nicht alles durchlässt, da ja nichts mehr als die definition des mstat gemacht wurde (zb anwendung auf nur einen bestmmten port). aber wenn das so ist, dann funktioniert ja alles wie es soll.

Wie genau stelle ich denn stateful ein? Bin noch ein Anfänger in IPtables ;).

MfG

asi_dkn
26.04.08, 11:27
Etwa so:

iptables -A INPUT -m state --state NEW -m tcp -p tcp --dport 22 -s 192.168.1.0/24 -j ACCEPT

Iptables, finde ich, sind auf jeden Fall ziemlich gut dokumentiert. Es lohnt sich eventuell auch mal nach Beispielconfigs zu suchen und mal zu sehen was man so mit den iptables alles machen kann... die können nämlich ne ganze Menge ;)

predator66
26.04.08, 11:44
Etwa so:

iptables -A INPUT -m state --state NEW -m tcp -p tcp --dport 22 -s 192.168.1.0/24 -j ACCEPT

Iptables, finde ich, sind auf jeden Fall ziemlich gut dokumentiert. Es lohnt sich eventuell auch mal nach Beispielconfigs zu suchen und mal zu sehen was man so mit den iptables alles machen kann... die können nämlich ne ganze Menge ;)

Das Problem ist, das die meistens configs af spezielle Probleme angepasst wurden und fast keine so Recht lesbar für eine Anfänger ist. ISt aber auch egal, ich habe das hinbekommen was ich wollte.

danke für deine Hilfe.

MfG

asi_dkn
26.04.08, 11:51
Ja es braucht am Anfang schon etwas Zeit bis man verstanden hat wie genau das funktioniert. Das bekommst du aber nur mit Üben hin. Also versuch vieles aus und vergiss nicht das ganze zu testen. Zu leicht hat man, gerade als Anfänger, eine Regel erstellt welche einfach nicht das macht was man erwartet hat, oder eben die Combo die's ausmacht ;)