Squidguard Error Page wird nicht angezeigt



  • Hallo zusammen,

    folgendes Problem:

    ich habe zwei Subnetze:

    -192.168.1.0 (LAN A)
    -172.18.1.0  (LaN B)

    Auf LAN B ist der Squidguard aktiviert, und die Blacklist läuft so wie sie soll - alles gut.
    Ich möchte jetzt die Kommunikation zwischen den beiden Subnetzen, die beide jeweils eine physikalische NIC an der pfSense darstellen, untereinander verbieten, also:

    LAN A kein Zugriff auf LAN B
    LAN B kein Zugriff auf LAN A

    Das funkioniert auch!

    Jetzt zum Problem:

    Wenn ich die Kommunikation zwischen den beiden Subnetzen verbiete, bekomme ich bei einer vom Squidgard "verbotenen Seite" im LAN B nur ein Timeout, weil sich die Errorpage anscheinend an die IP vom Gateway des LAN A wendet (192.168.1.1)
    Sieht dann so aus das ganze: "https://192.168.1.1/sgerror.php?url=403 &a=172.18.1.50&n=&i=&s=default"

    Ist ja dann logisch das die Errorpage nicht angezeigt wird, und alles in einem Timeout endet, aber das kann man doch bestimmt einstellen.
    Jemand Tipps für mich?

    Vielen Dank im Voraus

    Gruß



  • Ja, mit DNS ;)
    Oder du erlaubst den Zugriff auf diese IP in der Firewall.

    Ich habe das Problem allerdings nicht. Als "Redirect mode" habe ich "Int error page (enter error message)" und als "Redirect" dann "Zugriffsbeschraenkung beim Versuch
    folgende Seite zu oeffnen"

    Das funktioniert, ohne Angabe der IP etc.



  • Danke erstmal für die Antwort!

    Die Freigabe der IP würde klappen, jedoch finde ich das nicht so optimal, wenn Leute in diesem LAN B die Webconfig zumindest aufrufen können. Ist ein Gast-Lan.
    Wie meinst du das genau mit dem DNS?

    Edit: Habe das bei mir auch probiert, aber klappt irgendwie nicht - mir würde es auch reichen, wenn bei einem Verstoß auf "www.google.de" zurück verwiesen wird.
    Wenn ich jedoch "ext url err page" eingebe, und unter "Redirect Info" die URL angebe, greifen gar keine ACLs mehr…



  • Hallo,

    mach doch mal das, was ich geschrieben habe:

    Ich habe das Problem allerdings nicht. Als "Redirect mode" habe ich "Int error page (enter error message)" und als "Redirect" dann "Zugriffsbeschraenkung beim Versuch folgende Seite zu oeffnen"

    Bei allen Group ACL und COmmon ACL. Dann Auf "Save" und "Apply"

    DNS:
    Deine pfsense hat ja einen Namen, also pfsense.localdomain
    Trage das im DNS Forwarder ein als Host Override.
    pfsense.localdomain <–> 192.168.1.1
    pfsense.localdomain <--> 192.168.2.1

    Und dann eben die URL modifiziert:
    https://pfsense.localdomain/sgerror.php.....



  • Das habe ich jetzt mal probiert, die Redirect Info kommt auch zustande:

    Jedoch kommt immernoch die Fehlermeldung, das die IP (Gateway vom LAN A: 192.168.1.1) nicht erreichbar sei. Ist auch logisch, weil meine Firewall ACLs das nicht zulassen. Ich möchte erreichen, dass Leute aus dem LAN A das LAN B nicht erreichen und umgedreht ebenfalls nicht. Das hat aber leider zur Folge, dass die Nachricht vom Proxy (Squid) nicht dargestellt wird, weil die Errorpage die sich normal lädt, auf 192.168.1.1 adressiert ist. Es würde reichen, wenn die pfSense die Errorpage auf dem Gateway des GAST LAN B sucht. Momentane Meldung:

    Logisch, weil 192.168.1.1 vom Gast LAN B (172.18.1.0) nicht erreicht werden kann, durch meine definierten Firewall ACLs.
    Kann die Errorpage nicht auf das Gateway des LAN B (172.18.1.200) gemappt sein?

    Grüße



  • Bei mir dürfen VLANs auch nicht untereinander kommunizieren und trotzdem klappt es.

    Stehen innerhalb deinwr sgerror.php IPs und URLs? Wenn ja, dann könnte das das problem sein. Meine sgerror.php enthält keine URLs oder IPs oder verlinkt auf externe seiten oder JPGs.

    Teste außerdem bitte mal mit pfsense GUI auf http und port 80.
    Also keine custom ports oder https.



  • Du hast den Fehler gefunden :)

    War der ssl zugang zur webconfig!
    Habe es auf http umgestellt  und es funktionert!
    Ist natürlich jetzt bisschen bitter, wenn meine anmeldedaten der web gui unverschlüsselt übers lan wandern…so gedacht? oder ist meine config noch fehlerhaft?

    Aber das Grundsatzproblem, dass ich keine ordentliche Fehlermeldung bekomme sondern ein Timeout ist weg, trotz firewall acl´s (so wie du beschrieben hast mit deinen vlans, die auch segmentieren) - so soll das sein!

    Vielen Dank schon mal dafür.



  • @streetsfinest:

    Du hast den Fehler gefunden :)

    War der ssl zugang zur webconfig!
    Habe es auf http umgestellt  und es funktionert!
    Ist natürlich jetzt bisschen bitter, wenn meine anmeldedaten der web gui unverschlüsselt übers lan wandern…so gedacht? oder ist meine config noch fehlerhaft?

    Aber das Grundsatzproblem, dass ich keine ordentliche Fehlermeldung bekomme sondern ein Timeout ist weg, trotz firewall acl´s (so wie du beschrieben hast mit deinen vlan, die auch segmentieren) - so soll das sein!

    Vielen Dank schon mal dafür.

    Edit: Wo finde ich denn die errorpage.php (zum editieren oder ähnliches)?



  • Hallo,

    du musst mal im forum suchen btgl. squidguard und https GUI. Das klappt glaube ich leider nicht immer in jeder Konstellation. Vor allem, wenn du von den Standardpoprts abweichst, dann gibts Probleme. Deswegen würde ich erstmal mit http und port 80 testen. Deine sgerror.php wie unten beschrieben anpassen und testen.

    Anschließend kannst du auch https 443 umsteigen und erneut testen.

    Was aber zu 99.99% nicht reibungslos klappt ist zum Beispiel https und Port 4711 oder http und port 56789

    Die sgerror.php findest du hier:

    /usr/local/www/sgerror.php
    

    Du findest dort folgenden Abschnitt:

    
    # ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    # IE displayed self-page, if them size > 1024
    # ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    function get_error_page($er_code_id, $err_msg='') {
            global $err_code;
            global $cl;
            global $g;
            global $config;
            $str = Array();
    
            header("HTTP/1.1 " . $err_code[$er_code_id]);
    
            $str[] = '';
            $str[] = '';
            if ($config['installedpackages']['squidguarddefault']['config'][0]['deniedmessage']) {
                    $str[] = "
    
    ### {$config['installedpackages']['squidguarddefault']['config'][0]['deniedmessage']}: {$err_code[$er_code_id]}
    
    ";
            } else {
                    $str[] = "
    
    ### Request denied by {$g['product_name']} proxy: {$err_code[$er_code_id]}
    
    ";
            }
            if ($err_msg) $str[] = " **Reason:** $err_msg";
            $str[] = '
    
    * * *
    
    ';
            if ($cl['a']) $str[] = " **Client address:** {$cl['a']} 
    ";
            if ($cl['n']) $str[] = " **Client name:** {$cl['n']} 
    ";
            if ($cl['i']) $str[] = " **Client user:** {$cl['i']} 
    ";
            if ($cl['s']) $str[] = " **Client group:** {$cl['s']} 
    ";
            if ($cl['t']) $str[] = " **Target group:** {$cl['t']} 
    ";
            if ($cl['u']) $str[] = " **URL:** {$cl['u']} 
    ";
            $str[] = '
    
    * * *
    
    ';
            $str[] = "";
            $str[] = "";
    
            return implode("\n", $str);
    }
    
    

    Dieser generiert die angezeigte error page. Du darfst diese nach deinem Belieben anpassen. So habe ich das gemacht.
    Ich würde in dieser Spalte aber keine Bilder einbinden - da du hierfür die Pfad angeben musst und dann passt es mit den Ports un http/s evtl. nicht.

    Auch solltest du nicht auf etwas verlinken etc. was für eines der beiden VLANs gesperrt ist.

    PS: Es gab sogar mal einen Thread in welchem die Leute ihre verschiedenen sgerror.phps vorstellen.

    Viel Erfolg!



  • Vielen Dank für die ausführlichen Antworten, den Rest werde ich nun auch noch hinbekommen!
    Von sowas lebt ein Forum  :)