IPFW und NATD

blöde frage aber, was ist wenn ich einen Apache Server auf Port 80 laufen habe und das mittels der Firewall von draussen blocke kann ich dann trotzdem noch Internet surfen?, weil Port 80 ist ja dann geblockt.
 
unlink schrieb:
Ja,
Grundlagen in Netzwerktechnik/Transportprotokollen helfen dir bestimmt weiter.

immer schön brav freundlich bleiben, wir bedauern dich ja alle das du Linux benutzt.

ausserdem so logisch ist das nicht (für manche), es war eigentlich eine frage da ich eine "wette" abgeschlossen habe mit einem freund dessen server ich einrichte, also mir ist es sowieso klar, aber intressiern tut es mich nicht ob es dich intressiert.
 
Zuletzt bearbeitet:
Also ich habe ein paar Anmerkungen zum script.

1)
Wenn ich heute nicht ganz durchgeknallt bin, dann meine ich mich zu erinnern, dass ipfw nach dem Motto "Erster Treffer gewinnt" arbeitet. Das script enthällt meiner Meinung nach einige rules die überflüssig oder falsch umgesetzt (je nach Absicht) sind. Beispiel:

${fwcmd} 00300 allow tcp from any to any out via ${natd_interface} setup keep-state
${fwcmd} 00610 allow tcp from any to ${dns_server1} 53 out via ${natd_interface} setup keep-state

Demnach wird rule 610 nie erreicht da "${dns_server1} 53" ein Element der Menge "any" ist.

2)
Wie schon jemand bemerkt hat ist mit dem script traceroute gebrochen. Sinvolle icmp rules könnten folgendes beschreiben:

type 3: destination unreachable in and out
type 4: source quench in and out
type 8: echo out (ping)
type 0: echo reply in (ping)
type 11: time exceeded in (traceroute)

Schönen Abend
-MadMax
 
Es ist schon einige Zeit her, dass ich mit diesem Howto mir meinen BSD-Router zusammengestöpselt hab, aber inzwischen hat sich da eine Rule-Datei gebildet, die meines Erachtens so gut funktioniert, aber bin mir nicht sicher, ob da nicht sogar was zu verbessern wäre :
Code:
#!/bin/sh
# Keine Ausgaben
fwcmd="/sbin/ipfw -q"

# Bisherige Rules saeubern
${fwcmd} -f flush
#${fwcmd} pipe flush
#${fwcmd} queue flush

# Variablen setzen
#natd_interface="rl0"
natd_interface="tun0"
lan_interface="sis0"
closed_ports="0,21,80,22,23,25,79,110,113,119,135-140,143,389,443,445,901,1002,1024-1030,1720,2049,5000,6000,12345,20034"
#closed_ports="0-1056,1720,2049,5000,6000,12345,20034"

# One-pass disabled due to firewall-management
# ${fwcmd} enable one_pass

# Upload-pipe for 22 kbyte/s
${fwcmd} pipe 1 config bw 192Kbit/s

# High-Priority queue for ACK-Packets
${fwcmd} queue 1 config pipe 1 weight 100 gred 0.05/35/45/0.4

# Medium-Priority queue for DNS/Gaming/SSH
${fwcmd} queue 2 config pipe 1 weight 80 gred 0.05/35/45/0.4

# Low-Priority for the dirty rest ;)
${fwcmd} queue 3 config pipe 1 weight 40 gred 0.05/35/45/0.4

# Outgoing ACK packets go thru the hp-queue
${fwcmd} 00100 add queue 1 tcp from any to any out via ${natd_interface} tcpflags ack iplen 0-80
${fwcmd} 00110 add skipto 00200 tcp from any to any out via ${natd_interface} tcpflags ack iplen 0-80

# Outgoing DNS/Gaming/SSH traffic go thru the mp-queue
${fwcmd} 00140 add queue 2 udp from any to any out via ${natd_interface}
${fwcmd} 00150 add skipto 00200 udp from any to any out via ${natd_interface}

# The dirty rest goes thru the lp-queue
${fwcmd} 00160 add queue 3 all from any to any out via ${natd_interface}
${fwcmd} 00170 add skipto 00200 all from any to any out via ${natd_interface}

# Localhost-Traffic erlauben
${fwcmd} add 00200 allow ip from any to any via lo0

# Anti-Spoofing Rules
${fwcmd} add deny log ip from 10.0.0.0/8 to any in via ${natd_interface}
${fwcmd} add deny log ip from 172.16.0.0/12 to any in via ${natd_interface}
${fwcmd} add deny log ip from 192.68.0.0/16 to any in via ${natd_interface}

# Fragmentierte Pakete ham wir auch nicht gern
${fwcmd} add deny all from any to any frag in via ${natd_interface}

# Und genauso Versuche auf die verdaechtigen Ports aus dem I-Net
${fwcmd} add unreach host-unknown all from any to any ${closed_ports} in via ${natd_interface}

