226 lines
5.7 KiB
Markdown
226 lines
5.7 KiB
Markdown
# 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:
|
|
|
|
```bash
|
|
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:
|
|
|
|
```bash
|
|
# 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`):
|
|
|
|
```bash
|
|
ip addr show
|
|
```
|
|
|
|
Datei bearbeiten: `/etc/network/interfaces`:
|
|
|
|
```bash
|
|
sudo nano /etc/network/interfaces
|
|
```
|
|
|
|
Netzwerkkonfiguration für statische IP eintragen:
|
|
|
|
```text
|
|
# 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`:
|
|
|
|
```bash
|
|
sudo nano /etc/resolv.conf
|
|
```
|
|
|
|
Sicherstellen, dass folgende Nameserver eingetragen sind:
|
|
|
|
```text
|
|
nameserver 10.0.0.1
|
|
nameserver 1.1.1.1
|
|
```
|
|
|
|
#### 3. Netzwerkdienst neustarten & Funktion prüfen
|
|
|
|
```bash
|
|
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
|
|
|
|
```bash
|
|
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):
|
|
|
|
```bash
|
|
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
|
|
|
|
```bash
|
|
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:
|
|
|
|
```bash
|
|
nano ~/.ssh/config
|
|
```
|
|
|
|
Inhalt eintragen:
|
|
|
|
```text
|
|
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:
|
|
|
|
```bash
|
|
chmod 600 ~/.ssh/config
|
|
```
|
|
|
|
Verbindung über den Alias testen:
|
|
|
|
```bash
|
|
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
|
|
|
|
```bash
|
|
sudo nano /etc/ssh/sshd_config.d/99-security.conf
|
|
```
|
|
|
|
Den folgenden Inhalt einfügen:
|
|
|
|
```text
|
|
# 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!
|
|
|
|
```bash
|
|
# 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) |
|