Debian Template: Unterschied zwischen den Versionen

Aus Xinux Wiki
Zur Navigation springen Zur Suche springen
Zeile 33: Zeile 33:
 
  %sudo  ALL=(ALL:ALL) NOPASSWD:ALL
 
  %sudo  ALL=(ALL:ALL) NOPASSWD:ALL
  
= Automatische Generation neuer Schlüssel des SSH-Hosts =
+
= Automatische SSH-Hostschlüssel nur auf dem Template erzeugen =
* Damit nicht alle Klone der Vorlage über diesselbe Identifikation verfügen, löschen wir die Schlüssel der Vorlage und generieren diese bei Bedarf neu
+
 
* '''cd ''/etc/ssh'' '''
+
Damit nicht alle Klone des Templates dieselben SSH-Hostschlüssel verwenden, sollen die Schlüssel nur dann neu erzeugt werden, wenn der Hostname ''debian-template'' ist. Dies wird beim Start automatisch über einen ExecStartPre-Hook im ssh.service erledigt.
* '''rm -vi ''ssh_host_*'' '''
+
 
* Anschließend erstellen wir ein einfaces Skript für die Generation der Schlüssel falls sie fehlen
+
== Skript zur Erzeugung der Schlüssel ==
* '''vim ''/usr/local/sbin/new-ssh-host-keys'' '''
+
 
 +
Datei: /usr/local/sbin/new-ssh-host-keys
  
 
<syntaxhighlight lang="bash">
 
<syntaxhighlight lang="bash">
 
#!/bin/bash
 
#!/bin/bash
ssh_dir="/etc/ssh"
 
ls $ssh_dir/ssh_host_* > /dev/null 2>&1 && exit 0
 
  
cd $ssh_dir && ssh-keygen -A
+
template_name="debian-template"
 +
current_host=$(hostname)
 +
 
 +
if [ "$current_host" = "$template_name" ]; then
 +
    echo "Template erkannt – SSH-Hostschlüssel werden neu erzeugt."
 +
    rm -f /etc/ssh/ssh_host_*
 +
    ssh-keygen -A
 +
else
 +
    echo "Nicht das Template – keine Änderung."
 +
fi
 
</syntaxhighlight>
 
</syntaxhighlight>
  
* '''chmod +x ''/usr/local/sbin/new-ssh-host-keys'' '''
+
Ausführbar machen:
* Jetzt muss [[:Kategorie:systemd|systemd]] so angepasst werden, dass der '''ssh.service''' vor dem Start dieses Skript ausführt
+
 
* Dazu erstellen wir einen weiteren Dienst
+
chmod +x /usr/local/sbin/new-ssh-host-keys
* '''systemctl edit --full --force new-ssh-host-keys.service'''
+
 
 +
== systemd-Dienst anpassen ==
 +
 
 +
Der ssh.service wird so angepasst, dass das Skript vor dem Start ausgeführt wird.
 +
 
 +
systemctl edit ssh.service
 +
 
 +
Folgendes ergänzen:
 +
 
 +
<pre>
 +
[Service]
 +
ExecStartPre=/usr/local/sbin/new-ssh-host-keys
 +
</pre>
  
[Unit]
+
Änderung aktivieren:
Description=Neue Schlüssel des SSH-Hosts nach dem Klonen
 
Wants=basic.target
 
 
[Service]
 
ExecStart=/usr/local/sbin/new-ssh-host-keys
 
Type=oneshot
 
 
[Install]
 
WantedBy=ssh.service
 
  
* Die Option ''Type=oneshot'' sorgt dafür, dass der Befehl komplett ausgeführt wurde, bevor '''ssh.service''' startet
+
systemctl daemon-reexec
* '''systemctl enable new-ssh-host-keys.service'''
 
* Der Dienst '''ssh.service''' sollte nun warten bis der Dienst '''new-ssh-host-keys.service''' fertig ist
 
* '''systemctl edit ssh.service'''
 
  
...
+
== Ergebnis ==
[Unit]
 
After=network.target auditd.service new-ssh-host-keys.service
 
...
 
  
* Nun sollte jeder Boot zu neuen Schlüssel des SSH-Hosts führen
+
* Auf dem Template-Host ''debian-template'' werden die alten Schlüssel gelöscht und neu erzeugt
 +
* Auf allen Klonen passiert nichts – die Schlüssel bleiben erhalten
 +
* Kein zusätzlicher systemd-Dienst nötig
 +
* Sauber integriert in den bestehenden ssh.service

Version vom 12. April 2025, 13:09 Uhr

Anleitung für das Erstellen einer Vorlage für einfache Debian-Server zum Testen.

Mindestvorraussetzungen für Hardware

  • 1 CPU
  • 1 GB RAM
  • 10 GB Festplattenspeicher

Installationsoptionen

  • Falls bei einem Menü nach dem Installieren einer graphischen Oberfläche gefragt wird, sollten die Haken dafür entnommen werden
  • Die Installation eines SSH-Servers sollte aber angekreuzt werden

Einrichtung

  • Für eine angenehme Schriftgröße kann der Befehl dpkg-reconfigure console-setup benutzt werden, um diese auf den Bildschirm anzupassen
  • Diese Pakete sollte man nachzuinstallieren, um auf der Kommandozeile arbeiten zu können
  • apt install vim sudo git curl tcpdump nmap
  • Der Standardeditor sollte auf vim.basic gestellt werden
  • update-alternatives --config editor
  • Falls ein Benutzer passwortlos zum root-Nutzer werden darf, muss dieser in der sudo-Gruppe sein und die /etc/sudoers-Datei angepasst werden
  • gpasswd -a user sudo
  • sicheres Bearbeiten der /etc/sudoers-Datei
  • visudo
# Kein Check des Hostnamens nötig
# Das macht nur Probleme beim Ändern des Hostnamens
Defaults !fqdn
...
# Alter Eintrag
# %sudo   ALL=(ALL:ALL) ALL
# Neuer Eintrag
%sudo   ALL=(ALL:ALL) NOPASSWD:ALL

Automatische SSH-Hostschlüssel nur auf dem Template erzeugen

Damit nicht alle Klone des Templates dieselben SSH-Hostschlüssel verwenden, sollen die Schlüssel nur dann neu erzeugt werden, wenn der Hostname debian-template ist. Dies wird beim Start automatisch über einen ExecStartPre-Hook im ssh.service erledigt.

Skript zur Erzeugung der Schlüssel

Datei: /usr/local/sbin/new-ssh-host-keys

#!/bin/bash

template_name="debian-template"
current_host=$(hostname)

if [ "$current_host" = "$template_name" ]; then
    echo "Template erkannt – SSH-Hostschlüssel werden neu erzeugt."
    rm -f /etc/ssh/ssh_host_*
    ssh-keygen -A
else
    echo "Nicht das Template – keine Änderung."
fi

Ausführbar machen:

chmod +x /usr/local/sbin/new-ssh-host-keys

systemd-Dienst anpassen

Der ssh.service wird so angepasst, dass das Skript vor dem Start ausgeführt wird.

systemctl edit ssh.service

Folgendes ergänzen:

[Service]
ExecStartPre=/usr/local/sbin/new-ssh-host-keys

Änderung aktivieren:

systemctl daemon-reexec

Ergebnis

  • Auf dem Template-Host debian-template werden die alten Schlüssel gelöscht und neu erzeugt
  • Auf allen Klonen passiert nichts – die Schlüssel bleiben erhalten
  • Kein zusätzlicher systemd-Dienst nötig
  • Sauber integriert in den bestehenden ssh.service