# Network-Adress-Translation ermoeglichen
${fwcmd} add divert natd all from any to any via ${natd_interface}

# Stateful-Firewall verwenden
${fwcmd} add check-state
${fwcmd} add allow ip from any to any via ${natd_interface} setup keep-state

# ICMP Types 3 und 8 mal mitprotokollieren
${fwcmd} add allow log icmp from any to any in recv ${natd_interface} icmptype 3
${fwcmd} add allow log icmp from any to any in recv ${natd_interface} icmptype 8

# Alles erlauben
${fwcmd} add allow all from any to any
Die Regeln sind dabei so gebaut, dass die "üblichen verdächtigen" Ports erst einmal dicht sind und zwar nicht nur dicht, sondern Stealth. Ist zwar nicht mit grossen Firmen-Firewalls vergleichbar, die nicht nur ein icmp host-unreachable faken sondern die Fehlermeldung "in echt" verursachen.

Bissle Trafficshaping ist auch drin - also ACK-Packete werden am wichtigsten behandelt, danach genereller UDP-Traffic, damit ich bei zocken kann, obwohl im LAN gesurft wird und das ganze läuft als stateful Firewall.

Port-Forwarding läuft (noch) mittels NATD, soll aber bei der nächsten Neu-Installation per IPFW2 direkt geschehen, das würde dann in diese Rules mit einfliessen.

Nun sieht man ja, dass ich einmal eine ellenlange Liste mit den zu schliessenden Ports definiere und darunter das ganze abgekürzt auskommentiert hab, denn während die lange Liste problemlos funktioniert, geht bei der kurzen Version gar nichts mehr - meine Frage daher : Warum nicht ? :)

Für Verbesserungsvorschläge bin ich natürlich auch offen, solange es die generelle Regel "alles offen, ausser ..." erfüllt, da ich keine Lust hab für jedes Game und Programm Port-Freigaben in die Rules aufzunehmen.
 
hui, das mit den bandbreitndingensbumens find ich klasse.
hast du nicht lust genau das im wiki etwas genauer zu definieren? :)
 
Hi,

hab mal eine Frage zu IPFW2.
Grunix du schriebst ja, dass nat damit obsolet wird.
Wie ist das genau zu verstehen?
IPDIVERT kommt sicherlich trotzdem noch in den Kernel, oder?
Müssen in der rc.conf die natd-Parameter noch mit rein und
ist das einzige, was weg fällt die flag-Datei, in der die Portforwadings
vermerkt sind?
Ich möchte demnächst nämlich ipfw2 betreiben und da viel mir die Frage
beim durchlesen des Threads ein :o)
mfg
jo
 
AndreasG schrieb:
noch eins was hier evtl. mit rein kann

hab ne dsl-flatrate und krieg ja alle 24h ne neue ip - um dyndns zu aktualisieren hab ich den ddclient.
nun muss ich den aber immer dann anstarten wenn ich ne neue ip bekommen habe....

Du kannst. Muessen tust Du nicht.

ddclient.conf
Code:
...
daemon=300                       #check every 300 seconds
...
#use=ip, ip=127.0.0.1            #via static ips
use=if, if=tun0                  # via interface
#use=web                         # via web
...

ansonsten siehe Doku zum ddclient.

Was nicht bedeuten soll, dass es nicht auch gute Gruende gibt, das ueber die link hooks zu erledigen.

Gruss
 
Kann mir jemand erklären warum:

Code:
# Erlaubt ausgehende DNS queries NUR auf die beiden angegebenen Server
ipfw add allow udp from any to 194.25.2.129 53 out
ipfw add allow tcp from any to 194.25.2.129 53 out

# Erlaubt die Antwort der DNS Nachfragen
ipfw add allow udp from 194.25.2.129 53 to any in
ipfw add allow tcp from 194.25.2.129 53 to any in
das funktioniert, aber

Code:
ipfw add allow udp from any to any 53
ipfw add allow tcp from any to any 53

nicht?
 
Hab mir gerade mal die manpage von ipfw angeschaut. Wenn ich die richtig verstanden habe, dann braucht man die option
Code:
 options IPFW2
nur wenn man noch FreeBSD 4.x hat. Bei 5 und 6 ist das schon default...

Könnte man vielleicht nochmal im ersten posting erwähnen.

Gruss schibumi
 
Ausgehenden Port redirecten

Hi,

ich möchte einen ausgehenden Port (tcp 3427) auf einen anderen Port (tcp 34270) umleiten. ich hab schon einige einstellungen mit natd ausprobiert, aber ich kriege das einfach nicht gebacken, wie ich das jetzt genau einstellen muss...


kann mir jemand sagen was für einstellungen ich in den ipfw und in der natd einstellungen machen muss? thx :D

mfg
confuso
 
Zurück
Oben