Právě si prohlížíte Integrace Proxmox VE do SIEM

Integrace Proxmox VE do SIEM

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í.