docs: add Path 18 (SSH Agent) & 19 (Zero Trust) and removing legacy Red Hat refs

This commit is contained in:
2025-12-12 01:09:54 +01:00
parent a1768a9a6f
commit d5b4a7caac
2 changed files with 291 additions and 0 deletions

154
crumbpage-18-ssh-agent.md Normal file
View File

@@ -0,0 +1,154 @@
# 🔐 Crumbpage 18: Der Schlüsselmeister (SSH Agent)
**Subtitle:** *Nie wieder Passwörter tippen ohne Sicherheit zu verlieren*
**Pfad:** 18 von X
**Schwierigkeit:** ⭐⭐⭐ (3/5)
**Zeit:** ~1 Stunde
**Voraussetzungen:** [SSH Keys](crumbpage-08-ssh-keys.md), [Workstation](crumbpage-17-workstation.md)
> *"Ein guter Diener hält dir die Schlüssel bereit, aber gibt sie niemandem sonst."* 🗝️
---
## 📋 Was du in diesem Pfad lernst
```
✓ Was macht der ssh-agent?
✓ ssh-add (Schlüssel hinzufügen)
✓ Agent Forwarding (Der magische Sprung)
✓ Keychain Integration (Mac/Linux)
✓ Die Gefahren von Forwarding
```
---
## 🎯 Lernziele
Nach diesem Pfad kannst du:
- [ ] Den `ssh-agent` starten und nutzen
- [ ] Verstehen, warum dein Private Key dein Gerät nie verlassen sollte
- [ ] Durch einen Bastion-Host "durchspringen" (Agent Forwarding)
- [ ] Den Agent sicher beenden oder sperren
---
## 🗝️ Das Problem: Passphrases nerven
Du hast deine Keys (wie in Pfad 8 gelernt) mit einer **Passphrase** gesichert. Gut!
Aber jetzt musst du bei jedem `git push` oder `ssh server` das Passwort tippen.
Das nervt. Und was nervt, wird abgeschaltet (Passwörter entfernt). **Böse!** 🛑
**Die Lösung: Der SSH Agent.**
Er ist ein kleiner Prozess im Hintergrund, der deine *entschlüsselten* Keys im RAM hält.
Du tippst das Passwort **einmal** (beim Start oder ersten Nutzen), und der Agent erledigt den Rest für dich.
---
## 🛠️ Die Basics
### 1. Lebt der Agent?
```bash
$ env | grep SSH_AUTH_SOCK
# Wenn hier nichts kommt, läuft kein Agent.
```
### 2. Starten (Manuell)
```bash
$ eval "$(ssh-agent -s)"
Agent pid 12345
```
### 3. Schlüssel hinzufügen (`ssh-add`)
```bash
$ ssh-add ~/.ssh/id_ed25519
Enter passphrase for /home/bmt/.ssh/id_ed25519: *********
Identity added: /home/bmt/.ssh/id_ed25519 (bmt@workstation)
```
Ab jetzt fragt SSH nicht mehr nach dem Passwort, solange der Agent läuft!
### 4. Was ist geladen?
```bash
$ ssh-add -l
256 SHA256:abcd... bmt@workstation (ED25519)
```
### 5. Alles vergessen (Lockdown)
```bash
$ ssh-add -D
All identities removed.
```
---
## 🚀 Advanced: Agent Forwarding
Stell dir vor:
`Workstation``Gateway-Server``Git-Server (GitHub)`
Du bist auf dem `Gateway` und willst `git clone` machen.
Dein Key liegt aber auf der `Workstation`.
**NIEMALS** kopierst du deinen Private Key auf den Gateway Server!
Stattdessen erlaubst du dem Gateway, deinen Agent auf der Workstation zu "fragen".
**Config (`~/.ssh/config`):**
```ssh
Host gateway
HostName gateway.crumbforest.de
ForwardAgent yes
```
Jetzt kannst du auf dem Gateway `git clone` machen, und die Authentifizierung "tunnelt" zurück zu deinem Laptop. Magie! ✨
### ⚠️ Die Gefahr (Security Warning)
Wenn du Forwarding aktivierst (`-A` oder `ForwardAgent yes`) und der Admin des Ziel-Servers böse ist (root), kann er deinen lokalen Agenten kapern, solange du verbunden bist.
**Regel:** Nutze Forwarding NUR zu Servern, denen du vertraust!
---
## 🍏 & 🐧 Komfort-Integration
### macOS
Der Mac macht das automatisch via Keychain.
Config (`~/.ssh/config`):
```ssh
Host *
UseKeychain yes
AddKeysToAgent yes
```
### Linux (Gnome/Keyring)
Moderne Distros (Ubuntu, Debian mit Gnome/MATE) starten oft einen Keyring-Daemon, der sich wie ein SSH-Agent verhält.
Wenn du es "pur" willst (in `.bashrc`):
```bash
if [ -z "$SSH_AUTH_SOCK" ]; then
eval "$(ssh-agent -s)"
ssh-add
fi
```
---
## 🦉 Crystal Owl's Weisheit
> *"Der Schlüssel gehört dem Meister, nicht dem Torwächter."*
Niemals Private Keys verteilen. Lass den Agenten die Arbeit machen. Und wenn du gehst, nimm die Schlüssel mit (`ssh-add -D` oder Logout).
---
**Version:** 1.0
**Status:** Draft
**Tags:** #SSH #Security #Agent #Workflow
---
**Navigation:**
[← Zurück: Workstation](crumbpage-17-workstation.md) | [Weiter: Zero Trust Agent →](crumbpage-19-agent-lockdown.md)

