[email protected]

How-to · Proxmox

Secure and harden Proxmox: checklist

Editorial note: Versions, commands and prices may change. Please verify critical steps independently before production use. This guide does not replace individual professional, legal or tax advice.

Have Proxmox secured: Security audit and implementation review the agreed scope. Arrange an intro call.

This checklist walks through securing a Proxmox VE host or cluster in six areas: access with 2FA and SSH, firewall, roles and API tokens, updates, web interface and the Linux base. Each area names commands and configuration from the vendor documentation and a target state for acceptance. As of October 2026. Check changes in a suitable environment first and always secure them with a second access path (console, IPMI).

Contents

1. Access: web GUI, SSH and 2FA

Limit the web GUI and SSH to a VPN, bastion or approved source networks. According to the documentation, the user root@pam can always log in through Linux PAM and is an unrestricted administrator. Work with named accounts and roles day to day and secure root@pam with a strong password and 2FA.

Two-factor login: Proxmox VE supports TOTP, WebAuthn (hardware keys, TPM), recovery keys and YubiKey OTP. Set it up in the web interface under the user's "TFA" entry. You can enforce it per authentication realm. After 8 failed TOTP attempts the account is locked; for WebAuthn and recovery keys the lock applies after 100 attempts for one hour. Keep recovery keys separate and check alternative realms and emergency accounts too.

SSH: PVE 2FA does not apply to the SSH service. Set SSH to key login, in a file under /etc/ssh/sshd_config.d/:

PermitRootLogin prohibit-password
PasswordAuthentication no
KbdInteractiveAuthentication no
sshd -t && systemctl reload ssh         # check syntax, then reload
sshd -T | grep -E 'permitrootlogin|passwordauthentication|kbdinteractiveauthentication'

A full PermitRootLogin no is risky in clusters because nodes use key-based root connections among themselves; prohibit-password only forbids the password. Open a second session before switching off password login and test the key access. Also check Match blocks in the OpenSSH configuration.

2. Network and firewall

First document the permitted connections for management, Corosync, storage, migration and guests. The ports Proxmox VE uses:

Service Port Allow access for
Web GUI and API TCP 8006 Management network or VPN
SSH TCP 22 Management network or VPN
VNC console TCP 5900-5999 Management network
SPICE proxy TCP 3128 Management network
Corosync UDP 5405-5412 Cluster network only
Live migration TCP 60000-60050 Cluster or migration network only
rpcbind (NFS) UDP/TCP 111 NFS network only, if used

The Proxmox firewall works on three levels: datacenter (cluster.fw), host and guest. With the datacenter firewall enabled, the documentation says it allows by default loopback traffic, established connections, management access from the local network (web GUI, SSH, VNC, SPICE), cluster communication and certain ICMP types. Add your own rules for a separate management network as an IP set and a rule, for example in /etc/pve/firewall/cluster.fw:

[OPTIONS]
enable: 1

[IPSET management]
203.0.113.0/24

[RULES]
IN ACCEPT -source +management -p tcp -dport 8006,22

To avoid locking yourself out: create the rules first, enable the firewall afterwards, check each level through a second access path and verify the state:

pve-firewall status        # service status and configuration check
pve-firewall compile       # view the generated rules
iptables-save | head -50   # active rules on the host

A blanket DROP rule can lock out the cluster or administration. According to current documentation the nftables implementation proxmox-firewall is still a tech preview; a backend switch is not a casual hardening step.

3. Roles and API tokens

Assign roles and paths by task. Predefined roles include PVEAuditor (read only), PVEVMUser (use guests, console, backup) and PVEVMAdmin (manage guests). Create custom roles with pveum role add:

pveum user add monitoring@pve --comment "read-only access"
pveum acl modify / --user monitoring@pve --role PVEAuditor
pveum user token add monitoring@pve readonly --privsep 1

API tokens get their own ACLs and stay on privilege separation, the default for new tokens. Their effective rights are then the intersection of user and token rights; a token without privilege separation inherits the user's full rights. The token value is shown only once. Test permissions with a test account and document rotation and revocation (user management).

4. Updates and vulnerabilities

Check the supported PVE version, repository and open advisories. Regular package updates run through the web interface or on the command line; back up, plan a maintenance window and check the cluster state beforehand:

pveversion -v                 # installed package versions
apt update && apt full-upgrade

Major upgrades need their own procedure, including Ceph and PBS dependencies (upgrade from 8 to 9). For production systems the enterprise repository or commercial operation without a subscription is a deliberate decision. Proxmox documentation.

5. Certificates and brute-force protection

Use a suitable certificate for administration access. PVE supports ACME including automatic renewal. Choose the HTTP or DNS challenge to match reachability; do not permanently open the management interface just for that. The command-line procedure (adjust domain and address):

pvenode acme account register default [email protected]
pvenode config set --acme domains=pve.example.com
pvenode acme cert order

