| 1 |
# Alloy time sources: authenticated, or the clock is an input an attacker owns. |
| 2 |
# |
| 3 |
# WHY THE CLOCK IS A SECURITY SURFACE. Certificate expiry, TLS handshake |
| 4 |
# validity windows, TOTP codes, Kerberos tickets and the freshness checks in |
| 5 |
# anything that signs are all decided by what the machine believes the time |
| 6 |
# is. Plain NTP is unauthenticated UDP, so anyone on the path can move it. |
| 7 |
# NTS is NTP with the key exchange done over TLS, which closes that. |
| 8 |
# |
| 9 |
# Fedora's default is `pool 2.fedora.pool.ntp.org iburst`, unauthenticated. |
| 10 |
# The Containerfile comments that line out and adds `confdir /etc/chrony.d` |
| 11 |
# to /etc/chrony.conf, which is what makes this file be read at all. If a |
| 12 |
# chrony update restores the file, the pool comes back and this file keeps |
| 13 |
# working alongside it — degraded rather than broken. |
| 14 |
# |
| 15 |
# WHAT IT COSTS, stated rather than discovered: NTS servers are far fewer |
| 16 |
# than pool servers and the key exchange is TCP on port 4460. A network that |
| 17 |
# blocks 4460, or a captive portal before login, leaves the machine with no |
| 18 |
# usable source and it drifts on its own RTC until it reaches one. On a |
| 19 |
# laptop that is a real scenario. `chronyc -N authdata` says which sources |
| 20 |
# are authenticated; `chronyc sources` says whether any are reachable. |
| 21 |
# |
| 22 |
# Four servers on three operators, so no single one decides the time and one |
| 23 |
# being down is not an outage. iburst for a fast first sync at boot. |
| 24 |
|
| 25 |
server time.cloudflare.com iburst nts |
| 26 |
server nts.netnod.se iburst nts |
| 27 |
server ptbtime1.ptb.de iburst nts |
| 28 |
server ptbtime2.ptb.de iburst nts |
| 29 |
|