rhel/centos 7+默认使用chrony而非ntpd,因其更抗网络抖动、启动快、支持rtc同步;需停用ntpd、配置server/allow/rtcsync参数,并通过chronyc验证同步状态,再加固防时间篡改。

新手配置Linux时间同步NTP服务,核心是选对工具、配对权限、堵住篡改路径。RHEL/CentOS 7及以上默认用 chrony,它比传统ntpd更抗网络抖动、启动快、适合虚拟机和断续联网环境,也天然支持硬件时钟(RTC)同步,能有效防范因系统时间被恶意或误操作修改导致的认证失败、日志错乱、分布式服务异常等问题。
确认并统一使用 chrony(推荐新手)
多数新装的 CentOS/RHEL 7+、Rocky/AlmaLinux 默认已安装 chrony,无需额外装 ntp 包。运行以下命令确认:
-
systemctl list-unit-files | grep chrony—— 查看服务是否启用 -
chronyc tracking—— 查看当前是否已同步(输出含 “System clock synchronized: yes” 即正常) -
rpm -q chrony—— 确认已安装;若未安装,执行yum install -y chrony
⚠️ 注意:不要同时启用 chronyd 和 ntpd。检查 systemctl is-active ntpd,若为 active,先停用:systemctl stop ntpd && systemctl disable ntpd。
服务端配置(仅需一台内网主时间源)
若你有内网服务器可作时间源(如 192.168.10.1),编辑 /etc/chrony.conf:
- 注释掉所有默认的
server行(如 pool.ntp.org),避免外网依赖 - 添加内网上游(如有):
server 192.168.10.1 iburst - 开放局域网客户端访问:
allow 192.168.10.0/24(替换为你实际网段) - 确保有
rtcsync—— 这行让 chronyd 每隔11分钟自动把校准后的系统时间写入硬件时钟,防重启后时间回跳 - 保存后重启服务:
systemctl restart chronyd && systemctl enable chronyd
客户端配置(绝大多数业务服务器)
编辑 /etc/chrony.conf,只保留关键几行:
-
server 192.168.10.1 iburst—— 指向你的内网时间服务器 -
driftfile /var/lib/chrony/drift—— 必须存在,记录时钟漂移率 -
rtcsync—— 同步系统时间的同时更新硬件时钟 -
makestep 1.0 3—— 若开机时偏差超1秒,前三次同步允许“跳跃式”校正(避免长时间缓慢拉偏)
重启生效:systemctl restart chronyd。立即检查:chronyc sources -v(看到 ^* 表示已连上主源),chronyc tracking(offset 值应小于 ±50ms)。
加固防篡改的关键动作
仅靠同步不够,还需限制人为或程序随意改时间:
-
禁用 root 的 date 修改权(可选但强推):在
/etc/security/limits.conf加一行root hard cpu 0不现实;更实用的是用chattr +i /etc/localtime防止时区文件被篡改(需先ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime) -
关闭非必要时间命令:删除或重命名
/usr/bin/ntpdate和/usr/bin/timedatectl set-time(若无运维需要),减少攻击面 -
审计时间变更行为:启用 auditd,添加规则
-a always,exit -F arch=b64 -S adjtimex,settimeofday -k time-change,后续用ausearch -k time-change查谁改过时间 -
防火墙锁定 123/udp:只允许可信IP访问 chronyd 端口,例如 firewalld:
firewall-cmd --permanent --add-rich-rule='rule family="ipv4" source address="192.168.10.0/24" port port="123" protocol="udp" accept'











