PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Firewall prinzipiell



Fir3fly
09.04.02, 11:36
Mal was pronzipielles: Eine Firewall blockt offene Ports. Wenn die Firewall ports blockt >20000 bringt sie doch eigendlich gar nichts mehr, da da oben sowieso keine applikation antworten würde. Ausnahme bilden hier trojaner, die aber auf linux boxen nicht sooo kritisch erscheinen.

Nochmal Klartext: Ich würde gerne meinen ftpserver so verlagern, daß ich ihn als aktiven Server laufen lassen kann. Der höchste belegte port auf meiner box, den ich kenne ist 8080. Wenn ich den Ftp-Server auf 20000 verlagere sollte er doch als aktiver server funktionieren. Auch, wenn ich die Firewall alles unter 10000 überwachen lasse.

Habe ich da was falsch verstanden und offenen Ports, auf denen keine applikation läuft bilden doch ein sicherheitsrisiko? Wenn ja, wieso?

Fir3fly

Nighthawk
09.04.02, 11:55
Wenn ich die Liste hier richtig interpretiere benutzt unter anderem traceroute Port 33434, isdnlog 20011, vboxd 20012, binkp 24554, asp 27374, tfido 60177 und fido 60179, und das ist nur die Liste der "well known" Services.

Fir3fly
09.04.02, 12:27
Jau, Nighthawk, das hab ich erwartet, daß es services gibt, die ich nicht kenne. Aber wenn in meiner inetd.conf diesen Ports keine services zugeordnet sind, dann sollte meine Maschine auch nicht auf anfragen an diesem Port antworten, wenn ich mich nicht irre. Dann brauch ich diese Ports auch nicht per Firewall zu schüten? Richtig?

taylor
09.04.02, 12:40
> Dann brauch ich diese Ports nicht zu schützen

Ich sag jetzt mal: Nein, da liegst Du falsch. Wenn ein Service auf dem Port läuft, musst Du ihn auch per Firewall abdecken. /etc/services ist da unerheblich (werde aber nacher mal in die manpage sehen).

Ich versteh auch nicht ganz, wieso Du glaubst, dass der FTP Server dann aktiv wird? Lauft der FTPD *auf* Deinem Router/Server oder auf einem Client im LAN?

Beste Grüße,
Taylor

Nighthawk
09.04.02, 12:52
Wenn Du sicher bist dass Du keine Dienste beim Systemstart startest die unabhängig vom xinetd als Standalone laufen und wenn alle Dienste für die inetd konfiguriert ist disabled sind hast Du schonmal ein sichereres System als wenn Du 10 überflüssige Dienste laufen hast deren Funktion Du nichtmal kennst. Es sind nur Dienste angreifbar die einen Port nach draußen öffnen. Wenn ein Port von keinem Programm genutzt wird ist er automatisch geschlossen, es gibt keine Ports die "einfach nur so" offen sind. Also hättest Du das Risiko eines Angriffes schonmal drastisch reduziert. Aber trotzdem ist es sicherer eine restriktive Firewall laufen zu lassen die automatisch erstmal alles blockt. Benötigte Funktionen werden explizit freigegeben. Du kannst nie wissen was Du Dir in Zukunft noch so einfangen wirst, also lieber auf Nummer sicher gehen. Falls ich Müll schreibe bitte ich um Korrektur :D

PS: Wo mein Vorredner es grad erwähnt, wieso gibst Du nicht z.B. bei iptables einfach die richtigen Ports frei?

iptables -A INPUT -p tcp --destination-port 21 -m state --state NEW,ESTABLISHED -j ACCEPT
iptables -A INPUT -p tcp --destination-port 20 -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A INPUT -p tcp ! --syn --source-port 20 --destination-port 1024:65535 -m state --state ESTABLISHED,RELATED -j ACCEPT

Funktioniert z.B. einwandfrei.

Fir3fly
09.04.02, 13:34
Hi und danke. so langsam komme ich der Sache näher ;)

@ nighthawk "wieso gibst Du nicht z.B. bei iptables einfach die richtigen Ports frei? " - tjo - a) weil ich die funktionsweise eines ftp servers vermutlich noch nicht ganz verstanden habe und b) benutze ich immer noch ipchains wo die Funktiosweise ebenfalls große Wissenslücken hat. (schande über mein haupt).

