Installation einer Firewall mittels eines virtualisierten IPFire unter Proxmox auf dem Supermicro X9SCI-LN4F

Versieht man dem Heimserver mit Aufgaben, so ist der primäre Zweck meist ein zentraler Speicherort für den gemeinsamen Zugriff auf Nutzdaten und zur Ablage von Backups der angeschlossenen Clients. Nebst weiterer Dienste ist es dann vor allem eine Firewall als Serveranwendung, mit dem man eine schützende Schicht zwischen LAN und WAN packen möchte.

Sicher bringt sowas der Plastikrouter mit, welchen man vom Internetanbieter erhalten hat, doch diese haben nicht selten eine vertraglich vorgeschriebene Fernwartungsfunktion durch den Anbieter. It’s not a bug, it’s a feature. Zudem ist so eine gehärtete Linux-Firewall-Distribution einfach mächtiger und feiner einstellbar. Selbst wenn man nicht IDS und Co. nutzt, profitiert man gegenüber der simplen nicht-einsehbaren Firewall eines DSL-Modems von ausführlichen Logs, erweiterten URL-Filtern und vielem mehr. Aus unserer Sicht und in der Post-Snowden-Ära kann man so einem DSL-Router ohnehin nicht vertrauen und so muss dieser jenseits der Firewall sein Werk verrichten.

Im folgenden Artikel beschreibe ich die Einrichtung meiner Lieblings Firewall-Distribution IPFire, virtualisiert unter Proxmox auf unserem nach-wie-vor Lieblings-Serverboard. Das Internet kommt in unserem Beispiel aus einem Speedport W 921V DSL/VDSL Router. Doch kann man unsere kleine Anleitung natürlich auch auf anderen Motherboards und auf andere Modems anwenden. Ganz bewusst verzichte ich in meinem sehr speziellen Szenario auf die ‘Einwahl’ durch IPFire und nehmen im Umkehrschluss in Kauf, dass mit dem nicht-zum-reinen-Modem-degradierten Speedport eine zusätzliche Instanz zwischen uns und dem WAN liegt. Das IPTV ‘Entertain’ lässt grüßen, doch dazu in einem späteren Artikel mehr.

Die Firewall liebt Ethernet Ports

So ein Homeserver schreit nach mehreren Ethernet Ports. Wenngleich man dieses durch das Stecken einer Dual Port oder Quad Port PCI-E Ethernet Adapter Card sicher lösen kann, so ist aber auch nicht die schlechteste Präferenz, wenn das zugrundeliegende Motherboard von Haus aus mit ausreichend Ethernet Schnittstellen aufwartet. Genau dem genügt das von mir bereits vor einem Jahr hochgelobten Sockel 1155 Serverboard Supermicro X9SCI-LN4F. Neben seiner abgesetzten Ethernet Buchse für die Fernwartung mittels IPMI ist vor allem das rückwärtige Feld mit den 4 Ethernet Schnittstellen auf Basis des Intel 82574L Gigabit Ethernet Controllers ein Hauptgrund, welches diese Sorglos-Hardware in Verbindung mit einem Xeon zum Liebling der Heimserver Aficionados macht.

Am Ende spricht die Vernunft für Virtualisierung

Neben der permanenten Debatte im Netz um die Frage, ob insbesondere eine Firewall virtualisiert werden sollte, gibt’s an anderer Stelle ebenso Streitereien um Sinn und Unsinn der Virtualiserung an sich. Unbestritten ist aber das fürsprechende Argument, dass man mit Virtualisierung einen Server effizienter zu nutzen imstande ist. Im Idealfall schickt so eine Hardware mehrere andere Rechner in den Ruhestand. Und die Stromrechnung dankt es. Zusätzlich stellt sich eine Menge Komfort ein, wenn man auf dem Mac per Weboberfläche, Shell und FTP-Client als Sesseladmin alles von einer Warte aus kommandiert. So wechselt man nicht an der Hardware irgendwelche CDs oder steckt gar Ethernetkabel, sondern man erzeugt eine neue VM mittels eines ISO-Image, generiert mal eben so virtuelle Netzwerkkarten, macht Einstellungen und freut sich des Lebens.

Ein Bekenntnis zum Proxmox Virtual Environment

Die von mir gern hergenommene Virtualisierungslösung fängt nicht etwa mit den Buchstaben ESX an, sondern das Open Source Dingens stammt aus Österreich und hört auf den Namen Proxmox, bzw. PVE (Proxmox Virtual Environment). Diese auf Debian basierende Firewall ist wunderbar leicht aufzuspielen, per Browser handhabbar, sie läuft geschmeidig und robust im Dauerbetrieb und es lässt sich grundsätzlich alles Gängige problemlos virtualisieren. Nicht zuletzt der kontinuierlich steigenden Popularität von Proxmox im Netz ist es zu verdanken, dass praktisch alles, was in eine Virtual Machine unter Proxmox gepfropft werden könnte, schon irgendwo von irgendeinem tapferen Recken durchgespielt worden ist.

Vorbereitung und Installation des VE

Meine kleine Anleitung soll sich, wie im Vorfeld geschildert, am Supermicro X9SCI-LN4F orientieren. Damit wir hinterher mit der Zuordnung von Mac-Adressen und physischen Ethernet Ports nicht ins rudern kommen, machen wir auf einem Zettel oder im Wiki (gehört ebenfalls auf jeden Heimserver) entsprechende Notizen. Spätestens dann, wenn die MAC-Adressen der VM-eigenen virtuellen Netzwerkkarten hinzukommen, wird man es danken. In meinem Beispiel beschränken wir uns auf die Einrichtung dreier Zonen (rot auf ETH1, grün auf ETH2, blau auf ETH3) und lassen die Demilitarisierte Zone erstmal außen vor. Gegenpart in der roten Zone ist wie gehabt das Speedport Modem, welches für seine anderen gelbfarbigen Ethernet Ports weiter das eigene DHCP (hier 192.168.8.x) laufen hat. Im konkreten Fall dient das einem separaten Netzwerk für das Telekom IPTV namens ‘Entertain’, welches wir explizit nicht durch unser IPFire routen wollen. Intern ab der ‘roten Buchse’ haben wir mit dem Speedport Router ohnehin nichts mehr zu tun. 

An dieser Stelle, und weil es so schön passt, gibt es ein kleines Schaubild:  

Von der Proxmox Downloadseite aus stoßen wir nun den BitTorrent-Download des aktuellen Proxmox VE ISO Installers an, welcher sich zum gegenwärtigen Zeitpunkt in der Version 3.1 befindet. Selbstverständlich checken wir bei so etwas Wichtigem nach dem Download die Übereinstimmung der Prüfsumme mittels md5 und vergleichen das Ergebnis mit der MD5SUM für die ISO auf der Downloadseite. Ihr wisst ja:

md5 dateiname.iso
MD5 (dateiname.iso) = fb5641852a17833b31b29a107c838f3c

Natürlich vergleicht Ihr mit der MD5SUM von der Originalquelle.

Das ISO-File wird auf CD gebrannt und mit dieser spielen wir auf dem Server das Proxmox VE auf. Natürlich kann man alternativ einen Boot-Stick fertigen oder die Installation auch völlig headless und nur mit dem reinen Prxmox ISO übers IPMI des Supermicro Bretts in Gang bringen. Die Installationsroutine löscht übrigens die gewählte Zielplatte vollständig, mit welcher hinterher der Server in seine Virtualisierungsumgebung bootet. Es startet also die Installation und im ersten Screen mit ‘Proxmox:’ drücken wir ENTER. License abnicken, Target Harddisk beachten, Location and Time einstellen, das Passwort für root setzen und Mail-Adresse eintragen.

Nun machen wir noch schnell eine kleine Änderung als ssh root@192.168.1.121 und dem Editor nano oder über SFTP per Cyberduck. Auch in dem Falle wieder an 192.168.1.121, Benutzernamen root und Port 22. Cyberduck ist übrigens von der Website des Entwicklers weiterhin kostenlos als ZIP-File herunterladbar (links, unterhalb der Mitte). Wer kann, sollte allerdings den Entwickler David Kocher mit der Bezahlversion von Cyberduck aus dem Mac App Store unterstützen.

Ach, würde das zu gute Cyberduck doch endlich mal vollständig in Objective-C implementiert sein und nicht mehr mit einem notwendigen Java die Mac OS X Installation beflecken …

Die angesprochene Änderung bezieht sich darauf, dass die Wiener Mutter von Proxmox das Bezahlmodell mittlerweile als Standardmodell definiert. Ist kein Lizenzschlüssel innerhalb Proxmox hinterlegt, kommt es beim späteren apt-get zu einer Fehlermeldung. Das ‘Proxmox VE No-Subscription Repository’ etablieren wir, indem wir aus /etc/apt/sources.list bzw. /etc/apt/sources.list.d/pve-enterprise.list das Proxmox VE Enterprise Repository auskommentieren:

#deb https://enterprise.proxmox.com/debian wheezy pve-enterprise