View File

@@ -0,0 +1,137 @@
# 🔐 Crumbpage 19: The Zero Trust Agent (Paranoid Mode)
**Subtitle:** *Vertraue nichts, was du nicht gerade berührst*
**Pfad:** 19 von X
**Schwierigkeit:** ⭐⭐⭐⭐ (4/5)
**Zeit:** ~2 Stunden
**Voraussetzungen:** [SSH Agent](crumbpage-18-ssh-agent.md), [Bash Scripting](crumbpage-14-environment.md)
> *"Ein unbewachter Schlüssel ist ein verlorener Schlüssel."* 🕵️‍♂️
---
## 📋 Das Szenario
Du sitzt im Café. Dein Laptop ist entsperrt, dein `ssh-agent` hat alle Keys im RAM.
Ein Dieb reißt dir den offenen Laptop aus der Hand ("Snatch & Run").
**Er hat jetzt Zugriff auf alle deine Server.** 😱
Oder: Du gehst kurz weg, Screen Lock geht an. Jemand errät dein (schwaches?) Laptop-Passwort oder nutzt einen Exploit am Lockscreen.
Sobald er drin ist: **Vollzugriff via SSH.**
**Die Lösung:**
Der Agent muss seine Schlüssel **vergessen**, sobald du den Platz verlässt (Screen Lock).
Und er muss **sofort nach der Passphrase fragen**, wenn du wiederkommst (Unlock).
---
## 🛡️ Level 1: Das Zeit-Limit (TTL)
Der einfachste Schutz. Schlüssel vergessen sich selbst nach X Minuten.
```bash
# Füge Key hinzu, aber vergiss ihn nach 5 Minuten (300 Sekunden)
$ ssh-add -t 300 ~/.ssh/id_ed25519
```
**Pro:** Funktioniert überall (Mac/Linux).
**Contra:** Wenn du arbeitest, läuft es manchmal "unter den Fingern" ab.
---
## 🛡️ Level 2: Der "Nuke" Button
Gewöhne dir an, nicht nur den Screen zu sperren, sondern den Agent zu leeren.
**In deiner `.bashrc`:**
```bash
# Sperren UND Schlüssel wegwerfen
alias away='ssh-add -D && loginctl lock-session'
```
*(Auf Mac: `ssh-add -D && pmset displaysleepnow`)*
**Benutzung:** Wenn du aufstehst, tippe `away`. Laptop sperrt, Keys sind weg.
---
## 🛡️ Level 3: Automatische Amnesie (Der Watchdog)
Du willst, dass das **automatisch** passiert, wenn der Bildschirmschoner angeht?
Das erfordert ein Script, das auf den Lock-Status "hört".
### Konzept (Linux/DBus):
Wir bauen einen **Wächter**, der auf `org.gnome.ScreenSaver` lauscht.
**Das Script (`~/.local/bin/agent-watchdog.sh`):**
```bash
#!/bin/bash
# Lauscht auf Screen-Lock Events via DBus
dbus-monitor --session "type='signal',interface='org.gnome.ScreenSaver'" | \
while read x; do
case "$x" in
*"boolean true"*)
# LOCK EVENT!
echo "🔒 Screen locked. Burning keys."
ssh-add -D
;;
*"boolean false"*)
# UNLOCK EVENT!
echo "🔓 Screen unlocked."
# Optional: Terminal öffnen für Re-Auth
# gnome-terminal -- ssh-add
;;
esac
done
```
**Erklärung:**
1. Wenn Screen **Locked** (`true`) -> `ssh-add -D` (Alle Keys löschen). Sicherheit hergestellt.
2. Wenn Screen **Unlocked** (`false`) -> Du musst beim nächsten `git push` oder `ssh` dein Passwort neu eingeben (oder wir triggern ein Prompt).
---
## 🛡️ Level 4: Re-Spawn on Unlock (Die User-Anfrage)
Du willst direkt nach dem Entsperren nach dem Passwort gefragt werden?
Das ist tricky, weil der Prozess im Hintergrund läuft. Aber wir können deine `.bashrc` tunen:
**In deiner `.bashrc`:**
```bash
# Check beim Öffnen eines Terminals:
# Sind Keys geladen? Wenn nein -> Fragen!
if [ -z "$(ssh-add -l | grep SHA)" ]; then
echo "🕵️‍♂️ Zero Trust Mode: Agent is empty."
ssh-add
fi
```
**Der Flow:**
1. Screen Lock -> Watchdog löscht Keys (Level 3).
2. Du entsperrst, öffnest ein Terminal (oder nutzt ein offenes).
3. Sobald du Enter drückst (neues Prompt) oder ein neues Tab öffnest -> `ssh-add` fragt dich sofort.
---
## 🦉 Crystal Owl's Weisheit
> *"Sicherheit ist kein Zustand, sondern ein Prozess. Manchmal ein nerviger."*
Level 1 (`-t 300`) ist oft der beste Kompromiss aus Paranoia und Usability.
Level 3+4 ist für Admins, die "Snowden-Level" Sicherheit im Café brauchen.
---
**Version:** 1.0
**Status:** Draft
**Tags:** #Security #Paranoid #Automation #ZeroTrust
---
**Navigation:**
[← Zurück: SSH Agent](crumbpage-18-ssh-agent.md) | [Admin-Vektor Übersicht](crumbforest-admin-vektor.md)