首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

菜鸟跟你一起学搭建NTP服务器

《GA/T 686-2007 信息安全技术 虚拟专用网安全技术要求》中有一条是“VPN安全功能应为其自身应用提供可靠的时间戳”。

通常VPN设备会使用NTP协议实现时间同步,但时间源的可靠性则需要依靠NTP协议中的认证机制来保证,公网的NTP服务器通常没有提供认证机制,那么我们需要在本地搭建一个带认证的NTP服务器。

需求:搭建一个带认证的NTP服务器。

环境:操作系统Ubuntu 16.04ntpd版本4.2.8p4

Step 1 安装ntpd

apt-get install ntp ntpstat

这步没啥好说的,而且安装完了就能用,在需要同步时间的客户端上使用ntpdate [服务器IP]就可以了。

如果你刚安装好或者刚重启了ntp服务后立即使用客户端进行同步,有可能会报错,不过不用担心,根据网络情况等待5~30分钟,NTP服务器与上层NTP服务器完成同步后就可以使用了。同步情况可以通过ntpstatntpq -p进行查询。

ntpstat可以查询到目前与哪个上层服务器同步。

ntpq查询结果内容更多,只要看到时间服务器前面带*,就说明完成同步了。

Step 2 基本参数配置

配置文件在/etc/ntp.conf,以下主要是介绍,都是不用改的默认配置。

不知道你有没有好奇,为什么安装好之后就可以直接用呢?在别的教程中需要在配置文件中手动添加server [上层NTP服务器IP或域名]之后才能与上层服务器进行同步。

原来默认的配置文件中已经包含了NTP POOL的配置,NTP POOL可以理解为一个动态的NTP服务器地址池,会自动选择可用的server进行同步。

*如果想了解更多,可以百度NTP Pool Project。

然后基本配置中的restrict提供了对NTP服务器访问控制的功能,这是默认的配置:

我觉得也基本不用改,这些限制主要是针对NTP服务器的管理功能,默认的配置可以认为是默认限制所有的远程管理命令,只允许客户端进行时间同步。

*不过我不理解“restrict source notrap nomodify noquery”中“source”是什么意思,从注释的字面上理解可以认为是用于与上层时间服务器同步时需要放开的策略,但是我也试了,注释掉这句后客户端也无法与该服务器进行时间同步,如果你知道这句的作用还请不吝赐教。

Step 3 配置使用MD5认证

①服务器生成密钥文件

ntp-keygen -M

该命令可以在当前目录下生成一组MD5和SHA1的密钥文件,生成完成后把生成的文件复制到/etc目录并命名为ntp.keys

*当然也可以取别的名字,放在别的目录,不过/etc/net.keys是默认的路径。

ntp.keys一般长这样,其中第一列是keyID

②修改配置文件

在/etc/ntp.conf中增加以下四行:

keys /etc/ntp.keys

trustedkey 1 2 3

enable auth

restrict [客户端IP] notrust

其中第三行是说可信的keyID是1、2、3,而第四行是说强制指定IP客户端进行认证。修改好之后记得重启ntp服务。

③客户端配置

首先需要把服务器生成的密钥文件copy到客户端相同的路径/etc/net.keys,然后使用ntpdate -a [keyID] [服务器IP]即可实现同步。

其实如果服务器没有设置强制客户端进行认证时,依然可以使用带认证的同步,这时就是主要作用就是客户端对服务器进行认证,保证时间源的可靠性。

④认证方式

我们抓包看一下整个过程,客户端和服务器之间进行时间同步时一共通过四组请求应答来尽量消除网络传输延迟带来的误差,这也是为什么ntpdate命令要运行那么久。

另外可以看出两者使用了消息认证码(MAC)来保证数据的原发认证和完整性校验。当然,如果你没使用带认证的命令,那么抓包是不会有MAC字段的。

以上。

  • 发表于:
  • 原文链接http://kuaibao.qq.com/s/20180330G0RTS600?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券