自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

如何用NTS保證NTP的安全

運(yùn)維 系統(tǒng)運(yùn)維
許多計(jì)算機(jī)使用網(wǎng)絡(luò)時(shí)間協(xié)議(NTP)通過(guò)互聯(lián)網(wǎng)來(lái)同步系統(tǒng)時(shí)鐘。NTP 是少數(shù)幾個(gè)仍在普遍使用的不安全的互聯(lián)網(wǎng)協(xié)議之一。攻擊者如果能夠觀察到客戶端和服務(wù)器之間的網(wǎng)絡(luò)流量,就可以向客戶端提供虛假的數(shù)據(jù),并根據(jù)客戶端的實(shí)現(xiàn)和配置,強(qiáng)迫其將系統(tǒng)時(shí)鐘設(shè)置為任何時(shí)間和日期。

[[354246]]

許多計(jì)算機(jī)使用網(wǎng)絡(luò)時(shí)間協(xié)議Network Time Protocol(NTP)通過(guò)互聯(lián)網(wǎng)來(lái)同步系統(tǒng)時(shí)鐘。NTP 是少數(shù)幾個(gè)仍在普遍使用的不安全的互聯(lián)網(wǎng)協(xié)議之一。攻擊者如果能夠觀察到客戶端和服務(wù)器之間的網(wǎng)絡(luò)流量,就可以向客戶端提供虛假的數(shù)據(jù),并根據(jù)客戶端的實(shí)現(xiàn)和配置,強(qiáng)迫其將系統(tǒng)時(shí)鐘設(shè)置為任何時(shí)間和日期。如果客戶端的系統(tǒng)時(shí)鐘不準(zhǔn)確,一些程序和服務(wù)就可能無(wú)法工作。例如,如果根據(jù)客戶端的系統(tǒng)時(shí)鐘,Web 服務(wù)器的證書(shū)似乎已經(jīng)過(guò)期,Web 瀏覽器將無(wú)法正常工作??梢允褂?ruby>網(wǎng)絡(luò)時(shí)間安全Network Time Security(NTS)來(lái)保證 NTP 的安全。

Fedora 33 [1] 是第一個(gè)支持 NTS 的 Fedora 版本。NTS 是一種新的 NTP 驗(yàn)證機(jī)制。它使客戶端能夠驗(yàn)證它們從服務(wù)器接收的數(shù)據(jù)包在傳輸過(guò)程中有沒(méi)有被修改。當(dāng) NTS 啟用時(shí),攻擊者唯一能做的就是丟棄或延遲數(shù)據(jù)包。關(guān)于 NTS 的更多細(xì)節(jié),請(qǐng)參見(jiàn) RFC8915。

使用對(duì)稱密鑰可以很好地保證 NTP 的安全。遺憾的是,服務(wù)器必須為每個(gè)客戶端配備不同的密鑰,而且密鑰必須安全地分發(fā)才行。這對(duì)于本地網(wǎng)絡(luò)上的私有服務(wù)器來(lái)說(shuō)可能是實(shí)用的,但它不能擴(kuò)展到有著數(shù)百萬(wàn)客戶端的公共服務(wù)器上。

NTS 包括一個(gè)密鑰建立Key Establishment(NTS-KE)協(xié)議,它可以自動(dòng)創(chuàng)建服務(wù)器與其客戶端之間使用的加密密鑰。它在 TCP 端口 4460 上使用傳輸層安全Transport Layer Security(TLS)。它被設(shè)計(jì)成可以擴(kuò)展到非常多的客戶端,而對(duì)準(zhǔn)確性的影響最小。服務(wù)器不需要保存任何客戶端特定的狀態(tài)。它為客戶提供 cookie,cookie 是加密的,包含驗(yàn)證 NTP 數(shù)據(jù)包所需的密鑰。隱私是 NTS 的目標(biāo)之一??蛻舳嗽诿看畏?wù)器響應(yīng)時(shí)都會(huì)得到一個(gè)新的 cookie,所以它不必重復(fù)使用 cookie。這可以防止被動(dòng)觀察者跟蹤在網(wǎng)絡(luò)之間遷移的客戶端。

Fedora 中默認(rèn)的 NTP 客戶端是 Chrony。Chrony 在 4.0 版本中增加了 NTS 支持,但并沒(méi)有改變默認(rèn)配置。Chrony 仍然使用 pool.ntp.org 項(xiàng)目中的公共服務(wù)器,而且默認(rèn)情況下 NTS 沒(méi)有啟用。

