FreeBSD einmal zur Sicherheit: pfSense

FreeBSD kann nicht nur auf dem Desktop oder als reiner Server aufgesetzt werden, auch als eine Firewall ist das Unix-Derivat eine sehr brauchbare Lösung.

Die meisten iBenutzer wenden sich an IPCop, Untangle oder andere Konsorten, anstelle einem gut gepflegten Unix eine Chance zu geben. Das ist meiner Meinung nach Falsch, denn pfSense braucht sich nicht hinter Enterprise-Firewalls zu verstecken.
Wenn ich alle Features dieser Firewall aufzählen wollen würde, hätte ich eine sehr lange Liste und im Ganzen würde dies nicht wirklich helfen, somit zähle ich nur ein paar an dieser Stelle auf und Verweise lieber auf die Featureliste der pfSense-Hompage.
Features sind etwa Firewall, einfach zu benutzende Weboberfläche, SetUp-Wizard, WLAN-AccessPoint, multiple Subnetze, TrafficShaping, FailOver mit Carp, welche es ermöglicht mehrere andere Firewalls im Netz zu haben und auch gleich automatisch die Regeln und Einstellungen zu teilen, LoadBalancing beidseitig, VPN mit IPSec/OpenVPN/PPtP, PPPoE-Server, DynamicDNS zu verschiedenen Anbietern im Netz und natürlich auch für den intern angebotenen DHCP-Server, DHCP-Relay, Proxy Server Squid und SquidGuard, SIP-Proxy, FreeRadius und und und

Wer nun sich nun fragt, wie viel Hardware so ein Spaß braucht, der wird sich etwas wundern und auch die Stärken von pfSense sehen.
Darf ich vorstellen, meine Firewall-Hardware seit gut und gerne 9 Jahren, ein IBM 300GL mit den folgenden Daten:
IBM FW mit pfsense

Pentium 3 500Mhz
768MB RAM
2 Netzwerkkarten von 3COM
1 Laptop HD mit 40GB
1 Lüfter vor der HD/Passiv Kühlung des P3 durch das kleine Netzteil
Die Maschine bekommt des öfteren mal einen HD-Tausch, da ich auch gerne Debian als Firewall nutze. Man frage mich nicht warum, aber in dem Fall bin ich promiskuitiv ツ
Man will ja nicht verlernen und auch schon überhaupt nicht den Spaß am eigenen Administrieren verlieren, manchmal braucht man diese Arbeit.
Der Vorteil an der IBM-Maschine ist, dass sie wenig Strom verbraucht und auch unter der massiven Sommerhitze von Teils 67°C in dem Raum ohne murren und Zicken weiter läuft. Ich denke so etwas schafft keine neue Hardware so schnell, ein Dell den ich dafür mal tausche wollte hatte laut Spezifikation ein max. von 30°C Umgebungstemperatur.
Somit, auch mit einer Hardware von kleinem Maß kann man eine enterprisefähige Firewall fahren, laut Webseite ab 100MHz und 128MB RAM. Es kommt immer auf die Userzahl und die Leitungsgeschwindigkeit an.

Kommen wir nach dem Klick zu der Installation von pfSense und einer minimalen Konfiguration mit Proxy und einem Webfilter.Dass man sich die CD auf der Homepage von pfSense herunterladen und brennen muss denke ich sollte klar sein.
Im momentanen Fall für x86 Benutzer wäre dies:
pfSense-1.2.3-RELEASE-LiveCD-Installer.iso.gz 21-Mar-2011 00:07 55M
pfSense-1.2.3-RELEASE-LiveCD-Installer.iso.gz.md5 21-Mar-2011 00:07 87

Im Moment sollte man Abstand vom RC für die Version 2.0 halten, da die Updates nicht signiert sind und bei mir ergibt dies einen faden Beigeschmack. Aber wer es gerne testen möchte und sich im Käferjagen erfreut, sollte zugreifen.
Aber sich auch klar machen, dass dieses Stück Software noch nicht fertig und somit nicht als feste Option in dem Tagesablauf eingeplant werden sollte.

