网络安全等级保护之企业内网统一时间源

作者:Sender Su  来源:原创内容  发布日期:2022-12-17  最后修改日期:2022-12-17

在网络安全等保测评中,有一条要求是被测评的网络内所有设备都要设置时间源。这条要求的用意实质是要保证所有被记录的日志的时间都是正确的,这样才能有效审计。

时间在以太空间中沿着树状的结构分发流走,在枝条的终端湮灭。Time pass along through the tree-like structure in the ether space, vanished in the end of the branches.

笔者:国际认证信息系统审计师、软考系统分析师

设置时间源表面上并不复杂。但从实践上,还是需要考虑一些问题:

1、不同的外部时间源之间的一致性; 2、外部时间源的对时操作需要允许设备访问公网; 3、大量终端设备对时操作对网络出口可能造成的压力; 4、外部时间源的可用性。

因此,经过考虑后,认为还是需要在企业内网设置单一的核心时间源,然后以级联方式通过NTP协议服务实现在内网的扩散,并且在内网可以有一定程度地广泛开放供终端设备查询使用。

进一步考虑认为,为确保时间源的可用性,以及时间源和网络结构的一致性,减少VLAN和路由的复杂度,应该按树状结构设置时间源查询服务扩散体系:

1、核心时间源:实体物理服务器或者虚拟机均可,取决于对自有时间源可靠性的要求。在我的网络环境中通过一台单一功能的Linux虚机实现。该核心时间源服务器只负责两件事:(1)从外部时间源同步时间到该机,确定唯一性。(2)仅允许内网的核心时间查询服务节点向其查询同步时间,转移查询负载给服务节点。

2、顶层服务节点:能支持高访问量、位于企业内网中央,提供时间查询服务的节点,很显然,这个节点由整个企业内网的核心交换机或者核心路由器来实现是最适合的。

3、枝干服务节点:从顶层服务节点获取时间。节点本身能支持一定的访问负载量,位于企业内网局部范围的中央,对该范围的设备提供时间查询服务。这种节点就必然是企业网络区域交换机或路由器。

4、深层服务节点:接入层的无线路由器、交换机,配置为从枝干服务节点获取时间,并接受本设备所支持的网络接入范围内终端设备的时间查询。

根据以上设计,简要画出逻辑关系图如下:

确定了整体方案后,着手进行部署:

一、配置核心时间源服务器。

1、安装配置操作系统。我一般都选择安装配置CentOS 7或者Rocky Linux 8的虚机。由于功能单一,所以这个虚机只需要配置很少的硬件资源,以及在操作系统安装时选择基本配置就足够了。

2、加固操作系统。安装完成后,首先按等保测评加固要求进行必要的系统加固措施,这些也不赘述。

3、配置网络时间协议NTP服务,这里要详细一点。

首先需要注意是CentOS 7有两个NTP服务,一个是新的chronyd,另一个是传统的ntpd。而到了Rocky Linux 8,ntpd已经被淘汰,要使用chronyd了。

虽然ntpd的资料比较多,但未来肯定还是属于chronyd的,所以本文也只介绍chronyd。

如果在CentOS 7要继续使用ntpd,就必须要停用chronyd,否则会因为加载的先后顺序问题导致ntpd绑定不了端口而启动失败。

(1)安装和启用chronyd,默认应该已经安装并启用了:

[root@vm-dns ~]# yum -y install chrony
[root@vm-dns ~]# systemctl enable chronyd

(2)修改/etc/chrony.conf配置文件,一般来说,需要修改的是外部时间源地址和允许发起查询的地址范围。

外部时间源地址一般建议选择国内的,系统默认配置的国外时间源地址始终是远了点,延时抖动比较大,影响对时效率。我一般会配置如下的地址:

pool 0.asia.pool.ntp.org iburst
pool 1.asia.pool.ntp.org iburst

为设置为服务器模式,需要允许发起查询的地址范围,按本方案设计,需要配置为仅接受核心交换机发出的查询。如下IP地址只是个例子:

allow 192.168.1.1/32

如果不启用加密验证,基本上配置文件也不用改别的。

(3)启动chronyd并查看状态:

[root@vm-dns ~]# systemctl start chronyd
[root@vm-dns ~]# systemctl status chronyd
● chronyd.service - NTP client/server
   Loaded: loaded (/usr/lib/systemd/system/chronyd.service; enabled; vendor preset: enabled)
   Active: active (running) since Fri 2022-12-16 23:31:36 CST; 7s ago
     Docs: man:chronyd(8)
           man:chrony.conf(5)
  Process: 3167 ExecStopPost=/usr/libexec/chrony-helper remove-daemon-state (code=exited, status=0/S>
  Process: 3486 ExecStartPost=/usr/libexec/chrony-helper update-daemon (code=exited, status=0/SUCCES>
  Process: 3482 ExecStart=/usr/sbin/chronyd $OPTIONS (code=exited, status=0/SUCCESS)
 Main PID: 3484 (chronyd)
    Tasks: 1 (limit: 23342)
   Memory: 972.0K
   CGroup: /system.slice/chronyd.service
           └─3484 /usr/sbin/chronyd

12月 16 23:31:36 vm-dns systemd[1]: Starting NTP client/server...
12月 16 23:31:36 vm-dns chronyd[3484]: chronyd version 4.2 starting (+CMDMON +NTP +REFCLOCK +RTC +PR>
12月 16 23:31:36 vm-dns chronyd[3484]: Frequency -25.452 +/- 2.582 ppm read from /var/lib/chrony/dri>
12月 16 23:31:36 vm-dns chronyd[3484]: Using right/UTC timezone to obtain leap second data
12月 16 23:31:36 vm-dns systemd[1]: Started NTP client/server.

(4)检查对时情况

[root@vm-dns ~]# timedatectl
               Local time: 六 2022-12-17 00:06:47 CST
           Universal time: 五 2022-12-16 16:06:47 UTC
                 RTC time: 五 2022-12-16 16:06:47
                Time zone: Asia/Shanghai (CST, +0800)
System clock synchronized: yes
              NTP service: active
          RTC in local TZ: no

(5)检查对时的时间源情况:

[root@vm-dns ~]# chronyc sources
MS Name/IP address         Stratum Poll Reach LastRx Last sample               
===============================================================================
^+ time.cloudflare.com           3   8   373   496  +6271us[+6100us] +/-   76ms
^+ ns.tu.ac.th                   2   9   111  1008  -1422us[-1773us] +/-   68ms
^- time3.unima.ac.id             2   9   373   300    +56ms[  +56ms] +/-  245ms
^- ntp.telecomarmenia.am         2   9   377   106  +4167us[+4167us] +/-  141ms
^- 110-170-126-102.static.a>     1   9   377   178  +2579us[+2579us] +/-   42ms
^- ns3.ads.net.id                2   9   335   100    +24ms[  +24ms] +/-  322ms
^* time.neu.edu.cn               1   9   377   180  -2023us[-2188us] +/-   30ms
^+ 103.146.168.7.ipacct.in       1   9   377   235  -1664us[-1831us] +/-   68ms

(6)检查系统时钟的效能信息:

[root@vm-dns ~]# chronyc tracking
Reference ID    : CA760182 (time.neu.edu.cn)
Stratum         : 2
Ref time (UTC)  : Fri Dec 16 16:33:07 2022
System time     : 0.000247087 seconds slow of NTP time
Last offset     : -0.000165796 seconds
RMS offset      : 0.001811647 seconds
Frequency       : 24.773 ppm slow
Residual freq   : +0.004 ppm
Skew            : 0.749 ppm
Root delay      : 0.054522034 seconds
Root dispersion : 0.003364371 seconds
Update interval : 517.2 seconds
Leap status     : Normal

如上执行记录可以发现,System time存在一些差异(慢了)。可以手工强制消除System time的差异,而不是让chronyd在后台逐渐调整。要注意这是一个不建议的操作,因为有可能会导致对时间敏感的其它服务或程序崩溃:

[root@vm-dns ~]# chronyc makestep
200 OK
[root@vm-dns ~]# chronyc tracking
Reference ID    : CA760182 (time.neu.edu.cn)
Stratum         : 2
Ref time (UTC)  : Fri Dec 16 16:41:45 2022
System time     : 0.000000000 seconds slow of NTP time
Last offset     : +0.000294510 seconds
RMS offset      : 0.001721201 seconds
Frequency       : 24.738 ppm slow
Residual freq   : +0.007 ppm
Skew            : 0.626 ppm
Root delay      : 0.053908244 seconds
Root dispersion : 0.001103280 seconds
Update interval : 518.6 seconds
Leap status     : Normal

可以发现差异已经变为0。

(7)实时监控网络对时流量:

[root@vm-dns ~]# tcpdump -nnn -i ens33 port 123
dropped privs to tcpdump
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on ens33, link-type EN10MB (Ethernet), capture size 262144 bytes
00:39:45.668751 IP 192.168.224.136.38762 > 103.123.108.223.123: NTPv4, Client, length 48
00:39:45.916700 IP 103.123.108.223.123 > 192.168.224.136.38762: NTPv4, Server, length 48

如上通过tcpdump抓包,可以观察到实时产生的对时操作。

(8)最后不忘要开放防火墙端口

[root@vm-dns ~]# firewall-cmd --add-service=ntp
success
[root@vm-dns ~]# firewall-cmd --runtime-to-permanent
success
[root@vm-dns ~]# firewall-cmd --list-all
public (active)
  target: default
  icmp-block-inversion: no
  interfaces: ens33
  sources: 
  services: cockpit ntp ssh
  ports: 
  protocols: 
  forward: no
  masquerade: no
  forward-ports: 
  source-ports: 
  icmp-blocks: 
  rich rules: 

(9)关于chrony更详细的参考信息可以通过

man chronyd

man chrony.conf

查阅。这里就不再介绍了。

二、通过路由器、交换机等网络节点实现树状传递

这里要设置的是交换机上的NTP对时和NTP服务。具体完全是取决于交换机的操作命令设计或者GUI界面设计。这里仅以某品牌三层路由交换机作为例子去说明:

1、NTP对时设置如下

2、NTP服务设置如下

一律使用NTP协议,时间源均为服务器模式而不是对等体模式,身份验证则视乎需要,本文中没有使用。

3、如果以上设置需要通过命令行进行,命令如下:

clock timezone Beijing add 08:00:00
clock protocol ntp
ntp-service enable
ntp-service source Vlan-interface50
ntp-service refclock-master
ntp-service unicast-server 192.168.49.10

4、设置后还需要观察验证对时成功。

三、时间终端设置

时间终端是多种多样的,包括有应用服务器、信息终端以及各类信息化设备,这些全部都要设置上,确保企业内网时间一致。

1、服务器方面有大量的教程可以查询学习。对于Linux,照样设置chronyd服务就可以了。对于Windows,需要通过组策略进行设置,以下内容也适用于用户终端的Windows计算机。

(1)启动本地组策略编辑器GPEDIT.MSC

(2)通过组策略编辑器查看菜单下的筛选器功能,筛选NTP相关设置

(3)对“配置Windows NTP客户端”项目,对NtpServer输入项设置自己的时间源地址,类型选择NTP。其它参数一般按默认即可。如果网络有压力,可以通过设置 Special Poll Interval 调整同步的时间周期,单位:秒,如:每1小时同步一次,输入3600。

(4)对“启用Windows NTP客户端”项目,选择“已启用”

(5)最后复查设置结果,如下图:

(6)另外,WINDOWS 的时间和日期属性的时间同步服务器并不遵循本地组策略设置,而是独立的。所以要单独填入时间同步服务器地址,方便必要时进行手动同步。

通过传统的控制面板的日期和时间功能,切换到Internet 时间页面,更改设置并填入本地时间源地址,点击立即更新按钮进行测试和同步时间。

2、其它信息化设备方面的设置基本上和路由器交换机等网络设备也相差无几。比如下图为APC SMART UPS的时间设置:

apc ups

四、结论

时间源服务器、时间服务节点、应用服务器、信息终端以及各种具有NTP客户端功能的信息化设备,要奉行全覆盖的目标进行设置,这不仅是满足等保测评要求,更关键地是使得企业网络能安全运行。

(题图由无界版图AI生成)

本栏目相关
  •  2024-11-13 挖深网络安全的兔子洞:CPU 微码补丁管理
  •  2024-11-10 安全加固基准搅合国产操作系统上下游关系
  •  2022-05-11 CIS-CAT 配置评估工具介绍及操作实践
  •  2022-03-16 Windows 系统安全基线及软件工具介绍
  •  2022-08-28 网络攻防中的色彩象征
  •  2022-03-11 安装RHEL/CentOS时如何选择配置安全策略?
  •  2023-02-27 注意:TightVNC 2.8.75 释出,修补 zlib 漏洞 CVE-2022-37434
  •  2022-03-25 从甲方角度介绍“CIS互联网安全中心”
  •  2022-03-17 详细了解微软安全合规工具包(SCT)
  • 本站微信订阅号:

    微信订阅号二维码

    本页网址二维码: