Proxmox samozřejmě loguje velmi podrobně, ale prosté prohlížení logů v GUI většinou nestačí a chete logy posílat na nějaký firemní SIEM.

Pro požadovanou funkčnost je třeba udělat pár kroků. Nejprve je třeba instalovat službu rsyslog.
root@hydra:~# apt install rsyslog
The following package was automatically installed and is no longer required:
proxmox-kernel-6.8.12-4-pve-signed
Use 'apt autoremove' to remove it.
Installing:
rsyslog
Installing dependencies:
libestr0 libfastjson4 liblognorm5
Suggested packages:
rsyslog-doc | rsyslog-pgsql rsyslog-elasticsearch rsyslog-hiredis rsyslog-kubernetes rsyslog-clickhouse | rsyslog-gnutls rsyslog-relp
rsyslog-mysql rsyslog-mongodb rsyslog-kafka rsyslog-snmp rsyslog-docker rsyslog-openssl rsyslog-gssapi
Summary:
Upgrading: 0, Installing: 4, Removing: 0, Not Upgrading: 0
Download size: 863 kB
Space needed: 2,338 kB / 32.3 GB available
Continue? [Y/n] y
Get:1 http://ftp.cz.debian.org/debian trixie/main amd64 libestr0 amd64 0.1.11-2 [9,048 B]
Get:2 http://ftp.cz.debian.org/debian trixie/main amd64 libfastjson4 amd64 1.2304.0-2 [28.9 kB]
Get:3 http://ftp.cz.debian.org/debian trixie/main amd64 liblognorm5 amd64 2.0.6-5 [66.5 kB]
Get:4 http://ftp.cz.debian.org/debian trixie/main amd64 rsyslog amd64 8.2504.0-1 [758 kB]
Fetched 863 kB in 6s (155 kB/s)
Selecting previously unselected package libestr0:amd64.
(Reading database ... 88078 files and directories currently installed.)
Preparing to unpack .../libestr0_0.1.11-2_amd64.deb ...
Unpacking libestr0:amd64 (0.1.11-2) ...
Selecting previously unselected package libfastjson4:amd64.
Preparing to unpack .../libfastjson4_1.2304.0-2_amd64.deb ...
Unpacking libfastjson4:amd64 (1.2304.0-2) ...
Selecting previously unselected package liblognorm5:amd64.
Preparing to unpack .../liblognorm5_2.0.6-5_amd64.deb ...
Unpacking liblognorm5:amd64 (2.0.6-5) ...
Selecting previously unselected package rsyslog.
Preparing to unpack .../rsyslog_8.2504.0-1_amd64.deb ...
Unpacking rsyslog (8.2504.0-1) ...
Setting up libestr0:amd64 (0.1.11-2) ...
Setting up libfastjson4:amd64 (1.2304.0-2) ...
Setting up liblognorm5:amd64 (2.0.6-5) ...
Setting up rsyslog (8.2504.0-1) ...
Created symlink '/etc/systemd/system/syslog.service' → '/usr/lib/systemd/system/rsyslog.service'.
Created symlink '/etc/systemd/system/multi-user.target.wants/rsyslog.service' → '/usr/lib/systemd/system/rsyslog.service'.
Processing triggers for libc-bin (2.41-12) ...
Processing triggers for man-db (2.13.1-1) ...
Když máme instalován rsyslog, musíme zajistit odesílání logů, což jednoduše zajistíme přidáním následujícího řádku do souboru /etc/rsyslog.conf
*.* @192.168.56.9:514
Poté restartartuje daemona rsyslog a ověřte, že běží:
root@perseus:/etc# systemctl restart rsyslog
root@perseus:/etc# systemctl status rsyslog
● rsyslog.service - System Logging Service
Loaded: loaded (/usr/lib/systemd/system/rsyslog.service; enabled; preset: enabled)
Active: active (running) since Sun 2026-03-29 15:35:59 CEST; 4s ago
Invocation: 6c78f7077a9b413891f3d52f140cf365
TriggeredBy: ● syslog.socket
Docs: man:rsyslogd(8)
man:rsyslog.conf(5)
https://www.rsyslog.com/doc/
Main PID: 557364 (rsyslogd)
Tasks: 4 (limit: 309068)
Memory: 1.7M (peak: 2.3M)
CPU: 177ms
CGroup: /system.slice/rsyslog.service
└─557364 /usr/sbin/rsyslogd -n -iNONE
Mar 29 15:35:59 perseus systemd[1]: Starting rsyslog.service - System Logging Service…
Mar 29 15:35:59 perseus rsyslogd[557364]: imuxsock: Acquired UNIX socket '/run/systemd/journal/syslog' (fd 3) from systemd. [v8.2504.0]
Mar 29 15:35:59 perseus rsyslogd[557364]: [origin software="rsyslogd" swVersion="8.2504.0" x-pid="557364" x-info="https://www.rsyslog.com"] start
Mar 29 15:35:59 perseus systemd[1]: Started rsyslog.service - System Logging Service.
Jako cíl jsem zde zvolil Synology NAS se službou syslog serveru, takže se nyní můžeme podívat, zdali logy opravdu Proxmox zasílá.

