LeoLinux' IPFW Fragen

LeoLinux

Well-Known Member
Hi,

kleiner Kampf mit IPFW:

ich habe einen FreeBSD PPPoE Server der als Gateway dient. Ich möchte nun standartgemäß sämtlichen Traffic verbieten bis sich ein PPPoE Client auf die Kiste wählt und die entsprechende any to any in via bla blub Regel via Script für den entsprechenden Client aktiviert wird.


Nun habe ich aber das Problem, dass wenn ich sämtlichen Traffic auf der Kiste gesperrt habe, ich mich auch nicht mehr via PPPoE auf der Kiste anmelden kann - macht Sinn, ne? ;)

Meine Frage lautet nun, wie denn eine Regel lauten würde die NUR PPPoE anmlde-Traffic zulassen würde?

Meine Firewall ist im Kernel drin und auf default deny gesetzt.


LG,


Leander


PPPoE Discovery (PPPoED) usw. ... sollte halt möglich sein ...
 
Zuletzt bearbeitet:
Habe meinen Fehler entdeckt:

Das:

Code:
### Localhost ###

        ${fwcmd} add 100 pass all from any to any via lo0
        ${fwcmd} add 200 deny all from any to 127.0.0.0/8
        ${fwcmd} add 300 deny ip from 127.0.0.0/8 to any


### WAN Konfiguration ###

        ${fwcmd} add 400 pass all from any to any via ${WAN_if}


### LAN Konfiguration ###

#       default deny ALL

        ### Portal Weiterleitung:
#       ${fwcmd} add 10000 fwd ${LAN_IP},22 tcp from $LAN_DHCP to any 22 in via ${LAN_if}
#       ${fwcmd} add 10000 fwd ${LAN_IP},8080 tcp from $LAN_DHCP to any 80 in via ${LAN_if}

### NATd Umleitung ###

        ${fwcmd} add divert natd ip from any to any in via ${WAN_if}
        ${fwcmd} add divert natd ip from any to any out via ${WAN_if}


hat mir gefehlt .. localhost und LAN Anschluss waren ja beide auf deny also konnte auch keine Authentifizierung über den localhost RADIUS Server stattfinden . ;)

doh .. ;)


LG,
Leander
 
IPWF + Paket fwd

Hi,

ich habe nochmals ein Problem mit IPFW:

Ich habe auf meinem FreeBSD einen Apachen laufen. Ich möchte nun dass sämtliche Anfragen aus dem Netzwerk Port 80,443 und 8080 betreffend mit IPFW auf Port 8080 geforwardet werden.

Sinn und Zweck ist die Einrichtung eines Captive Portal ähnlichen Gebräus.


Hierzu habe ich mir folgendes Script zusammen gebastelt:

Code:
#!/bin/sh

if [ -z "${source_rc_confs_defined}" ]; then
        if [ -r /etc/defaults/rc.conf ]; then
                . /etc/defaults/rc.conf
                source_rc_confs
        elif [ -r /etc/rc.conf ]; then
                . /etc/rc.conf
        fi
fi


#############################
#### Globale Variablen: #####
#############################

WAN_if="msk0"
WAN_IP="10.1.10.50"
WAN_net="255.0.0.0"
WAN="10.0.0.0/8"

LAN_if="ath0"
LAN_IP="192.1.1.1"
LAN_net="255.255.255.0"
LAN="192.1.1.0/24"

fwcmd="/sbin/ipfw -q"


#############################
########## Start: ###########
#############################

### Firewall Reset ###

        ${fwcmd} -f flush


### Localhost ###

        ${fwcmd} add 100 allow all from any to any via lo0
        ${fwcmd} add 200 deny all from any to 127.0.0.0/8
        ${fwcmd} add 300 deny ip from 127.0.0.0/8 to any



### WAN Konfiguration ###

        ${fwcmd} add 400 divert natd ip from any to any in via ${WAN_if}
        ${fwcmd} add 500 divert natd ip from any to any out via ${WAN_if}
        ${fwcmd} add 600 allow all from any to any via ${WAN_if}



### LAN Konfiguration ###

        ### Ping
        ${fwcmd} add 700 allow icmp from ${LAN} to ${LAN} icmptypes 0,8

        ### PortalSite - Weiterleitung:
        ${fwcmd} add 800 allow tcp from ${LAN} 8080 to ${LAN}
        ${fwcmd} add 900 fwd ${LAN_IP},8080 tcp from ${LAN} to any 80,8080,443 in via ${LAN_if}

... Leider bekomme ich aber immer folgenden Fehler mit dem fwd:

Code:
ipfw: getsockopt(IP_FW_ADD): Invalid argument



Vielen Dank

Grüße,

Leander
 
