remote-backups.comremote-backups.com
Contact illustration
Sign In
Don't have an account ?Sign Up

Proxmox Backup Server Security Hardening

Your backups contain everything attackers want. Customer records, database dumps, private keys, licensing data. Ransomware operators figured this out years ago — they target backup servers first, before triggering encryption on production systems. A default Proxmox Backup Server install is functional, but it is not hardened. This guide covers every layer you need to address before putting PBS in front of production or client data.

Key Takeaways
  • Default PBS ships with functional defaults, not hardened ones: open port 8007, self-signed TLS, and no login rate limiting all need attention
  • PBS has no built-in authentication rate limiting — external controls like fail2ban or IP allowlisting are required
  • API tokens are the right tool for automation: scoped independently, expirable, and unable to access the web UI
  • ACLs default-deny everything — audit them quarterly and scope each token to the minimum needed datastore and role
  • Client-side AES-256-GCM encryption is the last line of defense; a fully compromised PBS server cannot read encrypted chunks
  • Forward PBS logs to a SIEM before you need them — logs stored on a compromised server are useless for incident response

The Attack Surface

Backup servers are high-value targets. They hold point-in-time copies of everything on your network. Modern ransomware families specifically look for and destroy backup storage before triggering encryption on production systems. A PBS instance that hasn't been hardened is an attractive target.

The default Proxmox Backup Server install exposes:

  • Web UI and API on port 8007 (HTTPS), listening on all interfaces
  • A self-signed TLS certificate
  • Local PAM authentication with no rate limiting
  • Full admin access for root@pam

None of those defaults are wrong for a first-time setup. All of them need attention before PBS handles production workloads.

Network Security

Firewall Configuration

PBS uses a single port: 8007 (HTTPS). Both the web UI and the backup API run on it. Lock it down at the network level before anything else.

Deployment Scenario
Required Port
Permitted Source Networks
Single-site (PVE + PBS same VLAN)
8007/tcp
PVE host IPs, management workstations
Multi-site (central PBS, remote PVE)
8007/tcp
All PVE site IP ranges
MSP (clients syncing to hosted PBS)
8007/tcp
Client IP ranges; static IPs preferred
Cloud-hosted PBS
8007/tcp
Client IPs only; VPN preferred

Example ufw rules for a single-site setup:

bash
# Allow backup clients and management
ufw allow from 192.168.10.0/24 to any port 8007 proto tcp
ufw allow from 10.0.5.0/24 to any port 8007 proto tcp
ufw allow from 192.168.1.50 to any port 8007 proto tcp

# Deny everything else on 8007
ufw deny 8007
ufw enable
PBS firewall rules (ufw)
No Built-In Rate Limiting

Proxmox Backup Server does not rate-limit authentication attempts. Exposing port 8007 to untrusted networks without external protection leaves you open to brute-force attacks with no server-side throttle. Use fail2ban or restrict access to known IP ranges at the network level.

Network Segmentation

Backup traffic should move on a dedicated VLAN, separate from production client traffic and general management networks.

Scenario
VLAN Layout
PBS Placement
Homelab
Single VLAN
Firewall rule restricts port 8007 to PVE host IPs
SMB single-site
Dedicated backup VLAN (e.g., 10.0.20.0/24)
Dedicated VLAN; PVE has L3 route to backup VLAN only
MSP multi-tenant
Management VLAN + per-tenant backup VLANs
PBS in management VLAN; namespaces isolate tenant data
Offsite DR
Production site + offsite site
PBS-to-PBS sync over site-to-site VPN

For MSP environments, see the multi-tenant PBS guide for how namespace-level isolation fits into your VLAN topology.

TLS and Certificate Management

PBS ships with a self-signed certificate. That works for internal-only setups where you trust the network, but it creates a practical problem: Proxmox VE stores the PBS fingerprint when you add it as storage. If you later replace the cert, every PVE node loses trust and backups fail until you update each fingerprint.

For production deployments, use a CA-signed certificate. If PBS is reachable from the internet, Let's Encrypt works:

bash
# Install certbot
apt install certbot

# Obtain cert (requires port 80 accessible for HTTP-01 challenge)
certbot certonly --standalone -d pbs.yourdomain.com

# Copy to PBS certificate paths
cp /etc/letsencrypt/live/pbs.yourdomain.com/fullchain.pem /etc/proxmox-backup/proxy.pem
cp /etc/letsencrypt/live/pbs.yourdomain.com/privkey.pem /etc/proxmox-backup/proxy.key

# Restart the API proxy
systemctl restart proxmox-backup-proxy
Let's Encrypt cert for PBS
Cert Renewal Changes the Fingerprint

When you replace a self-signed certificate, the fingerprint changes. Every Proxmox VE node configured to use this PBS instance needs the fingerprint updated in the storage configuration, or backup jobs will fail with a TLS verification error.

