Skip to main content

Virtualization Templates

Protection templates for virtualization platforms.

proxmox

Proxmox VE Web UI authentication failures.

SettingDefault
Port8006, 443
Backendsystemd
Max Retry3
Find Time2 days
Ban Time1 hour

How It Works

Uses systemd journal backend instead of log files:

backend = systemd
journalmatch = _SYSTEMD_UNIT=pvedaemon.service

Detected Patterns

Authentication failures from pvedaemon:

pvedaemon[...]: authentication failure; rhost=192.168.1.100 user=admin msg=...

Why Long Find Time?

Proxmox web UI is typically accessed infrequently. A 2-day window catches slow brute force attacks while minimizing false positives from forgotten passwords.

Requirements

  • Proxmox VE 7.0+ (uses systemd logging)
  • No log path needed (reads from journal)

proxmox-ssh

SSH protection for Proxmox hosts.

SettingDefault
Port22
Log PathAuto-detected
Max Retry5
Find Time10 minutes
Ban Time1 hour

How It Works

Uses the standard sshd filter but as a separate jail for Proxmox hosts. This allows different settings for Proxmox vs other servers.

Why Separate Template?

  • Proxmox hosts are high-value targets
  • May want stricter settings than general servers
  • Easy to apply to all Proxmox hosts in dashboard

proxmox-spiceproxy

SPICE proxy authentication failures.

SettingDefault
Port3128
Backendsystemd
Max Retry3
Find Time10 minutes
Ban Time1 hour

Detected Patterns

spiceproxy[...]: authentication failure; rhost=192.168.1.100...

When to Use

Enable if you use SPICE for VM console access from outside your network.

Internet-Facing Proxmox

If Proxmox web UI is accessible from internet (not recommended):

# proxmox
maxretry: 2
findtime: 1d
bantime: 24h

# proxmox-ssh
maxretry: 3
bantime: 24h

Internal Network

Standard settings are appropriate for internal access:

# proxmox
maxretry: 3
findtime: 2d
bantime: 1h

# proxmox-ssh
maxretry: 5
bantime: 1h

VPN-Only Access

For Proxmox accessible only via VPN, you may want relaxed settings to avoid lockouts:

maxretry: 5
bantime: 30m

Security Best Practices

Limit Web UI Access

  1. Firewall: Restrict port 8006 to management IPs
  2. VPN: Access via VPN only
  3. 2FA: Enable TOTP in Proxmox

SSH Hardening

  1. Key-only: Disable password auth
  2. Non-standard port: Consider moving from 22
  3. fail2ban: Always enable proxmox-ssh

Network Isolation

  1. Management VLAN: Separate management traffic
  2. No public IP: Proxmox should not have public IP
  3. Jump host: Access via bastion/jump host

Troubleshooting

Journal Backend Not Working

  1. Verify systemd is in use:

    systemctl status pvedaemon
  2. Check journal for entries:

    journalctl -u pvedaemon | grep "authentication failure"
  3. Ensure fail2ban can read journal:

    fail2ban-client status proxmox

Filter Not Matching

Test against journal:

fail2ban-regex systemd-journal /etc/fail2ban/filter.d/proxmox.conf