Package: rsyslog
Version: 8.2504.0-1
Severity: normal

Dear Maintainer,

Coming from Debian 12 we used an old configuration with the following
lines:

$PrivDropToUser syslog
$PrivDropToGroup syslog

These are a simple security enhancement that removes any special
privileges from the daemon after startup.

When upgrading to Debian 13, rsyslog would no longer start. It was
unclear from the systemctl status or journalctl what happened.

After some testing and commenting out the above lines it was determined
that these lines are related to the problem.

Running the rsyslog daemon in the foreground and debug mode on ran normally,
which led to suspicions regarding the systemd unit file.

The unit file for Debian 13 introduced some security enhancement including
CapabilityBoundingSet and a list of capabilities. But missing from this list
are the CAP_SETUID and CAP_SETGID which would be required for the dropping
of privileges.

As a final test, a systemd override was placed in
/etc/systemd/system/rsyslog.service.d/allow-priv-drop.conf
with the following contents:

[Service]
CapabilityBoundingSet=CAP_BLOCK_SUSPEND CAP_CHOWN CAP_DAC_OVERRIDE CAP_LEASE 
CAP_NET_ADMIN CAP_NET_BIND_ERVICE CAP_SYS_ADMIN CAP_SYS_RESOURCE CAP_SYSLOG 
CAP_SETGID CAP_SETUID

(same list as the normal unit file plus CAP_SETUID and CAP_SETUID added).

After

systemctl daemon-reload

the service would run as expected.

The question is if there is more of a security benefit by reducing the 
capabilities
or by dropping all root privileges via the rsyslog configuration. I think the 
latter,
but obviously for users who do not use this directive, there is a benefit to 
reduce
the overall list of capabilities.

The override is a manageable workaround, but the behaviour (a crash with no 
context)
should probably be addressed as it would confuse users.


-- System Information:
Debian Release: 13.3
  APT prefers stable-security
  APT policy: (500, 'stable-security'), (500, 'stable')
Architecture: amd64 (x86_64)

Kernel: Linux 6.12.63+deb13-amd64 (SMP w/2 CPU threads; PREEMPT)
Locale: LANG=en_US.UTF-8, LC_CTYPE=en_US.UTF-8 (charmap=UTF-8), LANGUAGE not set
Shell: /bin/sh linked to /usr/bin/dash
Init: systemd (via /run/systemd/system)
LSM: AppArmor: enabled

Versions of packages rsyslog depends on:
ii  libc6         2.41-12+deb13u1
ii  libestr0      0.1.11-2
ii  libfastjson4  1.2304.0-2
ii  liblognorm5   2.0.6-5
ii  libsystemd0   257.9-1~deb13u1
ii  libuuid1      2.41-5
ii  libzstd1      1.5.7+dfsg-1
ii  zlib1g        1:1.3.dfsg+really1.3.1-1+b1

Versions of packages rsyslog recommends:
ii  logrotate  3.22.0-1

Versions of packages rsyslog suggests:
pn  rsyslog-clickhouse                <none>
pn  rsyslog-doc                       <none>
pn  rsyslog-docker                    <none>
pn  rsyslog-elasticsearch             <none>
pn  rsyslog-gssapi                    <none>
pn  rsyslog-hiredis                   <none>
pn  rsyslog-kafka                     <none>
pn  rsyslog-kubernetes                <none>
pn  rsyslog-mongodb                   <none>
pn  rsyslog-mysql | rsyslog-pgsql     <none>
pn  rsyslog-openssl | rsyslog-gnutls  <none>
pn  rsyslog-relp                      <none>
pn  rsyslog-snmp                      <none>

-- Configuration Files:
/etc/rsyslog.conf changed [not included]

-- no debconf information
dennisvd@stremsel~ 16:45 10$

Reply via email to