Ağ Zaman Protokolü - Network Time Protocol

Ağ Zaman Protokolü ( NTP ) bir olduğu ağ protokolü için saat senkronizasyonu üzerinde bilgisayar sistemleri arasında paket-anahtarlamalı , variable- gecikme veri ağları. 1985'ten bu yana kullanımda olan NTP, mevcut kullanımdaki en eski İnternet protokollerinden biridir. NTP tarafından tasarlanan David L. Mills arasında Delaware Üniversitesi .

NTP amaçlanmaktadır senkronize birkaç dahilinde tüm katılımcı bilgisayarları milisaniye arasında eşgüdümlü evrensel saat (UTC). Doğru zaman sunucularını seçmek için Marzullo algoritmasının değiştirilmiş bir versiyonu olan kesişim algoritmasını kullanır ve değişken ağ gecikmesinin etkilerini azaltmak için tasarlanmıştır . NTP, genel İnternet üzerinden genellikle on milisaniyelik bir süreyi koruyabilir ve ideal koşullar altında yerel alan ağlarında bir milisaniyeden daha iyi doğruluk elde edebilir . Asimetrik yollar ve ağ tıkanıklığı 100 ms veya daha fazla hatalara neden olabilir.

Protokol genellikle bir istemci-sunucu modeli olarak tanımlanır , ancak her iki eşin diğerini potansiyel bir zaman kaynağı olarak gördüğü eşler arası ilişkilerde de aynı şekilde kolayca kullanılabilir . Uygulamalar , 123 numaralı bağlantı noktasında Kullanıcı Datagram Protokolü'nü (UDP) kullanarak zaman damgaları gönderir ve alır. Ayrıca , istemcilerin ilk gidiş-dönüş kalibrasyon değişiminden sonra zaman güncellemelerini pasif olarak dinlediği yayın veya çok noktaya yayın kullanabilirler . NTP, yaklaşmakta olan herhangi bir artık saniye ayarlaması için bir uyarı verir , ancak yerel saat dilimleri veya yaz saati uygulaması hakkında hiçbir bilgi iletilmez.

Mevcut protokol sürümünü 4'te belirtildiği gibi bir önerilen standart (NTPv4) 'dir , RFC  5905 . Bu ise geriye doğru uyumlu belirtilen, sürüm 3 RFC  1305 .

Ağ Zaman Güvenliği (NTS) TLS ve ile NTP güvenli sürüm AEAD şu anda önerilen standart ve belgelenen olan RFC  8915 .

Tarih

NTP, David L. Mills tarafından tasarlanmıştır .

1979'da, New York'taki Ulusal Bilgisayar Konferansı'nda , Atlantik ötesi bir uydu ağı üzerinden çalışan İnternet hizmetlerinin muhtemelen ilk halka açık gösteriminde ağ zaman senkronizasyon teknolojisi kullanıldı . Teknoloji daha sonra 1981 İnternet Mühendisliği Notunda (IEN) 173 açıklanmıştır ve ondan RFC 778'de belgelenen bir genel protokol geliştirilmiştir . Teknoloji ilk olarak Hello yönlendirme protokolünün bir parçası olarak bir yerel alan ağında konuşlandırıldı ve uzun yıllar boyunca çalıştığı ağ prototiplemesinde kullanılan deneysel bir işletim sistemi olan Fuzzball yönlendiricisinde uygulandı .  

Diğer ilgili ağ araçları hem o zaman hem de şimdi mevcuttu. Olayların zamanını kaydetmek için Gündüz ve Saat protokollerinin yanı sıra ICMP Zaman Damgası mesajlarını ve IP Zaman Damgası seçeneğini ( RFC  781 ) içerirler . Daha eksiksiz senkronizasyon sistemleri, NTP'nin veri analizi ve saat disiplin algoritmalarından yoksun olmasına rağmen , tüm istemciler için bir sunucu atamak için bir seçim algoritması kullanan Unix arka plan programı timed'ı içerir ; ve NTP katman modeline benzer bir sunucu hiyerarşisi kullanan Dijital Zaman Senkronizasyon Hizmeti (DTSS).