目前,支持 NTS 的公共 NTP 服務(wù)器非常少。兩個(gè)主要的提供商是 Cloudflare 和 Netnod。Cloudflare 服務(wù)器分布在世界各地的不同地方。他們使用的是任播anycast地址,應(yīng)該可以讓大多數(shù)客戶到達(dá)一個(gè)接近的服務(wù)器。Netnod 服務(wù)器位于瑞典。在未來(lái),我們可能會(huì)看到更多支持 NTS 的公共 NTP 服務(wù)器。

為了獲得最佳的可靠性,配置 NTP 客戶端的一般建議是至少有三個(gè)工作的服務(wù)器。為了達(dá)到最好的精度,建議選擇距離較近的服務(wù)器,以減少網(wǎng)絡(luò)延遲和非對(duì)稱網(wǎng)絡(luò)路由造成的不對(duì)稱性。如果你不關(guān)心細(xì)粒度的精度,你可以忽略這個(gè)建議,使用任何你信任的 NTS 服務(wù)器,無(wú)論它們位于哪里。

如果你確實(shí)想要高準(zhǔn)確度,但又沒(méi)有近距離的 NTS 服務(wù)器,你可以將遠(yuǎn)處的 NTS 服務(wù)器和近處的非 NTS 服務(wù)器混合使用。但是,這樣的配置不如只使用 NTS 服務(wù)器的配置安全。攻擊者仍然不能強(qiáng)迫客戶機(jī)接受任意時(shí)間,但他們確實(shí)對(duì)客戶機(jī)的時(shí)鐘及其估計(jì)精度有更大的控制權(quán),這在某些環(huán)境下可能是不可接受的。

在安裝程序中啟用客戶端 NTS

安裝 Fedora 33 時(shí),你可以在“Time & Date”對(duì)話框的“Network Time”配置中啟用 NTS。在點(diǎn)擊“+”(添加)按鈕之前,請(qǐng)輸入服務(wù)器的名稱并檢查 NTS 支持情況。你可以添加一個(gè)或多個(gè)具有 NTS 的服務(wù)器或池。要?jiǎng)h除默認(rèn)的服務(wù)器池(2.fedora.pool.ntp.org),請(qǐng)取消選中“Use”列中的相應(yīng)標(biāo)記。

用NTS保證NTP的安全

Fedora 安裝程序中的網(wǎng)絡(luò)時(shí)間配置

在配置文件中啟用客戶端 NTS

如果你從之前的 Fedora 版本升級(jí),或者你沒(méi)有在安裝程序中啟用 NTS,你可以直接在 /etc/chrony.conf 中啟用 NTS。除了推薦的 iburst 選項(xiàng)外,還可以對(duì)指定服務(wù)器使用 nts 選項(xiàng)。例如:

  1. server time.cloudflare.com iburst nts
  2. server nts.sth1.ntp.se iburst nts
  3. server nts.sth2.ntp.se iburst nts

你還應(yīng)該允許客戶端將 NTS 密鑰和 cookie 保存到磁盤(pán)上,這樣它就不必在每次啟動(dòng)時(shí)重復(fù) NTS-KE 會(huì)話。在 chrony.conf 中添加以下一行,如果還沒(méi)有的話:

  1. ntsdumpdir /var/lib/chrony

如果不想讓 DHCP 提供的 NTP 服務(wù)器與你指定的服務(wù)器混在一起,請(qǐng)?jiān)?nbsp;chrony.conf 中刪除或注釋以下一行:

  1. sourcedir /run/chrony-dhcp

當(dāng)你完成編輯 chrony.conf 后,保存你的更改并重新啟動(dòng) chronyd 服務(wù):

  1. systemctl restart chronyd

檢查客戶端狀態(tài)

在 root 用戶下運(yùn)行以下命令,檢查 NTS 密鑰建立是否成功:

  1. # chronyc -N authdata
  2. Name/IP address Mode KeyID Type KLen Last Atmp NAK Cook CLen
  3. =========================================================================
  4. time.cloudflare.com NTS 1 15 256 33m 0 0 8 100
  5. nts.sth1.ntp.se NTS 1 15 256 33m 0 0 8 100
  6. nts.sth2.ntp.se NTS 1 15 256 33m 0 0 8 100

