Konuyu Açan #1
Python HTTP Erişim Loglarından Tehdit Tespiti

İnternet servislerinde güvenlik olaylarını proaktif olarak belirlemek için HTTP erişim loglarını anlamlı sinyallere dönüştürmek gerekir. Bu tartışmada, Python kullanarak loglardan tehdit sinyallerini tespit etmenin pratik yollarını ele alıyorum.


Giriş ve amaç
  • HTTP erişim logları, ziyaretçi IP’si, zaman damgası, istek yöntemi, hedef uç nokta, yanıt kodu ve yanıt süresi gibi zengin meta veriyi içerir. Doğru şekilde işlenince brute force, sızma denemesi, DDoS belirtisi, kimlik avı sayfaları veya zararlı tarama aktiviteleri gibi tehdit göstergeleri ortaya çıkar.
  • Amacım, bir Python tabanlı boru hattı kurarak logları parse etmek, normal trafik profiliyle karşılaştırmak ve anomali/dikkat çekici olayları tespit etmek için güvenilir sinyaller üretmektir.


Somut yaklaşım ve örnekler
  • Log formatı ve parsing: Genelde Common Log Format veya JSON¯a dayalı loglar kullanırsınız. Python’da re veya json modülü ile hızlı ayrıştırma yapılır. Örnek olarak Apache/Nginx formatlarını hedefleyen basit bir parser taslağı düşünülebilir:

KOD
1234567import re

log_pattern = re.compile(r'(?P\\S+) - - \\[(?P.[i]?)\\] "(?P\\S+) (?P[^"]+) HTTP/.[/i]" (?P\\d{3}) (?P\\S+)')
def parse_line(line):
    m = log_pattern.match(line)
    if not m: return None
    return m.groupdict()

  • Trafik profili oluşturma: Zaman, uç nokta ve durum kodu üzerinden 24 saatlik/7 günlük dağılımlar çıkarılır. Normal aralıklar dışına çıkan ana akımlar (ör. 500+ hatalı isteklerin ani yükselişi, belirli bir yol için sıra dışı trafik) potansiyel tehdit olarak işaretlenir.
  • Sinyal türetme:
  • Brute force uyarıları: Tekrarlı başarısız istekler yüksek frekansla belirli bir IP’den geliyorsa anomali olarak işaretlenir.
  • Sızma tarama göstergeleri: Belirli bir süre içinde çok sayıda farklı uç noktaya istek yapılması, yaygın path taraması olarak değerlendirilebilir.
  • Zararlı kullanıcı aracısı: User-Agent sahtekarlıkları, referer manipülasyonları veya basit SQL/Komut enjeksiyon ipuçları başlıklar içinde görünürse dikkat çekilir.
  • Basit bir tehdit skorlaması: Her olay türüne göre bir skor kartı oluşturulur. Örneğin:
  • Yüksek riskli durum kodları (>400): +2
  • Kısa yanıt süresi ile çok sayıda istek: +1
  • Farklı uç noktalar için aynı IP: +1
  • Bilinmeyen uç noktalara yoğun erişim: +2
  • Uyarı ve otomasyon: Skor belirli bir eşeyi aştığında logları CSV/JSON olarak dışa aktarabilir veya bir basit MQTT/Slack entegrasyonu ile operatöre uyarı gönderebilirsiniz.


Bir tümleşik akış önerisi
  • Veriyi köprüleyen bir akış: logları toplama aus, parse etme, temel istatistikleri hesaplama, anomali tespiti ve uyarı verme.
  • Örnek bir çalışma akışı: logları okumak için bir dosya akışı kurun, her satırı parse edin, periyodik olarak (dakikalık/5 dk) toplu değerler hesaplayıp eşik aşımında bildirim üretin.
  • Kodla basit bir örnek; log satırlarını akışa alıp anomaliyi hesaplama fikri burada gösterilir, bunu ihtiyaca göre genişletebilirsiniz.


Kapanış
Bu yaklaşımla Python ile HTTP erişim loglarından pratik ve uygulanabilir tehdit tespiti kurabilir, günlük operasyonlarda erken uyarı mekanizması kurabilirsiniz. Özellikle log formatı ve güvenlik politikaları organizasyonunuza göre özelleştirmek, başarı oranını büyük ölçüde artırır. Herkesten, kendi loglarınız üzerinde çalışırken hangi sinyalleri en güvenilir bulduğunuz ve hangi eşiklerle çalıştığınız konusunda deneyim paylaşımı bekliyorum.

Yanıt vermek için giriş yapmış olmalısınız.

0 alıntı seçildi