SquidGuard mit Blacklist auf Alix-Board



  • Hallo,

    ich habe hier im Forum gesehen, dass immer mal wieder die Frage aufkommt, ob squid/squidGuard mit Blacklists auf einem Alix-Board und pfsense embedded läuft.

    Ich hatte die Kombination jetzt mit Shallas Blacklist über ein Jahr mit der pfsense 2.0 RC1 bei mir problemlos am Laufen und nehme jetzt den Umstieg auf die pfsense 2.0.1 zum Anlass, das mal kurz aufzuschreiben.
    Vielleicht will es der eine oder andere mal ausprobieren.

    Grundproblem bei der Geschichte ist das limitierte RAM des Alix-Board (bei mir 2D13). Je nachdem, was man so alles (speicherhungriges) auf dem Board laufen lässt, kann es auch sein, dass man es nicht stabil hinbekommt.

    Zugegeben, es ist etwas Gepfriemel und deshalb ohne Gewähr ;-)

    Also, was ist zu tun:

    1. Packages Shellcmd, squid, squidGuard installieren.

    2. RAM für /tmp und /var etwas reduzieren (hier muss man evtl. etwas rumspielen).

    In der /etc/rc.embedded:
      tmpsize="30m"
      varsize="30m"

    reboot

    1. Jetzt braucht man eine Stelle, an der die Blacklist-Files abgelegt werden. Da gibt es jetzt zwei Optionen:
        Direkt auf der CF-Karte oder auf einem externen Speicher, der am USB-Port hängt, z.B. einem USB-Stick.

    Einfachste Variante: Auf der CF-Karte:
      cd /
      mkdir /sg
      mkdir /sg/tmp
      mkdir /sg/db
      mkdir /sg/var
      chown -R proxy /sg
      chgrp -R proxy /sg

    1. Jetzt muss man dem squidGuard-Konfig-Script noch die Änderungen beibringen:

    /usr/local/pkg/squidguard_configurator.inc:
      define('SQUIDGUARD_TMP',                '/sg/tmp');
      define('SQUIDGUARD_DBHOME',            '/sg/db');
      define('SQUIDGUARD_VAR',                '/sg/var');

    Im selben Skript zuguterletzt noch die RAM-Disk ausschalten, z.B. durch ein kurzes 'return' am Anfang der Funktion:

    function squidguard_ramdisk($enable)
      {
        return;
        …
        }

    1. Jetzt kann man die Blacklist laden und die db-Files aufbauen:

    /etc/rc.conf_mount_rw  (CF-Karte schreibbar machen, wenn man die Blacklist-Files dort ablegen will)
      Download der Blacklist über Weboberfläche starten

    Das ganze dauert bei mir ca. 6 Stunden (!), also Geduld :-)

    Am Ende: /etc/rc.conf_mount_ro

    1. Ob alles funktioniert hat, kann man prüfen:
        /var/log/system.log
        /var/log/squidGuard.log
        Die neuen Pfade in der /usr/local/etc/squidGuard/squidGuard.conf
        Unter /tmp steht auch noch ein status-File, falls man die Weboberfläche weggeklickt hat.
        Und am besten mal schauen, ob alle db-Files erstellt wurden (/sg/db).
        Ansonsten vielleicht mal Speichernutzung mit vmstat kontrollieren.

    Bei dieser Variante wird natürlich bei jedem Blacklist-Update auf die CF-Karte geschrieben.
      Je nachdem wie oft man das macht, geht das auf die Lebensdauer der Karte.
      Deshalb kann man auch einen USB-Stick nutzen:

    USB-Stick einstecken
      newfs -U /dev/da0s1
      cd /mnt
      mkdir /mnt/usb
      mount /dev/da0s1 /mnt/usb (das sollte man dann per Shellcmd einstellen, damit es nach einem Reboot wieder gemounted wird).
      und dann die o.g. Verzeichnisse darunter anlegen, Konfig-Skript anpassen und darauf achten, dass alles dem User 'proxy' gehört.

    Ich mache einen Blacklist-Update nur sehr selten und hatte mal Probleme mit einem USB-Stick (immer wieder mal I/O-Error), deshalb läuft das bei mir direkt auf der Karte.

    Da ich als Backup immer eine zweite Karte mit einem physischen Copy-Image habe, bräuchte ich nur kurz die Karte tauschen, wenn sie wirklich mal defekt sein sollte.

    Jetzt hoffe ich, dass ich in der Beschreibung keinen Fehler gemacht habe ;-)

    Viele Grüße,

    Brummel



  • Hallo Brummel

    Merci fuer die tolle Anleitung!

    Laeuft nach dem Anpassen von /tmp und /var wunderbar auf meiner Alix mit pfsense 2.1beta nanobsd.

    Ohne Speicherotimierung gab es Probleme mit zu wenig SWAP.

    Cheers

    Pierre


Locked