Nyní máme zajištěno, že výstup, který vidíme v GUI Proxmox host zasílám na syslog server (třeba nějaký váš SIEM) a můžeme s logy dál pracovat.
Pokud používáte firewall Network Filter (nftables), je užitečné sbírat logy zajímavých událostí (typicky pokusy o přístup z neautorizovanýách IP adrsa na služby správy nebo SSH) a vyhodnocovat je (pro detekci pokusů o průnik).
V labu, kde jsou tři PVE hosti (192.168.77.16, 17 a 7) nastavíme pravidla pro NetFilter v /etc/nftables.conf
flush ruleset
a common table for both IPv4 and IPv6
table inet filter {
# protocols to allow
set allowed_protocols {
type inet_proto
elements = { icmp, icmpv6 }
}
# interfaces to accept any traffic on
set allowed_interfaces {
type ifname
elements = { "lo" }
}
# PVE hosts
set pve_hosts {
type ipv4_addr
elements = { 192.168.77.16, 192.168.77.17, 192.168.77.7}
}
# restricted services to allow
set allowed_tcp_dports {
type inet_service
flags interval
elements = { ssh, 8006, 5900-5999, 3128 }
}
# restricted services to allow
set allowed_restricted_tcp_dports {
type inet_service
flags interval
elements = { ssh, 8006, 5900-5999, 3128 }
}
# pve internal communications
set allowed_pve_tcp_dports {
type inet_service
flags interval
elements = { ssh, 8006, 3128, 5900-5999 }
}
set allowed_pve_udp_dports {
type inet_service
flags interval
elements = { 5404-54059 }
}
# this chain gathers all accept conditions
chain allow {
ct state established,related accept
meta l4proto @allowed_protocols accept
iifname @allowed_interfaces accept
tcp dport @allowed_pve_tcp_dports ip saddr @pve_hosts accept
udp dport @allowed_pve_udp_dports ip saddr @pve_hosts accept
tcp dport @allowed_tcp_dports accept
tcp dport ssh log prefix "[nftables] - Inboud SSH Connection Denied: " counter drop
tcp dport 8006 log prefix "[nftables] - Inboud Management Connection Denied: " counter drop
log prefix "[nftables] - Inboud Connection Denied: " counter drop
}
# base-chain for traffic to this host
chain INPUT {
type filter hook input priority filter + 20
policy accept
jump allow
reject with icmpx type port-unreachable
}
}Důležitá jsou pravidla s logováním:
tcp dport ssh log prefix "[nftables] - Inboud SSH Connection Denied: " counter drop
tcp dport 8006 log prefix "[nftables] - Inboud Management Connection Denied: " counter drop
log prefix "[nftables] - Inboud Connection Denied: " counter drop
Vytvořte soubor /etc/rsyslog.d/10-nftables.conf
:msg, contains, "[nftables]" -/var/log/nftables.log
& stop
Tím zajistíme, že NetFiletr bude logovaný provoz ukládat do souboru /var/log/nftables.log. Zároveň se ale logovaný provoz objeví v systémovém logu, takže zasílání tohoto logu pomocí rsyslog daemona na SIEM bude posílat i logy firewallu.
Nyní už na straně SIEM systému můžete zpracovávat a vyhodnocovat výskyty zpráv z firewallu a případně na ně reagovat nějakou akcí.