# Vorbereitung einer sicheren LXC-Vorlage (Proxmox)

Dieses Kapitel beschreibt, wie du eine **gehärtete LXC-Vorlage** erstellst, die du in Proxmox klonen kannst. Jeder Container, der aus dieser Vorlage erstellt wird, bietet:

* SSH-Zugang ausschließlich über einen `admin`-Benutzer
* Nutzung deines lokalen SSH-Public-Keys
* Verbot von direktem Root-Login
* Deaktivierung der Passwort-Authentifizierung

Dieser Ansatz sorgt für konsistente und sichere Deployments ohne manuelle Nachbearbeitungsschritte.

## Schritt 1: Einen Basis-Container erstellen

Erstelle einen normalen LXC-Container aus deinem bevorzugten Image, zum Beispiel:

```bash
pveam update
pveam download local debian-12-standard_*.tar.zst
```

Danach deploy den Container:

```bash
pct create <CTID> local:vztmpl/debian-12-standard_*.tar.zst
```

Starte ihn:

```bash
pct start <CTID>
pct enter <CTID>
```

## Schritt 2: Den Admin-Benutzer in der Vorlage anlegen

Innerhalb des Containers:

```bash
adduser admin
usermod -aG sudo admin
```

Dieser Benutzer wird der einzige SSH-Einstiegspunkt.

## Schritt 3: Deinen SSH-Public-Key installieren

Auf deiner **lokalen Maschine** stelle sicher, dass du einen Key hast:

```bash
ssh-keygen -t ed25519 -C "admin@lxc"
```

Kopiere ihn in den Container:

```bash
ssh-copy-id admin@<container-ip>
```

Teste den Login:

```bash
ssh admin@<container-ip>
```

Du solltest dich ohne Passwort einloggen können.

## Schritt 4: Die SSH-Konfiguration härten

Innerhalb des Containers:

```bash
sudo nano /etc/ssh/sshd_config
```

Wende folgendes an:

```diff
- PermitRootLogin yes
+ PermitRootLogin no

- PasswordAuthentication yes
+ PasswordAuthentication no

- ChallengeResponseAuthentication yes
+ ChallengeResponseAuthentication no
```

(Optional):

```ini
PubkeyAuthentication yes
```

Starte neu:

```bash
sudo systemctl restart sshd
```

## Schritt 5: Aufräumen und für die Vorlage vorbereiten

Damit keine temporären Artefakte weitervererbt werden:

Innerhalb des Containers:

```bash
history -c
rm -rf /tmp/*
apt clean
```

**Nicht** löschen:

* `/home/admin/.ssh/authorized_keys`
* den `admin`-Benutzer
* die Änderungen an der SSH-Konfiguration

Diese Dinge werden für die Funktionalität der Vorlage benötigt.

## Schritt 6: Herunterfahren und in eine Vorlage umwandeln

Verlasse den Container und stoppe ihn:

```bash
pct stop <CTID>
```

Wandle ihn in eine Proxmox-Vorlage um:

```bash
pct template <CTID>
```

Der Container ist jetzt als wiederverwendbare Vorlage gespeichert.

## Ergebnis

Jeder zukünftige Container, den du aus dieser Vorlage klonst, bietet automatisch:

* sicheren SSH-Zugang
* keinen Root-Login
* erzwungene Schlüssel-basierte Authentifizierung
* konsistente sudo-Konfiguration

Keine weiteren SSH-Härtungsschritte mehr nötig.

## Beispiel zum Klonen

```bash
pct clone <TEMPLATE-ID> 120 --hostname web01 --storage local-lvm
pct start 120
```

Danach sofort verbinden:

```bash
ssh admin@web01
```