For PBS instances that stay internal, a private CA (pfSense, Smallstep, or a standalone Easy-RSA setup) avoids fingerprint churn entirely. Issue a cert signed by your internal CA and trust that CA on all PVE nodes once.

Authentication Hardening

User Account Security

PBS starts with root@pam. That account has full access, uses system PAM authentication, and cannot be deleted. It also cannot be disabled outright, but you can make it much harder to abuse:

  • Create named admin accounts (admin@pbs or yourname@pam) for day-to-day use
  • Disable password auth for root@pam at the OS SSH level
  • Enable TOTP on all accounts that have web UI access

TOTP setup via CLI:

bash
# Add TOTP for root@pam
proxmox-backup-manager user tfa add root@pam --type totp --totp-secret <base32-secret>

# List configured TFA methods
proxmox-backup-manager user tfa list root@pam
Enable TOTP for a PBS user

TOTP can also be configured through the web UI under Administration → Users → Edit → Two-Factor Auth.

PBS does not enforce a password complexity policy. For PAM realm users, set your policy at the OS level with PAM modules. For PBS realm users, there is no built-in enforcement — set complexity expectations through process, not technology.

API Token Best Practices

API tokens are the correct tool for any automation, monitoring agent, or service account. They authenticate against the backup API only and cannot log into the web UI. They can be scoped to a specific datastore and permission level, and they can expire.

Token format: user@realm!tokenname

Use Case
Role
Path Scope
PVE backup client
DatastoreBackup
/datastore/<name>
PVE backup client (with namespace)
DatastoreBackup
/datastore/<name>/<namespace>
Monitoring and alerting
Audit
/ (root, read-only)
Restore automation
DatastoreReader
/datastore/<name>
Admin scripting
DatastoreAdmin
/datastore/<name>

Create tokens with expiration dates. Quarterly rotation is reasonable for most environments:

bash
# Create a token for a backup client
proxmox-backup-manager user generate-token backup-client@pbs client-token

# Create a token with an expiration date (Unix timestamp)
proxmox-backup-manager user generate-token backup-client@pbs client-token --expire 1767225600

# List tokens for a user
proxmox-backup-manager user list-tokens backup-client@pbs

# Revoke a token
proxmox-backup-manager user delete-token backup-client@pbs client-token
API token management
Tokens Cannot Access the Web UI

API tokens authenticate against the backup API only. A compromised token cannot be used to log into the web UI, reset passwords, modify ACLs, or make administrative changes. Scope them correctly and rotate them on a schedule.

Access Control

PBS ACLs default-deny everything. A user or token has no access until you explicitly grant it. The available roles:

Role
What It Grants
Admin
Full PBS administration, all datastores
Audit
Read-only view of all datastores and task logs
DatastoreAdmin
Full control of a specific datastore
DatastoreBackup
Upload backups; read own snapshots only
DatastoreReader
Read and restore any snapshot in scope
DatastorePowerUser
DatastoreBackup plus delete own snapshots

Grant each account the minimum role it actually needs:

  • Backup clients get DatastoreBackup on their specific datastore (or namespace)
  • Monitoring tokens get Audit at the root level
  • Restore automation gets DatastoreReader scoped to the relevant datastore
  • Human admins get Admin on their own named account; root@pam is break-glass only

View current ACLs:

bash
proxmox-backup-manager acl list
Audit current ACLs

If you're running a multi-tenant environment, namespace-level ACLs let one PBS instance serve multiple clients without any client seeing another's data. The namespace isolation guide covers the full setup including per-namespace token scoping.

Audit ACLs quarterly. For each entry, ask: does this correspond to an active service or person? Revoke anything that doesn't.

Client-Side Encryption

Client-side encryption survives a full PBS compromise. Backups are encrypted on the Proxmox VE host with AES-256-GCM before any chunk leaves the network. Proxmox Backup Server stores ciphertext. Even with root access to the PBS host and the underlying storage, an attacker gets nothing readable.

The encryption key lives at /etc/pve/priv/storage/<STORAGE-ID>.enc on your PVE node. PBS never sees it. Lose the key and you permanently lose access to those backups. There is no recovery path.

See PBS client-side encryption for full setup and key backup procedures. The critical step after enabling encryption: export a paper key immediately with proxmox-backup-client key export-paperkey and store it offline.

For sync jobs, add --encrypted-only to prevent plaintext snapshots from replicating to your offsite PBS if something was accidentally backed up without encryption.

Audit Logging and Monitoring

PBS logs authentication events, task completions, and configuration changes to the system journal. Forward those logs to a SIEM or centralized syslog collector before you need them — logs stored on a compromised server are useless for incident response.