Against repeated login attempts at the web interface, the Proxmox wiki describes a Fail2ban integration. The filter reads the pvedaemon messages from the journal; the jail bans after three failed attempts:

# /etc/fail2ban/filter.d/proxmox.conf
[Definition]
failregex = pvedaemon\[.*authentication failure; rhost=<HOST> user=.* msg=.*
journalmatch = _SYSTEMD_UNIT=pvedaemon.service

# /etc/fail2ban/jail.local
[proxmox]
enabled = true
port = https,http,8006
filter = proxmox
backend = systemd
maxretry = 3
findtime = 2d
bantime = 1h

Then systemctl restart fail2ban; fail2ban-client unban <IP> releases banned addresses. Fail2ban complements restricting access to a management network or VPN but does not replace it.

6. Linux base and backup protection

Check which services listen on which addresses and disable those not needed:

ss -tlnp                      # listening TCP services with process
systemctl list-unit-files --state=enabled

Also check container privileges (preferably unprivileged containers) and AppArmor for the specific environment (container documentation). Do not adopt kernel parameters wholesale from other lists. Separate backup access and keys from daily administration. Check offsite copy, retention and recovery. A successful backup job does not prove a successful restore.

Acceptance checklist

Area Check Target state
2FA Login of all administrators TOTP or WebAuthn enforced, recovery keys stored separately
SSH sshd -T No password login, key access tested
Firewall pve-firewall status and access from outside Only the management network reaches 8006 and 22
Corosync Port scan from a non-cluster network UDP 5405-5412 not reachable
Tokens pveum user token list per user Privilege separation, rotation documented
Updates pveversion -v Supported version, current packages
Certificate Browser access Valid certificate, automatic renewal
Services ss -tlnp Only needed services listen
Backup Restore log Recovery with key succeeded

BSI and security audit checklist

The BSI module SYS.1.5 Virtualization, 2023 edition covers securing virtualization infrastructure. The following mapping is a working aid, not BSI evidence and not a certification:

Field Evidence to collect
Access and rights Accounts, realms, MFA, token ACLs and emergency access
Network separation Network plan, rule set and permitted and rejected connections
Maintenance and logging Package state, change log and log access
Recovery Backup scope, key access and restore log

For each item record status, evidence, deviation, responsibility and follow-up. Missing evidence stays open; an installed protection feature alone is not a passed check.

Acceptance and operations

Check permitted and blocked access, MFA, token rights, alerting and a documented recovery. The restore test checks the agreed recovery path. For ongoing care there is Managed Proxmox.

Security audit: Agree the scope for Proxmox security and hardening with WZ-IT. Further reading: testing a PBS restore.

Sources

Rather have it operated?

You'd rather not run Proxmox yourself? WZ-IT handles setup, operations and maintenance - privacy-focused from Germany.

Enquiry

Build, migrate, or operate Proxmox

We design and maintain Proxmox environments from a single node to an HA cluster, including migration, storage, backup, and ongoing operations.

  • Straight with Timo and Robin - no sales team, no pitch
  • A professional assessment of your situation
  • Concrete next steps for infrastructure, software or AI

The conversation is free and non-binding.

WZ-IT provided very competent support in implementing our server and virtualization infrastructure. As part of the project, a Proxmox-based virtualization environment was set up along with a virtual machine for our application systems. Additionally, a structured backup concept was implemented. A particular focus was on security: the setup of a VPN tunnel and the clean implementation of encryption and access concepts were professionally executed. The structured consulting as well as the reliable and swift implementation deserve special mention. We are very satisfied with the services provided and are happy to recommend WZ-IT.
John HellmerichsManaging Director, AInergy GmbH
Timo and Robin, founders of WZ-IT

Build, migrate, or operate Proxmox

WZ-IT provided very competent support in implementing our server and virtualization infrastructure. As part of the project, a Proxmox-based virtualization environment was set up along with a virtual machine for our application systems. Additionally, a structured backup concept was implemented. A particular focus was on security: the setup of a VPN tunnel and the clean implementation of encryption and access concepts were professionally executed. The structured consulting as well as the reliable and swift implementation deserve special mention. We are very satisfied with the services provided and are happy to recommend WZ-IT.
John HellmerichsManaging Director, AInergy GmbH

Frequently Asked Questions

Answers to the most important questions

Knowledge

More on Proxmox

1 more articles are in progress.

All Proxmox articles

Companies worldwide trust WZ-IT

  • Stadtwerke Brühl
  • DGHO e.V.
  • solarwerkstatt berlin
  • ABCO Water Systems
  • Golem.de
  • EVADXB
  • nextGYM
  • AInergy
  • ml&s
  • Odiseo Solutions
  • Annota
  • ARGE
  • SweetConnect GmbH
  • Aphy AG
  • CORGOS
  • Rekorder
  • SolidProof
  • Yonju
  • Keymate
  • Paritel
  • Mr. Clipart
  • Millenium
  • Negosh
  • Führerscheinmacher
Read client reviews