1985 yılında, NTP versiyonu 0 (NTPv0) yün yumağı ve Unix hem de uygulanmıştır ve NTPv4 içine sürmüş, NTP paket başlığı ve gidiş-dönüş gecikmesi ve ofset hesaplamalar, belgelenen RFC  958 . O sırada mevcut olan nispeten yavaş bilgisayarlar ve ağlara rağmen, Atlantik yayılan bağlantılarda genellikle 100 milisaniyeden daha iyi doğruluk, Ethernet ağlarında onlarca milisaniyelik doğruluk elde edildi .

1988'de, ilgili algoritmalarla birlikte NTPv1 protokolünün çok daha eksiksiz bir özelliği RFC  1059'da yayınlandı . RFC  956'da belgelenen deneysel sonuçlardan ve saat filtresi algoritmasından yararlandı ve istemci-sunucu ve eşler arası modları tanımlayan ilk sürümdü. 1991 yılında NTPv1 mimarisi, protokol ve algoritmalar tarafından bir makale yayınlanması ile daha geniş bir mühendislik topluluğunun dikkatine sunulduğunu David L. Mills içinde Communications IEEE Transactions on .

1989 yılında, RFC  1119 bir yardımıyla NTPv2 tanımlayan yayınlanan durum makinesi ile, pseudocode çalışmasını tarif etmek için. Algoritmanın büyük kısmıyla birlikte, her ikisi de NTPv4'te hayatta kalan bir yönetim protokolü ve kriptografik kimlik doğrulama şeması sundu. Bununla birlikte, NTPv2'nin tasarımı , DTSS topluluğu tarafından biçimsel doğruluktan yoksun olduğu için eleştirildi ve saat seçim prosedürü, Marzullo'nun NTPv3 için algoritmasını içerecek şekilde değiştirildi .

1992'de RFC  1305 , NTPv3'ü tanımladı. RFC, referans saatinden son istemciye kadar tüm hata kaynaklarının analizini içeriyordu ve bu, birkaç adayın aynı fikirde olmadığı durumlarda en iyi sunucuyu seçmeye yardımcı olan bir ölçümün hesaplanmasını mümkün kıldı. Yayın modu tanıtıldı.

Sonraki yıllarda yeni özellikler eklendikçe ve algoritma geliştirmeleri yapıldıkça yeni bir protokol versiyonuna ihtiyaç olduğu ortaya çıktı. 2010 yılında, NTPv4 için önerilen bir spesifikasyonu içeren RFC  5905 yayınlandı. Protokol o zamandan beri önemli ölçüde ilerledi ve 2014 itibariyle güncellenmiş bir RFC henüz yayınlanmadı. Mills'in Delaware Üniversitesi'nden emekli olmasının ardından, referans uygulaması şu anda Harlan Stenn tarafından yönetilen bir açık kaynak projesi olarak sürdürülmektedir .

Saat katmanları

ABD Deniz Gözlemevi de Alternatif Ana Saat Schriever AFB (Colorado) NTP için bir tabaka 0 kaynağıdır
Sarı oklar doğrudan bağlantıyı gösterir; kırmızı oklar bir ağ bağlantısını gösterir.

NTP, hiyerarşik, yarı katmanlı bir zaman kaynakları sistemi kullanır. Bu hiyerarşinin her düzeyi bir katman olarak adlandırılır ve en üstteki referans saati için sıfır ile başlayan bir sayı atanır. Bir katman n sunucusuyla senkronize edilmiş bir sunucu, katman n + 1'de çalışır. Sayı, referans saate olan mesafeyi temsil eder ve hiyerarşideki döngüsel bağımlılıkları önlemek için kullanılır. Katman her zaman kalite veya güvenilirliğin bir göstergesi değildir; diğer katman 2 zaman kaynaklarından daha kaliteli olan katman 3 zaman kaynakları bulmak yaygındır. Aşağıda 0, 1, 2 ve 3 katmanlarının kısa bir açıklaması verilmiştir.

