Debian GNU/Linux · Services

Run exactly one time synchronization daemon

When it fails: The system clock is not synchronized, or several daemons fight over it. Wrong timestamps break log correlation, certificate checks and Kerberos; two daemons make the clock jump.

CB-DEB-SVC-014mediumactiveautomatedprofile core

As released in v0.1.0 beta · pre-release. Current state.

Description

Debian ships several NTP clients: systemd-timesyncd (the default on most installs), chrony, chronyd-restricted (Debian 13), ntpsec and openntpd. Exactly one of them must be active.

The Debian packages conflict with each other, so two daemons rarely coexist; the usual failure is no daemon at all, for example in a container where systemd-timesyncd does not start (the host keeps the time). Containers can exclude this control in their tailoring file. The daemon's own settings are checked by CB-DEB-SVC-015 (timesyncd) and CB-DEB-SVC-016 (chrony).

Rationale

Logs, audit trails and authentication protocols rely on accurate time. With no daemon the clock drifts; with two, each corrects the other and the clock jumps, which corrupts timelines during an investigation.

Impact

None known when one daemon is already active, which is the Debian default.

Audit

Run systemctl is-active chrony chronyd-restricted systemd-timesyncd ntpsec openntpd. Exactly one line must print active.

Automated: every check must pass. Scanners report each check by its id.

single-daemon

Number of active time synchronization daemons.

script: |
  n=0 act=
  for u in chrony chronyd-restricted systemd-timesyncd ntpsec openntpd; do
    if systemctl is-active --quiet "$u.service" 2>/dev/null; then
      n=$((n + 1)) act="$act $u"
    fi
  done
  echo "active:${act:- none}"
  [ "$n" -eq 1 ]

Remediation

  • No daemon: run systemctl enable --now systemd-timesyncd, or apt install chrony.
  • Several daemons: keep one, then systemctl mask --now <unit> for the others or purge their packages.

References

Mappings

FrameworkIDRelation
NIST SP 800-53 Rev. 55.1.1AU-8partial
NIST SP 800-53 Rev. 55.1.1SC-45related

How this control relates to the other framework's: equivalent, stricter, looser, partial or related.

Threats mitigated

  • related CB-DEB-SVC-015 Configure systemd-timesyncd with approved time servers and keep it running
  • related CB-DEB-SVC-016 Configure chrony with time sources, run it unprivileged and keep it running

People and lifecycle

Authors
Verified2026-10-18 by Sn0wAlice on 12, Proxmox VM, Debian 12 genericcloud image, kernel 6.1.0-54-cloud-amd64. Passes with systemd-timesyncd active on fresh image; fails with chrony installed but stopped; passes once chrony runs.
Verified2026-10-18 by Sn0wAlice on 13, Proxmox VM, Debian 13 genericcloud image, kernel 6.12.113+deb13-cloud-amd64. Passes with systemd-timesyncd active on fresh image; fails with chrony installed but stopped; passes once chrony runs.
Introduced inv0.1.0
Created, updated2026-10-18, 2026-10-18
Translationsfr