內網搭建NTS服務器

內網搭建NTS服務器

關鍵字 : ntp nts ipv6

NTS 是 Network Time Security(網絡時間安全)的縮寫,是 NTP 的一種安全擴展機制。它利用傳輸層安全(TLS)和相關數據的認證加密(AEAD),為 NTP 的客戶端 - 服務器模式提供加密安全保障,以防止時間同步過程中的中間人攻擊等安全問題

環境 :

  • Centos 9 兩臺 (一臺做NTP服務端,另一臺做NTP客戶端)
  • IP :
    • NTP服務端
      • IP :192.168.132.11fd15:4ba5:5a2b:1008:192:168:132:11
      • 主機名 : ntpserver
    • NTP客戶端 : 192.168.132.12fd15:4ba5:5a2b:1008:192:168:132:12

本文是模擬在內網中搭建NTS服務端,以便讓網內的服務器同步時間

一。前置任務 :

1.創建自簽名服務端證書.

  • 本例中,服務端證書和私鑰的文件名是 : ntpserver.crtntpserver.key
  • 根CA和中介CA的文件名是 : imca.crtrootca.crt
  • 服務端證書中SAN的DNS必須包含 NTP服務端的主機名.在本例中,DNS有2個 : ntpserverntpserver-ipv6
  • 如果服務端證書是通過中介CA簽署,則服務端證書必須包含中介CA證書。順序是 : 服務端證書+中介CA證書
cat ntpserver.crt imca.crt >new-ntpserver.crt
  • 證書和私鑰以及CA證書需設置屬性,以便被chrony用戶讀取
# 本例中包含 中介CA的服務端證書 和 私鑰 以及 根CA證書 拷貝到 /etc/pki目錄下了
chown :chrony /etc/pki/new-ntpserver.crt /etc/pki/rootca.crt
chown chrony /etc/pki/ntpserver.key

結果如下 :

-rw-r-----. 1 root   chrony 1587 May 25 20:15 new-ntpserver.crt
-rw-------. 1 chrony root    241 May 25 20:13 ntpserver.key	# 僅允許chrony用戶讀取私鑰
-rw-r-----. 1 root   chrony  768 May  6 12:27 rootca.crt

二。安裝和配置NTS服務端

2.1 安裝chrony

dnf install chrony

安裝完畢后,會得到系統服務 chronyd.service 以及 客戶端軟件 chronyc

2.2 配置NTS服務端

配置文件是/etc/chrony.conf

2.2.1修改 /etc/chrony.conf ,增加如下內容 :

initstepslew 1
manual
# 允許IPV4 和 IPV6的網絡范圍
allow 192.168.132.0/24
allow fd15:4ba5:5a2b:1008:192:168::/64# 啟用NTS 私鑰和公鑰要能被系統用戶chrony讀取
ntsserverkey /etc/pki/ntpserver.key
ntsservercert /etc/pki/new-ntpserver.crt
ntstrustedcerts /etc/pki/rootca.crt# 處理NTS請求的進程數量.缺省是1
ntsprocesses 3# 服務端生成新密鑰的周期(單位:秒,缺省是1周).每天一次
ntsrotate 86400smoothtime 400 0.01

2.2.2 修改 /etc/chrony.conf ,注釋如下內容 :

  • serverpool開頭的行。因為假設場景是以本機作為NTP服務端,所以屏蔽上游的NTP源
  • sourcedir 開頭的行
    注釋后的效果如下 :
# server ntp1.aliyun.com iburst
# pool 2.centos.pool.ntp.org iburst
# sourcedir /run/chrony-dhcp

2.3 開放防火墻

firewall-cmd --permanent --add-port=123/udp
# TCP 4460 是NTS-KE協議的端口
firewall-cmd --permanent --add-port=4460/tcp
firewall-cmd --reload

2.4 重啟chronyd

systemctl restart chronyd

然后檢查服務狀態,確保啟動成功