Event
How to Detect
Severity
Failed authentication
proxmox-backup-manager task list --type auth
High
ACL changes
Task log entries with type acl-update
High
New user or token created
user-create and api-token-create task entries
Medium
Verify job failure
Task type verify, status error
Medium
Backup job missing
Alert on backup_last_snapshot metric age
High
Sync job credential error
Task type sync, status error
Medium

Forward to a central syslog server:

bash
# Forward all PBS journal entries to SIEM
*.* @your-siem-server:514
/etc/rsyslog.d/99-remote.conf
bash
apt install rsyslog
systemctl restart rsyslog
Apply rsyslog config

Proxmox Backup Server exposes Prometheus metrics at https://<pbs-host>:8007/metrics. The monitoring and alerting guide covers the full Prometheus and Grafana setup. For security monitoring specifically, alert on verify job failures and unexpected gaps in backup recency.

Physical and Host Security

PBS runs on a Linux host. Host-level security affects everything above it:

  • Unattended upgrades: Vulnerabilities in the kernel, OpenSSL, or system libraries affect PBS directly. Patch automatically.
  • SSH hardening: Disable password auth, use SSH keys only, restrict access to known management IPs.
  • LUKS for datastore disks: PBS does not handle disk-level encryption itself. Encrypt your datastore volumes at the OS layer so physical theft doesn't yield readable data.
  • Physical access control: For offsite PBS instances, the datacenter's physical security is part of your security posture.
bash
apt install unattended-upgrades
dpkg-reconfigure -plow unattended-upgrades
Enable unattended-upgrades

Security Hardening Checklist

Use this as your pre-production checklist and quarterly review reference.

Pre-Production and Quarterly Review Checklist
Control
Priority
Notes
Restrict port 8007 to known source IPs
Critical
ufw rule or upstream network ACL
Place PBS on a dedicated backup VLAN
High
Isolates backup traffic from production
Replace self-signed TLS certificate
High
Private CA or Let's Encrypt
Enable TOTP on all interactive accounts
Critical
Including root@pam
Disable or remove unused user accounts
High
Default-deny; audit on staff change
Use API tokens for all automation
High
No service accounts with passwords
Set expiration dates on all tokens
Medium
Quarterly rotation as a baseline
Scope each token to minimum needed role
Critical
Never use Admin role for automation
Audit ACL list quarterly
High
Revoke stale entries immediately
Enable client-side encryption
Critical
AES-256-GCM; store key offline
Export and store encryption key offline
Critical
Without it, key loss means data loss
Forward PBS logs to SIEM or syslog
High
Local logs are useless post-compromise
Enable unattended-upgrades on host OS
Medium
OS-level vulnerabilities affect PBS
Enable LUKS on datastore volumes
Medium
Protects against physical storage theft
Alert on verify job failures
High
Failures may indicate tampered chunks

Wrapping Up

A hardened Proxmox Backup Server setup isn't complicated, but it requires attention across multiple layers. Network isolation keeps attackers out. Scoped API tokens limit blast radius when a credential is compromised. Client-side encryption protects data even if everything else fails. Audit logs give you visibility when something goes wrong.

For MSPs, these controls translate directly into compliance documentation. Most of what SOC 2 Type II and ISO 27001 require for backup infrastructure security maps directly to items on the checklist above.

Start with the network controls. Then lock down authentication. Then encryption. The checklist gives you a clear sequence and something to hand to an auditor.

Need a security-hardened PBS environment?

remote-backups.com runs Proxmox Backup Server with network isolation, encrypted storage, dedicated credentials per client, and 24/7 infrastructure monitoring.

View Plans

No. Proxmox Backup Server does not rate-limit authentication attempts. You need external controls: either restrict port 8007 to known IP ranges (preferred) or deploy fail2ban to parse authentication failures from the system journal.

No. API tokens authenticate against the backup API only. A compromised token cannot log into the web UI, modify ACLs, create users, or perform any administrative action that requires interactive login.

You permanently lose access to all backups encrypted with that key. PBS has no key escrow, no recovery mechanism, and no way to decrypt backups without the original key. Export a paper key immediately after enabling encryption and store it offline.

Yes. PBS supports LDAP and AD realms for user authentication. You can integrate with your existing directory for centralized user management, though TOTP must still be configured per-user in PBS.

Quarterly is a reasonable baseline. For high-privilege tokens (DatastoreAdmin), consider shorter rotation cycles. Set expiration dates when creating tokens so rotation is enforced even if you forget.

Firewall rules on the PBS host are better than nothing, but a dedicated VLAN provides network-level isolation that doesn't depend on host-level controls. If the host OS is compromised, host-based firewall rules can be modified. A VLAN survives host compromise.
Bennet Gallein
Bennet Gallein

remote-backups.com operator

Infrastructure enthusiast and founder of remote-backups.com. I build and operate reliable backup infrastructure powered by Proxmox Backup Server, so you can focus on what matters most: your data staying safe.