• Willkommen im Linux Club - dem deutschsprachigen Supportforum für GNU/Linux. Registriere dich kostenlos, um alle Inhalte zu sehen und Fragen zu stellen.

Blacklist Zugriff nur bestätigen

Hallo zusammen,

im Zuge einer Proxyumstellug soll bei uns auch gleich das Konzept für den Zugriff auf nich gewünschte Seite geändert werden.
Es ist so, dass wir für die Zukunft einen Zugriff auf eine Website die auf der Blacklist steht verbieten wollen. Das ist soweit auch kein Problem. Nun ist aus gewissen Gründen aber nötig, das trotz alledem Zugriff auf diese Seiten gewährleistet werden muss.
Das Konzept wurde nun von Oben so erdacht.

User ruft eine nicht erwünschte Seite auf und landet auf einer von uns erstellten Seite die ihn darauf hinweist, dass sämtliche aktivität ab jetzt mitgeloggt wird. Er kann solle diese Seite dann mit einem Text bestätigen und wird dann auf die von ihm angeforderte Seite weitergleitet.

Bringt Squid von Haus aus diese Funktion des " Seite dazwischen schalten" mit oder gibt es dort eine andere Möglichkeit.


Besten Dank

Ralph
 

Dr. Glastonbury

Advanced Hacker
Moin,
wenn der Proxy als transparenter Proxy aufgestellt wird, dann ließe sich da evtl. etwas mit iptables murxen.

Das gänze sähe so aus: standardgateway ist der Proxyserver, hier werden alle Anfragen auf Port 80 auf 3128, also den Squidport umgeleitet. Squidguard überwacht die angeforderten Seiten und bei einer Seite, die auf der Blacklist steht, wird der User auf die "Freischalte-Seite" geschickt. Wenn er dort *ok, ich lass mich _total_ überwachen* angeklickt hat, führt das Freischalte-Script nen iptables-Befehl aus, der zugriffe von Client-IP zu Blacklist-IP direkt oder über einen anderen Proxy zulässt und das ganze dann je nachdem selber über die Logfunktion von iptables loggt oder eben über den zweiten Proxy.
Über nen Cronjob / AT-Timer kannst du diese Regel dann entweder nach einer bestimmten Zeit oder eben am Ende des Tages zurücksetzen.

Das ganze ist jetzt erstmal sehr wage formuliert, nachdem ich leider keine weiteren Infos hab, was bei dir/euch für ne Infrastruktur ist, bzw. wie du es dir genauer vorstellst...

Als Denkanstoß sollte es aber durchaus schonmal genügen ;)
 
OP
B

brainbug182

Newbie
Also der Aufbau sieht bei uns so aus.

ca 180 Standorte die über VPN an den Hauptstandort angeschlossen sind. Proxy ist nicht transparent sondern wird über GPO verteilt.
Ich hatte ein wenig drauf gehofft, das es eine Möglichkeit das ganze per SquidGuard zu realisieren.
Nach dem Motto: User stellt anfrage an Proxy. der erkennt das sich die Seite auf der Blacklist befindet und leitet die Anfrage auf die Website weiter wo der User dies dann bestätigen muss.
Ab den Punkt hätte ich dann bis jetzt 2 Ansätze.
Einmal, falls es die Möglichkeit gibt direkt über Squidguard oder Alternativ eine weiterelitung ala redirect auf einen anderen Proxy, der Per Authenifizierung dann einfach einen allgemeinen Usernamen z.B. OK über die Website nachfragt.
 

Dr. Glastonbury

Advanced Hacker
Hi,
mir waere da grad noch eine Moeglichkeit eingefallen: naemlich, dass du nen CGI-Proxy aufstellst. Sprich eine Seite, wie http://unblock.us - da kannst du dann entsprechend ebenfalls mitloggen und per squidGuard umleiten...

Ansonsten: Wenn der Proxy fest eingestellt ist, dann kannst du natuerlich auch eine iptables-regel erstellen, die den Benutzer von Port 3128 des eingestellten Proxies auf einen anderen Port z.B. 8080 eines anderen Proxies, der den Zugriff erlaubt, weiterleitet.

Die Kette waere dann folgende: Client ruft gesperrte Seite auf -> Squidguard zeigt freischalte-Seite an -> iptables regel leitet Client auf anderen Proxy um -> dieser loggt mit (hier evtl. mit Userauthentifizierung - liesse sich ja auch ueber LDAP verwirklichen... ich denke mal, wenn es 180 Standorte gibt, wird es bereits eine Benutzerdatenbank alla LDAP oder AD geben). In diesem Fall ist es nach meinem Kenntnisstand ist es mit dieser Methode jedoch nicht mehr moeglich nur Zugriffe auf eine bestimmte Seite umzulenken. Denn dafuer muesste man den Inhalt der Pakete an den Proxy auswerten; das ist zwar prinzipiell moeglich, aber bringt Probleme bei der Zuferlaessigkeit und Sicherheit mit sich, da eine normale Firewall eben genau nicht wissen muss, _was fuer Daten_ uebertragen werden...
 
