Python ile Dosya Bütünlüğü İzleme Ajanı Geliştirme

0 Yanıtlar 4 Görüntülenme
·
Katılımcılar
Konuyu Açan #0
Python kullanarak dosya bütünlüğü izleme ajanı oluşturmak, sistem güvenliğini artırmak ve değişiklikleri hızlı tespit etmek açısından oldukça faydalı olabilir. Bu tip bir araç, özellikle kritik konfigürasyon dosyalarında veya sistem dosyalarında beklenmedik değişiklikleri tespit etmek amacıyla kullanılır. İşte temel prensipler ve uygulama detayları:


Üzerinde çalışılacak klasör veya dosyaları belirlemek ilk adımdır. Bu noktada, izleme yapılacak dosyaların hash değerlerini hesaplamak ve sürekli karşılaştırmak gerekir. MD5, SHA-1 veya daha güvenli olan SHA-256 algoritmaları tercih edilebilir. Ancak, güvenlik açısından SHA-256 kullanımı önerilir. Bu işlemi düzenli aralıklarla otomatik hale getirmek için zamanlayıcı (cron veya Windows Task Scheduler) kullanılabilir.

İlk kurulumda, sistemdeki tüm ilgili dosyaların hash değerleri hesaplanıp, bir veri tabanına veya JSON gibi yapılandırılmış bir dosyaya kaydedilir. Herhangi bir değişiklik tespit edildiğinde, script bu hashleri yeniden hesaplar ve karşılaştırır. Değişiklik tespit edilirse, sistem yöneticisine e-posta veya başka bir iletişim yöntemiyle uyarı gönderilir.

Örnek temel kod yapısı şu şekilde olabilir:

KOD
12345678910111213141516171819202122232425262728293031323334353637383940414243
import hashlib
import json
import os

def hash_file(filepath):
    sha256 = hashlib.sha256()
    with open(filepath, 'rb') as f:
        while chunk := f.read(8192):
            sha256.update(chunk)
    return sha256.hexdigest()

def load_hashes(file):
    if os.path.exists(file):
        with open(file, 'r') as f:
            return json.load(f)
    return {}

def save_hashes(hashes, file):
    with open(file, 'w') as f:
        json.dump(hashes, f, indent=4)

def monitor_files(file_list, hash_record_file):
    hashes = load_hashes(hash_record_file)
    changes_detected = False
    for filepath in file_list:
        current_hash = hash_file(filepath)
        if filepath in hashes:
            if hashes[filepath] != current_hash:
                print(f"Değişiklik tespit edildi: {filepath}")
                changes_detected = True
        else:
            print(f"Yeni dosya izlendi: {filepath}")
        hashes[filepath] = current_hash
    save_hashes(hashes, hash_record_file)
    if changes_detected:
        # Burada uyarı veya bildirim kodu eklenebilir
        pass

[b]Kullanım örneği[/b]
files_to_monitor = [r'C:\path\to\file1', r'C:\path\to\file2']
record_file = 'hashes.json'
monitor_files(files_to_monitor, record_file)


Güvenlik ve performans açısından, hash hesaplama esnasında büyük dosyalarda bellek kullanımı ve işlem süresi göz önünde bulundurulmalı. Ayrıca, dosya erişim izinleri ve güvenlik protokolleriyle korunmalı. Bu temel yapıyı, sistemin ihtiyaçlarına göre özelleştirilmiş bildirim sistemleri veya detaylı raporlama modülleriyle genişletebilirsiniz.

Sizler bu tarz bir sistemi kurarken hangi yöntemleri veya ek güvenlik önlemlerini kullanıyorsunuz? İyi uygulama örnekleriniz veya karşılaştığınız sorunlar nelerdir?

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

0 alıntı seçildi