katman 0
Bunlar, atom saatleri , GPS veya diğer radyo saatleri gibi yüksek hassasiyetli zaman tutma cihazlarıdır . Bağlı bir bilgisayarda bir kesintiyi ve zaman damgasını tetikleyen saniyede çok doğru bir darbe üretirler . Stratum 0 cihazları, referans saatler olarak da bilinir. NTP sunucuları kendilerini katman 0 olarak tanıtamazlar. NTP paketinde 0 olarak ayarlanmış bir katman alanı, belirtilmemiş bir katmanı belirtir.
tabaka 1
Bunlar, sistem zamanı bağlı oldukları stratum 0 cihazlarının birkaç mikrosaniyesi içinde senkronize edilen bilgisayarlardır . Stratum 1 sunucuları, akıl sağlığı kontrolü ve yedekleme için diğer stratum 1 sunucuları ile eşleşebilir . Bunlara birincil zaman sunucuları da denir.
2. tabaka
Bunlar, bir ağ üzerinden stratum 1 sunucularına senkronize edilen bilgisayarlardır. Genellikle bir katman 2 bilgisayarı birkaç katman 1 sunucusunu sorgular. Stratum 2 bilgisayarlar, eş grubundaki tüm cihazlar için daha kararlı ve sağlam zaman sağlamak için diğer stratum 2 bilgisayarlarla da eşleşebilir.
tabaka 3
Bunlar, stratum 2 sunucularına senkronize edilmiş bilgisayarlardır. Eşleme ve veri örnekleme için katman 2 ile aynı algoritmaları kullanırlar ve kendileri, katman 4 bilgisayarlar vb. için sunucu görevi görebilirler.

Katman için üst sınır 15'tir; katman 16, bir aygıtın senkronize olmadığını belirtmek için kullanılır. Her bilgisayardaki NTP algoritmaları, tüm istemciler için 1. katman sunucularına birikmiş gidiş-dönüş gecikmesini en aza indirmek için bir Bellman-Ford en kısa yol kapsayan ağaç oluşturmak üzere etkileşime girer .

Katmana ek olarak, protokol her sunucu için senkronizasyon kaynağını bir referans tanımlayıcısı (refid) açısından tanımlayabilir.

Ortak zaman referans tanımlayıcıları (refid) kodları
refid Saat Kaynağı
GİTMEK Geosenkron Yörünge Ortamı Uydu
Küresel Konumlama Sistemi Küresel Konumlandırma Sistemi
GAL Galileo Konumlandırma Sistemi
PPS Genel darbe/saniye
IRIG Aralıklar Arası Enstrümantasyon Grubu
WWVB LF Radyo WWVB Fort Collins, Colorado 60 kHz
DCF LF Radyo DCF77 Mainflingen, DE 77.5 kHz
HBG LF Radyo HBG Prangins, HB 75 kHz (çalışmayı durdurdu)
MSF LF Radyo MSF Anthorn, Birleşik Krallık 60 kHz
JJY LF Radyo JJY Fukushima, JP 40 kHz, Saga, JP 60 kHz
LORC MF Radyo Loran-C istasyonu, 100
TDF MF Radyo Allouis, FR 162 kHz
MUB HF Radyo CHU Ottawa, Ontario
WWV HF Radyo WWV Fort Collins, Colorado
WWVH HF Radyo WWVH Kauai, Hawaii
NIST NIST telefon modemi
AKTS NIST telefon modemi
USNO USNO telefon modemi
PTB Alman PTB zaman standardı telefon modemi
BAYAN Çoklu Referans Kaynakları
XFAC Inter Face Association Changed (IP adresi değişti veya kayboldu)
ADIM Adım süresi değişikliği, ofset panik eşiğinden (1000 s) daha az ancak adım eşiğinden (125 ms) büyük

zaman damgaları

64 bit bir zaman ölçeği vererek saniye için bir 32-bit bölümü ve fraksiyonel saniye süreyle bir 32-bit bölümünün oluşur NTP tarafından zaman damgalarını rulo aşırı her 2 32 saniye (136 yıl) ve 2 teorik çözünürlük -32 saniye (233 pikosaniye). NTP, 1 Ocak 1900 dönemini kullanır . Bu nedenle, ilk rollover 7 Şubat 2036'da gerçekleşir.