Zuletzt bearbeitet:
Da fehlt dir eine, idiotischerweise nicht standardmäßig vorhandene Kerneloption. Ich meine es ist "options IPFIREWALL_FORWARD".
 
Ja, genau das hat mir gefehlt - jetzt bekomme ich wenigstens den Fehler nicht mehr ;) jedoch hinbekommen was ich wollte habe ich leider immer noch nicht ganz.

Ich habe in meiner Apache-virtual-hosts conf nen neuen virtual-host auf port 8080 gelegt. Der soweit auch auf dem entsprechenden Interface und Port 8080 von außen funktionell erreichbar ist.

jetzt möchte ich aber, dass SÄMTLICHER HTTP Traffic, ganz gleich welcher Adresse erst einmal auf diese Seite weitergeleitet wird dazu habe ich diese Regel hier geschrieben:

Code:
        ${fwcmd} add 600 allow tcp from ${LAN} 8080 to ${LAN}
        ${fwcmd} add 700 fwd ${LAN_IP},8080 tcp from any to ${LAN_IP} 80 in

leider haut das nicht ganz hin ... ;(



hier ist noch meine Apache conf für den virthost:

Code:
NameVirtualHost *:8080

<VirtualHost *:8080>
    ServerAdmin apache@domain.de
    DocumentRoot "/usr/local/www/PortalSite"
    ServerName server_01.domain
    ServerAlias www.server_01.domain
    AliasMatch .* /usr/local/www/PortalSite/index.html
    DirectoryIndex index.html index.htm index.php index.php3
        <Directory "/usr/local/www/PortalSite">
        Options Indexes FollowSymLinks
        Order allow,deny
        Allow from all
        AllowOverride all
        </Directory>
    ErrorLog /var/log/apache/server_01.domain.de-PortalSite-error_log
    CustomLog /var/log/apache/server_01.domain.de-PortalSite-access_log common
</VirtualHost>

AliasMatch ist auf * gesetzt und Port auf 8080 --> sollte doch soweit genügen, oder?


Vielen Dank,

Leander S.


!!! P.S. Meine Firewall ist auf "default deny" gesetzt !!!
 
Zuletzt bearbeitet:
Hier wurden aber auch schon mal mehr Tipps abgegeben ?!

LG

Ich glaube weniger, dass es an einem von Ararat++ genannten Grund liegt. Die sind mir zumindest latte.

Viel mehr haben die meisten FreeBSD-User keinen Plan von (oder zumindest weniger Routine mit) IPFW, da sie OpenBSD's PF nutzen, das auch in FreeBSD drinn ist.
Die Firewall ist einfach verbreiteter und beliebter...
 
@Ararat++
1. ist es ein Doppelpost: http://www.unixboard.de/vb3/showthread.php?t=39477
2. dein Nickname wird wohl hier dein Nickname nicht gern gesehen "Linux" in einem BSD-Forum
3. dein Avatar musste ich adblocken *sorry* war zu aufdringlig
^^@1.: Oh mein Gott die Welt geht unter ... ein DOPPELPOST ;) wow ;) dann hast DU ja auch bestimmt mein Statement dazu gelesen, what? ;)
^^@2.: Deshalb hast du besser mal keines reingeknallt, what? ;)
^^@3.: It's all about respect - ansonsten gibts da nich mehr zu sagen.

Wirklich weitergeholfen hat mir dein Post leider auch nicht ;/

... ach und btw. ... ich sag nur ... :
Signatur

Arch Linux i686
^^ an den EDV König der sich ausversehen ins BSD Forum verlaufen hat ^^ ;P



@soul_rebel
Ich glaube weniger, dass es an einem von Ararat++ genannten Grund liegt. Die sind mir zumindest latte.

Viel mehr haben die meisten FreeBSD-User keinen Plan von (oder zumindest weniger Routine mit) IPFW, da sie OpenBSD's PF nutzen, das auch in FreeBSD drinn ist.
Die Firewall ist einfach verbreiteter und beliebter...
^^ Danke, wenigstens sind nich alle so oberflächlich und in der Lage vernünftige Antworten von sich zu geben ;)

Ich hätte auch lieber pf ausgewählt, aber der mpd Entwickler Alexander Motin hat mich leider nie gefragt was ich haben möchte und seinen mpd auf IPFW ausgelegt.
Zudem tut es mir IPFW prinzipiell ja auch ... es kann ja auch alles was ich benötige .. ich bin leider nur noch nich in der Lage es richtig zu bedienen ;)

Bin also um jeden hilfreichen Tipp zu *MEINEM_IPFW_PROBLEM* sehr dankbar ;)

Grüße,

Leander
 
1. Wer sagt das die Angaben in meiner Signatur aktuell ist?
2. Würde *BSD auf meiner Hardware laufen, würde ich es nutzen. Solange nutze ich ein *BSD-ähnliches System.

