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-ZugangSSHausschließlichaccessüberonly via aneinenadminuser-BenutzeruseNutzungyourdeineslocallokalenSSH public keySSH-Public-KeysdenyVerbotdirectvonrootdirektemloginRoot-LogindisableDeaktivierungpasswordderauthenticationPasswort-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_keysthedenadminuser-BenutzerSSHdieconfigurationÄnderungenchangesan 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:
securesicherenSSH accessSSH-Zugangnon-rootkeinenloginRoot-Loginenforcederzwungenekey-basedSchlüssel-basierteauthenticationAuthentifizierungconsistentkonsistentesudo 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