Bisher war ich mit dem System das bei mir läuft (halleluja es läuft) - Suse 7.1 - sehr zufrieden. Der Rechner läuft als Router - Firewall - und hin und wieder als ftpserver. (@taylor). Nun bin ich auf die Idee gekommen mich mal Distributionsmäßig bischen umzuschaun und hab mir mal einiges angeschaut, was nicht grade Suse ist. Feine Sachen gibts da, so daß ich vermutlich umsatteln werde. Ich will endlich mal den 2.4er Kernel und dann auch iptables. Und ich wollte, daß die connect und transferprobleme, die mache haben (vor allem die, die selber über einen router ins netz gehen) endlich mal ein Ende haben. Die Ursache dieser Probs vermute ich in der Firewallkonfiguration. Deshalb versuch ich mal duchzublicken, was sache ist.

@nighthawk wie kann man das verstehn?

iptables -A INPUT -p tcp --destination-port 21 -m state --state NEW,ESTABLISHED -j ACCEPT
iptables -A INPUT -p tcp --destination-port 20 -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A INPUT -p tcp ! --syn --source-port 20 --destination-port 1024:65535 -m state --state

ok, das sind Firewall regeln für ipchains. port 21 und 20 werden aufgemacht für den server. aber was bedeutet NEW,ESTABLISHED, RELATED? Die letzte zeile versteh ich gar nicht. ... ich weiss, steht alles in den manpages, aber da hab ich im moment keine da. Hier gibts nur Windoof rechner :(

Danke

Fir3fly

Nighthawk
09.04.02, 14:09
Original geschrieben von Fir3fly
@nighthawk wie kann man das verstehn?

iptables -A INPUT -p tcp --destination-port 21 -m state --state NEW,ESTABLISHED -j ACCEPT
iptables -A INPUT -p tcp --destination-port 20 -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A INPUT -p tcp ! --syn --source-port 20 --destination-port 1024:65535 -m state --state

ok, das sind Firewall regeln für ipchains. port 21 und 20 werden aufgemacht für den server. aber was bedeutet NEW,ESTABLISHED, RELATED? Die letzte zeile versteh ich gar nicht. ... ich weiss, steht alles in den manpages, aber da hab ich im moment keine da. Hier gibts nur Windoof rechner :(

Also bei ipchains sollte das zumindest ähnlich aussehen, hab ich mich allerdings nicht weiter mit beschäftigt. Aktueller stabiler 2.4er Kernel ist aber eh nicht verkehrt :) Wenn Du ipchains/iptables wirklich effektiv einsetzen willst kommst Du um einige Lesearbeit nicht herum, gutes Tutorial (http://www.boingworld.com/workshops/linux/iptables-tutorial/iptables-tutorial/iptables-tutorial.html).
Wenn man das Grundprinzip raus hat isses gar nicht so schwer, man muss bloß verstehen wie bei den verschiedenen Protokollen eine Verbindung eingeleitet wird und welche Ports man braucht.

iptables -A INPUT -p tcp --destination-port 21 -m state --state NEW,ESTABLISHED -j ACCEPT
iptables -A INPUT -p tcp --destination-port 20 -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A INPUT -p tcp ! --syn --source-port 20 --destination-port 1024:65535 -m state --state ESTABLISHED,RELATED -j ACCEPT

-A = Append, fügt der Kette (immer INPUT hier, also Daten von außen) eine Regel hinzu.
-p = das Protokoll
--destination-port / --source-port = selbsterklärend ;)
-m = lädt zusätzliche Module, hier "state"
--state = das Modul "state", damit kann man Verbindungen nach Status filtern. Um das zu verstehen müsstest Du verstehen wie Verbindungen aufgebaut werden, z.B. was SYN Pakete sind. Im Prinzip sind aber NEW neu aufgebaute Verbindungen, ESTABLISHED sind bestehende Verbindungen und RELATED sind Verbindungen die von anderen Verbindungen abhängig sind, wie z.B. die Daten- und Kommandoverbindungen beim FTP-Protokoll
-j = ist die Anweisung was mit Paketen auf die die Regel zutrifft passieren soll (hier immer ACCEPT, also annehmen)
! -- syn = "nicht SYN" :p
xxxx:xxxxx = Portranges wie man wahrscheinlich sieht :)