Zu deiner Frage, hast du dir schon mal die Manpage angeschaut?
http://www.freebsd.org/cgi/man.cgi?...ion=0&manpath=FreeBSD+7.0-RELEASE&format=html
Da sollten eigentlich alle Möglichkeiten und Funktionen von ipfw aufgelistet und erklärt sein.

aber der mpd Entwickler Alexander Motin hat mich leider nie gefragt was ich haben möchte und seinen mpd auf IPFW ausgelegt.
hast du ihn bezüglich mal eines Portes nach pf gefragt?
 
Wer sagt, dass ich Linux aktuell nutze? ;)
Aber lassen weir diese kindischen Streitereien ...

Die man habe ich mir mittlerweile auch hoch und runter gegeben ; )
... Allerdings ist das das einzige was dazu drinne steht ... ;/

fwd | forward ipaddr | tablearg[,port]

Change the next-hop on matching packets to ipaddr, which can be
an IP address or a host name. The next hop can also be supplied
by the last table looked up for the packet by using the tablearg
keyword instead of an explicit address. The search terminates if
this rule matches.

If ipaddr is a local address, then matching packets will be for-
warded to port (or the port number in the packet if one is not
specified in the rule) on the local machine.
If ipaddr is not a local address, then the port number (if speci-
fied) is ignored, and the packet will be forwarded to the remote
address, using the route as found in the local routing table for
that IP.
A fwd rule will not match layer-2 packets (those received on
ether_input, ether_output, or bridged).
The fwd action does not change the contents of the packet at all.
In particular, the destination address remains unmodified, so
packets forwarded to another system will usually be rejected by
that system unless there is a matching rule on that system to
capture them. For packets forwarded locally, the local address
of the socket will be set to the original destination address of
the packet. This makes the netstat(1) entry look rather weird
but is intended for use with transparent proxy servers.

To enable fwd a custom kernel needs to be compiled with the
option options IPFIREWALL_FORWARD.

Ich hab mich aber hauptsächlich danach gerichtet: http://wannabe.guru.org/scott/hobbies/wireless/ , da Scott Gasch so ziemlich genau das mit dem http Traffic anstellt was ich gerne hätte.
Leider hat seine Regel bei mir nicht wirklich das bwirkt was ich haben will, da ich wohl irgend etwas vergessen habe


Grüße,

Leander
 
Leute, hört mal mit den Diskussionen um Nicknames und Signaturen auf, das bringt nun wirklich nicht. Genauso um Doppelposts, die 5 Kilobyte Speicherplatz haben wir dann auch noch über ;)

hast du ihn bezüglich mal eines Portes nach pf gefragt?
Ähm, das geht nicht. pf stammt von OpenBSD und ist gegen ihr Netzwerksystem programmiert worden. pf integriert daher schlecht bis gar nicht mit Netgraph, was eine Anbindung an mpd4 und mpd5 sehr schwer macht, wenn es mehr als rudimentäres Filtern sein soll. Es gab Versuche einer besseren Integration von pf mit Netgraph, es ist auch schon besser geworden, aber noch lange nicht optimal. Es gibt nach wie vor z.b. kein ng_pf.

Leander kann ich leider nicht helfen, da ich noch nie Ports mit IPFW2 direkt weitergeleitet habe. Ich habe immer natd genommen, da ich ihn eh brauchte. Ich könnte nun noch fragen, ob libalias im Kernel ist, aber nunja, das bringt uns nicht weiter. Wenn sie benötigt wird, muss sie da sein, da er sonst den Kernel nicht hätte bauen können...
 
Hi Yamagi,

Ich könnte nun noch fragen, ob libalias im Kernel ist, aber nunja, das bringt uns nicht weiter.
^^ allerdings ;)

Ich habe immer natd genommen, da ich ihn eh brauchte.

^^ Hast du mir ne Lösung via NATd? Soll mir ja schnuppe sein - NATd läuft sowieso schon.
Ziel ist nur sämtlichen HTTP/s Traffic auf den Port 8080 weiterzuleiten ... sowas wie die "Startseite" beim Captive Portal ... oder nen Transparenten Proxy ...


Grüße,

Leander
 
Ich schreibe es mal aus dem Kopf, daher keine Garantie für direkte Funktionalität. In die /etc/natd.conf:
Code:
redirect_port tcp zielip:zielport eingangsport
Also wenn wir unseren Port 22 an Port 2020 auf 192.168.0.2 weiterleiten wollen:
Code:
redirect_port tcp 192.68.0.2:2020 22
Wenn ZielIP und EingansIP gleich sind, musst du drauf achten, dass die Firewall des Rechners an sich selbst weitergeleitete Pakete durchlässt, logischerweise.
 
Zurück
Oben