Jede Hardware, welche unter FreeBSD unterstützt wird, wird auch von pfSense unterstützt, somit einfach einmal bei FreeBSD auf den FreeBSD 7.2-RELEASE Hardware Notes nachgeschaut und eigentlich sollte man dort seine gesuchte Hardware finden.
Bei der Installation sollte man noch keine Netzwerkkabel in den Netzwerkkarten haben, den Grund erfährt man später.

Ich bitte sich einmal den Text komplett durchzulesen und dann mit der Installation zu beginnen.
Als erstes bootet man die Maschine mit CD und nutzt die erste Option, welche einem angeboten wird, FreeBSD mit ACPI.
Nach dem Bootvorgang bekommt man die Frage gestellt, ob man pfSense im Live-Modus nutzen möchte, oder Installieren.
Mit I wählt man die Installation.
Es werden noch Fragen zu dem Konsolenfont etc gestellt die man getrost ignorieren kann. Aber auf die Frage der Tastaturbelegung sollte man die jeweilige des Landes wählen.
Die automatische Partition ist perfekt gewählt und man sollte jene auch nutzen, sich aber im klaren darüber sein, dass alle Daten auf der Festplatte verloren gehen.
Den Expertenmodus bei der Installation sollte man getrost am Anfang beiseite legen, das kann man sich für später aufheben.
Nachdem Alles installiert wurde wird die Maschine neu gestartet und nun kommt man zu der eigentlichen Konfiguration.
Da pfSense die Netzwerkkarten erkannt hat, kann man sie automatisch konfigurieren lassen und somit kommen wir auch zu dem Punkt, warum keine Netzerwkkabel bei der Installation angeschlossen sein sollten.
Es wird die Frage nach VLANs gestellt, welche auf jeden Fall erst einmal verneint wird.
Nun bekommt man die Frage nach der WAN- und LAN-Schnittstelle gestellt.
Man drückt a und eine Aufforderung erscheint, doch in die WAN- oder LAN-Netzwerkkarte das Ethernetkabel einzustecken.
Nachdem man dies für die geforderte Schnittstelle getan hat drückt man Enter und die Schnittstelle ist somit konfiguriert.
Nachdem die Schnittstellen konfiguriert wurden kann man noch den DHCP-Server konfigurieren, welches ich empfehle, falls sich kein weiterer in dem Subnet befindet.
Natürlich läuft dieser auf der LAN-Schnittstelle ツ
Nach der Beendigung der Konfiguration bekommt man das Shell-Menü zu Gesicht:
pfSense console setup
***************************
0) Logout (SSH only)
1) Assign Interfaces
2) Set LAN IP address
3) Reset webConfigurator password
4) Reset to factory defaults
5) Reboot system
6) Halt system
7) Ping host
8) Shell
9) PFtop
10) Filter Logs
11) Restart webConfigurator
12) pfSense Developer Shell
13) Upgrade from console
14) Enable Secure Shell (sshd)

Da die ganzen Arbeiten von der WebGUI erledigt werden, kann dies erst einmal ignoriert werden.
Nun geht man an sein Host-System und holt sich eine neue IP per DHCP von pfSense und meldet sich, in meinem Falle, unter mit dem Benutzer admin und dem Passwort pfsense an.
Man bekommt von dem Setup-wizard noch einige Fragen gestellt. Ich nehme als Domain immer die Endung .hq, da jene nicht vergeben ist.
Die erste Aktion eines neu installiertem Betriebsystemes ist immer ein Update.
Dazu geht man bei pfSense auf der Weboberfläche System > Firmware > Auto update.
Falls ein Update vorliegt wird jenes nun installiert.
Auch sollte man an dieser Stelle das Pasawort ändern, halte ich für sehr empfehlenswert.
Als nächstes konfiguriert man nochmals den DHCP-Server ( Services > DHCP server)
Ich vergebe maximal 30 IPs dynamisch für Besuche und den Rest setze ich als feste Leases ein.
Einen festen Lease einzurichten ist sehr einfach, dazu scrollt man nach unten auf der Seit und drückt das + neben Description.
Man bekommt die Fragen nach der MAC-Adresse, der IP, dem Hostenamen und eine Beschreibung gestellt.
Nach dem Abspeichern kehrt man zu der Seite für die Konfiguration des DHCP-Servers zurück.

