Applikationslevel Firewall?

radiohead

Well-Known Member
Moin,

ist es möglich pf mit irgendwelchen Addons zu versehen, so dass man wirklich eine Firewall auf Applikationsebene hat? Jede gute kommerzielle Firewall bietet sowas ja auch, nur möchte ich es mit OpenBSD und pf realisieren.

Ich möchte zum Beispiel, dass nicht nur Port 80 oder 25 erlaubt wird, sondern es soll auch überprüft werden, ob da auch tatsächlich http oder smtp Verkehr rüber geht. So das zum Beispiel niemand auf die Idee kommt zu Haus einen sshd auf Port 80 lauschen zu lassen und dann so einfach durch den pf durchkommt und keiner bekommt es mit.
Ist sowas Wunschdenken bei pf und OpenBSD? Muss man weiterhin kommerzielle Produkte einsetzen?

Danke für eure Hilfe!
 
Aha, schaue ich mir mal an, sobald nächste Woche mein Alix Board ankommt ;)

Nutzt niemand sonst eine derartige Konstellation? Kann doch nicht sein, dass man "nur" einen simplen Paketfilter hat...
 
Wenn man wirklich durch kommen will, kommt man durch... benutzt man halt corkscrew oder ähnliches. ssh over ssl-http etc.
 
Ich möchte zum Beispiel, dass nicht nur Port 80 oder 25 erlaubt wird, sondern es soll auch überprüft werden, ob da auch tatsächlich http oder smtp Verkehr rüber geht. So das zum Beispiel niemand auf die Idee kommt zu Haus einen sshd auf Port 80 lauschen zu lassen und dann so einfach durch den pf durchkommt und keiner bekommt es mit.

Das kann pf von Haus aus. Du weist einfach bei der entsprechenden Regel für Port 80 und Port 25 das erlaubte Protokoll zu (z.B. für tcp: ssh, smtp, domain, www, pop3, auth, https, pop3s). Allerdings nicht auf Applikationsebene. ;)
 
Zuletzt bearbeitet:
Und wie prüft pf das dann?

Möglicherweise habe ich deine Frage falsch interpretiert. :)

Was ich meinte ist, dass du in einer entsprechenden Regel definieren kannst, dass z.B. über Port 80 nur http (www) durchgelassen wird - der Rest wird geblockt. Über Port 25 wird nur smtp durchgelassen und alle anderen Protokolle werden geblockt.
 
Möglicherweise habe ich deine Frage falsch interpretiert. :)

Was ich meinte ist, dass du in einer entsprechenden Regel definieren kannst, dass z.B. über Port 80 nur http (www) durchgelassen wird - der Rest wird geblockt. Über Port 25 wird nur smtp durchgelassen und alle anderen Protokolle werden geblockt.

Genauso möchte ich das haben ;)

Meine Frage war dann halt, wie pf das prüft? Checkt er die RFC Konformität oder wie?
 
Ich verstehe nicht was du bezwecken willst. Was ist das denn für ein Szenario? Wozu benutzt PF?
So das zum Beispiel niemand auf die Idee kommt zu Haus einen sshd auf Port 80 lauschen zu lassen und dann so einfach durch den pf durchkommt und keiner bekommt es mit.
Eingehenden Verkehr anhand des Ursprungsports zu blocken wenns um die "innere Sicherheit" geht, scheint schon ziemlich dumm. Gleiches gilt wenn es darum geht denn Verkehr von innen nach außen zu regulieren und dann anhand von zielports zu filtern....
Verstehe ich nicht...
Applikationsfirewalls habe ich noch nie verstanden, ich dachte das brauch man nur unter windows um sich selber nicht-existente Sicherheit einzureden ;)
 
Ist das nicht eigentlich das ganz klassische Feld eines Proxy-Server ala Squid? *in dem thema allerdings nicht sooo sehr drinne ist*
 
Ist doch ganz einfach. Wie möchtest du denn in einem Unternehmen ssh verbieten? Jeder darf dort via http portc 80tcp surfen, aber ssh 22tcp ist verboten (ausgehend). Jetzt kommt ein schlauer Mitarbeiter auf die Idee und sagt sich, ich lass meinen sshd zu Haus auf Port 80 lauschen und schon kommt er an einem "billigen" Paketfilter vorbei. Wenn ich nur prüfe, ob der Client auf Port 80 rausgeht und es dann erlaube ist es doch eine ziemlich billige Filterung.

