Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen angezeigt.

Link zu dieser Vergleichsansicht

Beide Seiten der vorigen Revision Vorhergehende Überarbeitung
Nächste Überarbeitung
Vorhergehende Überarbeitung
arch:boot_iso [18.12.2022 12:40. ] djangoarch:boot_iso [31.10.2023 18:52. ] (aktuell) – Externe Bearbeitung 127.0.0.1
Zeile 12: Zeile 12:
 ===== Konfiguration und Bau des ISO-Images ===== ===== Konfiguration und Bau des ISO-Images =====
 ==== Update der vorhandenen Installation ==== ==== Update der vorhandenen Installation ====
-Bevor wir zur Installation der benötigten Werkzeuge, Installationn und Bau unseres ISO-Images schreiten, aktualisieren wir noch unser bestehendes System.+Bevor wir zur Installation der benötigten Werkzeuge, Installation und Bau unseres ISO-Images schreiten, aktualisieren wir noch unser bestehendes System.
  
 === Keyring Initialisieren === === Keyring Initialisieren ===
Zeile 50: Zeile 50:
 Im Paket **''archsio''** werden zwei Benutzerprofile mitgeliefert: Im Paket **''archsio''** werden zwei Benutzerprofile mitgeliefert:
   * **baseline** \\ Im baseline Profil enthalten sind lediglich die aller nötigsten Pakete, welche zum Booten eines Live-ISO-Images und zur anschliessenden Grundinstallation von Arch Linux benötigt werden.    * **baseline** \\ Im baseline Profil enthalten sind lediglich die aller nötigsten Pakete, welche zum Booten eines Live-ISO-Images und zur anschliessenden Grundinstallation von Arch Linux benötigt werden. 
-  * **releng** \\ Das releng Profil hingegen, enthält alle tagesaktuellen Pakete und entspricht dem monatlich veröffentlichten Installationsmedium und ist im Gegensatz des baseline Profiles etwa dreimal so groß, aber mit einer Gesamtgröße von nicht einmal 800 MB doch überschaubar.  +  * **releng** \\ Das releng Profil hingegen, enthält alle tagesaktuellen Pakete und entspricht dem monatlich veröffentlichten Installationsmedium und ist im Gegensatz des baseline Profils etwa dreimal so gross, aber mit einer Gesamtgrösse von nicht einmal 800 MB doch überschaubar.  
  
 Für unser eigenes individuell angepasstes Boot-ISO-Image wollen als Basis das **''releng''** Profil verwenden und darauf aufbauen. Zunächst kopieren wir uns also den Inhalt dieses Verzeichnisses. Für unser eigenes individuell angepasstes Boot-ISO-Image wollen als Basis das **''releng''** Profil verwenden und darauf aufbauen. Zunächst kopieren wir uns also den Inhalt dieses Verzeichnisses.
Zeile 78: Zeile 78:
 und haben folgende Bedeutung: und haben folgende Bedeutung:
   * **''ansible''** : Entspricht dem Account-/Username.   * **''ansible''** : Entspricht dem Account-/Username.
-  * **''$6$''** : Entspricht dem Algorithmus, welcher bei der Erstellung des Hashwertes verwendet wurde. \\ **''$1''** steht dabei für **[[https://de.wikipedia.org/wiki/Message-Digest_Algorithm_5|md5]]** \\ **''$2$''** für **[[https://de.wikipedia.org/wiki/Blowfish|Blowfish]]**, \\ **''$5$''** für **[[https://de.wikipedia.org/wiki/SHA-2|SHA-256]]** und \\ **[[https://de.wikipedia.org/wiki/SHA-2|$6$]]** als verwendeten Algorithmus.+  * **''$6$''** : Entspricht dem Algorithmus, welcher bei der Erstellung des Hashwertes verwendet wurde. Weiterführende Informationen zu Passwort-Hashing-Algorithmen finden sich hier in diesem [[https://dusted.codes/sha-256-is-not-a-secure-password-hashing-algorithm|Artikel]] zu finden! \\ **''$1''** steht dabei für **[[https://de.wikipedia.org/wiki/Message-Digest_Algorithm_5|md5]]** \\ **''$2$''** für **[[https://de.wikipedia.org/wiki/Blowfish|Blowfish]]**, \\ **''$5$''** für **[[https://de.wikipedia.org/wiki/SHA-2|SHA-256]]** und \\ **''$6$''** für **[[https://de.wikipedia.org/wiki/SHA-2|SHA-512]]** als verwendeten Algorithmus.
   * **''7d6OVSAcprhrUHrX''** : Dies ist das **[[https://de.wikipedia.org/wiki/Salt_(Kryptologie)|Salt]]** welches als zufällige Komponente verwendet wird, um so bei der Erstellung eines Passworthashes einen Zufallswert an die Hand zu reichen. Ohne diesen Wert würde bei der Erzeugung des Passworthashes bei gleichem Passwort auch immer den gleichen Hash Wert erzeugt, was aus dem Blickwinkel Security als Problem erkannt werden würde.   * **''7d6OVSAcprhrUHrX''** : Dies ist das **[[https://de.wikipedia.org/wiki/Salt_(Kryptologie)|Salt]]** welches als zufällige Komponente verwendet wird, um so bei der Erstellung eines Passworthashes einen Zufallswert an die Hand zu reichen. Ohne diesen Wert würde bei der Erzeugung des Passworthashes bei gleichem Passwort auch immer den gleichen Hash Wert erzeugt, was aus dem Blickwinkel Security als Problem erkannt werden würde.
   * **''YJUg2rUQwRfJ3UdvQjSOR3cmS0xwoRRKMNCjLNsjAuleuZKCHvOh9ZXWPze.1CQ9Y2uwAS59SsMIwYKJ1lgBr.''** : Der eigentliche Hashwert des Benutzerpasswortes.   * **''YJUg2rUQwRfJ3UdvQjSOR3cmS0xwoRRKMNCjLNsjAuleuZKCHvOh9ZXWPze.1CQ9Y2uwAS59SsMIwYKJ1lgBr.''** : Der eigentliche Hashwert des Benutzerpasswortes.
-  * **''18434''** : Das Datum, an dem das Passwort das letzte Mal geändert wurde. Dies ist die Anzahl der Tage seit dem 01.01.1970 an dem das Passwort zu letzt gesetzt bzw. abgeändert wurde.+  * **''18434''** : Das Datum, an dem das Passwort das letzte Mal geändert wurde. Dies ist die Anzahl der Tage seit dem 01.01.1970 an dem das Passwort zu Letzt gesetzt bzw. abgeändert wurde.
   * **''0''** : Die Anzahl der Tage bevor das Passwort geändert werden kann - die **''0''** definiert, dass das Passwort jederzeit geändert werden könnte.   * **''0''** : Die Anzahl der Tage bevor das Passwort geändert werden kann - die **''0''** definiert, dass das Passwort jederzeit geändert werden könnte.
   * **''99999''** : Entspricht die Anzahl der Tage nachdem das Passwort geändert werden muss - die **''9999''** definiert, dass das Passwort nie abläuft und daher auch zwangsweise nie geändert werden muss.   * **''99999''** : Entspricht die Anzahl der Tage nachdem das Passwort geändert werden muss - die **''9999''** definiert, dass das Passwort nie abläuft und daher auch zwangsweise nie geändert werden muss.
   * **''7''** : Die Anzahl der Tage nachdem der Benutzeraccount ggf. deaktiviert wird, sollte der eingestellte Zeitraum für den Passwortwechsel nicht eingehalten worden sein.   * **''7''** : Die Anzahl der Tage nachdem der Benutzeraccount ggf. deaktiviert wird, sollte der eingestellte Zeitraum für den Passwortwechsel nicht eingehalten worden sein.
   * **''::''** : Die Anzahl der Tage, seit dem der Account bereits gesperrt worden ist. In diesem Beispiel ist dies ein leeres Feld mit dem signalisiert wird, dass der Account aktuell in Verwendung also aktiv ist.   * **''::''** : Die Anzahl der Tage, seit dem der Account bereits gesperrt worden ist. In diesem Beispiel ist dies ein leeres Feld mit dem signalisiert wird, dass der Account aktuell in Verwendung also aktiv ist.
-  * **''::''** : Dies ist ein leeres Reeserve-Feld, welches für künftige Benutzung/Definition reserviert ist.  +  * **''::''** : Dies ist ein leeres Reserve-Feld, welches für künftige Benutzung/Definition reserviert ist.  
  
 Wir brauchen also demnach zwei Dinge: Wir brauchen also demnach zwei Dinge:
   - Die Tage die seit dem 01.01.1970 vergangen sind und   - Die Tage die seit dem 01.01.1970 vergangen sind und
-  - das gehashte Passwort unseres Benutzes **root**.+  - das gehashte Passwort unseres Benutzers **root**.
  
 Den ersten Wert berechnen wir einfach wie folgt: Den ersten Wert berechnen wir einfach wie folgt:
Zeile 108: Zeile 108:
  
 === SSH-Key === === SSH-Key ===
-Nun benötigen wir noch den Public-Key +Nun benötigen wir noch den Public-Key unseres Ansible-Accounts.  
 +   $ cat .ssh/id_ed25519_ansible.pub  
 + 
 +  ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAILti67aZOSetfvNFxVVqkJAfSKXjyvemB3kRZEQ5q/kf Ansible Systemuser 
 + 
 +Für diesen Schlüssel benötigen wir auf dem Zielsystem das betreffende Verzeichnis, welches wir nun anlegen. 
 +   # mkdir /usr/local/src/customiso/airootfs/root/.ssh 
 + 
 +  mkdir: created directory '/usr/local/src/customiso/airootfs/root/.ssh' 
 + 
 +Anschliessend passen wir noch die Rechte an dem Verzeichnis an. 
 +   # chmod 700 /usr/local/src/customiso/airootfs/root/.ssh 
 + 
 +Im nächsten Schritt hinterlegen wir unseren public-key in der Datei **''authorized_keys''**. 
 +   # vim /usr/local/src/customiso/airootfs/root/.ssh/authorized_keys 
 +<file /usr/local/src/customiso/airootfs/root/.ssh/authorized_keys>ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAILti67aZOSetfvNFxVVqkJAfSKXjyvemB3kRZEQ5q/kf Ansible Systemuser</file> 
 + 
 +Auch hier passen wir noch die Rechte an der Datei an. 
 +   # cmod 600 /usr/local/src/customiso/airootfs/root/.ssh 
 + 
 +=== Autologin deaktivieren === 
 +Da wir nicht möchten, dass der Benutzer **''root''** automatisch auf der Konsole angemeldet werden soll, löschen wir die zugehörige Konfigurationsdatei in unserer Umgebung. 
 +   # rm /usr/local/src/customiso/airootfs/etc/systemd/system/getty\@tty1.service.d/autologin.conf 
 + 
 +==== Bau des ISO-Images ==== 
 +Nach Abschluss der Vorarbeiten können wir nun unser eigenes Arch Linux Boot-ISO-Image wir folgt erstellen: 
 +   # mkarchiso -v -w /usr/local/src/work/ -o /usr/local/src/out /usr/local/src/customiso/ 
 + 
 +Je nach Performance unserer Test-Umgebung steht und nach ca. 10 - 15 Minuten im gewählten Verzeichnis **''/usr/local/src/out''** unser Boot-Image zur Verfügung.  
 +<code>... 
 +Writing to 'stdio:/usr/local/src/out/archlinux-2022.12.18-x86_64.iso' completed successfully. 
 + 
 +[mkarchiso] INFO: Done! 
 +819M /usr/local/src/out/archlinux-2022.12.18-x86_64.iso</code> 
 + 
 +<WRAP center round tip 65%> 
 +Will man erneut die Erstellung des ISO-Images anstossen, löscht man vor einem erenuten Aufruf von **''mkarchiso''** die beiden Verzeichnisse: \\ 
 + **''/usr/local/src/work/''** und **''/usr/local/src/out''**. 
 +   # rm -rf /usr/local/src/work/ /usr/local/src/out 
 +</WRAP> 
 + 
 +Nun müssen wir unser erstelltes ISO-Image nur noch auf dem Virtualisierungsknoten in das zugehörige Verzeichnis verschieben, in dem sich unsere Boot-Images befinden: /var/lib/libvirt/boot/
 + 
 +===== Zwischenergebnis ===== 
 +<WRAP center round important 80%> 
 +**Wichtig**: \\ 
 + 
 +Wir werden natürlich nicht jedes mal den Bau eines aktuellen auf unsere Bedürfnisse zugeschnittenes **//Custom Boot Image//** per Hand auf Basis dieser Musterlösung aus dem WIKI via **//cut 'n' paste//** manuell erstellen, sondern dies mit Hilfe eines Ansible-Playbooks automatisiert erledigen lassen. Hierzu demnächst mehr => FIXME :!: 
 +</WRAP> 
 + 
 +===== Muster-Test-VM zurückbauen ===== 
 +Nach getaner Arbeit benötigen wir zur gegebenen Zeit unsere Test-Maschine nicht mehr. Wir können diese daher wie gewohnt herunterfahren ... 
 +   # virsh shutdown vml000200 
 + 
 +... oder natürlich auch auf die "harte Tour": 
 +   # virsh destroy vml000200 
 + 
 +Anschliessend löschen wir die VM samt ihrem zugehörigen Image vom System. 
 +   # virsh undefine vml000200 --remove-all-storage 
 +<code>Domain vml000200 has been undefined 
 +Volume 'vda'(/var/lib/libvirt/images/vml000200.img) removed.</code> 
 + 
 +====== Links ====== 
 +  * **[[start|Zurück zur "Arch-Linux"-Übersicht]]** 
 +  * **[[wiki:start|Zurück zu >>Projekte und Themenkapitel<<]]** 
 +  * **[[https://dokuwiki.nausch.org/doku.php/|Zurück zur Startseite]]**
  
  
  
  • arch/boot_iso.1671367248.txt.gz
  • Zuletzt geändert: 18.12.2022 12:40.
  • von django