Nun aber zu einem transparentem Proxy mit Squid und SquidGuard:

System > Packages
Dort installiert man squid und squidguard.
Nachdem die Pakete installiert und heruntergeladen wurden kann man squid unter Services > Proxy Server konfigurieren.
Proxy interface: LAN
Allow users on interface: Ja
Transparent proxy: Ja
Log store directory: /var/squid/log
Proxy port: 3128
Disable X-Forward: Ja

Abspeichern.

Nun unter Cache Mgmt
Hard disk cache size: 300
Hard disk cache system: ufs
Hard disk cache location: /var/squid/cache
Memory cache size: 256 (gilt für mich, ich habe 768MB RAM, man beachte den Satz mit den nicht mehr als 50% des RAM hier anzugeben)
Minimum object size: 0
Maximum object size: 102400 ( das mache ich um meine debs für Debian zu speichern, dazu später mehr)
Und wieder abspeichern. Den Rest einfach unberührt lassen, sprich Default-Einstellungen. Vorerst *g*

Squid rennt nun zu SquidGuard Services > Proxy filter:
Balcklist options am Boden der Seite:
Blacklist: Ja
Blacklist URL: http://www.shallalist.de/Downloads/shallalist.tar.gz
Speichern

Blacklist
Blacklist Update: http://www.shallalist.de/Downloads/shallalist.tar.gz
Download
Die Blackliste von Shalla wird nun heruntergeladen, entpackt und in das SquidGuard-Datenbankformat umgewandelt, das dauert, keine Panik, Kaffee kochen etc. Wer eine schnellere Maschine hat nimmt einen Espresso.
Bei mir dauert es schon einmal 10 Minuten und ich denke die Maschine hängt. Tut sie nicht wie man an dem Blinken der HD-LED erkennt. Somit warten.
Nach dem Abschluss der Installation der Blacklist geht man auf Common ACL und klickt den kleinen grünen Pfeil an, welcher per Ajax nun die zu sperrenden Punkte öffnet.
Hier wird [blk_BL_adv] auf Deny gesetzt und ganz unten Default access [all] auf allow.
Speichern und weiter geht es mit Common ACL, ich stelle hierbei eine nodad.gif auf meinem Webspace zur Verfügung.
Jene ist eine 1×1 Pixel große durchsichtige Grafik und kann auch aus Datenschutzgründen auf die eigene Dropbox oder sonstwo hinkopiert werden. Der Faulheit halber erkläre ich es nicht und gebe somit meinen Webspace an. Die Grafik ersetzt btw die Werbung auf Webseiten ;)
Redirect mode: ext url redirect
Redirect info: http://teiko.org/noad.gif
Abspeichern.
Nun kann SquidGuard auf der ersten Seite der Proxy filter settings angestellt und abgespeichert werden.
Wir sind Werbelos.
Wer sich nun unter System > Proxy server > General unten die Custom Options anschaut sieht dort:
redirect_program /usr/local/bin/squidGuard -c /usr/local/etc/squidGuard/squidGuard.conf;redirector_bypass on;redirect_children 3
Dies ist der SquidGuard, welcher nun als Filter in Squid mit eingebunden wurde.
Ich habe das ganze noch um den Zusatz für die Debianpakete als Cache abgeändert und bei mir kann man nun:
refresh_pattern deb$ 43200 100% 43200;refresh_pattern Packages.gz$ 1440 100% 1440;refresh_pattern Packages.bz2$ 1440 100% 1440;redirect_program /usr/local/bin/squidGuard -c /usr/local/etc/squidGuard/squidGuard.conf;redirector_bypass on;redirect_children 3
lesen.
Damit man die Namen der internen Maschinen bei einem DHCP-Lease nun nutzen kann um jene anzupingen, nutzt man unter Services > DNS forwarder
Enable DNS forwarde: Ja
Register DHCP leases in DNS forwarder: Ja
Register DHCP static mappings in DNS forwarder: Ja
Und somit steht einem:

