Web serverlar tarafından tutulan loglar meydana gelen sorunların çözümünde, sistemin gözlemlenmesi ve istatisiklerin çıkarılmasında gibi durumlarda faydalı olduğu gibi siber saldırıların tespitinde ve ispatlanmasında önemli ipuçları taşır. Maruz kalınan bir saldırıda bu logların kanıt olarak kullanılabilmesi için güvenilirliği de önem taşımaktadır. Yeterince detaylı bilgi olması ve bu bilgilerin doğru ve değiştirilmemiş olması önemlidir.
Örneğin saat ve tarihte tutarlılık için merkezi bir NTP server kurulması önerilmektedir. Bilgilerin değiştirilmemesi için ise log dosyaları için gerekli izinlerin ayarlanmış olması server'dan farklı klasörlere konulması, yani saldırganlar tarafından erişilemez olmasından emin olunmalıdır. Bir zararlı olayı ispat etmek için ise olayla ilgili yeterli miktarda detay bilgi bulunması önemlidir. Bütün log bilgilerinin kayıt edilmesi makul olmayacağı için gerçekleşen olayların hangi ayrıntılarının kayıt edileceği önceden planlanmış olmalıdır. Bu yazıda performans ölçütleri değil güvenlik için gerekli ölçütler ön planda tutulacaktır. Loglama işlemi için yapılması gereken konfigürasyonlar incelenirken önce log yapıları genel mantığını bilmek hakimiyeti artıracaktır.
Örneğin saat ve tarihte tutarlılık için merkezi bir NTP server kurulması önerilmektedir. Bilgilerin değiştirilmemesi için ise log dosyaları için gerekli izinlerin ayarlanmış olması server'dan farklı klasörlere konulması, yani saldırganlar tarafından erişilemez olmasından emin olunmalıdır. Bir zararlı olayı ispat etmek için ise olayla ilgili yeterli miktarda detay bilgi bulunması önemlidir. Bütün log bilgilerinin kayıt edilmesi makul olmayacağı için gerçekleşen olayların hangi ayrıntılarının kayıt edileceği önceden planlanmış olmalıdır. Bu yazıda performans ölçütleri değil güvenlik için gerekli ölçütler ön planda tutulacaktır. Loglama işlemi için yapılması gereken konfigürasyonlar incelenirken önce log yapıları genel mantığını bilmek hakimiyeti artıracaktır.
IIS Loglama Yöntemleri ve Ayarları
Genelde default olarak sınırlı loglama seçenekleri açıktır. Geniş loglama seçenekleri (extended logging) aktif edilerek daha önemli bilgilerin elde edilmesi sağlanmalıdır. Loglama konfigürasyonlarını yapabilmek için Internet Information Services (IIS) Yöneticisi başlatılır ve soldaki bağlantılar menusünden site seçilir. Özellikler Görünümü modunda iken Günlük seçeneğine tıklanır. Açılan günlük sayfası içerisinde Günlük Dosyası bölümünde bulunan Biçim (format) bölümünde seçilebilecek formatlar arasında; IIS, NCSA, W3C, Custom seçenekleri bulunmaktadır.
Dizin bölümünden ise log dosyasının nereye kayıt edileceği seçilebilmektedir. Default olarak '%SystemDrive%\inetpub\logs\LogFiles' dizinidir. Günlük dosya aktarma bölümünde ise yeni log dosyası oluşturmada kullanılacak yöntemler belirtilir, bunlar; Zaman çizelgesi (saatlik-günük-haftalık-aylık), en büyük dosya boyutu ve yeni günlük dosyaları oluşturma seçeneklerinden bir tanesi seçilir. Seçilebilecek Formatların default içeriği incelenirse ;
IIS | NCSA | W3C | Kullanımı | |
Tarih | Y | Y | Y | Olayla ilişkilendirme |
Saat | Y | Y | Y | Olayla ilişkilendirme, saat tespiti |
İstemci IP adresi | Y | Y | Y | User veya Proxy server tespiti |
Kullanıcı Adı | Y | Y | Y | Tehlikeli kullanıcıların tespiti |
Servis Adı | Y | Log dosyalarının taşınırsa erişim yapılan yeri kanıtlamak | ||
Sunucu Adı | Y | Log dosyalarının taşınırsa erişim yapılan yeri kanıtlamak | ||
Sunucu IP adresi | Y | Y | Log dosyalarının taşınırsa erişim yapılan IP adresini kanıtlamak | |
Sunucu Bağlantı Portu | Y | Diğer log dosyası türleri ile ilişkilendirme yapmak için port numarası | ||
Yöntem | Y | Y | Y | Script ve Executable dosyaların kötüye kullanımı |
URI Kökü | Y | Saldırı vektörünü tespit edebilmek için | ||
URI Sorgusu | Y | Malicious data injection tespiti | ||
Protokol Durumu | Y | Y | Y | Client'a gönderilen sonuç kodudur. CGI Scan ve SQL Injection tespiti |
Protokol Alt Durumu | Y | Substatus kodları | ||
Win32 Durumu | Y | Script kötüye kullanımı | ||
Gönderilen Bayt Sayısı | Y | Y | Bir scriptten gönderilen olağandışı trafiğin tespiti | |
Alınan Bayt Sayısı | Y | Bir scriptten gönderilen olağandışı trafiğin tespiti | ||
Alındığı Saat | Y | Bir isteğin işlenmesi için harcanan süre. Olağandışı aktivite tespiti | ||
Protokol Sürümü | Y | Eski script ve browserların tespiti | ||
Host Bilgisayar | Kullanıcının IP adresiyle mi hostname ile mi eriştiğini tespit etmek için | |||
User-Agent | Y | Client tarafından gönderilen User-Agent başlığının içeriği. Unique user tespiti | ||
Cookie | Client tarafından gönderilen HTTP Cookie başlığı içeriği. Unique user tespiti | |||
Referer | Saldırganın nerden geldiğinin tespiti,(arama motorlarından veya diğer dış kaynaklardan) |
Loglama biçimi olarak bu 3 format seçilebilmektedir. W3C formatında istediğimiz özelliği açma kapama sanşımızda mevcut olduğu gibi Özel isimli formatla isteğimize göre format belirleyebiliriz.
Advanced Loglama
Windows tarafından sunulan Advanced Logging eklentisi IIS Manager üzerine kurularak daha gelişmiş log konfigürasyonları yapılabilmektedir. Yüklemek için asağıdaki link kullanılabilir. http://www.iis.net/downloads/microsoft/advanced-logging Kurulum yapıldığında IIS Manager anasayfasında Advanced Logging bölümü eklenmiş olur.
Bu bölümde log definition kısımları bulunur, soldaki menüden Add Log Definition seçeneği ile kendi tanımlarımızı ekleyebiliriz. Default olarak gelen ilk tanıma çift tıklanarak veya edit log definition seçeneği ile girilir. İçeriği aşağıda ki gibidir.
Yeni Loglama Tanımı eklemek için Add Log Definition seçeneği seçilir. Base file name, enabled, publish real time events gibi alanlar doldurulduktan sonra Log file rollover bölümünde log dosyalarının saklanma metodu seçilir. Selected Fields bölümünde ise loglanmasını istediğimiz özellikler seçilerek eklenir
Bu alanların sıralanması da menü üzerinde Move butonları ile değiştirilebilir, istenilen alanlar yukarı alınabilir. Log dosyalarının kayıt edileceği yer ise Advanced Logging anasayfasında seçilen Log Definition ile ilgili sağdaki Action menüsünden Edit Log Directory seçeneği ile belirlenebilmektedir. Normal de güvenlik açısından tüm alanların işaretlenmesi önerilmesine rağmen hangi alanların işaretleneceği güvenlik / forensic yeteneği ve disk alanı / performans arasında belirleyeceğiniz denge ile karar verilmelidir.Örneğin, gözlenebilecek bazı saldırılar :
- Zararlı dosyalar : Site dizininde oluşturulan yeni dosya veya dizinlerin takibi ile tespit edilir. Bu eventlerin log kaydı alınması için URI Kökü ve URI sorgusu işaretli olmalıdır.
- Script abuse : Sistemde ki script dosyalarına yapılan zararlı kod enjektelerini takip etmek gereklidir. Bunun için Yöntem, Protokol Durumu, Win32 Durumu, Gönderilen ve Alınan Bayt Sayısı işaretli olmalıdır.
- User Logins : Yetkisiz olarak yapılan veya şüpheli olan kullanıcı girişlerini tespit etmek için username bölümü aktif edilmelidir. Ayrıca Client tarafından gerçekleştirilen kötü amaçlı eventlerde hangi kullanıcı adıyla yapıldığı güvenilir olmasa dahi bilinebilir.
- User-Agent : Bazen saldırının yapıldığı atak scripti User-agent bilgisinden tespit edilebilmektedir. Bu yüzden aktif edilmesinde fayda vardır.
Her zaman açık olması önerilen diğer seçenekler ;
- Ayrıca tarih ve saatin her zaman güncel ve güvenilir olması önemlidir. Bunun için merkezi bir saat sunucusu NTP kurulması önerilir.
- Client tespitinde öneme sahip olan IP, Username, Cookie bilgileri
- Saldırıya maruz kalan hostun ispatında Sunucu Adı, IP adresi ve Host Bilgisayar bilgileri
- Saldırı tespitinde öneme sahip olan URL, Method, Referer, Bayt sayısı, Protokol durumu, port numarası bilgilerinin açık olması önem taşımaktadır.
Bu makale İstanbul Teknik Üniversitesi Bilgisayar Mühendisliği Bölümü öğrencisi stajyerimiz Cemal Türkoğlu tarafından geliştirilmiştir.