8.06.2014

TİB IP log imzalayıcı - ince ayrıntılar

Yakın zamanda işim düşünce biraz inceleme fırsatı buldum. Log'ları imzalamak için Windows ortamında ihtiyaç duyulan aracı Telekomünikasyon İletişim Başkanlığı geliştirmiş, web sitelerine koymuş. Programı kurdum, ama bir güvenlik duvarının ardında çalışmasını anlamak biraz zaman aldı.

Programın kurulumu gayet basit. Kurulum sırasında sadece programın hangi klasöre kurmak istediğimiz soruluyor. Kurulum klasörünün altında da signed_files klasörü vardır ki bu klasöre imzalanan log dosyaları konur. Bu klasörün yeri sonradan değiştirilemiyor. Bu sebeple planlamayı baştan yapmak gerek. Tüm imzalanan log dosyaları buraya konacağı için yer kaplayacaktır.


Program kurulduktan sonra belli bir klasörü izleyerek gelen log dosyalarını imzalayacak. İzlenecek klasör programın grafik arayüzü aracılığıyla değiştirilebiliyor. Gelen dosyaların imzalanması için de 3 seçenek var; dosyalar kopyalanır kopyalanmaz, her gün aynı saatte ya da 1 saat aralıklarla.

Programın iki bileşeni var. Birincisi Windows'da oturum açtığınızda çalışan client.exe (ki sistem tepsisindeki ikondan da bu sorumlu), diğeri de bir Windows hizmeti olarak çalışacak olan service.exe. Bir kez ayarlar yapıldıktan sonra client.exe'nin çalışır durumda olmasının (ya da sistem tepsisindeki simgenin gözükmesinin) bir gereği yok. Zamanlamayı yapan da, imzalama işlemini gerçekleştiren de service.exe. Bu Windows hizmetinin çalışır durumda olması gerekli.


Sıra geldi en büyük soruya. "İnternet zamanı alınamadı. Dosyalar imzalanmayacak" diye hata!


Bu hata, programın internetten geçerli zamanı alamadığını ve bu sebeple imzalama işleminin gerçekleşmeyeceğini söylüyor. Kontrol edince söz konusu bilgisayardan SNTP veya NTP bağlantısının yapılabildiğin görüp şaşırmıştım. TİB'in kendi dökümantasyonununda programın NTP'yi kullandığı söyleniyor [1]. Ama UDP 123 yerine TCP 37 kullanılıyor ki bu da eski Time Protocol [2].

Bir de imzalama işleminin nasıl olduğundan bahsedelim; C:\islenen_log klasörüne bir şekilde düşen log dosyaları için bir zaman damgası oluşturuluyor. Bu zaman damgası ile log dosyasının kendisi daha sonra signed_files'in içindeki ilgili alt klasöre taşınıyor. Burada ikisi birlikte saklanıyor. Bu klasördeki log dosyaları imzalanma sonrasında hala bir metin editörü ile görüntülenebilir durumda oluyor, ama dosyayı sakın değiştirmeyin. Böyle bir durumda oluşan zaman damgası geçerliliğini kaybeder. Tekrar oluşturmak gerekir, o da log dosyasının haricen bir müdahaleye maruz kaldığını gösterir.

Program, zaman bilgisini almak için, programın içine sabit olarak yerleştirilmiş aşağıdaki sunuculara başvuruyor.

utcnist.colorado.edu
time-a.nist.gov
time-b.nist.gov
time-a.timefreq.bldrdoc.gov
time-b.timefreq.bldrdoc.gov
time-c.timefreq.bldrdoc.gov
time.nist.gov
time-nw.nist.gov
nist1.symmetricom.com
nist1-dc.WiTime.net
nist1-ny.WiTime.net
nist1-sj.WiTime.net
nist1.aol-ca.symmetricom.com
nist1.aol-va.symmetricom.com
nist.expertsmi.com

İnternet zamanını alabilmek için sırayla bu 15 sunucu denenmeye başlanır. Her bir sunucu için cevap zaman aşımı 20 sn. 15x20 = 300 sn (5 dakika) yapar. Yani program internet bağlantısını yapamaması durumunda 5 dakika sonra hata verir ki bu da garip bir durum.

Yapılan işlemlerle ilgili günlük log, signed_files klasörünün altındaki günlük alt klasörlerin içindeki mechanism.log dosyasında tutulur.

Ek@2021-10-14: Uzun lafın kısası, program internetten zaman bilgisi alamadığı için bu hatayı veriyor. Zaman bilgisinin alınamamasının her sistemde farklı çözümü olabilir. Güvenlik duvarı üzerinden erişime izin verilmesi gerekebilir. Ama dikkat edin, UDP123 portuna değil TCP37 portuna izin vermek gerek. Yukarıdaki sunuculara ulaşmaya çalışıyor, hiçbirine ulaşmayıınca da 5 dakika kadar sonra hata mesajı görüntüleniyor. İmzalanan loglar signed_files klasörüne taşınıyor. Bu dosyalarla aynı klasöre, aynı isimle ama uzantısı .imza olan dosyalar oluşturuluyor. Bu log dosyalarının belirtilen saatten sonra değiştirilmediğine dair oluşturulan zaman damgası var içinde. İmzalanan dosyalar üzerinde bu aşamadan sonra değişiklik yapılmaması için hiç açılmaması önemle tavsiye olunur.


[1] http://www.tib.gov.tr/tr/tr-menu-47-internet_icerik_duzenlenmesi_hakkindaki_sorular.html, soru 37
[2] http://en.wikipedia.org/wiki/Time_Protocol