PF oder Squid: Filtern spezieller Adressen

SteWo

OpenBSD User
Hallo Gemeinde!

Ich habe da eben etwas gelesen, was mich hinsichtlich meiner pf.conf ins grübeln bringt:

Die Firewall ist _natürlich_ eine OpenBSD-Box mit PF, Privoxy, Squid und Tor. Im Netz hängen aber bald auch zwei Win*-Kisten, davon ein Laptop. Letzterer wird neuerdings vom Filius auch schon mal zu einer Lan-Party mitgenommen. Jetzt nehmen wir mal an, daß da plötzlich ein bislang unbekanntes klitzekleines Programmchen drauf ist, daß von sich aus unbedingt mit einer bestimmten Internet-Adresse Kontakt aufnehmen möchte. Wie würde ich das den verhindern???

Entsprechend der PF-FAQ-Beispielkonfiguration der pf.conf habe ich meine Regeln aufgebaut. Dort heißt es:
It can simplify your life if you chose to filter traffic in one direction, rather than trying to keep it straight when filtering some things in, and some things out. In our case, we'll opt to filter the inbound traffic, but once the traffic is permitted into an interface, we won't try to obstruct it leaving, so we will do the following:

pass out keep state
Wenn ich dies richtig verstanden habe, würde doch in diesem Fall ein einseitiger Informationsfluß "outbound" durch PF nicht behindert werden.

Wie würdet ihr in diesem Fall filtern? Über eine PF-Table "BadGuys"? Squid? Würdet ihr eine "Whitelist" in Erwägung ziehen? (Nutze Squid bislang ausschließlich als Proxy ohne Filterregeln, da ich bislang exklusiv mit OpenBSD an der Leitung hänge.)

Gruß,
SteWo
 
Mit pf kannst du nur nach IP und Port filtern. Entweder du blockierst allen Traffic bis auf das benötigte (z.B. Port 80) oder du musst damit leben. Aber selbst das würde nicht helfen, da die meisten Schädlinge wohl über bekannte Protokolle wie http oder Telnet kommunizieren und somit wirklich nur an einer Firewall scheitern die wirklich alles blockiert.

Aber dann kannst du auch gleich den Netzstecker ziehen.
 
mmmmh

Hi,

vielen Dank für Deine Antwort - obwohl .. irgendwie finde ich sie für mich unbefriedigend...

um auf den "Auslöser" meines Unbehabens als Beispiel zurückzukommen: Es muß doch möglich sein, eine spezifische Adresse a la "http://genuine.microsoft.com" zu blockieren??? Ich kenne mich mit Squid (noch) nicht so richtig aus, aber ich bin bislang davon ausgegangen, daß ich damit u.a. auch spezifische Adressen blockieren kann. <Grübel/>

meine Frage lief darauf hinaus, ob jemand etwas vergleichbares schon realisiert hat und wen JA - Wie?:confused:
 
So als Idee... Ich nutze SquidGuard, um Werbung zu filtern. Dort werden viele IPs, Domains URLs blockiert bzw. umgeschrieben. Vielleicht liesse sich damit eine Sperre basteln, sofern HTTP als Transport verwendet wird.

Ich weiss zwar nicht genau, wie so der eine oder andere Virus oder das entsprechende Windows Nerv Programm arbeitet, aber vielleicht koenntest Du auch einfach nur eine gewisse Anzahl an Verbindungen pro Zeiteinheit zulassen.

HTH
 
Hallo,

mit den ACL-Regeln des squid kannst Du recht einfach spezifische Adressen blocken. Diese kannst Du auch in eine separate Datei ablegen und entsprechend laden.

Siehe:
6.2.1 ACL-Elemente - Ziel oder Quelle definieren

Die Syntax einer ACL sieht folgendermaßen aus:

acl <frei_definierbarer_acl_Name> <acl-Typ> <Wert ...>


Über den frei definierten ACL-Namen kann mit Hilfe des unten erläuterten http_access das gewünschte Recht vergeben werden. Diese ACL-Namen dürfen natürlich nicht doppelt vergeben werden.

Es können verschiedene Arten von Quellen und Zielen zur ACL-Definition verwendet werden. Hier die für die Zugriffsverwaltung genutzten ACL-Typen:

