Introduction
Similar topic:
- WORKING: Guide for creating a logging qube (I.E. sys-log) - WIP
- SIEM for Qubes Guide and Suggestions?(Post only with on topic solutions) - #3 by Qubical
My solution: Using “rsyslog” + qubes tcp rpc.
Dom0
Create the RPC policy
/etc/qubes/policy.d/50-syslog.policy
qubes.ConnectTCPLog +514 YOUR_VMS_SENDING_LOGS @default allow target=sys-log
In the VM sending logs
Create the rpc script + launch it to bind the tcp port 514
/rw/config/rc.local
/usr/bin/sed 's/ConnectTCP/ConnectTCPLog/g' /usr/bin/qvm-connect-tcp > /usr/bin/qvm-connect-tcp-log
/usr/bin/chmod +x /usr/bin/qvm-connect-tcp-log
/usr/bin/qvm-connect-tcp-log 514:@default:514
configure rsyslog
/etc/rsyslog.d/remote.conf
if ($syslogseverity <= 4 or
$programname contains 'EXAMPLE_FILTER_STRING') then {
action(type="omfwd" target="127.0.0.1" port="514" protocol="tcp")
}
configure persistence for the rsyslog configuration
/rw/config/qubes-bind-dirs.d/50-user.conf
binds+=( '/etc/rsyslog.d/' )
sys-log
configure persistance
/rw/config/qubes-bind-dirs.d/50-user.conf
binds+=( '/etc/rsyslog.d/' )
binds+=( '/var/log/qubes/' )
configure rsyslog
/etc/rsyslog.d/remote.conf
template(name="PerVmFile" type="string" string="/var/log/qubes/remote/%programname:13:999%.%$YEAR%-%$MONTH%-%$DAY%.log")
template(name="QubesLogFormat" type="string" string="%timegenerated%: %msg%\n")
if ($programname startswith "remote-qube-") then {
action(type="omfile" dynaFile="PerVmFile" template="QubesLogFormat")
stop
}
Configure ConnectTCPLog script
/rw/config/rc.local
#!/bin/sh
echo '#!/bin/bash
exec logger -t "remote-qube-$QREXEC_REMOTE_DOMAIN"
' | tee /etc/qubes-rpc/qubes.ConnectTCPLog
chmod +x /etc/qubes-rpc/qubes.ConnectTCPLog
/usr/sbin/systemctl enable rsyslog
/usr/sbin/systemctl start rsyslog