Donnerstag, 22 Februar, 2018

Ein Traum wird wahr. Eine eigene Firewall, ein eigenes IDS mit einer zentralen Adblock Liste, mit eigenem WLAN, VLANs und und und... Die Liste lässt sich fast endlos erweitern. In diesem Artikel möchte ich euch meine Schritte zum Aufbau des APU 1D4 mit IPFire vorstellen.

Mit der APU Plattform hat mir der Hersteller PC Engines ein günstige Alternative zu den ganzen Plaste-Routern angeboten, welches ich gerne in Anspruch nehmen möchte. Ich denke, dass es viele Paranoiker und Bastler gibt, die sich ihr eigenes Netzwerk aufbauen möchten, ohne auf closed source oder ähnlichem zurück greifen zu müssen.

Wenn es dich z.B. interessiert, was der Fernseher, das Smartphone oder ähnliches im Netz treiben, ist hier genau richtig. Wer sein Netzwerk gegen Eindringlinge abwehren möchte, ist hier ebenfalls genauso richtig. Da die meisten Geräte im Haushalt nach wenigen Monaten keinerlei Updates mehr erhalten und eher eine Gefahr darstellen als nützen, ist diese Lösung mehr als nur ein Bastelprojekt.

Mit der Firewall, kann man genau definieren, wer was wo und wann tun darf. Daneben sieht ein Plaste-Router ala FritzBox und Co. eher wie dumme Türstopper aus.

Das Board

Es handelt sich bei mir um das Board APU 1D4, welches auch in einer kleineren Version APU 1D erhältlich ist (2GB statt 4GB Arbeitsspeicher). Das Board habe ich mit Netzteil, Gehäuse und einer 16GB mSATA Karte für unter 210 Euro erworben. Hier einige technische Details:

  • Firmware: CoreBoot
  • 1,0 GHz AMD Embedded G-Series T40E APU (Dual-Core, 64 Bit Unterstützung, 32 + 32 KByte L1 Cache, 2 x 512 KByte L2 Cache, SSE1,2,3, SSSE3 ISA, SSE4A, MMX, AMD-V)
  • 3x Gigabit Ethernet (Realtek RTL8111E)
  • 4GB DDR3-1066 DRAM Arbeitsspeicher
  • 1x SD Kartenleser (bootfähig; über USB angebunden)
  • 1x mSATA SSD 6 GBit/s Slot
  • 2x miniPCI Express (eines mit SIM socket für GSM/UMTS)
  • 1x SATA 6 GBit/s + Stromanschluss
  • 1x DB9 serieller Port
  • 2x USB 2.0 extern und 2x intern
  • LPC bus, GPIO header, I2C bus, COM2 (3.3V RXD / TXD)
  • Sonstiges: 3x LED auf der Frontseite, 1x Reset-Button
  • Stromversorgung: 12V DC. 6 bis 12W (je nach CPU-Last)
  • Kühlung: Passive Kühlung der CPU und South bridge über einen 3 mm Alu-Kühlplatte - Bei einem optionalen Gehäuse beiliegend
  • Abmessungen: 152.4 x 152.4 mm (Board), 0,0x 0,0x 0,0x (Gehäuse)

Hardware-Umfang

In meinem Lieferumfang bestand das System aus einem APU 1D4-Board, einem schwarzen Gehäuse inkl. Alu-Kühlplatte, einer 16GB SSD und einem Netzteil. Um an mein Firewallsystem zu kommen, habe ich noch einige Erweiterungen benötigt.

  • Ericsson KM266 F3507g (Dell Wireless 5530) HSDPA/GPS Karte - 15 €
  • Compex WLE900VX (802.11 abgn/ac, 3x3 MIMO) mPCIe WLAN Karte- 65 €
  • 5x Pigtail -> RP-SMA - 20 €
  • 3x 2,4/5GHz SMA Antenne - 30 €
  • 2x GSM/UMTS/LTE SMA Antenne - 20 €
  • Ein (A/V)DSL(2) Modem - 20 bis 110€
  • Serielles Kabel - 10 €
  • Serieller Port am Desktop (USB-Serial Adapter) - 20 €

Gesamtkosten: Rund 400 €, bei meiner Ausbaustufe.
Minimalkosten: Unter 300 €


Bilder


Installation Grundsystem

Grundsätzlich lässt sich jedes Linuxsystem auf dem APU 1D installieren, nur gibt es eine erhebliche Einschränkung bei der Einrichtung: Es gibt auf dem Board keine Grafikausgabe.

Die meisten Installer z.B. von Ubuntu, Debian, CentOS gehen davon aus, dass der Server eine Grafikkarte besitzt und rudimentäre Grafikdarstellung kann. Dieser Umstand nötigt uns darauf zu achten, ob wir via "Serial console" installieren können. Es gibt einige HowTos, wie man die Installer vorab manipuliert oder Images direkt auf die mSATA oder SD aufspielt. Ich habe meine mSATA in mein Notebook eingebaut, dort das IPFire Image via DiskDump aufgespielt und in den Router eingesetzt.