KeyID、Type 和 KLen 列應(yīng)該有非零值。如果它們?yōu)榱?,?qǐng)檢查系統(tǒng)日志中是否有來(lái)自 chronyd 的錯(cuò)誤信息。一個(gè)可能的故障原因是防火墻阻止了客戶端與服務(wù)器的 TCP 端口(端口 4460)的連接。

另一個(gè)可能的故障原因是由于客戶機(jī)的時(shí)鐘錯(cuò)誤而導(dǎo)致證書(shū)無(wú)法驗(yàn)證。這是 NTS 的先有雞還是先有蛋的問(wèn)題。你可能需要手動(dòng)修正日期或暫時(shí)禁用 NTS,以使 NTS 正常工作。如果你的電腦有實(shí)時(shí)時(shí)鐘,幾乎所有的電腦都有,而且有好的電池做備份,這種操作應(yīng)該只需要一次。

如果計(jì)算機(jī)沒(méi)有實(shí)時(shí)時(shí)鐘或電池,就像一些常見(jiàn)的小型 ARM 計(jì)算機(jī)(如樹(shù)莓派)那樣,你可以在 /etc/sysconfig/chronyd 中添加 -s 選項(xiàng)來(lái)恢復(fù)上次關(guān)機(jī)或重啟時(shí)保存的時(shí)間。時(shí)鐘會(huì)落后于真實(shí)時(shí)間,但如果電腦沒(méi)有關(guān)機(jī)太久,服務(wù)器的證書(shū)也沒(méi)有在離到期時(shí)間太近的時(shí)候更新,應(yīng)該足以讓時(shí)間檢查成功。作為最后的手段,你可以用 nocerttimecheck 指令禁用時(shí)間檢查。詳情請(qǐng)參見(jiàn)chrony.conf(5) 手冊(cè)頁(yè)。

運(yùn)行下面的命令來(lái)確認(rèn)客戶端是否在進(jìn)行 NTP 測(cè)量:

  1. # chronyc -N sources
  2. MS Name/IP address Stratum Poll Reach LastRx Last sample
  3. ===============================================================================
  4. ^* time.cloudflare.com 3 6 377 45 +355us[ +375us] +/- 11ms
  5. ^+ nts.sth1.ntp.se 1 6 377 44 +237us[ +237us] +/- 23ms
  6. ^+ nts.sth2.ntp.se 1 6 377 44 -170us[ -170us] +/- 22ms

Reach 列應(yīng)該有一個(gè)非零值,最好是 377。上圖所示的值 377 是一個(gè)八進(jìn)制數(shù),它表示最后八個(gè)請(qǐng)求都有有效的響應(yīng)。如果啟用了 NTS 的話,驗(yàn)證檢查將包括 NTS 認(rèn)證。如果該值一直很少或從未達(dá)到 377,則表明 NTP 請(qǐng)求或響應(yīng)在網(wǎng)絡(luò)中丟失了。眾所周知,一些主要的網(wǎng)絡(luò)運(yùn)營(yíng)商有中間設(shè)備,它可以阻止或限制大的 NTP 數(shù)據(jù)包的速率,以緩解利用 ntpd 的監(jiān)控協(xié)議進(jìn)行的放大攻擊。不幸的是,這影響了受 NTS 保護(hù)的 NTP 數(shù)據(jù)包,盡管它們不會(huì)引起任何放大。NTP 工作組正在考慮為 NTP 提供一個(gè)替代端口,作為解決這個(gè)問(wèn)題的辦法。

在服務(wù)器上啟用 NTS

如果你有自己的 NTP 服務(wù)器,運(yùn)行著 chronyd,你可以啟用服務(wù)器的 NTS 支持,讓它的客戶端安全同步。如果該服務(wù)器是其他服務(wù)器的客戶端,它應(yīng)該使用 NTS 或?qū)ΨQ密鑰與之同步??蛻舳思僭O(shè)同步鏈在所有服務(wù)器到主時(shí)間服務(wù)器之間是安全的。

啟用服務(wù)器 NTS 類似于在 Web 服務(wù)器上啟用 HTTPS。你只需要一個(gè)私鑰和證書(shū)。例如,證書(shū)可以由 Let's Encrypt 權(quán)威機(jī)構(gòu)使用 certbot 工具簽署。當(dāng)你有了密鑰和證書(shū)文件(包括中間證書(shū)),在 chrony.conf 中用以下指令指定它們:

  1. ntsserverkey /etc/pki/tls/private/foo.example.net.key
  2. ntsservercert /etc/pki/tls/certs/foo.example.net.crt