NTPv4, 128 bitlik bir tarih formatı sunar: ikinci için 64 bit ve kesirli saniye için 64 bit. Bu biçimin en önemli 32-biti, çoğu durumda rollover belirsizliğini çözen Era Number'dır. Mills'e göre, "Kesir için 64 bitlik değer, bir fotonun ışık hızında bir elektronu geçmesi için geçen süreyi çözmek için yeterlidir. 64 bit saniye değeri, evren kararır."

Saat senkronizasyon algoritması

Gidiş-dönüş gecikme süresi δ

Tipik bir NTP istemcisi, bir veya daha fazla NTP sunucusunu düzenli olarak yoklar . İstemci, zaman sapmasını ve gidiş-dönüş gecikmesini hesaplamalıdır . Zaman ofseti θ, iki saat arasındaki mutlak zaman farkı, şu şekilde tanımlanır:

ve gidiş-dönüş gecikmesi δ tarafından
nerede
  • t 0 , istemcinin istek paketi iletiminin zaman damgasıdır,
  • t 1 , istek paketi alımının sunucunun zaman damgasıdır,
  • t 2 , sunucunun yanıt paketi iletiminin zaman damgasıdır ve
  • t 3 , müşterinin yanıt paketi alımının zaman damgasıdır.

Ofset ifadesini türetmek için, istek paketi için şunu not edin:

ve yanıt paketi için,
θ için çözmek , zaman kaymasının tanımını verir.

θ ve δ değerleri filtrelerden geçirilir ve istatistiksel analize tabi tutulur. Aykırı değerler atılır ve kalan en iyi üç adaydan bir zaman farkı tahmini elde edilir. Saat frekansı daha sonra ofseti kademeli olarak azaltacak şekilde ayarlanır ve bir geri besleme döngüsü oluşturulur .

İstemci ve sunucu arasındaki hem gelen hem de giden yollar simetrik nominal gecikmeye sahip olduğunda doğru senkronizasyon elde edilir. Güzergahlarda ortak bir nominal gecikme yoksa, ileri ve geri seyahat süreleri arasındaki farkın yarısı kadar sistematik bir sapma vardır.

Yazılım uygulamaları

Bir katman 2 sunucusunun durumunu sorgulamak için kullanılan NTP yönetim protokolü yardımcı programı ntpq.

Referans uygulaması

NTP referans uygulaması , protokolle birlikte 20 yılı aşkın süredir sürekli olarak geliştirilmiştir. Yeni özellikler eklendiğinden geriye dönük uyumluluk korunmuştur. Farklı algoritmalar kullanan sunuculara senkronize edildiğinde hatalı davranabilen, özellikle saati disipline etmek için birkaç hassas algoritma içerir. Yazılım, kişisel bilgisayarlar da dahil olmak üzere hemen hemen her bilgi işlem platformuna taşınmıştır . Unix altında ntpd adında bir arka plan programı veya Windows altında bir hizmet olarak çalışır. Referans saatler desteklenir ve ofsetleri, genellikle daha sık sorgulanmalarına rağmen, uzak sunucularla aynı şekilde filtrelenir ve analiz edilir. Bu uygulama 2017'de denetlenmiş ve çok sayıda potansiyel güvenlik sorunu tespit edilmiştir.

SNTP

Basit Ağ Zaman Protokolü ( SNTP ), aynı protokolü kullanan ancak durumun uzun süreler boyunca depolanmasını gerektirmeyen daha az karmaşık bir NTP uygulamasıdır . Bazı gömülü sistemlerde ve tam NTP yeteneğinin gerekli olmadığı uygulamalarda kullanılır.

Windows Saati

Windows 2000'den bu yana tüm Microsoft Windows sürümleri , bilgisayar saatini bir NTP sunucusuyla senkronize etme yeteneğine sahip Windows Saat hizmetini (W32Time) içerir.

W32Time, başlangıçta , tekrar saldırılarını önlemek için doğru değerin 5 dakika içinde olması gereken süreyi gerektiren Kerberos sürüm 5 kimlik doğrulama protokolü amacıyla uygulanmıştı . Windows 2000 ve Windows XP'deki sürüm yalnızca SNTP'yi uygular ve NTP sürüm 3 standardının çeşitli yönlerini ihlal eder.