Wer sich das IPFire Image (x64) für serial console herunterläd, muss es zunächst entpacken und dann via Diskdump (dd) auf den mSATA oder SD Speicher übertragen. Das Speichermedium darf dazu nicht im System gemounted sein! Dann geht das Übertragen wie folgt:

dd if=/pfad/zum/image of=/dev/sdX bs=1M

Die obige Angabe "X", bei /dev/sdX, steht für die Nummer des SCSI-Devices die das mSATA oder SD Speichermedium vom gestarteten Betriebssystem erhalten hat - einfach entsprechend ersetzen.


Erster Kontakt

Via serieller Schnittstelle und miniCom konnektiere ich an das System. Das Setup erwartet mich schon und fragt mich einige Grundeinstellungen ab. Es gibt folgende Merkmale:

Benutzer
  root-User für Shellzugriff
  admin-User für WebUI-Zugriff

Netzwerke
  Grün für Internes Netzwerk
  Orange für eine DMZ
  Blau für das WLAN
  Rot für den Internetzugang

Das Setup erwartet nun, neben Sprache, Tastatur usw., eine Auswahl der Netzwerke und die Zuordnung der vorhandenen Netzwerkschnittstellen zu einer der jeweiligen Farben. Jedes Netzwerk bzw. jede Farbe sollte ein eigenes Netz erhalten z.B. Grün: 10.0.100.0/24, Orange: 10.0.101.0/24 und Blau: 10.0.102.0/24. Jede Netzwerkschnittstelle erhält dem Netzwerk entsprechend die erste IP: 10.0.10x.1. Das Setup kann jederzeit durch den Aufruf "setup", auf der Shell, abgeändert werden !

WebUI
Nach erfolgreichem Setup, kann das WebUI über die IP Adresse z.B. 10.0.100.1:444 aufgerufen werden. Wenn ihr keine IP zugewiesen bekommt, dann könnt ihr manuell den DHCP-Server auf der Shell starten (/etc/init.d/dhcp start)


Installation WLAN

Meine WLAN-Karte ist zwar höher, schneller und weiter aber leider nicht im Projekt IPFire supported. Die ath10K Implementierung lässt leider noch etwas auf sich warten. Damit diese läuft, muss die Firmware im System hinterlegt werden. Hier kann man sich die Firmware herunterladen. Nützlich ist auch dieser Beitrag: ath10k firmware

Wer die Firmware beisammen hat, muss wie folgt die Dateien ablegen.

mkdir -p  /lib/firmware/ath10k/QCA988X/hw2.0
cp firmware-2.bin  /lib/firmware/ath10k/QCA988X/hw2.0/firmware-2.bin
cp board.bin  /lib/firmware/ath10k/QCA988X/hw2.0/

Nach dem das Modul geladen bzw. der Server neu gestartet wurde, muss nun die neue Netzwerkkarte im blauen Netzwerk hinterlegt werden.

Wer sich solche Spielchen und Instabilitäten ersparen möchte, kann hier im Wiki eine Liste mit getesteten Karten finden. Bittet achtet darauf, dass die Karte auch AP-Fähig ist, wenn ihr ein AccessPoint betreiben möchtet. Ich empfehle für einen reibungslosen Einsatz eine ath9K Karte.


Installation Access Point

Wer nun einen Access Point betreiben will, muss noch im WebUI das Paket hostapd nach installieren und dort wie gewohnt die Daten zum Netz und zur Anmeldung hinterlegen. Bitte beachtet, das ihr den DHCP Server für das blaue Netzwerk aktiviert und in der Firewall min. eine globale Regel für Blau nach Rot einrichtet, ansonsten gibt es kein durchkommen zum Internet. Jedes WLAN Device muss zu dem, mit seiner Mac-Adresse, unter Firewall->Zugriff auf Blau hinzugefügt werden.

Ein bittere Pille ist, dass man für ein DualBand-Betrieb (2,4 und 5GHz) entweder zwei Karten verbauen muss oder ein externen AP anbindet. Da ich den 5GHz-Standard mit der extrem kurzen Reichweite nicht gebrauchen kann, kann ich damit leben - Ist nur irgendwie schade.


Das wars ?

Mit absoluter Sicherheit nicht. Es steht noch ein ordentliches Failover zwischen dem DSL und der HSDPA Verbindung an. Asterisk wird noch eine zentrale Rolle übernehmen und OpenVPN wird ordentlich in meine Infrastruktur implementiert. Das Projekt IPFire lässt einem keine Ruhe und fördert den Spieltrieb ungemein :)


Danksagung

Ich möchte mich an der Stelle bei "Christian S." bedanken, der mich für das Projekt begeistert hat und natürlich bei meiner Lebensgefährtin, die es mal wieder mit Fassung trägt :)