Ich möchte halt auch prüfen, ob der Client auch nur http durch Port 80 nutzt...

Schwer zu verstehen? Noch nie eine "richtige" Firewall gesehen?
 
PF kennt die Protokolle auf die du die Ports einschränken kannst. In der Beziehung bricht es eben aus seiner üblichen Layer 2 bis 4 Funktionalität aus. Das ist bei allen Firewalls, die diese Features bieten genau so. Was http angeht könntest du dann auch gleich einen transparenten Squid einhängen um Traffic zu sparen. Hab' ich zu Hause auch.

Da Squid kein SSH kann geht dann da auch kein SSH durch. Nur ein SSH over HTTP-Tunnel hätte da chancen. Aber da kommst du dann auch mit keiner Application-Level Firewall gegen an und so ein HTTP-Tunnel ist ziemlich unangenehm zu benutzen.
 
Das einfachste ist du setzt wie gerade schon erwähnt Proxies für http und ftp und zwingst den verkehr da durch und blockierst alles andere. SSH wird durch die Proxies nicht durchgehen, auf jeden fall nicht wenn du https blockst.
Und du hast deine Ruhe.
 
Okay. Das hört sich ja schon ganz gut an. Also einfach nen Squid nehmen, denn ftp-proxy, der ja auch an Board ist.

Ich kenne das halt von Firewall wie WatchGuard, wo man Proxy Dienste für HTTP, SMTP, FTP und z.B. DNS hat. Dort kann man dann alles filtern was man eben nur will. Mann kann ActiveX im http sperren, man kann den Download im FTP Bereich auf bestimmte Dateitypen einschränken (geht das auch irgendwie mit OpenBSD/PF?) usw. Deshalb meine Frage, ob man das auch mit freier Software lösen kann.

Ich werde dann nächste Woche mal so eine Testinstall bauen und alles mal testen. Danke für eure Antworten..
 
Bei Squid kannst Du auch mit SquidGuard anhand der URL filtern. Wird in diesem Fall zum Blocken von Werbung genutzt. Es gibt, sofern ich mich richtig erinnere, auch Anleitungen, wie man mit diesem Interface zB Amavis einbinden kann.

Ansonsten kannst Du Dir noch Privoxy als HTTP Proxy angucken. Der kann wesentlich mehr filtern als Squid, zB Popups usw. Damit duerfste Du ziemlich viele Moeglichkeiten haben, HTTP zu beschraenken. Allerdings hat Privoxy keinen Cache, der filtert eben nur.

HTH
 
Echt nicht? Dann braucht man ja wirklich für alle Dienste einen Proxy.

Ich dachte http, ftp und so weiter wären mehr als bloß ein alias für eine Portnummer.
 
Ich dachte http, ftp und so weiter wären mehr als bloß ein alias für eine Portnummer.
Nein. Vielen Services sind bestimmte Standardports zugeteilt worden. Diese finden sich in /etc/services. Zum Beispiel ist 80 == HTTP. Wenn du PF nun auf Verbindungen, die auf Port 80 ablaufen, ansetzen willst, kannst du halt entweder die Portnummer 80 oder die Portnummer "http" angeben. In letzterem Falle übersetzt PF das "http" in "80". Das ist nur eine Hilfe für Leute, die sich keine Nummern behalten können. :)

PF analysiert aber trotzdem nicht das HTTP-Protokoll. Eine Filterregel auf Port 80 greift unabhängig davon, ob die Verbindung auf dem angegebenen Port tatsächlich HTTP "spricht".
 
Auch ich muss meine vorherige Aussage korrigieren - davon ausgehend, dass es sich bei "http, ssh usw." um die Dienste handelt und nicht um einen alias. Also bleibt wirklich nur die Lösung, den Verkehr über einen Proxy umzuleiten.
 
als alternative zu squidguard kannst du auch dansguardian versuchen http://dansguardian.org/
der scheint ein bisschen mächtiger zu sein und kann beispielsweise auch clamav einbinden, da leider squidcalamav nicht unter openbsd nicht funzt
 
Das meinte ich ja die ganze Zeit. Bei Firewalls, die ich kenne, gibt es halt für die wichtigen Protokolle Proxy Dienste...

Naja muss ich mal testen alles. Bin gespannt, ob der DansGuardian nicht die kleine CPU auf dem Alix Board sprengt ;)
 
Zurück
Oben