Windows Server 2003 ve Windows Vista ile başlayarak , W32Time, NTPv3'ün önemli bir alt kümesiyle uyumlu hale geldi. Microsoft, W32Time'ın bir saniyelik doğrulukla zaman senkronizasyonunu güvenilir bir şekilde sağlayamadığını belirtir. Daha yüksek doğruluk isteniyorsa Microsoft, Windows'un daha yeni bir sürümünün veya farklı NTP uygulamasının kullanılmasını önerir.

Windows 10 sürüm 1607 ve Windows Server 2016'dan başlayarak , W32Time, belirtilen belirli çalışma koşullarında 1 s, 50 ms veya 1 ms zaman doğruluğuna ulaşacak şekilde yapılandırılabilir.

OpenNTPD

2004'te Henning Brauer , güvenlik odaklı ve ayrıcalıkla ayrılmış bir tasarımı kapsayan bir NTP uygulaması olan OpenNTPD'yi sundu . OpenBSD kullanıcılarının daha basit jenerik ihtiyaçlarına daha yakından yönelik olmakla birlikte, mevcut NTP sunucularıyla uyumlu olmaya devam ederken bazı protokol güvenlik iyileştirmeleri de içerir. Linux paket depolarında taşınabilir bir sürüm mevcuttur.

Zamanlanmış

Poul-Henning Kamp tarafından 2014'te yeni bir NTP istemcisi olan ntimed başlatıldı ve 2015'te terk edildi. Yeni uygulama, yeni bir uygulama yazmanın daha kolay olduğu belirlendiğinden, referans uygulamanın yerine Linux Vakfı tarafından desteklendi. referans uygulamasının boyutunu küçültmek yerine sıfırdan. Resmi olarak piyasaya sürülmemiş olmasına rağmen, ntimed saatleri güvenilir bir şekilde senkronize edebilir.

NTPsn

NTPsec bir olan çatal sistematik olmuştur referans uygulamasının güvenlik sertleştirilmiş . Çatal nokta Haziran 2015'teydi ve 2014'teki bir dizi uzlaşmaya yanıt olarak geldi. İlk üretim sürümü Ekim 2017'de sevk edildi. Güvenli olmayan özelliklerin kaldırılması, eski donanım desteğinin kaldırılması ve eski Unix varyantları için desteğin kaldırılması arasında, NTPsec, orijinal kod tabanının %75'ini ayrıştırarak geri kalanını daha denetlenebilir hale getirdi. Kodun 2017 denetimi, ikisi orijinal referans uygulamasında bulunmayan sekiz güvenlik sorunu gösterdi, ancak NTPsec, referans uygulamasında kalan diğer sekiz sorundan etkilenmedi.

kroni

chronyc, kaynakları ve etkinlik bilgilerini gösterir. Arch Linux altındaki terminal penceresi

chrony , Red Hat dağıtımlarında varsayılan olarak gelir ve Ubuntu depolarında bulunur. chrony, kararsız olan, uyku moduna giren veya internete kesintili olarak bağlanan sıradan bilgisayarlara yöneliktir. chrony ayrıca çok daha dengesiz bir ortam olan sanal makineler için tasarlanmıştır. Düşük kaynak tüketimi (maliyet) ile karakterize edilir ve daha fazla zaman damgası hassasiyeti için Hassas Zaman Protokolü donanımını destekler . İki ana bileşeni vardır: bilgisayar başlatıldığında yürütülen bir arka plan programı olan chronyd ve yapılandırması için kullanıcıya yönelik bir komut satırı arabirimi olan chronyc. Çok güvenli olarak değerlendirilmiştir ve sadece birkaç olayla avantajı, gereksiz karmaşıklığı önlemek için sıfırdan yazılmış kodunun çok yönlülüğüdür. Ağ Zaman Güvenliği (NTS) desteği 4.0 sürümüne eklendi. chrony, GNU Genel Kamu Lisansı sürüm 2 altında mevcuttur , Richard Curnow tarafından 1997'de oluşturulmuştur ve şu anda Miroslav Lichvar tarafından sürdürülmektedir .

