WCM - Das österreichische Computer Magazin Forenübersicht
 

Zurück   WCM Forum > Rat & Tat > Linux, UNIX, Open Source

Linux, UNIX, Open Source Rat & Tat bei Problemen und Fragen rund um GNU/Linux, BSD und sonstige UNIXe

Microsoft KARRIERECAMPUS

Antwort
 
Themen-Optionen Ansicht
Alt 04.12.2005, 19:23   #1
RaistlinMajere
Inventar
 
Registriert seit: 06.04.2001
Alter: 44
Beiträge: 2.343


Standard fragen zu iptables

ich muß eine iptables-fw implementieren und hätte dazu einige fragen. anregungen habe ich mir teilweise von diversen seiten wie von der wcm linux-box genommen.

1.) ich hab ein verständisproblem bei traffic, der durch die FW durchgelassen werden soll.
in den meisten lösungen passiert dieser traffic die chain FORWARD. wenn ich also z.b. eine FW habe, die zwischen 2 subnetzen 60.0.0.0/24 und 160.0.0.0/24 liegt, hätte ich mMn z.b.

"lasse TCP-traffic aus dem subnetz 60.0.0.0/24 durch, der zu 160.0.0.0:1812 geht."
Code:
iptables -A FORWARD -p tcp -s 60.0.0.0/24 -d 160.0.0.10/24 --dport 1812 -j ACCEPT
richtig?

wenn ich mir aber z.b. diese seite ansehe, verstehe ich das so, daß die pakete, die die FW passieren dürfen, durch ROUTING durchmüssen. solche anweisungen finde ich aber in keinem bsp, wenns darum geht, traffic durchzulassen, weswegen ich vermute, daß ich da was nicht verstanden habe, wann man FORWARD und wann ROUTING verwenden muß.

2.) bei manchen regeln wird für die source und die destination eine bestimmte adresse oder ein subnetz angegeben. bei anderen hingegen wird angegeben, welches ein- bzw. ausgangsinterface verwendet werden muß, damit die regel zutrifft. macht das einen unterschied oder kann ich mich für eines von beidem entscheiden, je nach dem wie spezifisch meine regel sein muß?

3.) in vielen scripts (u.a. auch bei der wcm linux-box) ist mir aufgefallen, daß die anweisung

Code:
iptables -F
verwendet wird, um alle regeln zu flushen, danach aber noch öfter spezifische regeln nochmals geflusht werden. warum wird das gemacht, unter alle fallen doch auch diese spezifischen, oder, wozu also 2x?

4.) logging findet ja automatisch in die datei /var/log/syslog statt. ist es möglich, fürs logging eine eigene datei zu verwenden, um sie von sonstigen logs zu trennen?

vielen dank im voraus.
____________________________________
"Life is like a box of rockets," said the Marine. "You never know what you´re gonna ret."
Then he pulled the trigger of his BFG9000.
RaistlinMajere ist offline   Mit Zitat antworten
Alt 04.12.2005, 19:51   #2
Sloter
Inventar
 
Registriert seit: 05.01.2000
Beiträge: 3.812


Standard

1,
forward wird ein spezieller Dienst auf eine Interne Maschine ohne "echter" IP (192.x.x.,10.0.xx) benötigt.
Routing, wenn z.B mehrere Webserver hinter der Firewall laufen.

2, ja

3, weil es nicht getestet wird, einmal "F" reicht.
Wenn du am Anfang alles zumachst.

4,syslog.con aktivieren, da gibt es aber viele Wege die zum Logging führen.
Google aktivieren und aufpassen, das dein Logging ein Burstlimit hat, sonst kann man die Maschine abschießen.

Gutes Script
www.onlinetravel.at/firewall2


Sloter
Sloter ist offline   Mit Zitat antworten
Alt 04.12.2005, 20:41   #3
RaistlinMajere
Inventar
 
Registriert seit: 06.04.2001
Alter: 44
Beiträge: 2.343


Standard

Zitat:
forward wird ein spezieller Dienst auf eine Interne Maschine ohne "echter" IP (192.x.x.,10.0.xx) benötigt.
Routing, wenn z.B mehrere Webserver hinter der Firewall laufen.
wo liegt, aus sicht der FW, der unterschied zwischen einem "speziellen dienst" und z.b. einem webserver? sind ja beides dienste, auf die von draußen (sei das jetzt ein anderes subnet, hier eben 60.0.0.0/24, oder das internet) zugegriffen wird.