OP
B

brainbug182

Newbie
Hi

danke für deine Hilfe, die untere Variante hört sich nach genau dem an was ich suche. Nun muss ich mal gucken wie ich das realisiere. Kennst du durch zufall ne gute Seite wo die zusammen Arbeite IP-Tables und squidguard beschrieben wird ??


Danke

Gruß

Ralph
 

Dr. Glastonbury

Advanced Hacker
brainbug182 schrieb:
Kennst du durch zufall ne gute Seite wo die zusammen Arbeite IP-Tables und squidguard beschrieben wird ??
Ich kann dir mit iptables-Befehlen dienen... squidguard selber bietet leider keine Möglichkeit solche auszuführen. Eine Lösung könnte so aussehen:

1. Client surft auf http://total_verboten.de
2. Squidguard zeigt anstatt http://total_verboten.de die Seite http://serverip/freischalten.php an.
3. Hier ist dein Warntext und ein Button zum "ich will überwacht werden"
4. Wenn Button angeklickt wird, führt das freischalten.php-Script einen iptables-Befehl aus, der ClientIP von Port von Squid_1 auf Port von Squid_2 umleitet...
5. Ein Timer wird gestartet, der diese Umleitung am Abend oder nach z.B. 30 Minuten wieder deaktiviert.

=> es kann 6. wieder von vorne losgehen...

Dein Part wäre jetzt das freischalten-Script zu basteln, was natürlich auch in Perl, CGI oder einer anderen von einem Webserver interpretierbaren Sprache geschrieben sein kann...

Ein entsprechender iptables-Command sähe z.B. so aus:
Code:
iptables -t nat -A PREROUTING -s <IP-Client> -p tcp --dport <Squid_1> -j REDIRECT --to-port <Squid_2>
 
OP
B

brainbug182

Newbie
hi erstmal vielen Danke für deine Hilfe.

Mir vil gerade noch eine möglichkeit ein wie es auch gehen könnte.
Dazu müsste ich nurmal eine kleinigkeit wissen.
Gibts es die Möglichkeit aus der acl von squidguard heraus einen anderen proxy aufzurufen. bzw habeich die Möglichkeit einen squid direkt mit der adresse aufzurufen. Also z.B. so http://squidproxy:3128/http://www.google.de
 

Dr. Glastonbury

Advanced Hacker
brainbug182 schrieb:
Also z.B. so http://squidproxy:3128/http://www.google.de
Das wäre ja der Weg über nen CGI-Porxy, der über das http-Protokoll abläuft. Funktioniert auch, kann aber mit manchen Seiten Probleme geben - besonders mit Cookies oder Inhalten, die erst nachträglich geladen werden (also Ajax z.B.)...

Ansonsten unterstützden Browser einen Proxy nur über die Funktionen, die die Netzwerkeinstellungen bereitstellen... (also mir wäre zumindest kein anderer Weg bekannt, einem Browser einen Proxy mitzuteilen...).
 
OP
B

brainbug182

Newbie
Schade,
ich hatte gehofft des es direkt aus squidguard möglich ist ein redirect auf einen Proxy zu machen statt auf eine Website. Naja shit happens.

gibt es für squid schon eine brauchbare Lösung um ihn als CGI Proxy laufen zulassen.

Gruß

Ralph
 

Dr. Glastonbury

Advanced Hacker
Vielleicht noch eine kleine Anmerkung zu SquidGuard.

Dieser Prozess erhält von Squid lediglich den URI-String (also z.B. http://google.de/search?q=linux-club.de ) und vergleicht diesen mit seiner Datenbank und Konfiguration. Wenn der Datenbank z.B. eine Phrase namens "linux" auftaucht, und dieser Zugriff geblockt werden soll, dann schickt SquidGuard eine neue, von dir festgelegte URL zurück, die Squid dann ausliefert -> also z.B. http://total_gesperrt.de

SquidGuard selber ist also eigentlich ein reichlich "dummes" Programm, was einen Wert einließt, ihn verarbeitet und entweder unverändert zurück gibt, oder ihn entsprechend deinen Vorgaben abändert.
Squid selber ließt nur das ein, was ihm SquidGuard zurück schickt und zeigt die Seite an... von daher kann SquidGuard keine komplexeren Aufgaben übernehmen. Alles was du an zusätzlichen funktionen haben willst, bei denen insbesondere ein Benutzer mit dem System interagieren soll, musst du über eine Weboberfläche gestalten, auf die du durch SquidGuard geschickt wirst. Hier kannst du dann mit jeder Web-Programmiersprache deinen Server steuern (also z.B. PHP, Perl, ASP, ...).

gibt es für squid schon eine brauchbare Lösung um ihn als CGI Proxy laufen zulassen.
Ein CGI-Proxy hat mit Squid nichts zu tun. Es ist eine Anwendung, die auf einem Webserver läuft und darüber Inhalte aus dem Web ausliefert: http://en.wikipedia.org/wiki/CGIProxy
 
Oben