如何部署nts实例chrony客户端?

CentOS(RHEL)

1 基础知识

1.1 TLS

1.1.1 TLS的简介

– TLS是Transport Layer Security的简称
– TLS中文翻译为传输层安全协议

1.1.2 TLS的作用

– TLS用于确保两个应用程序之间通讯的保密性和数据完整性
– TLS用于确保两个应用程序之间建立安全连接,防止交换数据是被窃听和篡改

1.1 AEAD

1.1.1 AEAD的简介

– AEAD是Authenticated Encryption with Associated Data的简称
– AEAD是一种同时具备数据私密性、完整性和可认证性的加密方式

1.1.2 AEAD的作用

– 对称加密算法加密后的数据可用任意秘钥执行解密运算后得到疑似的原始数据(数据无法确定是否正确)
– AEAD为解决对称加密算法的不足而应运而生
– AEAD基于单纯的加密算法之上,增加一层验证手段以确保解密步骤的正确性

1.1.3 AEAD的实例

– AES-128-GCM
– AES-192-GCM
– AES-256-GCM
– ChaCha20-IETF-Poly1305
– XChaCha20-IETF-Poly1305

1.2 NTS协议

1.1.1 NTS的简介

– NTS是Network Time Security英文简称
– NTS中文翻译为网络时间安全
– NTS是一种用于网络时间同步的加密安全性机制
– NTS使用TLS和AEAD协议进行身份验证和数据加密
– NTS是一种CS(客户端-服务器)架构的协议

1.1.2 NTS的作用

– NTS防止客户端与服务器之间的数据包传输过程中被篡改
– NTS启用时攻击者唯一能做的就是丢弃或延迟数据包

1.1.3 NTS的子协议

– NTS-KEY,即NTS秘钥建立(处理初始的TLS上的身份验证和秘钥建立)
– NTS扩展字段,处理加密和身份验证(NTP同步期间通过扩展字段在客户端上保存所有必要的状态cookies)

2 最佳实践

2.1 安装前的准备

2.1.1 系统环境

OS = CentOS 7.3 x86_64
Host Name = any.cmdschool.org
IP Address = any
本例需要你预先配置NTS的服务端,如果你没有,请参阅以下文档部署,

如何部署nts实例chrony公共服务端?

2.1.2 确认开启NTS支持

chronyd -v

可见如下显示,

chronyd (chrony) version 4.0 (+CMDMON +NTP +REFCLOCK +RTC -PRIVDROP -SCFILTER -SIGND +ASYNCDNS +NTS +SECHASH +IPV6 -DEBUG)

注:如果显示“+NTS”字样,则已经开启对“NTS”支持,另外如果显示“-NTS”则是没有成功开启。

2.1.3 配置名称解析

echo '10.168.0.80 nts.cmdschool.org' >> /etc/hosts

注:以上仅仅适用于测试,生产环境请使用DNS代替。

2.2 开启NTS服务

2.2.1 定义NTS服务配置文件

vim /etc/chrony.conf

配置修改如下,

server nts.cmdschool.org iburst nts

stratumweight 0
driftfile /var/lib/chrony/drift
rtcsync
makestep 10 3

noclientlog
logchange 0.5
logdir /var/log/chrony
ntsdumpdir /var/lib/chrony

– 参数“server”声明NTP时间源服务器,“iburst”选项以4-8个请求同时更新,“nts”表示使用NTS协议更新
– 参数“stratumweight”声明时间源的层级,范例“0”表示忽略时间源的层级
– 参数“driftfile”声明记录时间漂移比率文件,重启服务时系统时钟根据记录值进行时间补偿。
– 参数“rtcsync”声明启用RTC(实时时钟)的内核同步
– 参数“makestep”声明如系统时钟偏移量大于10秒,参数3限制只在前三个时钟中更新
– 参数“noclientlog”声明不记录客户端访问(如果记录可使用“chronyc clients”命令查看)
– 参数“logchange”声明调整系统日志的系统时钟阀值
– 参数“ntsdumpdir”声明客户端保存从服务器接收的NTS cookie,避免重启时发NTS-KE请求(目录不存在,则自创建)
– 参数“logdir”声明日志的目录(目录不存在,则自创建)

2.2.2 重启服务是配置生效

systemctl restart chronyd.service

2.2.3 测试协议

timedatectl set-time 00:00:00;date; systemctl restart chronyd.service;sleep 20; date

以上命令意义如下,
– 命令“timedatectl”设置时间为零时
– 命令“date”输出设置后的时间
– 命令“systemctl restart chronyd.service”重启服务触发时间同步
– 命令“sleep”等待时间同步完成(20秒)
– 命令“date”输出同步的时间

===================

NTS客户端配置
————–
https://fedoraproject.org/wiki/Changes/NetworkTimeSecurity

AEAD的介绍
————-
https://zhuanlan.zhihu.com/p/28566058

NTS的介绍
————–
https://tools.ietf.org/html/rfc8915
https://linux.cn/article-12860-1.html

chronyd的配置文件
——————
https://chrony.tuxfamily.org/doc/4.0/chrony.conf.html

PEM格式证书
————-
https://help.aliyun.com/knowledge_detail/40526.html
https://www.ssl.com/zh-CN/%E5%B8%B8%E8%A7%81%E9%97%AE%E9%A2%98/%E6%88%91%E5%A6%82%E4%BD%95%E8%8E%B7%E5%BE%97Pem%E6%A0%BC%E5%BC%8F%E7%9A%84%E8%AF%81%E4%B9%A6/

没有评论

发表评论

CentOS(RHEL)
如何配置系统网桥?

1 前言 一个问题,一篇文章,一出故事。 笔者手里有一个1U的8端口服务器,正好当交换机用。 2 最 …

CentOS(RHEL)
如何修复非XFS文件系统逻辑坏道?

1 前言 一个问题,一篇文章,一出故事。 笔者服务器根分区出现逻辑坏道,于是整理此文。 另外,如果你 …

CentOS(RHEL)
如何破解CentOS或RHEL 7的root密码?

1 前言 一个问题,一篇文章,一出故事。 本章将讲述如何破解系统root的密码。 2 最佳实践 2. …