* src: Absender-IP-Adressen der Client-PCs, die über Squid auf Web-Inhalte zugreifen wollen.
* dst: Ziel-IP-Adressen, auf die zugegriffen werden soll.
* dstdomain: Name der Ziel-Domain, auf deren Server im Internet zugegriffen werden soll. Hier kann auch direkt ein Server angegeben werden!
* dstdom_regex: Wie dstdomain, zusätzlich können Reguläre Ausdrücke verwendet werden, um die Liste der Server zu erweitern.
* time: Zur Festlegung bestimmter Zeitbereiche, in denen gesurft werden darf.
* url_regex: URLs können über Reguläre Ausdrücke definiert werden.
* urlpath_regex: Der Pfad, also alles, außer dem Protokoll (wie http://) und dem Rechnernamen (wie www.selflinux.org), wird mit dem angegebenen Regulären Ausdruck verglichen.
* ident: Vergleich der Namen, die von den Unix-Clients mit dem identd übertragen werden, mit denen in der Liste. So kann eine einfache Benutzerverwaltung genutzt werden. Den identd gibt es auch für Windows als Programm oder als Dienst.
* external: Einbinden eines externen Hilfsprogramms, das z. B. ermöglicht, zur Benutzerverwaltung einen NT-Domänen-Kontroller zu nutzen.

Weitere ACL-Typen stehen für spezielle Anwendungen des Squid zur Verfügung, die nicht für die Benutzerverwaltung wichtig sind.

Werden mehrere Werte hinter dem ACL-Typ aufgelistet, braucht nur einer der Werte zu passen, um das zugehörige http_access zu aktivieren (OR-Logik, siehe Logik der Rechtevergabe).

Zur besseren Übersicht können die aufzulistenden Werte auch in eine eigene Datei ausgelagert werden. Dort wird für jeden Eintrag eine eigene Zeile angelegt. Die Datei muss Squid wie folgt bekanntgegeben werden:

acl <frei_definierbarer_Name> <acl-Typ> "<Pfad_zur_Datei>"


Einfach mal googeln nach acl und squid. Ist schon recht mächtig, diese Programm.

Gruß

Frank
 
Du kannst tatsächlich spezifische Adressen blockieren, aber ich gehe mal davon aus, dass du dich vor der Einschleppung von Schädlingen schützen willst. Durch solche Maßnahmen kannst du ja nur Vorgänge blockieren die dir bekannt sind. Deshalb bringen die natürlich keinen Sicherheitsgewinn, da unbemerkt im System werkelnde Schädlinge ungehindert weiter arbeiten.
 
Squid

@xbit
Auf SquidGuard hätte ich eigentlich auch kommen müssen – der Link ist in meiner Bookmarksammlung unter dem von Squid...:rolleyes: Ich denke, im ersten Schritt muß ich meine Kenntnisse des Squid-Proxys vertiefen. SquidGuard werde ich mir danach intensiver ansehen. (DansGuardian ist mir noch eingefallen, aber daß ist ja eher ein Contentfilter, trifft also nicht die Fragestellung.)

@Frank D.
ACLs – das ist das Stichwort! Wenn ich mich richtig erinnere, kann eine separate Datei mit den ACLs im laufenden Betrieb geändert werden, d.h. Änderungen würden sofort wirksam werden. Korrekt? Gibt es eine öffentliche Squid-ACL-Sammlung von ... na sagen wir „unfreundlichen“ Adressen?
Wo stammt das Zitat eigentlich her?

@Kamikaze
Leider hast Du eines meiner Probleme mit diesem Thema voll getroffen. Wenn man das Problem zu Ende denkt, müßte man eigentlich eine u.U. riesige Positivliste der bekanntermaßen „harmlosen“ Adressen anlegen und alle anderen blockieren. Doch was macht man, wenn –unbemerkt- eine dieser Adressen gekapert wird und z.B. als Proxy eines Bots agiert? Eine solche Positivliste müsste man permanent überwachen... Nee, Nee – so weit geht meine Paranoia dann doch nicht!:D Nur wenn ich Kenntnis von einer „unfreundlichen“ Adresse bekomme, dann möchte ich diese blockieren können. Werde dies mal über die Squid-ACL-Filterung probieren.

@alle
Wenn ich eure Antworten mir ansehe, dann scheint niemand eine Filterung auf Ebene PF in Betracht zu ziehen. Müßte aber doch eigentlich analog zu den Squid-ACL technisch ebenso möglich sein. Z.B. über eine entsprechend zu pflegende Tabelle?
 
Squid löst urls in IPs auf. Entsprechende Filterung in PF würde also stets eine ganze IP, nicht bloß die gewünschte URL blockieren.
 
Zurück
Oben