systemctl status chronyd

如下為啟動成功的日志:

May 25 20:30:55 myserver1 systemd[1]: Starting NTP client/server...
May 25 20:30:55 myserver1 chronyd[3887]: chronyd version 4.6.1 starting (+CMDMON +NTP +REFCLOCK +RTC +PRIVDROP +SCFILTER +SIGND +ASY>
May 25 20:30:55 myserver1 chronyd[3887]: Loaded 0 symmetric keys
May 25 20:30:55 myserver1 chronyd[3887]: Using right/UTC timezone to obtain leap second data
May 25 20:30:55 myserver1 chronyd[3887]: Frequency -6.921 +/- 0.581 ppm read from /var/lib/chrony/drift
May 25 20:30:55 myserver1 chronyd[3887]: Loaded seccomp filter (level 2)
May 25 20:30:55 myserver1 systemd[1]: Started NTP client/server.

特別說明 :

  • 由于chronyd 是由操作系統用戶chrony啟動,因此必須確保證書、私鑰、根證書文件能被用戶chrony讀取
  • 查看chronyd的進程情況
ps -ef |grep chronyd

輸出類似如下 :

chrony       846       1  0 08:34 ?        00:00:00 /usr/sbin/chronyd -F 2
chrony       847     846  0 08:34 ?        00:00:00 /usr/sbin/chronyd -F 2
chrony       848     846  0 08:34 ?        00:00:00 /usr/sbin/chronyd -F 2
chrony       849     846  0 08:34 ?        00:00:00 /usr/sbin/chronyd -F 2

至此,NTS的服務端搭建完成

三。安裝和配置NTS客戶端

3.0 將根證書(rootca.crt)拷貝到/etc/pki目錄下并設置屬性

scp -p 192.168.132.11:/etc/pki/rootca.crt /etc/pki/
chown :chrony /etc/pki/rootca.crt

3.1 安裝chrony

dnf install chrony

安裝完畢后,會得到系統服務 chronyd.service 以及 客戶端軟件 chronyc

3.2 配置NTS客戶端

配置文件是/etc/chrony.conf

3.2.1修改 /etc/chrony.conf ,增加如下內容 :

# server最后的nts表示服務端啟用nts。且使用域名(不用使用IP地址)
server ntpserver iburst nts
server ntpserver-ipv6 iburst nts# 根據情況決定是否在客戶端設置此選項
allow 192.168.132.0/24
allow fd15:4ba5:5a2b:1008:192:168::/64# 指定NTS的信任證書
ntstrustedcerts /etc/pki/rootca.crt

3.2.2 修改 /etc/chrony.conf ,注釋如下內容 :

  • serverpool開頭的行。因為假設場景是以步驟二的服務器作為NTP時間源,所以屏蔽其他的NTP源
  • sourcedir 開頭的行
    注釋后的效果如下 :
# server ntp1.aliyun.com iburst
# pool 2.centos.pool.ntp.org iburst
# sourcedir /run/chrony-dhcp

3.3 開放防火墻

firewall-cmd --permanent --add-port=123/udp
# TCP 4460 是NTS-KE協議的端口
firewall-cmd --permanent --add-port=4460/tcp
firewall-cmd --reload

3.4 設置域名與IP的對應關系

編輯/etc/hosts,增加如下內容 :

# NTS 服務端的IP地址和主機名
192.168.132.11 ntpserver
fd15:4ba5:5a2b:1008:192:168:132:11 ntpserver-ipv6

3.4 重啟chronyd

systemctl restart chronyd

然后檢查服務狀態,確保啟動成功

systemctl status chronyd

成功啟動日志如下 :

May 25 23:19:40 myclient systemd[1]: Starting NTP client/server...
May 25 23:19:40 myclient chronyd[1223]: chronyd version 4.6.1 starting (+CMDMON +NTP +REFCLOCK +RTC +PRIVDROP +SCFILTER +SIGND +ASYNCDNS +NTS +SECHASH +IPV6 +DEBUG)
May 25 23:19:40 myclient chronyd[1223]: Loaded 0 symmetric keys
May 25 23:19:40 myclient chronyd[1223]: Using right/UTC timezone to obtain leap second data
May 25 23:19:40 myclient chronyd[1223]: Frequency 14.467 +/- 5.921 ppm read from /var/lib/chrony/drift
May 25 23:19:40 myclient chronyd[1223]: Loaded seccomp filter (level 2)
May 25 23:19:40 myclient systemd[1]: Started NTP client/server.

特別說明 :

  • 重啟服務后,容易出現"證書發行人不可信任的錯誤"。可能原因有2個,1是根證書(rootca.crt)的屬性,即chrony用戶要有讀取根證書的權限;2是服務端證書中SAN沒有包含NTS服務端的主機名(因為客戶端是通過域名訪問服務端)

#四。驗證

4.1 在客戶端查看時間源信息

chronyc sources

輸出如下 :

210 Number of sources = 1
MS Name/IP address         Stratum Poll Reach LastRx Last sample               
===============================================================================
^* ntpserver                     8   8   377     6   +117us[ +124us] +/-  524us
^+ ntpserver-ipv6                8   8   377   142    +30us[  +36us] +/-  373us

4.2 在服務端查看認證情況

chronyc serverstats

輸出如下 :

NTP packets received       : 5
NTP packets dropped        : 0
Command packets received   : 1
Command packets dropped    : 0
Client log records dropped : 0
NTS-KE connections accepted: 1		# 非0值說明有客戶端連接到NTS-KE端口且發送了驗證請求
NTS-KE connections dropped : 0
Authenticated NTP packets  : 5		# 非0值說明有客戶端連接到NTS-KE端口且發送了驗證請求
Interleaved NTP packets    : 0
NTP timestamps held        : 0
NTP timestamp span         : 0
NTP daemon RX timestamps   : 0
NTP daemon TX timestamps   : 5
NTP kernel RX timestamps   : 5
NTP kernel TX timestamps   : 0
NTP hardware RX timestamps : 0
NTP hardware TX timestamps : 0

4.3 在客戶端查看驗證情況

chronyc -N authdata

輸出類似如下 :

Name/IP address             Mode KeyID Type KLen Last Atmp  NAK Cook CLen
=========================================================================
ntpserver                    NTS     1   30  128 597m    0    0    8   64
ntpserver-ipv6               NTS     1   30  128 580m    0    0    8   64

說明 :

  • 輸出結果中的KeyID、Type、KLen三列的值應該為非0

五。一些說明

  • 啟用NTS后,無需創建同步密鑰。即無需執行chrony_keygen命令
  • NTS目前采用單向認證模式,即服務端向客戶端驗證,而客戶端無需向服務端表明身份。所以只在服務端配置了證書和私鑰
  • 搭建過程中容易出錯的地方有 : 證書、私鑰和根證書文件的屬性;/etc/chrony.conf中的allow指令,以及客戶端配置/etc/hosts
  • 無論是服務端還是客戶端,在重啟chronyd服務后,一定要執行systemctl status chronyd查看服務的狀態,如果輸出有異常,就需要解決問題

六。參考文檔 :

  • 搭建基于chrony+OpenSSL(NTS協議)多層級可信時間同步服務
    https://blog.csdn.net/muxia_jhy/article/details/147876353
  • chrony.conf : man chrony.conf

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/pingmian/82626.shtml
繁體地址,請注明出處:http://hk.pswp.cn/pingmian/82626.shtml
英文地址,請注明出處:http://en.pswp.cn/pingmian/82626.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

AD9268、AD9643調試過程中遇到的問題

Ad9268芯片 AD9268是一款雙通道、16位、80 MSPS/105 MSPS/125 MSPS模數轉換器(ADC)。AD9268旨在支持要求高性能、低成本、小尺寸和多功能的通信應用。雙通道ADC內核采用多級差分流水線架構,集成輸出糾錯邏輯。每個ADC都具有寬帶寬、差分采樣保持模擬輸入放大器&…

用豆包寫單元測試

用豆包寫單元測試, 輸入 vue 模板內容,輸入 參考vue模板內容寫一個單元測試要求用jest.mock實現構造完成,修復bug。npm run test:unit – tests/unit/views/xxx/xxx.spec.js看下 % Stmts 語句覆蓋率:執行到的代碼語句占總語句的比…

css樣式塊重復調用

通譯靈碼解釋。還給了一些示例,包含傳參等內容 scss和sass的區別。scss與sass是兩種樣式編寫風格,scss是大括號加;號形式。而sass是縮進的格式使用scss為什么要要安裝sass呢。sass是一門css預處理器語言。所以要安裝。

【深度學習新浪潮】以圖搜地點是如何實現的?(含大模型方案)

1. 以圖搜地點的實現方式有哪些? 掃描手機照片中的截圖并識別出位置信息,主要有以下幾種實現方式: 通過照片元數據獲取: 原理:現代智能手機拍攝的照片通常會包含Exif(Exchangeable Image File)元數據。Exif中除了有像素信息之外,還包含了光圈、快門、白平衡、ISO、焦距…

DeepSeek R1 與 V3 的全面對比,兩個版本有什么差別?

DeepSeek R1與DeepSeek V3是深度求索(DeepSeek)公司推出的兩款定位不同的大語言模型,界面上用戶可選擇基礎模型(V3)、深度思考(R1)、聯網搜索。 基礎模型(V3)是DeepSeek的標配,沒有勾選默認就是基礎模型。為了讓用戶更清晰地了解兩款模型的差…

Spring Boot 深度集成 Ollama 指南:從聊天模型配置到生產級應用開發

Spring Boot 深度集成 Ollama 指南:從聊天模型配置到生產級應用開發 前言 在人工智能應用開發中,大語言模型(LLM)的本地化部署需求日益增長。Ollama 作為開源的本地LLM運行平臺,支持Mistral、LLaMA等主流模型&#x…

查詢oracle進程數和會話數進行優化

查看當前參數配置 首先需要查詢當前的 processes 和 sessions 參數值,以確定是否需要調整。 SQL SHOW PARAMETER processes; SHOW PARAMETER sessions; 這些命令可以顯示當前實例中允許的最大進程數和會話數 查詢當前連接數,查詢并發會話 SELECT COUNT…

頂會新方向:卡爾曼濾波+目標檢測

卡爾曼慮波+目標檢測創新結合,新作準確率突破100%! 一個有前景且好發論文的方向:卡爾曼濾波+目標檢測! 這種創新結合,得到學術界的廣泛認可,多篇成果陸續登上頂會頂刊。例如無人機競速系統 Swift,登上nat…

運維自動化工具 ansible 知識點總結

1.Ansible 基礎 1.1 Ansible簡介 Ansible 是一個開源軟件,提供配置管理和應用程序部署等項目通用的管理功能。它主要運行在類 Unix 系統上,通過特性語言來描述各種資源對象,進而管理類 Unix 系統和 Microsoft Windows 系統等系統資源。 官網…

基于python,html,flask,echart,ids/ips,VMware,mysql,在線sdn防御ddos系統

詳細視頻:【基于python,html,flask,echart,ids/ips,VMware,mysql,在線sdn防御ddos系統-嗶哩嗶哩】 https://b23.tv/azUqQXe

C語言進階--數據的存儲

1.數據類型介紹 內置類型 char //字符數據類型 1字節 short //短整型 2字節 int //整型 4字節 long //長整型 4/8字節 long long //更長的整型 8字節 (C99中引入的) float //單精度浮點數 4字節 double //雙精度浮點數 8字節sizeof(long…

C++學習細節回顧(匯總三)

一.多態概念 同樣是動物叫的?個?為(函數)&#xff0c;傳貓對象過去&#xff0c;就是”(>ω<)喵“&#xff0c;傳狗對象過去&#xff0c;就是"汪汪"。 1.根據對象不同類型&#xff0c;調用不同函數&#xff0c;這就叫做運行時多態(動態多態) 2.編譯時多態(靜態…

SpringAI+MCPServer+MCPClient快速入門

SpringAI MCPServer MCPClient 快速入門編寫大綱 源代碼地址&#xff1a;https://download.csdn.net/download/user_admin_god/90926893 1. 介紹 本文通過使用免費的智普AI的glm-4-flash模型&#xff0c;設計并實現了一個智能問答系統。在該系統中&#xff0c;我們編寫了一…

Linux `vi/vim` 編輯器深度解析與高階應用指南

Linux `vi/vim` 編輯器深度解析與高階應用指南 一、核心功能解析1. 模式系統2. 與主流編輯器對比二、核心操作體系1. 高效導航命令2. 文本操作矩陣三、高階配置體系1. .vimrc 配置示例2. 插件管理系統四、企業級開發實踐1. 代碼編輯技巧2. 宏錄制與批量處理五、可視化與多窗口1…

Java五種方法批量處理List元素全解

Java:如何優雅批量處理List中的每個元素 一、場景分析&#xff1a;為什么需要批量處理List&#xff1f;二、核心方法&#xff1a;五種實現方式對比2.1 普通for循環&#xff08;最直接的方式&#xff09;代碼示例&#xff1a;優缺點&#xff1a; 2.2 Java 8 replaceAll&#xff…

【Elasticsearch】`_refresh`和`_flush`的區別

在Elasticsearch中&#xff0c;_refresh和_flush操作雖然看似都與“刷新”有關&#xff0c;但它們的功能和作用范圍有顯著區別&#xff1a; _refresh操作 - 目的&#xff1a;使索引操作&#xff08;如新增、更新、刪除文檔&#xff09;后的更改能夠立即被搜索到。 - 工作原理…

Java核心數據類型:String深度解析(JDK 8+)

&#x1f525;「炎碼工坊」技術彈藥已裝填&#xff01; 點擊關注 → 解鎖工業級干貨【工具實測|項目避坑|源碼燃燒指南】 問題驅動&#xff1a;從用戶注冊場景說起 場景描述&#xff1a;開發一個用戶注冊功能時&#xff0c;需要處理用戶名的校驗、格式化和存儲。你可能會遇到…

人員睡崗檢測算法AI智能分析網關V4打造工業/安防/交通等多場景應用方案

一、引言? 在工業生產、安防監控等多領域&#xff0c;眾多崗位需員工長時間值守&#xff0c;如流水線工人、監控值班員等。但高強度工作易引發睡崗問題&#xff0c;導致生產效率下降&#xff0c;甚至造成安全事故與財產損失。傳統人工巡檢響應慢、成本高&#xff0c;難以滿足…

自動生成提示技術突破:AUTOPROMPT重塑語言模型應用

AUTOPROMPT 預訓練語言模型的顯著成功促使人們研究這些模型在預訓練期間學習了哪些類型的知識。將任務重新表述為填空題(例如,完形填空測試)是衡量此類知識的自然方法 但是,它的使用受到編寫合適提示所需的手動工作和猜測的限制。為了解決這個問題,我們開發了 AUTOPROMP…

6個月Python學習計劃 Day 7 - 復盤 + 測試日

第一周 Day 1 - Python 基礎入門 & 開發環境搭建 Day 2 - 條件判斷、用戶輸入、格式化輸出 Day 3 - 循環語句 range 函數 Day 4 - 列表 & 元組基礎 Day 5 - 字典&#xff08;dict&#xff09;與集合&#xff08;set&#xff09; Day 6 - 綜合實戰&#xff1a;學生信息…