######################################################################### # The Honeywall Bootable CD-ROM # # by # # The Honeynet Project and the Research Alliance # ######################################################################### Honeywall CD-ROM Anpassung ========================== Letzte Änderung: 04.10.2005 Dieses Dokument ist gegenwärtig lediglich eine Sammlung von Gedanken und Konzepten, wie man das ISO der roo-Distribution an seine Bedürfnisse anpassen kann. Es wird zu einem späteren Zeitpunkt geordnet. Erstellen einer Entwicklungsumgebung ------------------------------------ Das roo-ISO dient nicht nur als bootfähiges Installationsmeduim sondern enthält auch die Grundlagen für eine vollständige Entwicklungsumgebung, die es erlaubt, das ISO anzupassen und ein neues ISO zu erstellen. Alles was man dazu benötigt, ist das aktuelle ISO um ein Fedora Core 3 System aufzusetzen, das als Quelle für weitere ISOs dient, die an spezielle Wünsche und Bedürfnisse angepaßt sind. Um keine Verwirrung bei der Beschreibung des ISO Masteringprozesses zu erzeugen, ist es notwendig, einige Begriffe zu erläutern: Foundry, Factory und Stand-alone. Betrachten wir sie in umgekehrter Reihenfolge: Stand-alone Modus ----------------- Hierbei handelt es sich um den Modus, in dem wahrscheinlich die meisten Nutzer arbeiten. Es werden in diesem Modus keine Änderungen am Original-ISO vorgenommen. Der Nutzer lädt es herunter, brennt es auf CD-R/CD-RW und nimmt Änderungen mittels einer vorhandenen honeywall.conf Datei oder über die Benutzeroberflächen vor. Wenn Sie den das ISO auf diese Weise einsetzen wollen, brauchen Sie nicht weiter zu lesen. Factory Modus ------------- Diesen Modus wählt man, wenn man sein eigenes ISO mit angepassten lokalen Einstellungen, eigenen Passwörtern etc. erstellen möchte. Der Factory Modus setzt voraus, das Sie das vom Honeynet Projekt bereitgestellte ISO entpackt haben und jetzt in ihrem Entwicklungsverzeichnis arbeiten. Dieser Modus wird in diesem Dokument besprochen. Foundry Modus ------------- Dies ist der Modus, in dem das Honeynet Projekt sein ISO entwickelt. Jeder der neue Features für roo mit Hilfe des CVS-Repositorys und der ursprünglichen ISO- Erstellungsumgebung bereitstellt, arbeitet im Foundry-Modus. Alle anderen können diesen Modus ignorieren und deshalb wir er hier nicht weiter besprochen. Erstellen einer Factory-Modus Entwicklungsumgebung -------------------------------------------------- Um die Erstellung einer Factory-Modus Entwicklungsumgebung zu erleichtern, enthält das roo ISO Skripte und ein RPM-Paket das sich selbst in ein von Ihnen angegebenes Verzeichnis "entpackt", danach sicherstellt, das das benötigte hw-utils RPM-Paket installiert ist und abschließend die ISO-Erzeugungsskripte so konfiguriert, das ihre ISOs in dem gleichen Entwicklungsverzeichnis abgelegt werden. Wenn Sie wünschen, können Sie die Einstellungen so ändern, dass einzelne Dateien aus unterschiedlichen Quellen kommen, die ISOs an einem anderen Ort abgelegt werden, die Freigabe-Identifikatoren Ihren Vorstellungen entsprechen, etc. Die meisten dieser Einstellungen werden mit dem Programm "hwconfig" (das Programm ist Teil des hw-utils Paketes) und/oder durch Änderungen an der Datei "Makefile.in" vorgenommen. Die Entwicklungsumgebung ist um GNU Make und Vorlagendateien herum aufgebaut. In diese Vorlagendateien werden mittels "hwconfig" diejenigen Werte geschrieben, die der Nutzer ändern kann. Wir werden vielleicht in der Zukunft die Dateierweiterung .in ändern (vielleicht in .hwin) um Konflikte mit GNU autoconf/automake zu verhindern. Da das ISO alles enthält, um sich selbst zu entpacken, erstellt man seine Entwicklungsumgebung am einfachsten, indem man das ISO als loopback device mountet und dann das Skript "unpack-iso.sh" in der obersten Verzeichnisebene des ISOs zu startet. $ sudo mount -o ro,loop roo-1.0.b-119.iso /mnt $ ls /mnt autorun isolinux RPM-GPG-KEY-fedora-rawhide customization ks.cfg RPM-GPG-KEY-fedora-test dev README-en RPM-GPG-KEY-rawhide eula.txt RELEASE-NOTES-en RPM-LIST-roo-1.0.b-119 Fedora roo rpmlist.txt GPL ROO_BASE_VERSION TRANS.TBL hwconfig.cache RPM-GPG-KEY unpack-iso.sh hwconfig.defs RPM-GPG-KEY-beta hwconfig.defs.example RPM-GPG-KEY-fedora Einigen fällt vielleicht auf, das das Ergebnis stark (aber nicht exakt) nach der Struktur auf einer Fedora Installations-CD aussieht. Das liegt daran, das das grundsätzlich stimmt. Sie wurde nur überarbeitet und so angepaßt, das sie eine spezielle Kickstart- Konfigurationsdatei (ks.cfg)nutzt um die Installation zu steuern (diese Magie wurde con Earl Simmons und Allen Harper beschworen). [Anmerkung: Erwarten Sie nicht die exakt gleiche Struktur nach dem Entpacken des ISO. Statt dessen wir des so dargestellt, wie es für jemanden aussieht, der im Factory-Modus arbeitet. Sie existiert noch, liegt aber win Verzeichnis tiefer, im /cdrom Verzeichnis.] Die einzige Datei, um die man sich an diesem Punkt Gedanken machen sollte, ist "unpack- iso.sh". Sie wird sich um alles kümmern, was nötig ist um ihre Entwicklungsumgebung aufzusetzen: die Installation des hw-utils Paketes (falls noch nicht geschehen), die Erstellung des Entwicklungsverzeichnisses und die Anpassung aller nötigen Dateien, damit der build-Vorgang funktioniert. Danach brauchen sie nur noch in ihr Entwicklungsverzeichnis zu wechseln und müssen nicht mehr daraus hervorkommen, wenn Sie das nicht möchten. Um dahin zu kommen, starten Sie jetzt "unpack-iso.sh": $ sudo /mnt/unpack-iso.sh /mnt /usr/local/src/rooiso /mnt/unpack-iso.sh: directory not found: /usr/local/src/rooiso Directory /usr/local/src/rooiso does not exist. Shall I create it? [y/n] y /mnt/unpack-iso.sh Extracting contents of /mnt to /usr/local/src/rooiso/ ... Deleting pesky TRANS.TBL files...Done. Creating links for customization scripts...Done. Configuring development environment...Done. An diesem Punkt könnten Sie jetzt ein identisches ISO, ohne jede Änderung erzeugen, indem Sie einfach folgendes tun: $ cd /usr/local/src/rooiso $ sudo make iso [jede Menge Meldungen entfernt...] -rw-r--r-- 1 root root 274587648 Feb 20 12:15 roo-1.0.changeme-2.iso -rw-r--r-- 1 root root 57 Feb 20 12:15 roo-1.0.changeme-2.iso.md5 make[1]: Leaving directory `/usr/local/src/rooiso' Sie haben nun eine bootfähige Installations-ISO. Den selben Mechanismus können Sie verwenden, um weitere Entwicklungsverzeichnisse im Factory-Modus zu erstellen. Installation einer vorkonfigurierten honeywall.conf Datei --------------------------------------------------------- Einer der hauptsächlichen Gründe, eine Entwicklungsumgebung zu verwenden, ist der, das sie alle Variablen in der honeywall.conf auf die von Ihnen gewünschten Werte setzen können, bevor Sie das ISO auf eine CD-RW brennen. Eine Bitte: verwenden Sie CD-RW, wann immer es geht. Sie vermeiden eine Menge überflüssigen Plastikmüll durch ungenutzte ISOs. Um eine Kopie der honeywall.conf zu bekommen können Sie "rpm2cpio" verwenden oder Sie installieren eine Honeywall und kopieren diese Datei per Diskette oder SSH darauf. Mehr über die Funktionsweise von "rpm2cpio" erfahren Sie hier. "rpm2cpio" verwenden Sie folgendermaßen: $ cd /usr/local/src/rooiso $ rpm2cpio cdrom/roo/roo-base*.rpm | sudo cpio -ivd ./etc/honeywall.conf $ sudo mv etc/honeywall.conf customization/ $ sudo rmdir etc $ sudo vi customization/honeywall.conf [Nehmen Sie ihre Änderungen vor und speichern Sie.] Nun können Sie "sudo make iso" eingeben und haben ein angepaßtes ISO, das Sie im Hauptmenü unter dem Punkt 4, gefolgt von "Standards aus /etc/honeywall.conf" konfigurieren können. Wenn Sie die Variable hwHEADLESS auf "yes" gesetzt haben, konfiguriert sich die Honeywall automatisch mit der Datei /etc/honeywall.conf, genauso wie sie es getan hätte, wenn sie eine Diskette verwendet hätten. [Anmerkung: dies wird in das unpack-iso.sh Skript integriert werden, so das diese Schritte unnötig werden] Vorinstallierte SSH-Schlüssel ----------------------------- Es gibt zwei Sorten von SSH-Schlüsseln, die Sie wahrscheinlich gerne auf Ihrer Honeywall vorinstallieren möchten: öffentliche und geheime RSA und das Schlüssel für die Honeywall selbst (damit die Managementstation die Honeywall authentifizieren kann) und öffentliche SSH-Schlüssel für den Managementaccount (damit die Honeywall die eingehende SSH- Verbindung von der Managementstation authentifizieren kann). Diese Schlüssel werden im Factory-Modus dem ISO hizugefügt, indem man sie in das /customize Verzeichnis kopiert. Im folgenden Beispiel nehmen wir an, sie hätten die RSA/DSA Schlüssel, die die Honeywall nutzen soll bereits erzeugt und sie im Verzeichnis ~/honeywall abgelegt: $ cd /usr/local/src/rooiso $ cp ~/.ssh/id_dsa.pub customize/ssh-keys/ $ cp ~/honeywall/ssh_host_[rd]sa_key* customize/ssh-keys Nun können Sie mit "sudo make iso" ein ISO mit den SSH-Schlüsseln integriert erzeugen. Hinzufügen von zusätzlichen RPM-Paketen etc. -------------------------------------------- Alles andere was Sie bei der Installation noch tun möchten, kann durch editieren der Datei customization/custom.sh erreicht werden. Sie wird beim ersten Starten durch /usr/sbin/bootcustom.sh ausgeführt. Das Beispiel im Verzeichnis /customize zeigt Ihnen, was alles möglich ist. -- Dave Dittrich Information Assurance Researcher, dittrich@u.washington.edu The iSchool http://staff.washington.edu/dittrich University of Washington PGP key http://staff.washington.edu/dittrich/pgpkey.txt Fingerprint FE97 0C57 0843 F3EB 49A1 0CD0 8E0C D0BE C838 CCB5