如何在Linux上運行你自己的公共時間服務(wù)器
2018-04-16 14:52:22
1412瀏覽
最重要的公共服務(wù)之一就是報時timekeeping,但是很多人并沒有意識到這一點。大多數(shù)公共時間服務(wù)器都是由志愿者管理,以滿足不斷增長的需求。這里學(xué)習(xí)一下如何運行你自己的時間服務(wù)器,為基礎(chǔ)公共利益做貢獻(xiàn)。(查看在Linux上使用NTP保持精確時間去學(xué)習(xí)如何設(shè)置一臺局域網(wǎng)時間服務(wù)器)
著名的時間服務(wù)器濫用事件
就像現(xiàn)實生活中任何一件事情一樣,即便是像時間服務(wù)器這樣的公益項目,也會遭受不稱職的或者惡意的濫用。
消費類網(wǎng)絡(luò)設(shè)備的供應(yīng)商因制造了大混亂而臭名昭著。我回想起的第一件事發(fā)生在2003年,那時,NetGear在它們的路由器中硬編碼了威斯康星大學(xué)的NTP時間服務(wù)器地址。使得時間服務(wù)器的查詢請求突然增加,隨著NetGear賣出越來越多的路由器,這種情況越發(fā)嚴(yán)重。更有意思的是,路由器的程序設(shè)置是每秒鐘發(fā)送一次請求,這將使服務(wù)器難堪重負(fù)。后來Netgear發(fā)布了升級固件,但是,升級他們的設(shè)備的用戶很少,并且他們的其中一些用戶的設(shè)備,到今天為止,還在不停地每秒鐘查詢一次威斯康星大學(xué)的NTP服務(wù)器。Netgear給威斯康星大學(xué)捐獻(xiàn)了一些錢,以幫助彌補他們帶來的成本增加,直到這些路由器全部淘汰。類似的事件還有D-Link、Snapchat、TP-Link等等。
對NTP協(xié)議進(jìn)行反射和放大,已經(jīng)成為發(fā)起DDoS攻擊的一個選擇。當(dāng)攻擊者使用一個偽造的目標(biāo)受害者的源地址向時間服務(wù)器發(fā)送請求,稱為反射攻擊;攻擊者發(fā)送請求到多個服務(wù)器,這些服務(wù)器將回復(fù)請求,這樣就使偽造的源地址受到轟炸。放大攻擊是指一個很小的請求收到大量的回復(fù)信息。例如,在Linux上,ntpq命令是一個查詢你的NTP服務(wù)器并驗證它們的系統(tǒng)時間是否正確的很有用的工具。一些回復(fù),比如,對端列表,是非常大的。組合使用反射和放大,攻擊者可以將10倍甚至更多帶寬的數(shù)據(jù)量發(fā)送到被攻擊者。
那么,如何保護(hù)提供公益服務(wù)的公共NTP服務(wù)器呢?從使用NTP4.2.7p26或者更新的版本開始,它們可以幫助你的Linux發(fā)行版不會發(fā)生前面所說的這種問題,因為它們都是在2010年以后發(fā)布的。這個發(fā)行版都默認(rèn)禁用了最常見的濫用攻擊。目前,最新版本是4.2.8p10,它發(fā)布于2017年。
你可以采用的另一個措施是,在你的網(wǎng)絡(luò)上啟用入站和出站過濾器。阻塞宣稱來自你的網(wǎng)絡(luò)的數(shù)據(jù)包進(jìn)入你的網(wǎng)絡(luò),以及攔截發(fā)送到偽造返回地址的出站數(shù)據(jù)包。入站過濾器可以幫助你,而出站過濾器則幫助你和其他人。閱讀BCP38.info了解更多信息。
層級為0、1、2的時間服務(wù)器
NTP有超過30年的歷史了,它是至今還在使用的最老的因特網(wǎng)協(xié)議之一。它的用途是保持計算機(jī)與世界標(biāo)準(zhǔn)時間(UTC)的同步。NTP網(wǎng)絡(luò)是分層組織的,并且同層的設(shè)備是對等的。層次Stratum0包含主報時設(shè)備,比如,原子鐘。層級1的時間服務(wù)器與層級0的設(shè)備同步。層級2的設(shè)備與層級1的設(shè)備同步,層級3的設(shè)備與層級2的設(shè)備同步。NTP協(xié)議支持16個層級,現(xiàn)實中并沒有使用那么多的層級。同一個層級的服務(wù)器是相互對等的。
過去很長一段時間內(nèi),我們都為客戶端選擇配置單一的NTP服務(wù)器,而現(xiàn)在更好的做法是使用NTP服務(wù)器地址池,它使用輪詢的DNS信息去共享負(fù)載。池地址只是為客戶端服務(wù)的,比如單一的PC和你的本地局域網(wǎng)NTP服務(wù)器。當(dāng)你運行一臺自己的公共服務(wù)器時,你不用使用這些池地址。
公共NTP服務(wù)器配置
運行一臺公共NTP服務(wù)器只有兩步:設(shè)置你的服務(wù)器,然后申請加入到NTP服務(wù)器池。運行一臺公共的NTP服務(wù)器是一種很高尚的行為,但是你得先知道這意味著什么。加入NTP服務(wù)器池是一種長期責(zé)任,因為即使你加入服務(wù)器池后,運行了很短的時間馬上退出,然后接下來的很多年你仍然會接收到請求。
你需要一個靜態(tài)的公共IP地址,一個至少512Kb/s帶寬的、可靠的、持久的因特網(wǎng)連接。NTP使用的是UDP的123端口。它對機(jī)器本身要求并不高,很多管理員在其它的面向公共的服務(wù)器(比如,Web服務(wù)器)上順帶架設(shè)了NTP服務(wù)。
配置一臺公共的NTP服務(wù)器與配置一臺用于局域網(wǎng)的NTP服務(wù)器是一樣的,只需要幾個配置。我們從閱讀協(xié)議規(guī)則開始。遵守規(guī)則并注意你的行為;幾乎每個時間服務(wù)器的維護(hù)者都是像你這樣的志愿者。然后,從StratumTwoTimeServers中選擇4到7個層級2的上游服務(wù)器。選擇的時候,選取地理位置上靠近(小于300英里的)你的因特網(wǎng)服務(wù)提供商的上游服務(wù)器,閱讀他們的訪問規(guī)則,然后,使用ping和mtr去找到延遲和跳數(shù)最小的服務(wù)器。
以下的/etc/ntp.conf配置示例文件,包括了IPv4和IPv6,以及基本的安全防護(hù):
#stratum2serverlist
serverservername_1iburst
serverservername_2iburst
serverservername_3iburst
serverservername_4iburst
serverservername_5iburst
#accessrestrictions
restrict-4defaultkodnoquerynomodifynotrapnopeerlimited
restrict-6defaultkodnoquerynomodifynotrapnopeerlimited
#Allowntpqandntpdcqueriesonlyfromlocalhost
restrict127.0.0.1
restrict::1
啟動你的NTP服務(wù)器,讓它運行幾分鐘,然后測試它對遠(yuǎn)程服務(wù)器的查詢:
$ntpq-p
remoterefidsttwhenpollreachdelayoffsetjitter
=================================================================
+tock.no-such-ag200.98.196.2122u3664798.65488.43965.123
+PBX.cytranet.ne45.33.84.2083u3764772.419113.535129.313
*eterna.binary.n199.102.46.702u3964792.93398.47556.778
+time.mclarkdev.132.236.56.2503u37645111.05988.02974.919
目前表現(xiàn)很好?,F(xiàn)在從另一臺PC上使用你的NTP服務(wù)器名字進(jìn)行測試。以下的示例是一個正確的輸出。如果有不正確的地方,你將看到一些錯誤信息。
$ntpdate-qyourservername
server66.96.99.10,stratum2,offset0.017690,delay0.12794
server98.191.213.2,stratum1,offset0.014798,delay0.22887
server173.49.198.27,stratum2,offset0.020665,delay0.15012
server129.6.15.28,stratum1,offset-0.018846,delay0.20966
26Jan11:13:54ntpdate[17293]:adjusttimeserver98.191.213.2offset0.014798sec
一旦你的服務(wù)器運行的很好,你就可以向manage.ntppool.org申請加入池中。
查看官方的手冊分布式網(wǎng)絡(luò)時間服務(wù)器(NTP)學(xué)習(xí)所有的命令、配置選項、以及高級特性,比如,管理、查詢、和驗證。訪問以下的站點學(xué)習(xí)關(guān)于運行一臺時間服務(wù)器所需要的一切東西。
最后想要了解更多關(guān)于Linux發(fā)展前景趨勢,請關(guān)注扣丁學(xué)堂Linux培訓(xùn)官網(wǎng)、微信等平臺,扣丁學(xué)堂IT職業(yè)在線學(xué)習(xí)教育平臺為您提供權(quán)威的Linux視頻教程系統(tǒng),通過千鋒扣丁學(xué)堂金牌講師在線錄制的Linux視頻教程課程,讓你快速掌握Linux從入門到精通開發(fā)實戰(zhàn)技能??鄱W(xué)堂Linux技術(shù)交流群:422345477。
【關(guān)注微信公眾號獲取更多的學(xué)習(xí)資料】
查看更多關(guān)于“Linux培訓(xùn)資訊”的相關(guān)文章>>
標(biāo)簽:
Linux命令
Linux視頻教程
Linux培訓(xùn)
Linux在線學(xué)習(xí)
Linux在線視頻
Linux系統(tǒng)