Zitat:
Wenn du am Anfang alles zumachst.
was meinst du damit? damit mache ich ja nichts zu, oder? eher im gegenteil, ich eliminiere alle regeln, dann ist die kiste praktisch komplett offen, solange ich nix anderes definiere, oder?
____________________________________
"Life is like a box of rockets," said the Marine. "You never know what you´re gonna ret."
Then he pulled the trigger of his BFG9000.
RaistlinMajere ist offline   Mit Zitat antworten
Alt 05.12.2005, 01:35   #4
Sloter
Inventar
 
Registriert seit: 05.01.2000
Beiträge: 3.812


Standard

Spezieller Dienst ist doof ausgedrückt.
Wenn du hinter deiner Firewall ein Netz hast und da eine Maschine als Webserver fungiert, leitest du die Angaben mit forwar auf die Maschine weiter.
Hast du aber zwei Webserver hinter der Firewall wird es eng, du kannst nur einen Port weiterleiten.

Grundsätzlich baut man eine Firewall so auf, das zuerst alles geschlossen wird und dann machst du der Reihe nach auf, was du benötigst.
So kannst du nichts vergessen und es bleibt nicht ein Schlupfloch aus unchtsamkeit offen.

Ein flush macht man nur am Beginn, damit keine alten Regeln aktiv bleiben.
Beispiel eines Firewallscripts.

#Flush everything, start from scratch
$IPTABLES -F

#Set default policies to DROP
$IPTABLES -P INPUT DROP
$IPTABLES -P OUTPUT DROP
$IPTABLES -P FORWARD DROP

Sloter
Sloter ist offline   Mit Zitat antworten
Alt 05.12.2005, 02:24   #5
RaistlinMajere
Inventar
 
Registriert seit: 06.04.2001
Alter: 44
Beiträge: 2.343


Standard

Zitat:
Wenn du hinter deiner Firewall ein Netz hast und da eine Maschine als Webserver fungiert, leitest du die Angaben mit forwar auf die Maschine weiter.
Hast du aber zwei Webserver hinter der Firewall wird es eng, du kannst nur einen Port weiterleiten.
ich verstehe leider nicht ganz, wo da das problem sein soll.
immerhin kann ich für einen, wie für zwei webserver, die ja mit unterschiedlichen IPs angesprochen werden, FORWARD-regeln definieren, so z.b.

Code:
iptables -A FORWARD -d 160.0.0.5 --dport 80 -j ACCEPT
iptables -A FORWARD -d 160.0.0.6 --dport 80 -j ACCEPT
meinem verständnis nach wird, wenn die FW jetzt z.b. auf dem äußeren interface mit einem request auf eine der beiden webserver angesprochen wird, diesen entsprechend weiterleiten, oder?

ich verstehe daher nicht, wo da jetzt der große der unterschied liegt, ob ich einen oder mehrere webserver hinter der FW laufen habe.
____________________________________
"Life is like a box of rockets," said the Marine. "You never know what you´re gonna ret."
Then he pulled the trigger of his BFG9000.
RaistlinMajere ist offline   Mit Zitat antworten
Alt 05.12.2005, 11:43   #6
PhelanWolf
Master
 
Registriert seit: 30.06.2000
Ort: Klagenfurt
Beiträge: 629


Standard

Zitat:
Original geschrieben von RaistlinMajere
ich verstehe leider nicht ganz, wo da das problem sein soll.
immerhin kann ich für einen, wie für zwei webserver, die ja mit unterschiedlichen IPs angesprochen werden, FORWARD-regeln definieren, so z.b.

Code:
iptables -A FORWARD -d 160.0.0.5 --dport 80 -j ACCEPT
iptables -A FORWARD -d 160.0.0.6 --dport 80 -j ACCEPT
meinem verständnis nach wird, wenn die FW jetzt z.b. auf dem äußeren interface mit einem request auf eine der beiden webserver angesprochen wird, diesen entsprechend weiterleiten, oder?

ich verstehe daher nicht, wo da jetzt der große der unterschied liegt, ob ich einen oder mehrere webserver hinter der FW laufen habe.
Nein das haut nicht hin, denn meistens hast ja nur eine "äussere" IP Adresse, sprich öffentliche, und dann weiß er ja nicht was er tun soll, soll er sie nun nach 160.0.0.5 oder .6 weiterleiten. Um es umgangsprachlich auszudrücken:
Die Firewall kriegt auf der öffentliche n IP eine Anfrage an den Port 80, jetzt kommen die Regeln zum Tragen. Also lt. Deiner Konfiguration wird die Anfrage an 160.0.0.5 Port 80 weitergeleitet, da die Regel vor der anderen Regel steht, und nachdem die Regel abgearbeitet wurde und die Anfrage ensprechend abgearbeitet wurde gibt eigentlich keinen Grund mehr die zweite Regel abzuarbeiten. Denn wie einer meiner Vorposter bereits gesagt hat, wird alles mal gesperrt und dann stück für stück geöffnet. kann man einen "Anfrage" Port nur auf eine IP weiterleiten (vorausgesetzt du hast nur eine Source (sprich öffentliche IP Adresse).

Ich hoffe das war nicht zu umständlich ;-)

Um jedoch das Problem mit 2 Webservern zu lösen, gibt eine ganz elegante Lösung, einfach beide Webseiten auf einem Server laufen lassen und somit all e Anfragen von Port 80 der öffentlichen IP an diesen Webserver weiterleiten und erst am Webserver die Unterscheidung zu treffen (aufgrund der Angefragten Domain) welche "index.htm" er nun zurück gibt.
____________________________________
*hmmmmmmmmmmmmmmm*
PhelanWolf ist offline   Mit Zitat antworten
Alt 05.12.2005, 12:12   #7
MANX
Inventar
 
Registriert seit: 27.02.2001
Beiträge: 1.967


Standard

@RaistlinMajere

Angenommen Dein Linuxrechner hat 2 Interfaces. Eins zeigt ins LAN (eth0), eins ins Internet (eth1).