In unserem spezifischen Beispiel haben an dieser Stelle noch kein Internet und ein apt-get würde jetzt ins Leere greifen. Das alles geht erst nach der Einrichtung der Firewall. Jetzt loggen wir uns von einem beliebigen Rechner innerhalb der grünen Zone in unsere Proxmox Installation per Browser ein. Das geschieht unter der Adresse https://192.168.1.121:8006. Wir wählen im Anmeldefenster die deutsche Sprache aus und geben root und das Passwort ein. Schnell erstellen wir noch im Proxmox (Knoten > Netzwerk > Erstellen > Bridge) passend zu unserem Supermicro Board virtual Bridges (vmbr). Viermal für die vier physischen Ethernet Ports am Serverboard. Hiernach ist ein Restart sinnvoll. So sieht es dann aus:

Bequem IPFire in eine Virtuelle Maschine packen

Kinder, jetzt wird’s einfach! Von der Website des IPFire Projekts das knapp 100 MB große Installations-Image herunterladen. Diese .iso Datei in das Dateisystem des Proxmox-Servers nach /var/lib/vz/template/iso befördern. Jetzt in der Webverwaltung vom Proxmox oben links den grauen Button Erstelle VM klicken. Im Karteireiter ‘General’  den Knoten belassen, eine freie VM ID wählen (hier 100), einen Namen vergeben (ipfire würde gut passen) und unten rechts am Tochterfenster den Button Vorwärts klicken.

Wir sind im Karteireiter ‘OS’. Hier unter Linux/Andere Betriebssysteme die Option Linux 3.X/2.6 Kernel (l26) auswählen und wieder Vorwärts. Im Karteireiter ‘CD/DVD’  ist nun unter ISO Image das File verfügbar, welches wir im letzten Absatz eingebracht haben. Unter ‘Laufwerk’ kann alles belassen bleiben. Disk-Größe 32 GB ist mehr als ausreichend. In ‘CPU’ reicht auch ein Sockel mit 2 Cores. Kann man hinterher im laufenden Betrieb jederzeit skalieren. Unter ‘Speicher’ z.B. Min 1GB und Max 3GB zuteilen.

Im Karteireiter ‘Netzwerk’ ruhig erstmal Keine Netzwerkkarte auswählen und dann Vorwärts und Abschließen klicken. Links ist die neue VM namens 100 ‘ipfire’ dann zu sehen. Der verpassen wir noch schnell vor dem ersten Start die virtuellen Netzwerkkarten. VM klicken und rechts im Karteireiter ‘Hardware’ und mittels Hinzufügen Netzwerkkarte wählen. Das werden wir in unserem Beispiel dreimal machen für die Anbindung an vmbr1, vmbr2 und vmbr3. Man orientiere sich an meinem lustigen Schaubild weiter oben. Im folgenden Bild das Beispiel für grün bzw. ETH1 bzw. vmbr1:

Die VM mit IPFire steht soweit. Jetzt starten wir die Virtuelle Maschine links mit Rechtsklick auf  100 (ipfire) und Klick auf ‘Start’ bzw. den ‘Play’ Button und im selben Kontextmenü klicken wir uns mit dem untersten Punkt ‘Konsole’ ein Terminal im Browser, wo wir nun schon in die IPFire Installation reingucken und diese anpassen. Macht man hier etwas falsch, so lässt sich hinterher jederzeit das Setup von IPFire innerhalb der Konsole neu durchspielen (in unserem Beispiel mittels ssh root@192.168.1.1 und dem Kommando setup. 192.168.1.1 deshalb, weil wir es in der laufenden IPFire Konfiguration für grün so vorsehen). Nach außen bzw. rot bekommt unser Beispiel, die feste IP 192.168.8.150 zum Speedport W 921V hin.

Einfach konzentriert die Menüpunkte durchgehen. IPFire macht es einem wirklich nicht schwer. Nach Abschluss können wir in der Proxmox-Weboberfläche noch schnell in der ipfire VM unter ‘Optionen’ den Parameter Beim Booten starten auf ja setzen.

Die Firewall läuft. Hurra, Internet ist da!

Wenn alles glatt gelaufen ist, dann läuft die Firewall jetzt schon wunderprächtig. Wir rufen im Browser unser IPFire unter https://192.168.1.1:444 auf und klicken uns die Feinheiten. Die groben Dinge wurden ja schon im Konsolen-Setup erledigt.

Und bevor ich’s noch vergesse: Schnell ein Terminal öffnen, mittels ssh root@192.168.1.121 ins Proxmox rein und die Installation auf den aktuellen Stand bringen, weil nun Internet ‘anliegt’ … 

apt-get update && apt-get dist-upgrade -V 
Previous Article

TP-LINK TL-WR841ND unter DD-WRT als Ablöse für die graue Eminenz Linksys WRT54GS

Next Article

WG-Heimserver und die Auswahl passender Hardware