Als Firewall zu meinem Heimnetzwerk hatte ich bisher, zu meiner vollsten Zufriedenheit, einen alten PC mit fli4l eingesetzt (V2.0.8).
Und dann hat mich ein Kollege auf eine andere Hardware-Platform aufmerksam gemacht:
ALIX - System Boards.
Das hat einen geringeren Energieverbrauch versprochen und zusätzlich mehr Platz auf den dort
eingesetzten Compact-Flash-Medien - gegenüber einer normalen 5¼"-Floppy.
Entschieden haben wir uns dann für das Board alix2c1 (der Link führt
u.A. zu den Eckdaten).
Vom Preis her war der Unterschied zu den anderen Versionen nicht groß und auf dem alix2c1-Board sind immerhin 3 LAN-Anschlüsse
für jeweils 100bT vorhanden und man kann eine Mini-PCI-Karte nachrüsten (z.B. für WLAN).
Bestellt haben wir aber in der EU bei der Fa. Tronico.
Was man zum Motherboard noch braucht ist
Zum Einsatz soll ja weiterhin das bewährte fli4l kommen.
Und die haben bezüglich des alix-Boards schon ganze Arbeit geleistet und fli4l an das Board angepasst -
ein herzliches Dankeschön an Frank MEYER und sein Team an dieser Stelle.
fli4l besteht aus einzelnen Paketen, welche individuell eingesetzt werden können, um die Firewall den eigenem Bedarf anpassen zu können.
Um die alix-Boards betreiben zu können ist jedenfalls die neue Entwicklerversion V3.1.4 sowie zusätzliche Kernel-Patches notwendig.
Hier nun die Liste der von mir gewählten Pakete,ausgehend von den für die alix-Boards notwendigen:
Und die dazupassenden Basis-Pakete, sowie ein paar Tools
optional das Dokumentationspaket
Eingerichtet habe ich dann das Verzeichnis */fli4l-3.1.4/
auf meiner Harddisk
und die heruntergeldenen Paket dorthin entpackt (mit 7-Zip).
Nicht unwesentlich ist die Reihenfolge des entpackens:
Auf jeden Fall sollte man die Dokumentation der Pakete (vor allem des Basispaktes) lesen.
Manche wichtige oder ratsame Hinweise sind an Stellen, an welchen man sie nicht suchen würde...
Z.B. der dass man beim Wechsel der Konfiguration nur das config
-Verzeichnis kopieren und
die darin enthaltenen Dateien ändern braucht. Ausgewertet wird dann immer das Verzeichnis config
.
Was für mich bedeutet, dass bei jeder Änderung der Name des kopierten config
-Verzeichnisses auf
config_
<datum> (also z.B. config_20080302
) geändert wird.
Hier nun die Änderungen an Hand der änderbaren Konfigurationsdateien
Diese Datei habe ich nicht direkt geändert. Das Programm zur Erstellung des Target-Mediums kann einige Parameter abspeichern, was ich auch genutzt habe - aber keine direkten Änderungen/Einträge soweit.
Das ist die Basiskonfiguration (wie schon in der alten Version).
Geändert habe ich die folgenden Einträge/Variablen:
HOSTNAME='fli4hai'
- mein lokaler Name für die Firewall
PASSWORD='********'
- neues Passwort - wird hier natürlich nicht bekanntgegeben ;-)
KERNEL_BOOT_OPTION='nokbd reboot=bios'
- zusätzliche BOOT-Optionen wegen der nicht vorhandenen
Tastatur, und damit ein Reboot auch wirklich funktioniert.
BOOT_TYPE='hd'
- ich möchte von Harddisk, bzw. gleichwertig von einer Compact-Flash-Karte booten.
BOOTMENU_TIME='5'
- anstatt den vorgegebenen 20sec. Wartezeit
KERNEL_VERSION='2.6.20.21'
- damit wird die gepatchte Kernel-Version angegeben.
Ist dieser Eintrag nicht korrekt, dann werden die Module nicht gefunden.
BEEP='no'
- kein Beeper auf dem alix-Board vorhanden
SER_CONSOLE_RATE='38400'
- das ist auch der Defaultwert vom BIOS des alix-Boards.
Die beiden Werte sollten überein stimmen. Sonst müsste das Terminalprogramm zwischen BIOS und fli4l immer umgestellt werden,
was nicht so lustig ist wenn man Fehler sucht.
DEBUG_STARTUP='yes'
- fürs Erste einmal auf YES gesetzt. Kann ich später immer noch abschalten.
DEBUG_LOG='/debug.log'
- Meldungen da hinein.
NET_DRV_1='via-rhine'
- war mir ursprünglich nicht sicher ob das der richtige ist - aber es funktioniert -
Beweis erbracht.
IP_NET_N='3'
- Anzahl der Netzwerk-Schnittstellen des alix-Boards
IP_NET_1_DEV='eth0'
- momentan als Reserve gedacht
IP_NET_1='192.168.11.254/24'
- trotzdem schon eine Adresse zugewiesen
IP_NET_2_DEV='eth1'
- Interface ins LAN
IP_NET_2='192.168.12.254/24'
- ist das Gateway seitens der LAN-Geräte (daher 254)
IP_NET_2='192.168.12.253/24'
- 253 für die ersten Versuche.
IP_NET_3_DEV='eth2'
- Verbindung zum ADSL2-Modem/Router
IP_NET_3='192.168.178.23/24'
- wird dynamisch zugewiesen, muss aber trotzdem gesetzt sein ?
Die nächsten Variablen beziehen sich auf den Packetfilter.
Da ich keine Lust hatte die bestehenden Regeln manuell auf das neue Format zu ändern habe ich den vorgeschlagenen Weg
gewählt:
# Please choose the new packet filter configuration, the old one is # deprecated and only provided for compatibility reasons. During boot # up the configuration will be translated to the new configuration, # printed to the screen and written to bootmsg.txt to allow for an # easy migration to the new config style.
D.h. im ersten Schritt, neben den bestehenden Regeln, folgende Werte setzen:
PF_ORIG_CONFIG='yes'
- alte Regeln verwenden
PF_NEW_CONFIG='no'
- die neuen Regeln noch nicht verwenden und deren Vorgaben ignorieren.
Danach habe ich dann einfach die entsprechenden Zeilen der alten base.txt übernommen (liste ich hier aber nicht auf) - reines kopieren funktioniert leider nicht, die Umstellung ist aber fast selbsterklärend.
PACKETFILTER_LOG='yes'
- ich will wissen was da rein kommt (vorerst einmal)
PORTFW_N='3'
- 3 Ports werden weitergeroutet -
PORTFW_1_TARGET='21'
PORTFW_1_NEW_TARGET='21 192.168.12.XY:21'
PORTFW_1_PROTOCOL='tcp'
PORTFW_2_TARGET='A'
PORTFW_2_NEW_TARGET='21 192.168.12.XY:A'
PORTFW_2_PROTOCOL='tcp'
PORTFW_3_TARGET='B'
PORTFW_3_NEW_TARGET='21 192.168.12.XY:B'
PORTFW_3_PROTOCOL='tcp'
OPT_DNS='no'
- für DNS verwende ich einen anderen Server.
DOMAIN_NAME='viehai.local'
- mein lokaler Netzwerkname
DNS_FORWARDERS='195.34.133.21 195.34.133.22'
- ein paar DNS-Forwarders als Defaultwert, werden aber
per DHCP vom ADSL2-Modem sowieso neu belegt.
HOSTS_N='1'
- 1 Host hier vergeben - die eigene LAN-Adresse
HOST_1_NAME='fli4lhai'
- so heisst meine Firewall Netzintern.
HOST_1_IP='192.168.12.254'
- das hatten wir doch schon mal ?!?
OPT_DNSDHCP='no'
- auch dafür habe ich einen eigenen Server
OPT_SYSLOGD='yes'
-
OPT_KLOGD='yes'
-
Damit wird die Harddisk angesprochen - in meinem Fall natürlich die Compakt-Flash-Card..
Geändert habe ich nur den folgenden Variablenwert:
OPT_HDDRV='yes'
- zuerst einmal aktivieren...
Mit den bisherigen Einstellungen habe ich dann erstmalig ein Image erzeugt und auf die Compact-Flash-Karte geschrieben.
Das hat zwar erst nach mehrmaligen Versuchen funktioniert - aber immerhin.
mkfli4l.bat
) kann auch nur als
Administrator richtig auf die Karten zugreifen - es mit einer normalen Kennung aber unter Administrator
laufen zu lassen hat nicht sofort funktioniert ?
Dazwischen dachte ich schon, dass mein Board ein zu altes BIOS (v0.98 gegenüber der aktuellen V0.99) hat.
Ein Versuch dieses zu flashen, misslang total.....
Schlussendlich ist dann die Karte hochgelaufen und der gewohnte Prompt kam zum Vorschein.
Die Werte aus der bootmsg.txt
konnte ich auch auslesen - die werde ich aber erst später in die
base.txt
einpflegen.
Was mich am meisten irritiert hat war, dass ifconfig
nicht mehr zur Verfügung steht.
Stattdessen wird das Kommando ip
verwendet - siehe dazu auch
ip-Command.
Inzwischen habe ich obige Probleme in den Griff bekommen.
Neben den Adaptierungen für das alix-Board habe ich ja auch SSH vorgesehen - damit sollte es möglich sein, dass Board per LAN hochzurüsten.
Ansonsten muss man ja für das Ziehen der Compact-Flash-Karte das Gehäuse zerlegen und das Motherboard ausbauen.
Jetzt gehts jedenfalls weiter:
Damit wird die Hardware des alix-Boards konfiguriert.
Geändert habe ich die folgenden Einträge/Variablen:
OPT_ALIX='yes'
- Aktivieren !
OPT_ALIXD='yes
- startet einen eigenen Dienst, welcher die einzige Taste abfragt und die 3 LED's bedient.
ALIXD_KEY_ACTION='reset'
- damit kann das Board rückgesetzt werden, ohne die Spannungsversorgung zu
unterbrechen (ziehen und stecken des Steckers ist schliesslich nicht die feine englische Art)
ALIXD_LED_2='online'
ALIXD_LED_3=''
- Die LED's ein wenig anders belegt...
ALIXD_WLAN_DEVICE=''
- keine WLAN-Interface definiert
Dienst um eine SSH-Verbindung aufbauen zu können.
Geändert habe ich die folgenden Einträge/Variablen:
OPT_SSHD='yes'
OPT_SSH_CLIENT='yes'
OPT_SCP='yes'