Skip to main content

Preparing a Secure LXC Template (Proxmox)

ThisDieses chapterKapitel describesbeschreibt, howwie todu create aeine hardenedgehärtete LXC templateLXC-Vorlage thaterstellst, candie be cloneddu in Proxmox.Proxmox Eachklonen containerkannst. createdJeder fromContainer, thisder templateaus will:dieser Vorlage erstellt wird, bietet:

  • provideSSH-Zugang SSHausschließlich accessüber only via aneinen admin user-Benutzer
  • useNutzung yourdeines locallokalen SSH public keySSH-Public-Keys
  • denyVerbot directvon rootdirektem loginRoot-Login
  • disableDeaktivierung passwordder authenticationPasswort-Authentifizierung

ThisDieser approachAnsatz ensuressorgt consistentfür andkonsistente secureund deploymentssichere withoutDeployments manualohne post-installmanuelle steps.Nachbearbeitungsschritte.

StepSchritt 1: CreateEinen aBasis-Container Base Containererstellen

CreateErstelle aeinen normalnormalen LXCLXC-Container containeraus fromdeinem yourbevorzugten preferredImage, image,zum for example:Beispiel:

pveam update
pveam download local debian-12-standard_*.tar.zst

ThenDanach deploy theden container:Container:

pct create <CTID> local:vztmpl/debian-12-standard_*.tar.zst

StartStarte it:ihn:

pct start <CTID>
pct enter <CTID>

StepSchritt 2: CreateDen theAdmin-Benutzer Adminin Userder InsideVorlage the Templateanlegen

WithinInnerhalb thedes container:Containers:

adduser admin
usermod -aG sudo admin

ThisDieser userBenutzer willwird becomeder theeinzige only SSH entry point.SSH-Einstiegspunkt.

StepSchritt 3: InstallDeinen YourSSH-Public-Key SSH Public Keyinstallieren

OnAuf yourdeiner locallokalen machineMaschine, ensurestelle yousicher, havedass adu key:einen Key hast:

ssh-keygen -t ed25519 -C "admin@lxc"

CopyKopiere itihn intoin theden container:Container:

ssh-copy-id admin@<container-ip>

TestTeste login:den Login:

ssh admin@<container-ip>

YouDu shouldsolltest logdich inohne withoutPasswort aeinloggen password.können.

StepSchritt 4: HardenDie theSSH-Konfiguration SSH Configurationhärten

InsideInnerhalb thedes container:Containers:

sudo nano /etc/ssh/sshd_config

Apply:Wende folgendes an:

- PermitRootLogin yes
+ PermitRootLogin no

- PasswordAuthentication yes
+ PasswordAuthentication no

- ChallengeResponseAuthentication yes
+ ChallengeResponseAuthentication no

(Optional):

PubkeyAuthentication yes

Restart:Starte neu:

sudo systemctl restart sshd

StepSchritt 5: CleanAufräumen andund Preparefür fordie TemplateVorlage Usevorbereiten

ToDamit avoidkeine propagatingtemporären temporaryArtefakte artifacts:weitervererbt werden:

InsideInnerhalb thedes container:Containers:

history -c
rm -rf /tmp/*
apt clean

Do notNicht remove:löschen:

  • /home/admin/.ssh/authorized_keys
  • theden admin user-Benutzer
  • SSHdie configurationÄnderungen changesan der SSH-Konfiguration

TheseDiese areDinge requiredwerden forfür templatedie functionality.Funktionalität der Vorlage benötigt.

StepSchritt 6: ShutHerunterfahren Downund andin Converteine toVorlage Templateumwandeln

ExitVerlasse theden containerContainer andund stopstoppe it:ihn:

pct stop <CTID>

ConvertWandle toihn ain Proxmoxeine template:Proxmox-Vorlage um:

pct template <CTID>

TheDer containerContainer isist nowjetzt storedals aswiederverwendbare aVorlage reusable template.gespeichert.

ResultErgebnis

EveryJeder futurezukünftige containerContainer, clonedden fromdu thisaus templatedieser willVorlage automaticallyklonst, provide:bietet automatisch:

  • securesicheren SSH accessSSH-Zugang
  • non-rootkeinen loginRoot-Login
  • enforcederzwungene key-basedSchlüssel-basierte authenticationAuthentifizierung
  • consistentkonsistente sudo configurationsudo-Konfiguration

NoKeine furtherweiteren SSHSSH-Härtungsschritte hardeningmehr steps required.nötig.

CloningBeispiel Usagezum ExampleKlonen

pct clone <TEMPLATE-ID> 120 --hostname web01 --storage local-lvm
pct start 120

ThenDanach connectsofort immediately:verbinden:

ssh admin@web01