確保之前在客戶端配置中提到的 ntsdumpdir 指令存在于 chrony.conf 中。它允許服務(wù)器將其密鑰保存到磁盤(pán)上,這樣服務(wù)器的客戶端在重啟服務(wù)器時(shí)就不必獲取新的密鑰和 cookie 了。

重新啟動(dòng) chronyd 服務(wù):

  1. systemctl restart chronyd

如果系統(tǒng)日志中沒(méi)有來(lái)自 chronyd 的錯(cuò)誤信息,那么它應(yīng)該是可以接受客戶端連接的,如果服務(wù)器有防火墻,則需要同時(shí)允許 UDP 123 和 TCP 4460 端口的 NTP 和 NTS-KE 服務(wù)。

你可以用下面的命令在客戶端機(jī)器上進(jìn)行快速測(cè)試:

  1. $ chronyd -Q -t 3 'server foo.example.net iburst nts maxsamples 1'
  2. 2020-10-13T12:00:52Z chronyd version 4.0 starting (+CMDMON +NTP +REFCLOCK +RTC +PRIVDROP +SCFILTER +SIGND +ASYNCDNS +NTS +SECHASH +IPV6 +DEBUG)
  3. 2020-10-13T12:00:52Z Disabled control of system clock
  4. 2020-10-13T12:00:55Z System clock wrong by -0.001032 seconds (ignored)
  5. 2020-10-13T12:00:55Z chronyd exiting

如果你看到一個(gè)“System clock wrong”消息,說(shuō)明它是正確工作的。

在服務(wù)器上,你可以使用下面的命令來(lái)檢查它已經(jīng)處理了多少個(gè) NTS-KE 連接和認(rèn)證的 NTP 數(shù)據(jù)包:

  1. # chronyc serverstats
  2. NTP packets received : 2143106240
  3. NTP packets dropped : 117180834
  4. Command packets received : 16819527
  5. Command packets dropped : 0
  6. Client log records dropped : 574257223
  7. NTS-KE connections accepted: 104
  8. NTS-KE connections dropped : 0
  9. Authenticated NTP packets : 52139

如果你看到非零的 “NTS-KE connections accepted” 和 “Authenticated NTP packets”,這意味著至少有一些客戶端能夠連接到 NTS-KE 端口,并發(fā)送一個(gè)認(rèn)證的 NTP 請(qǐng)求。

  1. Fedora 33 Beta 安裝程序包含一個(gè)較舊的 Chrony 預(yù)發(fā)布版本,它不能與當(dāng)前的 NTS 服務(wù)器一起工作,因?yàn)?NTS-KE 端口已經(jīng)改變。因此,在安裝程序中的網(wǎng)絡(luò)時(shí)間配置中,服務(wù)器總是顯示為不工作。安裝后,需要更新 chrony 包,才能與當(dāng)前的服務(wù)器配合使用。  

 

責(zé)任編輯:龐桂玉 來(lái)源: Linux中國(guó)
相關(guān)推薦

2010-01-08 16:11:08

第三層交換機(jī)

2010-10-21 13:54:20

2011-09-23 10:13:43

2024-06-17 00:02:00

線程安全HashMapJDK 1.7

2019-03-13 08:28:28

物聯(lián)網(wǎng)設(shè)計(jì)物聯(lián)網(wǎng)安全物聯(lián)網(wǎng)

2021-05-26 08:49:15

API接口安全

2023-01-26 02:07:51

HashSet線程安全

2017-11-03 13:48:59

ERP信息化數(shù)據(jù)

2024-05-06 13:36:41

2010-09-06 09:27:54

社交網(wǎng)絡(luò)

2010-10-08 10:17:59

Web服務(wù)安全

2021-11-11 11:26:43

云計(jì)算數(shù)據(jù)安全云安全

2019-10-15 11:19:56

數(shù)據(jù)中心云計(jì)算互聯(lián)網(wǎng)

2012-03-07 10:00:35

2013-07-16 14:10:03

2011-07-08 09:54:07

2018-06-25 09:48:00

數(shù)據(jù)安全云服務(wù)

2012-05-10 09:50:53

云計(jì)算安全

2023-10-16 11:12:29

2012-03-16 09:39:48

點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)