Files
infrastructure/docs/GNAI-002-INFRA_Users.md
T

5.7 KiB

Standard Operating Procedure

Dokumenten-ID: GNAI-002-INFRA
Titel: Benutzerverwaltung, SSH-Härtung & Netzwerkkonfiguration (Phase 2)
Version: 1.0


1. Zweck und Geltungsbereich

Dieses Dokument beschreibt die Erstellung von Systembenutzern mit Berechtigungen, die Härtung des SSH-Dienstes (Abschaltung von Root-Login und Passwort-Authentifizierung), die Umstellung auf eine statische IP-Adresse sowie die Konfiguration des SSH-Zugriffs von Admin-Workstations auf LLM-Servern.


2. Voraussetzungen & Berechtigungen

  • Bereits installiertes Debian-Grundsystem gemäß GNAI-INFRA-001.
  • Root-Zugriff oder Benutzer mit sudo-Rechten.
  • Admin-Workstation mit lokal installierter SSH-Suite (ssh-keygen, ssh-copy-id).

3. Prozessbeschreibung

3.1 Benutzerverwaltung & Sudo-Berechtigungen (Server-Seite)

1. Sudo-Paket installieren & prüfen (falls noch nicht geschehen)

Als root am Server anmelden:

su -
apt update && apt install -y sudo

2. Benutzer anlegen & Berechtigungen vergeben

Wichtig: Beim Anlegen von Benutzern immer adduser verwenden (interaktive Eingabe von Passwort und Benutzerdaten). Falls versehentlich userdel benötigt wird, zwingend die Option -r nutzen, um das Home-Verzeichnis mit aufzuräumen (sudo userdel -r <username>).

Neuen Benutzer anlegen und zur sudo-Gruppe hinzufügen:

# Beispiel für Benutzer 'ghost' oder 'debugofen'
sudo adduser debugofen
sudo usermod -aG sudo debugofen

3.2 Statische Netzwerkkonfiguration (Server-Seite)

1. Netzschnittstelle ermitteln & anpassen

Primäre Netzwerkschnittstelle anzeigen lassen (z. B. enp8s0):

ip addr show

Datei bearbeiten: /etc/network/interfaces:

sudo nano /etc/network/interfaces

Netzwerkkonfiguration für statische IP eintragen:

# Loopback Interface
auto lo
iface lo inet loopback

# Primary Network Interface
allow-hotplug enp8s0
iface enp8s0 inet static
    address 10.0.0.90/24
    gateway 10.0.0.1
    dns-nameservers 10.0.0.1 1.1.1.1

2. DNS-Resolver prüfen/anpassen

Datei überprüfen /etc/resolv.conf:

sudo nano /etc/resolv.conf

Sicherstellen, dass folgende Nameserver eingetragen sind:

nameserver 10.0.0.1
nameserver 1.1.1.1

3. Netzwerkdienst neustarten & Funktion prüfen

sudo systemctl restart networking
ip -4 addr
ping -c 4 google.com

(Tritt ein Konfigurationskonflikt auf, das System einmal per sudo reboot neustarten).


3.3 SSH-Key-Generierung & Übertragung (Workstation-Seite)

Die folgenden Schritte werden auf der lokalen Workstation ausgeführt.

1. Ed25519 SSH-Schlüsselpaar erzeugen

ssh-keygen -t ed25519 -C "ghost@ghostnet-ki" -f ~/.ssh/id_ed25519_ghost
ssh-keygen -t ed25519 -C "debugofen@ghostnet-ki" -f ~/.ssh/id_ed25519_debugofen

2. Public Keys auf den Server übertragen

Der Befehl ssh-copy-id wird verwendet, um die öffentlichen Schlüssel auf den Server zu kopieren (vorläufig noch mit Passwort-Authentifizierung):

ssh-copy-id -i ~/.ssh/id_ed25519_ghost.pub ghost@10.0.0.90
ssh-copy-id -i ~/.ssh/id_ed25519_debugofen.pub debugofen@10.0.0.90

3. Schlüsselbasierten Login testen

ssh -i ~/.ssh/id_ed25519_ghost ghost@10.0.0.90
ssh -i ~/.ssh/id_ed25519_debugofen debugofen@10.0.0.90

4. Workstation Client-Config einrichten (~/.ssh/config)

Die Datei ~/.ssh/config auf der Workstation erstellen/bearbeiten, um Kurznamen für Verbindungen zu nutzen:

nano ~/.ssh/config

Inhalt eintragen:

Host *
    AddKeysToAgent yes
    IdentitiesOnly yes

Host ghostnet.ki
    Hostname 10.0.0.90
    User ghost
    IdentityFile ~/.ssh/id_ed25519_ghost

Berechtigungen auf der Workstation korrigieren:

chmod 600 ~/.ssh/config

Verbindung über den Alias testen:

ssh ghostnet.ki

3.4 SSH-Dienst härten (Server-Seite)

Sobald der SSH-Key-Login erfolgreich getestet wurde, wird die Passwort-Authentifizierung aus Sicherheitsgründen serverseitig komplett deaktiviert.

1. Drop-in-Konfiguration für SSH erstellen

sudo nano /etc/ssh/sshd_config.d/99-security.conf

Den folgenden Inhalt einfügen:

# Root-Login über SSH komplett verbieten
PermitRootLogin no

# Passwort-Authentifizierung deaktivieren (nur SSH-Keys erlauben)
PasswordAuthentication no
KbdInteractiveAuthentication no

# Leere Passwörter verbieten
PermitEmptyPasswords no

# Nur explizite SSH-Key Methoden erlauben
PubkeyAuthentication yes

2. SSH-Konfiguration prüfen und Dienst neustarten

Achtung: Die bestehende SSH-Sitzung nicht schließen, bevor der Login in einem zweiten Terminalfenster erfolgreich verifiziert wurde!

# Syntaktische Prüfung der Konfiguration
sudo sshd -t

# Wenn sshd -t keine Fehler ausgibt, Dienst neustarten
sudo systemctl restart sshd

4. Abnahmekriterien (Checkliste für den Junior-Admin)

  • Benutzerprüfung: Der Benutzer kann sich mit sudo administrative Rechte verschaffen (whoami nach sudo ergibt root).
  • Netzwerk: Server ist unter der statischen IP 10.0.0.90 erreichbar. Ausgehender Datenverkehr funktioniert (ping google.com).
  • SSH-Alias: Der Login von der Workstation über ssh ghostnet.ki funktioniert ohne Passworteingabe.
  • Root-Sperre: Direct-Login als Root per SSH wird abgelehnt (ssh root@10.0.0.90 -> Permission denied).
  • Passwort-Sperre: Login-Versuch ohne hinterlegten SSH-Key wird direkt abgelehnt (keine Passwort-Aufforderung mehr).

5. Dokumentation der Änderungen

Datum Version Geändert von Beschreibung der Änderung
2026-08-26 1.0 spektr Erstellung des Dokuments (Benutzer, Netzwerkkonfiguration, SSH-Härtung)