Die INPUT Chain betrifft immer Pakete, die bei einem Interface reinkommen und als Ziel den Linuxrechner selber haben.
(darum gibt's ja bei den INPUT Regeln auch nur -i IF)

z.B Anfrage von außen "-A INPUT -i eth1"
von innen: "-A INPUT -i eth0"

OUTPUT betrifft Pakete die von Deinem Linuxrechner (selber) ausgehen und ihn auf irgendeinem IF verlassen. (-A OUTPUT -o IF)

Und die FORWARD chain behandelt das Routing. Pakete passieren Deinen Linuxrechner nur. Rein bei eth0, raus bei eth1.

Grüße

Manx
____________________________________
Broadcasting from the Isle of Man:
>> Manx Radio <<
MANX ist offline   Mit Zitat antworten
Alt 05.12.2005, 13:59   #8
RaistlinMajere
Inventar
 
Registriert seit: 06.04.2001
Alter: 44
Beiträge: 2.343


Standard

Zitat:
Original geschrieben von PhelanWolf
Die Firewall kriegt auf der öffentliche n IP eine Anfrage an den Port 80, jetzt kommen die Regeln zum Tragen. Also lt. Deiner Konfiguration wird die Anfrage an 160.0.0.5 Port 80 weitergeleitet, da die Regel vor der anderen Regel steht, und nachdem die Regel abgearbeitet wurde und die Anfrage ensprechend abgearbeitet wurde gibt eigentlich keinen Grund mehr die zweite Regel abzuarbeiten.
ok, nur eines verstehe ich dabei jetzt noch immer nicht.
ich dachte ursprünglich, daß meine beispielregeln sagen "wenn ein request auf 160.0.0.5:80 reinkommt, darfst du diesen weiterleiten". deiner beschreibung zufolge dürfte diese regeln allerdings lediglich den 2. teil dieser aussage abdecken, nämlich die weiterleitung. was ich da noch vermisse, ist der fett markierte teil des zitats. muß ich die abfrage ob einer anfrage auf port 80 eigens über eine INPUT-regel machen? also z.b. so:
Code:
iptables -A INPUT --dport 80 -j ACCEPT
iptables -A FORWARD -d 160.0.0.5 --dport 80 -j ACCEPT
oder ist die INPUT-regel hinfällig, weil die 2. ein normales port-forwarding macht, das da sagt "wenn etwas bei mir auf port 80 reinkommt, leite ichs auf 160.0.0.5 weiter".

wenn dem so ist, dann ist FORWARD wohl nicht das richtige für mich, weil ich hier nicht eine anfrage auf port 80 auf der FW habe, sondern einen ganz bestimmten server und port hinter der FW von draußen ansprechen will, dieser traffic muß durchgelassen werden.
____________________________________
"Life is like a box of rockets," said the Marine. "You never know what you´re gonna ret."
Then he pulled the trigger of his BFG9000.
RaistlinMajere ist offline   Mit Zitat antworten
Alt 05.12.2005, 14:09   #9
MANX
Inventar
 
Registriert seit: 27.02.2001
Beiträge: 1.967


Standard

Zitat:
Original geschrieben von RaistlinMajere

@MANX: dies führt mich gleich auch zu dem, was du gepostet hast. an sich ist mir das schon klar. nur habe ich da jetzt dieselbe frage wie vorher, etwas allgemeiner ausgedrückt: muß jeder FORWARD-regel eine INPUT-regel vorangehen, damit ein request überhaupt auf der FW selbst erfasst wird, bevor er weitergeleitet werden kann?
Nein
Zitat:

konkret gehts hier um 2 subnetze (60.0.0.0 und 160.0.0.0), dazwischen ist die FW.
wie ich ganz zu beginn geschrieben habe, dachte ich, daß ich mit der regel
Code:
iptables -A FORWARD -p tcp -s 60.0.0.0/24 -d 160.0.0.10/24 --dport 1812 -j ACCEPT
sage:
"lasse TCP-traffic aus dem subnetz 60.0.0.0/24 durch, der zu 160.0.0.0:1812 hin möchte"

ist das korrekt oder check ichs immer noch nicht?
korrekt, allerdings musst Du noch den Traffic zurück erlauben.
Hier kommt stateful-inspection ins Spiel.
Du wirst sowas brauchen:
Code:
iptables -A FORWARD -i Interface1 -o Interface2 -m state --state ESTABLISHED,RELATED -j ACCEPT
Grüße

Manx

PS: auf http://harry.homelinux.org gibt's einen Konfigurator, vielleicht als Starthilfe brauchbar
____________________________________
Broadcasting from the Isle of Man:
>> Manx Radio <<
MANX ist offline   Mit Zitat antworten
Alt 05.12.2005, 14:12   #10
RaistlinMajere
Inventar
 
Registriert seit: 06.04.2001
Alter: 44
Beiträge: 2.343


Standard

Zitat:
Original geschrieben von MANX
@RaistlinMajere

Angenommen Dein Linuxrechner hat 2 Interfaces. Eins zeigt ins LAN (eth0), eins ins Internet (eth1).

Die INPUT Chain betrifft immer Pakete, die bei einem Interface reinkommen und als Ziel den Linuxrechner selber haben.
(darum gibt's ja bei den INPUT Regeln auch nur -i IF)

z.B Anfrage von außen "-A INPUT -i eth1"
von innen: "-A INPUT -i eth0"

OUTPUT betrifft Pakete die von Deinem Linuxrechner (selber) ausgehen und ihn auf irgendeinem IF verlassen. (-A OUTPUT -o IF)

Und die FORWARD chain behandelt das Routing. Pakete passieren Deinen Linuxrechner nur. Rein bei eth0, raus bei eth1.

Grüße

Manx
das ist mir schon klar. nur ist dann wie gesagt die frage, ob mir FORWARDING hier was bringt, wenn das, wie ich nun glaube, verstanden zu haben, ein einfaches port-forwarding darstellt.

damit ist mir hier aber nicht geholfen, weil ich ja nicht möchte, daß aus dem subnetz 60.0.0.0 die firewall auf einem port angesprochen werden kann, den diese dann einfach auf eine maschine dahinter weiterleitet. was ich vielmehr brauche, ist, daß ich aus dem subnet 60.0.0.0 sage "ich weiß, daß sich hinter der firewall auf 160.0.0.5:1812 ein server befindet, den ich ansprechen möchte."
die firewall soll diese anfrage durchlassen. wie mache ich das?
____________________________________
"Life is like a box of rockets," said the Marine. "You never know what you´re gonna ret."
Then he pulled the trigger of his BFG9000.
RaistlinMajere ist offline   Mit Zitat antworten
Antwort


Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
 

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.

Gehe zu


Alle Zeitangaben in WEZ +2. Es ist jetzt 12:32 Uhr.


Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Forum SEO by Zoints
© 2009 FSL Verlag