Ein Mini-Webserver für die linuxrc
Für das bereits erwähnte NAS möchte ich natürlich auch die Root-Partition verschlüsseln. Nur: wie geben ich beim Booten den Schlüssel ein? Ein Mini-Webserver muss her!
Falls das NAS neu gestartet werden muss -- beispielsweise nach einem Stromausfall -- darf das Eingeben den Filesystem-Passworts nicht an mir hängen. Vielleicht bin ich ja unterwegs. Also muss eine Lösung her, die einfach zu bedienen ist.
Das NAS hat keine serielle Schnittstelle, also scheidet Alles in diese Richtung aus. Den Schlüssel auf einem USB-Stick zu speichern geht nicht, denn der USB-Stick könnte in falsche Hände gelangen. Ein winziger Webserver, der das Passwort abfragt, scheint mir die sinnvollste Lösung.
Eine schöne Lösung hierzu hat das Projekt CryptoNAS (ehemals Cryptobox) entwickelt. Für meinen Einsatzzweck ist das leider (noch) nicht geeignet, da es a) noch keinen RAID unterstützt und b) den Server erst startet, wenn das System schon gebootet hat.
Da bei mir auch die Root-Partition verschlüsselt werden soll, muss das "Entsperren" geschehen, ehe diese eingebunden wird. Also muss der Webserver in der linuxrc gestartet werden, was wiederum bedeutet, dass der Webserver in die initrd muss. Und die möchte ich möglichst klein halten.
In der initrd ist bereits busybox installiert, alleine, um das Shell-Script linuxrc abzuarbeiten. Da wäre doch ein Webserver cool, der einfach als Shell-Script implementiert ist. Einen davon hat Morty Abzug geschrieben. Der macht einen guten Eindruck, ich müsste dem Server nur noch beibringen, CGI-Scripte zu verarbeiten, um das Webformular auszuwerten.
Bei der Suche, was genau die busybox shell kann, habe ich dann entdeckt: Die busybox hat einen Webserver eingebaut! Der kann auch CGI-Scripte. Sehr schön, das spart mir einen Haufen Arbeit! Und wie gesagt: busybox ist in der initrd sowieso enthalten. Jetzt muss ich "nur noch" die nötigen CGI-Scripte schreiben -- aber das sollte nicht recht aufwändig sein.
BTW: Die Anleitung für den busybox htpd findet sich im Quelltext.