seraphyn@sayuri:~$ ping xbox
 PING xbox.teiko.hq (192.168.1.4) 56(84) bytes of data.
 64 bytes from xbox.teiko.hq (192.168.1.4): icmp_req=1 ttl=64 time=9.57 ms
 64 bytes from xbox.teiko.hq (192.168.1.4): icmp_req=2 ttl=64 time=1.22 ms

Nichts im Weg.

Einfach, nicht war?
Und in dem Sinne lässt sich auch FreeBSD nutzen und es ist schön zu Wissen, dass pfSense ein Successor der Arbeit an FreeBSD ist, denn jenes glänzt durch ein gut lesbaren und zu pflegenden Code. Und wer mal die Performance dieser Firewall inkl der Optionen mit den Großen kaufbaren vergleicht wird sehr erstaunt sein, dass pfSense sich in keinem Fall zu verstecken braucht. Wer sich ein bisschen bei den großen Firewall auskennt wird bemerken, dass sehr viele BSD-basierend sind.
Wer diese Firewall wirklich einmal ausreizen möchte, dem kann ich das Buch pfSense: The Definitive Guide von Christopher M. Buechler und Jim Pingle mit einem Vorwort von Michael W. Lucas empfehlen.
Auch die Dokumentation ist eine gute Hilfe und sollte außer dem Forum auch einmal besucht werden.
Auch weise ich nochmals darauf hin, wer sich nicht zutraut bei pfSense zu helfen und ein wenig Fehler zu suchen und zu melden, kann sich auf alle Fälle an FreeBSD wenden, denn jene suchen im Moment frische Blut.
Und wer der Meinung ist, dass BSD ein wenig Linux im Desktop nachzieht und nichts kann sei doch bitte auf PC-BSD hingewiesen.

3 Gedanken zu „FreeBSD einmal zur Sicherheit: pfSense“

  1. Ach diese schönen Desktop-Gehäuse von IBM vermisse ich ja. Immerhin starteten wir mal Mitte der 80er im EDV-Unterricht mit diesen Geräten und insbesondere die unkaputtbaren Tastaturen hatten es mir angetan.

  2. Ja die PowerPCs, allgemein eine unterschätze Architektur. Ich erinnere mich noch gut daran, als ich die Infos von Motorola bekam bezüglich des 601ers und die Äpfel mit diesem waren ein Wonne.

  3. Lustig ist halt nach wie vor, dass die alten Maschinen immer noch genug Kraft und vor allem unter schlechten Bedingungen Stehvermögen haben.
    Ich hatte mal einen 600X vergessen mit Seti@home und er lief den Sommer durch direkt unter dem Dach. das war der Zeitpunkt als ich mein G3 iBook verkaufte, weil es vor Hitze in der damaligen Wohnung aufgab.
    Nun im Herbst suchte ich den 600Xer Thinkpad fand Ihn in der Ecke gemütlich am weiterrechnen.
    Ein Grund warum mein Fundus immer noch alte Gute hat, welche ich nicht hergebe.
    Wenn man nun auf Windows setzen würde wäre mal verloren;)
    Aber leider wird bald ein gebrauchter T61 mein letzter Thinkpad, ich hatte in den letzten zwei Wochen so viel Ärger mit Lenovo wegen einem neuen Thinkpad, dass für mich der Ruf weg ist.
    Es sind IMO keine Thinkpads mehr in Wirklichkeit, nun wird es Zeit ein anderen Laptop zu finden, der den letzten orginalen IBMs noch das Wasser reichen kann.
    Schade, dass IBM in den Punkt eines Ihrer Zugpferde weggab. Aber die Server mit Power-Prozessoren rocken trotzdem :)
    Gruss

Kommentare sind geschlossen.