artık saniye

Artık saniye olayının olduğu gün , ntpd bir yapılandırma dosyasından, ekli bir referans saatinden veya bir uzak sunucudan bildirim alır. NTP saati aslında olay sırasında durdurulmuş olsa da, zamanın kesinlikle artıyormuş gibi görünmesi gerektiğinden , sistem saatini sorgulayan herhangi bir işlem , olayların sırasını koruyarak küçük bir miktar artmasına neden olur. Negatif bir artık saniye gerekli olursa, 23:59:58, 00:00:00 dizisi ile 23:59:59 atlanarak silinir.

Sıçrama yayma adı verilen alternatif bir uygulama, artık saniyenin UTC zamanına göre öğleden öğlene kadar 24 saatlik bir süre içinde aşamalı olarak tanıtılmasından oluşur. Bu uygulama, Google (hem dahili olarak hem de genel NTP sunucularında) ve Amazon AWS tarafından kullanılır.

Güvenlik endişeleri

NTP kod tabanının referans uygulamasında yalnızca birkaç başka güvenlik sorunu tespit edildi, ancak 2009'da ortaya çıkanlar önemli endişe kaynağıydı. Protokol, tüm tarihi boyunca gözden geçirilmekte ve gözden geçirilmektedir. Referans uygulamasının kod tabanı, birkaç yıl boyunca çeşitli kaynaklardan güvenlik denetimlerinden geçmiştir.

2014'te bir yığın arabellek taşması açığı keşfedildi ve yama uygulandı . Apple , bu güvenlik açığından o kadar endişeliydi ki, otomatik güncelleme özelliğini ilk kez kullandı. Kök arka plan programında NTP'nin bazı sürümlerini çalıştıran sistemlere sınırsız erişime yol açabilecek bir rutindeki eksik dönüş ifadesi gibi bazı uygulama hataları temeldir. BSD gibi kök arka plan programını kullanmayan sistemler bu kusura tabi değildir.

Linux Vakfı'nın Çekirdek Altyapı Girişimi adına yürütülen üç NTP uygulamasının 2017 güvenlik denetimi, güvenlik açısından hem NTP hem de NTPsec'in Chrony'den daha sorunlu olduğunu öne sürdü.

Paketler kimlik doğrulama için şifreli olarak imzalanmadıkça, NTP sunucuları ortadaki adam saldırılarına açık olabilir . İlgili hesaplama yükü, özellikle hizmet reddi saldırıları sırasında, meşgul sunucularda bunu pratik hale getirebilir . Bir ortadaki adam saldırısından kaynaklanan NTP ileti sahtekarlığı, istemci bilgisayarlardaki saatleri hareket ettirmek ve kriptografik anahtarın süresinin dolmasına dayalı bir dizi saldırıya izin vermek için kullanılabilir. Belirlenen sahte NTP mesajlarından etkilenen hizmetlerden bazıları TLS , DNSSEC , çeşitli önbelleğe alma şemaları (DNS önbelleği gibi), BGP, Bitcoin ve bir dizi kalıcı oturum açma şemasıdır.

NTP, dağıtılmış hizmet reddi saldırılarında kullanılmıştır . NTP sunucusuna küçük bir sorgu gönderilir ve dönüş adresi hedef adres olarak sahtedir . DNS yükseltme saldırısına benzer şekilde, sunucu, bir saldırganın hedefe gönderilen veri miktarını önemli ölçüde artırmasına olanak tanıyan çok daha büyük bir yanıtla yanıt verir. Bir saldırıya katılmaktan kaçınmak için NTP sunucu yazılımı yükseltilebilir veya sunucular harici sorguları yok sayacak şekilde yapılandırılabilir.

NTP güvenliğini artırmak için, Ağ Zaman Güvenliği (NTS) adı verilen güvenli bir sürüm geliştirildi ve şu anda birkaç zaman sunucusu tarafından destekleniyor.

Ayrıca bakınız

Notlar

Referanslar

daha fazla okuma

Dış bağlantılar