Komponenten
Eine CryptoBox CD wird in wenigen Schritten erstellt. Die Basisarbeit erledigt 'dfsbuild' und die genaue Konfiguration macht 'cb-build'.
dfsbuild
Das Linux Grundsystem für die CryptoBox CD wird mit dfsbuild gebaut. Das ist ein Programm, welches eine Debian Live-CD erzeugt.
(Wir entwickeln die CryptoBox bisher auf Debian/Linux-Systemen. Prinzipiell dürfte es auch mit deiner Lieblingsdistro funktionieren, nur der anfängliche Einrichtungsaufwand wird dadurch größer.)
Für "dfsbuild" bietet sich apt-cacher an. Damit brauchst du nicht für jeden Bau des Grundsystems alle Debian-Pakete erneut herunter laden.
Installation:
apt-get install dfsbuild apt-cacher
Die dfsbuild-Dokumentation ist noch recht spärlich. Du kommst aber kaum in direkten Kontakt mit dfsbuild, da es durch 'cb-build' aufgerufen wird. Die folgenden Links helfen dir vielleicht trotzdem weiter:
cb-build
Die wichtige Kleinarbeit, damit aus dem dfsbuild-System eine CryptoBox wird, erledigt cb-build.sh.
Das Script und die bestehenden Konfigurationsdateien liegen im cryptobox-Repository.
Mit diesem Script baust du deine eigene CryptoBox-CD. Hier ein kurzer Überblick:
Aktion |
Beschreibung |
dfsbuild |
startet dfsbuild und legt eine Arbeitskopie an |
config |
kopiert die Konfiguration (cryptobox.conf.d) in die Arbeitskopie |
iso |
erstellt das iso-image |
chroot |
für kleine Tests reicht auch chroot (Vorsicht: dabei riskierst du, deine reale Festplatte zu überschreiben) |
qemu |
startet das image mit qemu (zum sicheren Testen) |
revert |
Wiederherstellung des dfsbuild-Endprodukts - falls mensch mit config die Arbeitskopie übertrieben verschmutzt hat |
Das kannst mehrere Aktionen als Parameter angeben.
Beispiele
- Die erste Erstellung des Grundsystems
./cb-build.sh dfsbuild
- Anpassungen vornehmen, ISO-Image erstellen und per ''qemu'' testen
./cb-build.sh config iso qemu
der CryptoBox-Kernel
Der Kernel für die CryptoBox wird statisch kompiliert. Wenn du ihn selbst bauen/verändern willst, dann am einfachsten so:
apt-get install kernel-tree-2.6.8
schnapp dir /boot/config-2.6.8 von einer gebauten CryptoBox CD und verändere sie nach deinen Wünschen
zum Erstellen des Debian-Pakets: make-kpkg --revision=1.dfs --rootcmd=fakeroot kernel_image
nun musst du eventuell in der dfsbuild.conf den Namen des vorherigen Kernel-Pakets durch deinen neuen ersetzen
Verwendung des Subversion-Repositories
Erstellung einer lokalen Arbeitskopie des Entwickler-Repositories: svn checkout https://svn.systemausfall.org/svn/cryptobox deincryptoboxverzeichnis
Deine Änderungen an der CryptoBox klannst du per svn commit in unser Repository übertragen. Dazu musst du, aber vorher Schreibrechte erhalten (die wir gerne vergeben).
Ablauf
Hier werden wichtige interne Abläufe der Cryptobox beschrieben.
der erste Bootvorgang
checken ob config partition auf der platte liegt
testmount der ersten partition
wenn ja, configs einlesen und system normal starten
wenn nicht:
webserver starten und anbieten die gefundene platte "hinzurichten"
nutzerdaten sammeln (ip adresse, netzwerkname usw.)
abfrage ob wirklich: wipe -f -k -R /dev/urandom /dev/?d? (fortschritt anzeigen)
wenn nicht, dann hilfeseite zeigen
partitionen anlegen
erste part. mkfs & mount (config)
fstab drauf schreiben
crypttab dito
interfaces dito
smb.conf dito
kennwort abfrage per cgi
zweite part. cryptsetup & mkfs & mount (crypto)
per webfrontend mounten
pw abfrage
checken ob mount geklappt hat
samba starten
...
nach timeout oder auf wunsch samba stoppen
cryptodevice entfernen
Bugs
unter qemu trat immer wieder ein Fehler "interleaved files not (yet) supported" auf
willkürlich waren manche Verzeichnisse ungültig (also hatten nur das Datei-Attribut)
die nicht-standardkonformen mkisofs-Optionen "-U -D" haben das Problem nicht behoben
eventuell hängt dies mit dem vorherigen Fehler zusammen: das System verhält sich systematisch fehlerhaft (beispielsweise löst der Start von nmbd generell ein segfault aus)
Hints
Du brauchst etwa 1GB Plattenplatz für den Bau einer Cryptobox. Das eigentliche CD-Image wird aber nur knapp 250MB groß.
Für dfsbuild bietet sich apt-cacher an. Damit müssen die Debian-Pakete nicht bei jedem neuen dfsbuild-Vorgang erneut heruntergeladen werden.
cb-build muss für folgende Vorgänge mit root Rechten laufen: dfsbuild, config, chroot, revert
cb-build.sh verwendet relative Pfad-Angaben - du solltest es also aus dem Verzeichnis heraus starten, in dem sich beispielsweise auch cb-build.sh befindet.
Netzwerk für qemu:
dein Systemkernel muss das tun/tap-Netzwerkgerät unterstützen (TODO: entsprechende Zeile der Kernel-Config einfuegen)
eventuell musst du "misc/qemu-ifup.sh" an dein System anpassen
andere Ansätze
Hier findest du ältere Ideen, die zum Teil schon recht umfangreiche Gestalt angenommen haben aber momentan von uns nicht weiter verfolgt werden.