PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : iptables: wann und warum OUTPUT?



Pleitegeier
29.03.04, 13:10
hi, muss mal wieder nerven, hab hier nen kleines versändnisproblem wegen iptables. ich habe jetzt zwar ein funktionsfähiges script, mir sind aber noch ein paar dinge unklar, vor allem mit der Kombination von INPUT und OUTPUT.

ich hab vorhin mal gegoogelt, und geguckt wie man samba freigibt

da bin auf das hier gestossen


iptables -A INPUT -p tcp -i {LAN_INTERFACE} --dport 137:139 -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT
iptables -A INPUT -p udp -i {LAN_INTERFACE} --dport 137:139 -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT
iptables -A OUTPUT -p tcp -o {LAN_INTERFACE} --sport 137:139 -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A OUTPUT -p udp -o {LAN_INTERFACE} --sport 137:139 -m state --state ESTABLISHED,RELATED -j ACCEPT

meine frage:

wann bzw warum filter man OUTPUT? ok, in der doku steht was von "...pakete, die von einem lokalem prozess erzeugt werden..."

ich dachte bis gerade eigentlich, dass man, sobald INPUT ins spiel kommt, schon fast automatisch auch OUTPUT berücksichtigen muss, weil der server auf diesen dienst antwortet und somit, zumindest aus meiner sicht, als lokaler prozess pakete über OUTPUT verschickt.
ich weiss, damit liege ich wohl falsch, denn es scheint auch wunderbar ohne OUTPUT zu funzen

iptables -A INPUT -p tcp -i $if_intern --dport 137:139 -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT
iptables -A INPUT -p udp -i $if_intern --dport 137:139 -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT
kann mir das vllt mal jemand erklären?

danke

Windoofsklicker
29.03.04, 17:17
man sollte iptables skripte nicht unbedingt aus dem zusammenhang reissen. vielleicht folgendes mal vorab:

die regeln werden in der reihe verarbeitet in der du sie mit -A hinzufügst. willst du eine regel an den anfang stellen, musst du -I benutzen.

der INPUT table ist für die pakete, die 'reinkommen (NICHT für forward)
der OUTPUT table für die pakete, die 'rausgehen (NICHT für forward)

naja und der FORWARD table ist für alles, was von einem i-face zum nächsten geht.
dann gilt es noch, die policies zu beachten...

uTaNG
30.03.04, 13:19
Gerade mit IPTABLES zu werkeln kann mehr als harmonisch werden... Je nach script,kann es simple bis zu sehr verzweigte und komplexe Strukturen enthalten... :D

Gerade wie es mein vorposter schon Gesagt hat:

Zum INPUT kommen die Packet die für dein Rechner bestimmt sind.

Bsp.: RechnerA pingt den RechnerB an.
Das heisst,
RechnerA erzeugt ein "Ping-Packet" [es wird gesendet,daher OUTPUT von RechnerA]
RechnerB empfängt das neue Packet [es wird empfangen,daher INPUT von RechnerB]

wenn jetzt,noch auf das "Ping-Packet" geantwortet wird,passiert das selbe...

RechnerB sendet [OUTPUT] eine Antwort zum RechnerA,
RechnerA empfängt die Antwort...

Die Regeln die du mit IPTABLES generierst,machen nichts weiter als das Packet was ankommt bzw. was gesendet werden soll,zu untersuchen und demnach zu handeln...

Du siehst das OUTPUT ist schon wichtig, und zwar siehst du anhand deiner INPUT Regel:

[I]NEW,ESTABLISHED,RELATED -j ACCEPT das alle, Neue,Bestehende,und Bendete Verbindungen Akzeptiert werden...

Wenn du wissen möchtest ob du das OUTPUT brauchst ... :D ,dann amch folgendes....

Beende alle Verbindungen zu Netzwerk,zumindest die die was mit smb zu tun haben,aber wirklich richtig beenden... dann startes du deine firewall ohne die OUPUT-Regel neu... und du siehst das auf dem Rechner wo du die OUTPUT regel hast fallen lassen,eigentlich keine Packete mehr gesendet werden dürfen, ABER es muss nicht sein weil es Abhängig ist welches Firewall Prinzip du einsetzt:

- Alles was nicht Ausdrücklich Erlaubt ist ist verboten
- Alles was nicht Ausdrücklich verboten ist ist erlaubt

Dann gab es noch was,....

- Alle Neuen Verbindungen vom Inet sind untersagt,während alle Neuen vom Internen Netz erlaubt sind...

Es gibt auf jedenfall zig Kombinationen.... musst halt sehen und wissen was du ahst,abe deine regel für smb stimmt soweit... je nachdem was du vorhast =)

Boron
31.03.04, 09:29
Ich habe von iptables keine Ahnung. So viel als Warnung.

Aber ich könnte mir vorstellen, dass ich mit der OUTPUT Paketfilterung so eine art Applikation-Filter basteln kann.
Wenn ich weiß auf welchen Port ein Programm ein Paket verschicken will, dann kann ich doch diesen Port nach außen schließen. und schon kann das Programm nichts mehr senden.

Pleitegeier
31.03.04, 10:53
mal guckn, ob heute mitm antworten klappt, gestern war ja anscheinend der server ein bischen überlastet...

also, danke euch für eure hilfe
ich hatte bei mir noch ne zeile drin, die erklärt, warum ich OUTPUT nicht mehr setzen musste

iptables -A OUTPUT -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT
hab sie mal auskommentiert, jetzt sieht die sach schon ganz anders aus :)

cane
31.03.04, 13:19
Zum 10000sten Mal mein Link zum Linux-Firewalls Buch ;)

http://www.oreilly.de/openbook/

uTaNG
31.03.04, 14:38
@Baron


Ich habe von iptables keine Ahnung. So viel als Warnung.

Aber ich könnte mir vorstellen, dass ich mit der OUTPUT Paketfilterung so eine art Applikation-Filter basteln kann.
Wenn ich weiß auf welchen Port ein Programm ein Paket verschicken will, dann kann ich doch diesen Port nach außen schließen. und schon kann das Programm nichts mehr senden.

Genau so funktioniert das Handling mit den Iptables. Du musst wissen auf welchem Port,Protokoll und wenn möglich noch ne Eigenschaft und dann kannst du dannach deine Regeln basteln... ;)

@Pleitegeier


iptables -A OUTPUT -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT

Jupp, wenn du die rausnimmst sieht das ganze etwas anders aus... :D

Mit iptaples kann man richtig kewle Dinge realisieren,man muss sich aber erstmal dazu ausseinander setzen. Mit Gescheiten filter-regeln kann man die Performance und die Sicherheit des Netzwerkes erhöhen... :cool: