Bu proje, kullanıcıların dosyalarını güvenli şekilde yedeklemelerine, senkronize etmelerine ve yönetmelerine olanak sağlayan bir web uygulamasıdır. Sistem logları gerçek zamanlı izlenir, anormallikler tespit edilir ve kullanıcı davranışları analiz edilerek güvenlik ihlalleri önlenir.
Sistemdeki dosya güvenliğini artırmak, sistem loglarını gerçek zamanlı izlemek ve kullanıcı davranışlarını analiz ederek güvenlik ihlallerini tespit etmektir.
- Bireysel kullanıcı kaydı (eşsiz kullanıcı adı zorunluluğu)
- Güvenli parola saklama (bcrypt ile şifreleme)
- Kullanıcı adı değiştirme
- Parola değiştirme talebi (Sistem Yöneticisi onayıyla)
- Takım üyesi belirleme ve bildirim sistemi
- Takım üyeleri arasında dosya paylaşımı ve ortak düzenleme
- Kullanıcı profillerini yönetme
- Depolama limitlerini belirleme ve kontrol etme
- Parola değiştirme isteklerini onaylama / reddetme
- Tüm kullanıcıların doküman, paylaşım, şifreli parola ve log dosyalarına erişim
- Belirli dizinlerdeki dosya değişikliklerini izleme (watchdog)
- Otomatik periyodik yedekleme (APScheduler)
- Kaynak → hedef dizin senkronizasyonu
- Yedekleme ilerlemesinin arayüzde gösterimi (thread ile)
- Yedekleme sonuçlarının
.txtlog dosyasına kaydedilmesi
- Log dosyalarını satır satır okuma (ayrı proses)
- Anahtar kelime arama (örn.
failed login) - Anormal durum tespiti ve arayüzde uyarı gösterimi
Tespit Edilen Anormal Durumlar:
| # | Anormal Durum |
|---|---|
| 1 | Yedekleme/senkronizasyon işleminin beklenmedik kesilmesi |
| 2 | Kısa sürede olağandışı sayıda dosya indirme/yükleme |
| 3 | Yetkisiz şekilde aynı dosyanın farklı kullanıcılarla paylaşılmaya çalışılması |
| 4 | Aynı kullanıcının kısa sürede 3'ten fazla başarısız giriş denemesi |
| 5 | Kısa sürede sürekli parola değiştirme talebi |
- Giriş-çıkış aktivitelerini izleme (ayrı proses)
- Anormal davranış tespitinde sistem yöneticisine ve kullanıcıya bildirim
- Bildirim sonrası anormallik tespit modülünün otomatik tetiklenmesi
- Anormal davranışların log dosyasına kaydedilmesi ve arayüzde gösterilmesi
Log dosyaları .txt uzantılı olarak logs/ dizininde tutulur ve profile/yetkinliğe özgü kategorilerde oluşturulur.
Kategoriler: takım üyesi belirleme, doküman paylaşımı, parola değiştirme talebi, parola değiştirme talebi onaylama, profil girişleri, yedeklemeler, tespit edilen anormal durumlar
Her log kaydında bulunan alanlar:
| Alan | Açıklama |
|---|---|
start_date |
İşlem başlangıç tarihi |
end_date |
İşlem bitiş tarihi |
operation_code |
Yapılan işlemin türünü belirten kod |
status_code |
İşlemin son durumunu belirten kod |
source_dir |
Kaynak dizin |
backup_size |
Yedeklenen veri miktarı |
| Katman | Teknoloji |
|---|---|
| Backend | Flask |
| Veritabanı | MySQL (SQLAlchemy modelleri) |
| Frontend | Flask Templates + Bootstrap |
| Şifreleme | Bcrypt |
| Log & Analiz | Python logging, pandas |
| Zamanlama | APScheduler |
| Dosya İzleme | watchdog |
| Eşzamanlılık | threading, multiprocessing |
Proje, aşağıdaki bağımsız prosesler ve thread'ler üzerine inşa edilmiştir:
| Bileşen | Tür | Görev |
|---|---|---|
| Dosya değişiklik izleyici | Proses | Yedeklenecek dizindeki değişiklikleri izler |
| Yedekleme & senkronizasyon | Proses | Değişiklik algılandığında yedekler ve senkronize eder |
| Dosya kopyalama | Thread | Yedekleme sırasında dosyaları kopyalar |
| İlerleme gösterici | Thread | Yedekleme ilerlemesini arayüzde gösterir |
| Log okuyucu | Proses | Log dosyalarını okur |
| Anormal durum tespiti | Proses | Logları analiz ederek anormal durumları tespit eder |
| Anormal davranış tespiti | Proses | Kullanıcı davranışlarını analiz eder |
| Giriş-çıkış aktivite toplayıcı | Proses | Kullanıcı giriş-çıkış bilgilerini toplar |
| Periyodik log analizi | Zamanlayıcı (APScheduler) | Log analizini belirli aralıklarla çalıştırır |
| Otomatik yedekleme | Zamanlayıcı (APScheduler) | Yedeklemeyi belirli aralıklarla başlatır |
project-root/
│
├── app.py # Uygulamayı başlatan ana dosya
├── config.py # Konfigürasyon ayarları
├── requirements.txt # Python bağımlılıkları
│
├── models/ # SQLAlchemy modelleri
│ ├── User.py
│ ├── File.py
│ ├── Folder.py
│ └── TeamMember.py
│
├── routes/ # Flask rotaları
│ ├── auth.py # Giriş, kayıt, çıkış
│ ├── dashboard.py # Kullanıcı paneli
│ ├── admin.py # Sistem yöneticisi paneli
│ ├── sync.py # Yedekleme & senkronizasyon
│ └── team.py # Takım yönetimi
│
├── templates/ # HTML şablonları
├── static/ # CSS, JS ve görseller
├── logs/ # .txt uzantılı log dosyaları
├── islemler/ # Arka plan prosesleri (yedekleme, log analizi vb.)
└── utils/ # Yardımcı modüller
| Tablo | Açıklama |
|---|---|
users |
Kullanıcı bilgileri (kullanıcı adı, şifreli parola, rol, depolama limiti) |
files |
Dosya bilgileri ve yedekleme zamanları |
logs |
İşlem kayıtları ve durumları |
team_members |
Kullanıcılar arası takım ilişkileri |
notifications |
Bildirimler (takım üyeliği, paylaşım, parola talepleri vb.) |
password_change_requests |
Parola değiştirme talepleri ve onay durumları |
python -m venv venv
venv\Scripts\Activate.ps1pip install -r requirements.txtGerekiyorsa watchdog'u ayrıca yükleyin:
pip install watchdog
config.py içindeki veritabanı bilgileri ve gizli anahtarları ayarlayın.
flask db init
flask db migrate
flask db upgradepython app.pyTarayıcıda http://localhost:5000 adresini açın.
- Log dosyaları
logs/dizininde.txtformatında, profile ve yetkinliğe özgü olarak oluşturulur. - Yedekleme ve log analiz görevleri APScheduler ile periyodik olarak çalışır.
- Dosya değişiklikleri
watchdogile izlenir; değişiklik algılandığında yedekleme prosesi tetiklenir. - Yedekleme kopyalama işlemi ayrı bir
threadüzerinde çalışır; ilerleme arayüze yansıtılır. - 3'ten fazla başarısız giriş denemesi hem kullanıcıya hem sistem yöneticisine bildirim gönderir ve anormallik modülünü tetikler.
Zeynep ÖZÇELİK
Kocaeli Üniversitesi, Yazılım Mühendisliği