IPFire via Mac OS X auf ALIX 2D13 installieren

01.10.2015 yahe administration legacy linux security

Lange Zeit habe ich die kleine Firewall-Distribution m0n0wall eingesetzt, um die Edge-Firewall, sprich, die äußerste Firewall zwischen dem eigenen Netz und dem Internet, in meinem heimischen Netzwerk zu betreiben. Leider wurde die Weiterentwicklung von m0n0wall vor einer Weile eingestellt. Ich musste also früher oder später einen Ersatz finden. Ich sah mich ein wenig um und fand das deutsche Projekt IPFire, einen Fork des sehr bekannten, aber nicht mehr gepflegten IPCop.

Als Hardware sollte mein bereits vorhandenes ALIX 2D13 von PC Engines zum Einsatz kommen. Dabei handelt es sich um ein Embedded-Board mit CF-Kartenleser, serieller Schnittstelle und einer 500MHz AMD Geode LX800 CPU. Von seinem Bruder, dem ALIX 2D3, unterscheidet es sich eigentlich nur durch die Pufferbatterie für die BIOS-Uhrzeit.

Um mit der seriellen Schnittstelle kommunizieren zu können, braucht man einen USB-zu-Seriell-Adapter, den man problemlos bei Amazon finden kann. Diese enthalten typischerweise den Prolific PL2303 Chipsatz, für den man die passenden Treiber beim Hersteller finden kann. Vergesst nicht das Nullmodem-Kabel, das ihr ebenfalls brauchen werdet. Auch das findet man bei Amazon. Um die CF-Karte beschreiben zu können, braucht man weiterhin einen CF-Kartenleser, den man ebenfalls bei Amazon findet. Abschließend braucht man noch eine ordentliche Terminalemulation. Hier habe ich dieses Mal ZOC ausprobiert, das man 30 Tage lang kostenlos testen kann.

Bevor wir mit dem Installieren von IPFire anfangen können, müssen wir wahrscheinlich erst einmal die Firmware des ALIX-Boards aktualisieren. Alle wichtigen Informationen zum ALIX-Board findet man auf der dazugehörigen Support-Seite, inklusive der Firmware-Version 0.99m. Mit dieser allein können wir jedoch noch nichts anfangen. Wir benötigen noch ein Betriebssystem, das wir auf dem ALIX-Board booten können, um das Firmware-Image flashen zu können. Auf der Webseite von PC Engines sind mehrere Möglichkeiten beschrieben, wie man das mit einem FreeDOS-Image lösen kann. Die aus meiner Sicht einfachste Variante ist es, das fertige Image herunterladen, dieses auf eine CF-Karte flashen, die Dateien aus der ebenfalls heruntergeladenen Firmware-Version 0.99m mit auf die CF-Karte kopieren und das ganze Paket anschließend booten und verwenden:

  1. Wenn wir das FreeDOS-Image entpackt haben, haben wir eine Datei namens "./freedos_alixupdate_0.99.img".
  2. Um die Datei zu flashen, stecken wir die CF-Karte in den CF-Kartenleser.
  3. Wir öffnen die Terminal-Anwendung von macOS und wechseln in den Ordner, in dem das FreeDOS-Image liegt.
  4. Nun lassen wir uns mit dem Befehl "diskutil list" die Liste der gemounteten Speichermedien anzeigen.
  5. In dieser Liste müssen wir den Namen der CF-Karte ausfindig machen, der die Form "/dev/disk<Zahl>" haben sollte. Man kann sich dabei z.B. an der Größe der CF-Karte orientieren.
  6. Wenn wir den Namen der CF-Karte ausfindig gemacht haben, können wir die entsprechende Disk mit dem Befehl "diskutil unmountDisk /dev/disk<Zahl>" unmounten.
  7. Nun sind wir soweit, dass wir das FreeDOS-Image mit dem Befehl "sudo dd if=./freedos_alixupdate_0.99.img of=/dev/disk<Zahl>" auf die CF-Karte flashen können.
  8. Das Flashen sollte relativ schnell gehen. Danach sollte macOS die Karte wieder erkennen und euch ermöglichen, die Dateien darauf zu bearbeiten.
  9. Nun könnt ihr die Dateien aus dem entpackten ALIX-Firmware-Download auf die CF-Karte kopieren ("./alix1.bin", "./ALIX1.IMG", "./alix2.bin", "./ALIX2.IMG", "./alix5.bin", "./ALIX5.IMG", "./alixbios.txt" und "./sb.com").
  10. Abschließend könnt ihr die CF-Karte mit dem Befehl "diskutil eject /dev/disk<Zahl>" auswerfen.

Die so vorbereitete Karte könnt ihr nun verwenden, um die Firmware eures ALIX-Boards zu aktualisieren. Das geht leider nicht vollkommen automatisch. Deshalb müssen wir nun alles vorbereiten, um die serielle Konsole des ALIX-Boards verwenden zu können. Hierfür solltet ihr als erstes mal die Treiber eures USB-zu-Seriell-Adapters installieren. Bei mir musste das Systems dabei neu gestartet werden. Nach der Installation sollten zwei neue Devices im System erscheinen ("/dev/cu.usbserial" und "/dev/tty.usbserial"). Wenn das der Fall ist, könnt ihr nun euren Terminalemulator starten. Hier müsst ihr nun konfigurieren, dass sich der Emulator mit der seriellen Schnittstelle des ALIX-Boards verbinden kann. Hier Schritt für Schritt das Vorgehen für ZOC:

  1. Verbindet den USB-Stecker eures USB-zu-Seriell-Adapters mit eurem Mac.
  2. Öffnet ZOC und startet eine neue Verbindung.
  3. Im sich neu öffnenden Einstellungsfenster gebt ihr ein, dass ihr das Verbindungsprofil "Standard.zoc" verwenden wollt, als Verbindungstyp setzt ihr "Serial/Direct" und als Emulation nehmt ihr "Xterm".
  4. Nun klickt ihr auf den "Bearbeiten..."-Button neben dem Verbindungsprofil, wodurch sich ein weiteres Fenster öffnet.
  5. Im neuen Fenster geht ihr links in der Liste auf "Verbindungstyp" und wählt "Serial/Direct" aus. Beim COM-Port drückt ihr nun auf "Scan..." und solltet einen Eintrag in der Form "/dev/cu.usbserial" angezeigt bekommen, den ihr auswählt. Weiterhin wählt ihr als Baud-Geschwindigkeit den Wert "38400". Das ist der Standardwert für ALIX-2-Boards gemäß des Handbuchs.
  6. Wenn ihr das soweit habt, könnt ihr nun auf "Speichern" klicken und im vorherigen Dialog auf "Verbinden" gehen. Euch sollte nun eine Fehlermeldung angezeigt werden, die ihr einfach mit "Abbruch" wegklicken könnt.

ZOC Serial Konfiguration ZOC Serial Konfiguration ZOC Serial Konfiguration

Euch sollte nun angezeigt werden, dass die Verbindung aufgebaut werden konnte. Daher könnt ihr nun das ALIX-Board vorbereiten. Steckt die vorbereitete CF-Karte in den dafür vorgesehenen Schacht, verbindet das Nullmodem-Kabel mit dem ALIX-Board und mit dem USB-zu-Seriell-Adapter, der bereits mit eurem Mac verbunden ist. Verbindet nun abschließend das ALIX-Board mit seinem Netzteil. Das ALIX-Board sollte nun eine Speicherprüfung machen und anschließend FreeDOS booten. Das sieht im Terminalemulator in etwa so aus:

PC Engines ALIX.2 v0.99h
640 KB Base Memory
261120 KB Extended Memory

01F0 Master 848A TS4GCF133
Phys C/H/S 7769/16/63 Log C/H/S 971/128/63
FreeDOS kernel build 2036 cvs [version Aug 18 2006 compiled Aug 18 2006]...................123
Kernel compatibility 7.10 - WATCOMC - 80386 CPU required - FAT32 support

(C) Copyright 1995-2006 Pasquale J. Villani and The FreeDOS Project.
All Rights Reserved. This is free software and comes with ABSOLUTELY NO
WARRANTY; you can redistribute it and/or modify it under the terms of the
GNU General Public License as published by the Free Software Foundation;
either version 2, or (at your option) any later version.
 - InitDiskWARNING: using suspect partition Pri:1 FS 06: with calculated values    3-113-49 instead of    1-242-49
C: HD1, Pri[ 1], CHS=    0-1-1, start=     0 MB, size=    15 MB
FreeDOS HIMEM64 3.26 [Aug 25 2006] (c) 1995, Till Gerken 2001-2006 tom ehlert
HIMEM - Always On A20 method used
Kernel: allocated 43 Diskbuffers = 22876 Bytes in HMA

FreeCom version 0.84-pre2 XMS_Swap [Aug 28 2006 00:29:00]
C:\>

Startet nun das Programm "sb.com" aus, das sich um das Firmware-Update kümmert:

C:\>sb.com
ALIX flash update (C)2007-2011 PC Engines GmbH
Flash ID = 2 FFFF GPI = FF
Flash ID = 1 FFFF GPI = FF
Flash ID = 0 9D37 GPI = 01
Reading 512KB flash image alix1.bin................
Compare Erase Program Verify - update OK.
C:\>

Weiterhin könnt ihr nun schonmal die Baud-Rate des ALIX-Boards neu setzen, damit ihr später IPFire problemlos über die serielle Konsole verwenden könnt. Dazu rebootet ihr das Board (z.B. indem ihr es kurz stromlos schaltet). Während beim Hochfahren noch der Speichertest des ALIX-Boards läuft, drückt ihr schnell die "S"-Taste, woraufhin das ALIX-Board zur BIOS-Konfiguration wechseln sollte, was in etwa so aussieht:

PC Engines ALIX.2 v0.99h
640 KB Base Memory
261120 KB Extended Memory

01F0 Master 848A TS4GCF133
Phys C/H/S 7769/16/63 Log C/H/S 971/128/63

BIOS setup:

(9) 9600 baud (2) 19200 baud *3* 38400 baud (5) 57600 baud (1) 115200 baud
*C* CHS mode (L) LBA mode (W) HDD wait (V) HDD slave (U) UDMA enable
(E) PXE boot enable
*M* Memory test
(P) late PCI init
*R* Serial console enable
(X) Xmodem upload
(Q) Quit

Hier gebt ihr nun die "1"-Taste ein, denn IPFire wird später für die serielle Ausgabe die Geschwindigkeit von 115200 Baud verwenden. So könnt ihr dann den Bootvorgang des ALIX-Boards und die Ausgabe von IPFire ohne Probleme verfolgen. Nach Eingabe der Taste wechselt das ALIX-Board in eine andere Ansicht, in der ihr mit der "Q"-Taste und anschließendem Druck auf die "Y"-Taste die Änderung bestätigen müsst:

(9) 9600 baud (2) 19200 baud (3) 38400 baud (5) 57600 baud *1* 115200 baud
*C* CHS mode (L) LBA mode (W) HDD wait (V) HDD slave (U) UDMA enable
(E) PXE boot enable
*M* Memory test
(P) late PCI init
*R* Serial console enable
(X) Xmodem upload
(Q) Quit

Save changes Y/N ?
Writing setup to flash... OK

