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.

[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