nts协议简析

简介: nts协议

NTS协议简析

目前互联网中ntp是仍在使用不安全的互联网协议之一。后来Cloudflare发布了NTS协议,去保证NTP的安全。

NTP传统请求过程

  1. 客户端向NTP服务器发送查询包
  2. 服务器用时钟时间进行响应
  3. 客户端计算其时钟和远程时钟之间的差值得到估计值,并试图补偿其中的网络延迟

注意:NTP 客户端会查询多个服务器并实施算法来选择最佳估计值,并拒绝明显错误的答案。

NTS连接过程

  • 协商在第二阶段使用的AEAD算法;
  • 协商第二个协议(目前,标准只定义了 NTS 如何与 NTPv4 协作);
  • 协商 NTP 服务器的 IP 地址和端口;
  • 创建第二阶段使用的 cookie;
  • 从 TLS 会话创建两个对称秘钥(C2S 和 S2C)。

支持NTS协议的服务器

目前支持NTS的公共服务器非常少,主要的提供商有Cloudflare和Netnod

如何使用NTS

ntpclient现在有两个版本,一个是python版本,一个是go版本,另外则是chrony已经有分支支持nts。fedora从33版本已经开始支持NTS了。

条件

系统仅支持Debian 9 (Stretch), Debian 10 (Buster), Ubuntu 16.04 LTS (Xenial Xerus) , Ubuntu 18.04 LTS (Bionic Beaver).

编译ntsclient

拉取库

git clone https://gitlab.com/hacklunch/ntsclient; cd ntsclient; make

假如不想ntsclient以root用户运行

sudo setcap CAP_SYS_TIME+ep ./ntsclient

执行

./ntsclient --config ntsclient.toml

编译NTPsec

拉取库,使用./buildprep安装构建需要的包

git clone https://gitlab.com/NTPsec/ntpsec.git; cd ntpsec;sudo ./buildprep

构建完成后,可以用waf构建NTPsec

./waf configure
./waf build

设置配置文件,创建ntp.conf

# Exchange time with everybody, but don't allow configuration.
# This is the right security setup for 99% of deployments.
restrict default kod limited nomodify nopeer noquery
restrict -6 default kod limited nomodify nopeer noquery

# Local users may interrogate the NTP server more closely.
restrict 127.0.0.1
restrict -6 ::1

# Minimal logging - we declare a drift file and that's it.
driftfile /var/lib/ntp/ntp.drift

 server nts.netnod.se:4460 nts iburst
 server sth1.nts.netnod.se:4460 nts iburst
 server sth2.nts.netnod.se:4460 nts iburst

开始测试,测试前需要暂停ntp,chrony,openntpd

sudo service ntp stop
sudo service chrony stop
sudo service openntpd stop

开启启动NTPsec服务器

sudo ./build/main/ntpd/ntpd -n -d -c ntp.conf

参考链接

目录
相关文章
|
存储 网络协议 数据处理
面试官,设计一个RPC协议?我...
面试官,设计一个RPC协议?我...
114 0
|
芯片
一文搞懂I2C协议-硬件基础
I2C总线是由飞利浦在80年代初设计的,以允许位于同一电路板上的组件之间能够轻松通信。其大大简化了电路的设计,早期的电视机中很多地方用到了I2C这种通信方式。飞利浦半导体于2006年迁移到了NXP。I2C名称翻译为“ Inter IC”。有时,该总线称为IIC或I²C总线。I2C总结的基本的特征
1204 0
|
设计模式 缓存 网络协议
Linux网络编程 --- 以太网帧格式简析
Linux网络编程 --- 以太网帧格式简析
151 0
|
传感器
Kwp2000协议的应用(程序原理篇)
Kwp2000协议的应用(程序原理篇)
341 0
Kwp2000协议的应用(程序原理篇)
|
域名解析 网络协议 算法
Linux网络原理与编程(4)——第十四节 传输层协议
客户端认为连接已经建立成功了,所以就正常发数据。但是这个时候服务器并未建立连接,在收到数据之后,会向客户端发送一个含有RST的报文(reset),即希望客户端重新建立连接。
263 0
Linux网络原理与编程(4)——第十四节 传输层协议
|
存储 数据采集 网络协议
Linux网络原理与编程(2)——第十二节 应用层协议(以HTTP为例)
协议是一种 "约定". socket api的接口, 在读写数据时, 都是按 "字符串" 的方式来发送接收的。更准确点来说,收发是按照比特位的形式进行的。
216 0
Linux网络原理与编程(2)——第十二节 应用层协议(以HTTP为例)
|
缓存 负载均衡 网络协议
再谈网络协议
再谈网络协议
|
SQL 网络协议 安全
Linux网络协议原理
Linux网络协议原理
169 0
Linux网络协议原理
|
Web App开发 缓存 网络协议
10 分钟讲完 QUIC 协议
建议阅读本文需要搭配作者 HTTP 相关文章食用。
10 分钟讲完 QUIC 协议