Wenn ihr das geschafft habt, könnt ihr das ALIX-Board erst einmal wieder vom Strom trennen und die CF-Karte entfernen. Auf diese werden wir als nächstes das IPFire-Image installieren, das man von deren Webseite herunterladen kann. Die CF-Karte, die für IPFire verwendet wird, muss mindestens 1GB groß sein. Größere Karten sind in Ordnung. IPFire wird bei der Installation dafür sorgen, dass der größere Speicherplatz mit verwendet wird. Beim Flashen des IPFire-Images gehen wir im Grunde genauso vor, wie auch vorhin schon:

  1. Wenn wir das IPFire-Image entpackt haben, haben wir eine Datei namens "./ipfire-2.21.2gb-ext4.i586-full-core124.img".
  2. Um die Datei zu flashen, stecken wir die CF-Karte in den CF-Kartenleser.
  3. Wir öffnen die Terminal-Anwendung von macOS und wechseln in den Ordner, in dem das IPFire-Image liegt.
  4. Nun lassen wir uns mit dem Befehl "diskutil list" die Liste der gemounteten Speichermedien anzeigen.
  5. In dieser Liste müssen wir den Namen der CF-Karte ausfindig machen, der die Form "/dev/disk<Zahl>" haben sollte. Man kann sich dabei z.B. an der Größe der CF-Karte orientieren.
  6. Wenn wir den Namen der CF-Karte ausfindig gemacht haben, können wir die entsprechende Disk mit dem Befehl "diskutil unmountDisk /dev/disk<Zahl>" unmounten.
  7. Nun sind wir soweit, dass wir das IPFire-Image mit dem Befehl "sudo dd if=./ipfire-2.21.2gb-ext4.i586-full-core124.img of=/dev/disk<Zahl>" auf die CF-Karte flashen können.
  8. Das Flashen sollte dieses Mal etwas mehr Zeit in Anspruch nehmen, da es mit 1GB doch recht groß ist, habt also Geduld. macOS wird den Inhalt der CF-Karte nach dem Flash-Vorgang wahrscheinlich nicht erkennen, aber das ist okay.
  9. Wir werfen die CF-Karte einfach mit dem Befehl "diskutil eject /dev/disk<Zahl>" aus.

Bevor wir weitermachen können, müssen wir noch den Terminalemulator umkonfigurieren, damit er die Geschwindigkeit von 115200 Baud verwendet. Bei ZOC gehen wir wieder so vor, dass wir das Programm starten, eine neue Verbindung aufbauen und im Einstellungsdialog neben dem Verbindungsprofil auf "Bearbeiten..." klicken. Im neuen Dialog gehen wir wieder auf "Verbindungstyp", danach auf "Serial/Direct" und wählen die Geschwindigkeit 115200 Baud aus. Abschließend klicken wir auf "Speichern" und klönnen nunim vorherigen Dialog auf "Verbinden" gehen.

ZOC Serial Konfiguration

Nun können wir die neu geflashte CF-Karte wieder in den CF-Kartenslot des ALIX-Boards schieben und dieses mit dem Strom verbinden. Nach dem obligatorischen Speichercheck sollte nun der Bootloader GRUB geladen werden, in dem IPFire standardmäßig nach wenigen Sekunden gebootet wird. Beim ersten Hochfahren reformatiert IPFire die CF-Karte automatisch und startet dann direkt wieder neu. Beim zweiten Hochfahren sollte dann eine pseudografische Oberfläche gestartet werden, die ihr mit der Tastatur steuern könnt. Dort werden Dinge wie das Root-Passwort der seriellen Konsole und des SSH-Zugangs, das Passwort des "admin"-Accounts der Weboberfläche, sowie der Netzwerktyp und die zugehörigen Netzwerkadressen erfragt. Das initiale Setup ist im Wiki von IPFire noch ausführlicher beschrieben.

Wenn ihr das initiale Setup erfolgreich absolviert habt, könnt ihr euren Mac mit einem Ethernet-Kabel mit dem von euch konfigurierten "grünen" LAN-Anschluss (also dem Anschluss, dem ihr das interne Netzwerk zugeordnet habt) verbinden und anschließend die webbasierte Konfigurationsoberfläche von IPFire aufrufen. Dazu müsst ihr euch erinnern, welche IP-Adresse ihr dem internen Netzwerkanschluss der Firewall gegebenen habt (typischerweise sowas wie "192.168.0.1") und könnt anschließend im Browser die URL "https://<ip>:444" aufrufen. Ihr solltet per HTTP-Basic-Authentication nach den Zugangsdaten des "admin"-Account gefragt werden und anschließend auf der Startseite der Weboberfläche landen.

IPFire Weboberfläche IPFire Weboberfläche

Ist das der Fall? Dann herzlichen Glückwunsch! Ihr habt soeben die Firmware eures ALIX-Boards aktualisiert und anschließend erfolgreich IPFire darauf installiert. Die weitere Konfiguration lässt sich durch die moderne Weboberfläche ziemlich schnell erledigen.


Search

Categories

administration (40)
arduino (12)
calcpw (2)
code (33)
hardware (16)
java (2)
legacy (113)
linux (27)
publicity (6)
review (2)
security (58)
thoughts (21)
windows (17)
wordpress (19)