Konuyu Okuyanlar: 1 Ziyaretçi

Kendi Aracim: Basit Log Tarama Scripti (Python, Acik Kaynak Ornegi)

Kendi Aracim: Basit Log Tarama Scripti (Python, Acik Kaynak Ornegi)
[Resim: attachment.php?aid=119]

Selam millet,

Her seferinde ayni grep/awk komutlarini yazmaktan sikilinca, ssh auth loglarindan basarisiz giris denemelerini ozetleyen kucuk bir script yazdim. Buyuk bir sey degil ama ise yariyor; paylasayim, isteyen gelistirir. MIT lisansi dusunun, serbestce kullanin.

Ne Yapar?
  • auth.log icinde basarisiz giris (Failed password) satirlarini bulur
  • IP bazinda sayar ve en cok deneyen IP'leri siralar
  • Esik ustu IP'leri uyari olarak isaretler

Kod
Kod:
#!/usr/bin/env python3 import re, sys, collections THRESHOLD = 10 # bu sayinin ustu supheli def main(path): ip_re = re.compile(r"Failed password.*from (\d+\.\d+\.\d+\.\d+)") counts = collections.Counter() with open(path, encoding="utf-8", errors="ignore") as f: for line in f: m = ip_re.search(line) if m: counts[m.group(1)] += 1 if not counts: print("Basarisiz giris bulunamadi.") return print(f"{'IP':<18} {'Deneme':>7} Durum") print("-" * 40) for ip, n in counts.most_common(): flag = "UYARI" if n >= THRESHOLD else "" print(f"{ip:<18} {n:>7} {flag}") if __name__ == "__main__": path = sys.argv[1] if len(sys.argv) > 1 else "/var/log/auth.log" main(path)

Kullanim
Kod:
python3 logscan.py /var/log/auth.log

Ornek cikti:
Kod:
IP Deneme Durum ---------------------------------------- 203.0.113.45 142 UYARI 198.51.100.7 23 UYARI 192.0.2.10 3

Gelistirme Fikirleri
  • Zaman araligi filtresi (son 24 saat)
  • Esik ustu IP'leri otomatik fail2ban/iptables ile engelleme
  • JSON cikti ve bir panoya besleme
  • Birden fazla log dosyasini birlestirme

Katkiya acik; siz olsaniz once hangi ozelligi eklerdiniz? Fork edip gelistirmek isteyen beri gelsin.

Kaynaklar
Alıntı:Yasal not: Scripti yalnizca kendi sunucunuzun loglarinda calistirin.


Ek DosyalarEkran Görüntüleri
   
Cevapla



Hızlı Menü: