Skip to content

codewarrior96/siberlab-dev

Repository files navigation

🛡️ Siberlab-dev — Siber Güvenlik Portföy & Eğitim Platformu

Gerçek bir production ortamında yayında olan, Next.js 15 + React 19 tabanlı siber güvenlik eğitim ve portföy platformu. Kullanıcılar tarayıcı içi terminalde Linux/CTF pratiği yapar, güncel CVE'leri takip eder, güvenlik blogunu okur ve kendi operatör profilini & CV'sini yönetir.

🌐 Canlı Platform: https://siberlab.dev 📦 GitHub: https://github.com/codewarrior96/siberlab-dev


👤 Öğrenci Bilgileri

Ad Soyad SALİM AYBASTI
Öğrenci Numarası 24010509065
Proje Adı Siberlab-dev
GitHub Bağlantısı https://github.com/codewarrior96/siberlab-dev
Canlı Ortam https://siberlab.dev

status tests Next.js React TypeScript npm audit


🎯 Projenin Amacı ve Açıklaması

Siberlab-dev, siber güvenliğe yeni başlayanlar ile öğrencilerin teori yerine pratikle öğrenmesini hedefleyen bir web platformudur. Steril sunum slaytları yerine; tarayıcıda çalışan canlı bir terminal, çok seviyeli CTF görevleri, gerçek-zamanlı CVE takibi ve kişisel bir portföy/CV üreteci sunar.

Proje aynı zamanda uçtan uca tam yığın (full-stack) bir mühendislik çalışmasıdır: kimlik doğrulama, oturum yönetimi, veritabanı katmanı, dosya yükleme, PDF üretimi, harici API entegrasyonları ve kapsamlı bir test/güvenlik disiplini içerir.

Platformun çözdüğü problem: Siber güvenlik öğrenmek isteyen biri genelde dağınık kaynaklar, kurulumu zor laboratuvarlar ve pasif video içeriğiyle uğraşır. Siberlab-dev bunların hepsini tek bir hesapla, tarayıcıda, kurulum gerektirmeden bir araya getirir.

Öne çıkan yetenekler

  • 🖥️ Breach Lab — Tarayıcı içinde (xterm.js) çalışan, gerçekçi bir Linux kabuk simülasyonu üzerinde 43 derslik müfredat ve 7 seviyeli CTF (cd / ls / cat / grep / chmod / pipe → nmap & CVE avı).
  • 📄 Portföy & CV Üreteci — Profil, deneyim, projeler, sertifikalar, eğitim, diller ve yetkinlikler; tek tıkla PDF CV çıktısı.
  • 🌍 SOC Dashboard — 3D global tehdit haritası + canlı telemetri akışı (eğitim amaçlı simülasyon — aşağıdaki nota bakınız).
  • 🛰️ Zafiyet Taraması — NIST NVD canlı beslemesinden CVE Radar, tehdit istihbarat panosu ve güncel siber haber akışı.
  • 🔐 Tam kimlik sistemi — E-posta/şifre (scrypt), GitHub & Google OAuth, e-posta doğrulama, şifre sıfırlama, brute-force koruması.
  • 📝 Blog — SQL Injection, XSS, reverse shell, Active Directory saldırıları, buffer overflow, Linux yetki yükseltme ve Wireshark üzerine 8 Türkçe MDX yazısı.

📸 Ekran Görüntüleri

Tüm sayfalar canlı olarak https://siberlab.dev adresinde denenebilir.

Karşılama / Landing (/welcome)

Welcome

SOC Dashboard — Global Tehdit Haritası (/home)

Dashboard

Breach Lab — Canlı Terminal & CTF (/academy)

Academy

Zafiyet Taraması — Tehdit İstihbaratı & CVE Radar (/zafiyet-taramasi)

Zafiyet Taraması

Portföy Kontrol Yüzeyi (/portfolio)

Portfolio

CV Üreteci — Yayına Hazır CV Çıktısı

CV

⚠️ Dürüstlük notu (önemli): /home dashboard'undaki tehdit haritası ve telemetri akışı bir eğitim simülasyonudur ("SİMÜLASYON" rozetiyle açıkça etiketlenmiştir). Gerçek bir saldırı akışı değildir — veriler kontrollü, deterministik olarak üretilir (özel IP aralıkları, simüle olaylar). Amaç bir SOC operatör arayüzünü güvenli biçimde deneyimletmektir.


🛠️ Kullanılan Teknolojiler ve Kütüphaneler

Çekirdek Yığın (Core Stack)

Teknoloji Sürüm Kullanım
Next.js 15.5 (App Router) Full-stack framework (SSR + API routes)
React 19 UI katmanı
TypeScript 5 (strict) Tip güvenliği
NextAuth.js 5.0 (beta) Kimlik doğrulama + OAuth
Tailwind CSS 3.4 Stil / tasarım sistemi
Supabase Postgres + Storage Veritabanı & dosya depolama
Node.js 20+ Çalışma ortamı

Belirgin Kütüphaneler

  • @react-pdf/renderer + pdfjs-dist — PDF CV üretimi ve belge görüntüleme
  • d3-geo + topojson-client — 3D ortografik tehdit haritası
  • next-mdx-remote + gray-matter + rehype-pretty-code / shiki — MDX blog & kod vurgulama
  • resend — e-posta gönderimi (doğrulama / şifre sıfırlama)
  • @supabase/supabase-js — Postgres & Storage istemcisi
  • fast-xml-parser — RSS / siber haber agregasyonu
  • sqlite / sqlite3 — yerel geliştirme & fallback veritabanı
  • motion (Framer Motion) + lucide-react — animasyon & ikonlar

Test & Kalite Araçları

  • Vitest 4 + @vitest/coverage-v8 — birim/entegrasyon testleri (1159 test)
  • @testing-library/react + jsdom + vitest-axe / axe-core — bileşen & erişilebilirlik testleri
  • MSW (Mock Service Worker) — deterministik (hermetik) ağ mock'ları
  • Playwright — uçtan uca (E2E) test (Chromium)
  • ESLint (next/core-web-vitals) + tsc --noEmit — lint & tip kontrolü

📁 Proje Klasör Yapısı

siberlab-dev/
├── src/
│   ├── app/                       # Next.js App Router (sayfalar + API)
│   │   ├── welcome/               # Karşılama / landing
│   │   ├── login/  register/      # Kimlik doğrulama sayfaları
│   │   ├── forgot/ reset/ verify/ # Şifre sıfırlama & e-posta doğrulama
│   │   ├── home/                  # SOC Dashboard
│   │   ├── academy/               # Breach Lab (terminal + CTF + müfredat)
│   │   ├── portfolio/             # Profil + CV üreteci
│   │   ├── zafiyet-taramasi/      # CVE Radar + tehdit istihbaratı
│   │   ├── blog/                  # MDX blog listesi & detay
│   │   ├── roadmap/               # Yol haritası
│   │   ├── layout.tsx page.tsx    # Kök layout & yönlendirme
│   │   └── api/                   # 34 API route (sunucu uçları)
│   │       ├── auth/              # login / logout / register / reset / verify
│   │       ├── profile/           # profil / avatar / sertifika / eğitim / CV
│   │       ├── reports/ alerts/    # SOC olay raporları & alarmlar
│   │       ├── cves/ cybernews/    # CVE & haber beslemeleri
│   │       ├── greynoise/ live-attacks/ metrics/ telemetry/
│   │       └── users/
│   ├── components/                # React bileşenleri
│   │   ├── dashboard/             # SOC dashboard panelleri
│   │   ├── lab/                   # Terminal & CTF motoru bileşenleri
│   │   ├── portfolio/             # Portföy & CV bileşenleri
│   │   ├── welcome/  ui/           # Landing & ortak UI
│   │   └── NavigationBar.tsx ...
│   ├── lib/                       # İş mantığı (auth, store, güvenlik, lab motoru) — 92 modül
│   ├── content/                   # İçerik
│   │   ├── posts/                 # 8 Türkçe MDX güvenlik yazısı
│   │   └── training-sets/ challenges/ modules/ ...
│   ├── hooks/                     # React hook'ları
│   ├── styles/  assets/  test/     # Global CSS, fontlar, test setup'ı
├── e2e/                           # Playwright E2E testleri (6 journey)
├── docs/                          # Dokümantasyon + ekran görüntüleri
│   └── screenshots/
├── supabase/                      # Postgres şema & migration SQL'leri
├── scripts/                       # Yardımcı scriptler (pdf worker, backfill)
├── public/                        # Statik varlıklar
├── .env.example                   # Ortam değişkeni şablonu (gizli değer İÇERMEZ)
├── package.json
├── next.config.mjs  tsconfig.json  tailwind.config.ts  vitest.config.ts
└── README.md                      # Bu dosya

⚙️ Kurulum

Gereksinimler

Adımlar

# 1) Depoyu klonla
git clone https://github.com/codewarrior96/siberlab-dev.git
cd siberlab-dev

# 2) Bağımlılıkları yükle
npm install

ℹ️ Testleri çalıştırmak için ek bir kuruluma gerek yoktur. Test paketi tamamen hermetiktir (gerçek ağ / veritabanı / dış servis kullanmaz). Doğrudan npm run test çalıştırılabilir — aşağıya bakınız.

Uygulamayı tarayıcıda çalıştırmak için .env.local

Web uygulamasını (npm run dev) çalıştırmak için projenin köküne bir .env.local dosyası oluşturun. Yerel geliştirme harici hiçbir servise (Supabase/Resend) ihtiyaç duymadan SQLite ile çalışır:

# Zorunlu — oturum imzalama anahtarları (rastgele üretin)
SOC_DEMO_SECRET=buraya_rastgele_64_karakter_hex
NEXTAUTH_SECRET=buraya_rastgele_64_karakter_hex

# Yerel depolama (harici servis gerektirmez)
SOC_STORAGE=sqlite
SOC_IDENTITY_STORE=disabled

Güvenli rastgele anahtar üretmek için (her iki değer için ayrı ayrı çalıştırın):

node -e "console.log(require('crypto').randomBytes(32).toString('hex'))"

🔒 .env.local dosyası .gitignore içindedir; gizli değerler asla depoya yüklenmez. Tüm değişken adları gizli değer içermeyen .env.example dosyasında belgelenmiştir. Tam Supabase + Resend + OAuth yapılandırması yalnızca production (Vercel) dağıtımı içindir.


▶️ Çalıştırma ve Kullanım

# Geliştirme sunucusu  → http://localhost:3000
npm run dev

# Testleri çalıştır (kurulum/.env GEREKTİRMEZ — 1159 test)
npm run test

# Tam doğrulama kapısı: tip kontrolü + lint + test
npm run verify

# Production derleme + sunucu  (.env.local'daki 2 anahtarı gerektirir)
npm run build
npm run start

# Uçtan uca testler (opsiyonel; önce: npm run e2e:install)
npm run e2e

Hocaya hızlı doğrulama önerisi 🎓

Projenin sağlığını en hızlı görmenin yolu — hiçbir yapılandırma gerektirmez:

git clone https://github.com/codewarrior96/siberlab-dev.git
cd siberlab-dev
npm install
npm run test       # → 1159 test geçmeli

Uygulamayı görsel olarak denemek için yukarıdaki .env.local adımını uygulayıp npm run dev çalıştırın, ardından tarayıcıda http://localhost:3000 adresini açın. Dilerseniz tüm akışları doğrudan canlı ortamda da deneyebilirsiniz: https://siberlab.dev

Temel kullanım akışı

  1. /register ile hesap aç → e-posta doğrula → /login ile giriş yap.
  2. /academy → terminalde help yazıp dersleri/CTF görevlerini çöz.
  3. /portfolio → profilini doldur, CV OLUŞTUR ile PDF CV indir.
  4. /zafiyet-taramasi → güncel CVE'leri ve tehdit panosunu incele.
  5. /home → SOC dashboard simülasyonunu izle.

🧪 Testler

Proje, güvenlik-kritik bir uygulama olduğu için yüksek test disipliniyle geliştirilmiştir.

  • 1159 birim/entegrasyon testi, 121 test dosyasınpm run test
  • Hermetik: vi.stubEnv + MSW ile gerçek ağ/veritabanı kullanılmaz; testler her ortamda aynı sonucu verir (deterministik).
  • Erişilebilirlik: axe-core + vitest-axe ile modal/komponent denetimleri.
  • E2E: Playwright (Chromium) ile 6 kullanıcı yolculuğu — auth bootstrap, lab çözümü, portföy CRUD, alarm triyajı, mobil portföy, şifre sıfırlama.
  • Kapsam tabanı (coverage floor): 44 / 36 / 39 / 46 (statement/branch/function/line) — vitest.config.ts içinde eşik olarak zorlanır.
  • Kalite kapısı: npm run verify = tsc --noEmit + eslint (0 hata / 0 uyarı) + vitest.
npm run test          # 1159 test
npm run typecheck     # tsc --noEmit
npm run lint          # ESLint 0E/0W
npm run verify        # üçü birden (CI kapısı)

🔒 Güvenlik

Bu bir siber güvenlik projesi olduğundan güvenlik birinci sınıf bir gereksinim olarak ele alınmıştır:

  • Şifre saklama: scrypt + kullanıcıya özel 16-byte salt (salt:hash formatı) — düz metin şifre asla saklanmaz.
  • Oturum: httpOnly çerez + NextAuth JWT hibrit modeli; GitHub & Google OAuth.
  • Rate limiting: Giriş brute-force koruması, kayıt flood koruması ve şifre-sıfırlama token oracle koruması (IP + hesap bazlı, atomik sayaç).
  • RBAC: admin > analyst > viewer yetki kademeleri.
  • Girdi doğrulama: Ortak identity-validation kuralları (kullanıcı adı / görünen ad / şifre).
  • Dosya yükleme: Magic-byte doğrulaması (JPEG/PNG/WEBP/PDF) — uzantı yerine gerçek içerik kontrolü.
  • XSS/URL koruması: Bağlantılarda şema beyaz listesi (javascript: / data: engellenir).
  • Proxy/IP güvenliği: x-forwarded-for spoofing'e karşı trust-proxy kapılı istemci IP çözümü.
  • Veritabanı: Postgres Row-Level Security (deny-all + yalnız service-role erişimi).
  • Boot doğrulama: Sunucu açılışında zorunlu ortam değişkenleri (imza anahtarları) doğrulanır; eksikse uygulama güvenli biçimde başlamayı reddeder.
  • Bağımlılık güvenliği: npm audit0 açık. (Geçişli gray-matterjs-yaml YAML-DoS uyarısı [GHSA-h67p-54hq-rp68], package.json overrides ile yamalı js-yaml@^4.2.0'a sabitlenerek kapatıldı; gray-matter 4.x'in beklediği safeLoad kaldırıldığı için blog parser'a js-yaml-4 uyumlu özel YAML engine verildi — next build + 8 blog SSG sayfası yeşil doğrulandı.)

Geliştirme sürecinde, hem dahili hem de bağımsız harici incelemelerle çok turlu bir güvenlik denetimi yürütülmüştür; bilinen production-exploitable Critical/High açığı bulunmamaktadır. Detaylı denetim defteri docs/ klasöründe ve commit geçmişinde izlenebilir (her kapanış commit'i kök neden + test referansı taşır).


🗄️ Veri Mimarisi (Kısa)

Hibrit, bayrakla yönetilen bir veri katmanı kullanılır:

Mod Hedef Kullanım
disabled (yerel) SQLite / bellek Yerel geliştirme & testler (harici servis yok)
supabase / postgres Supabase Postgres + Storage Production (kimlik, profil, içerik, raporlar, telemetri)

Production'da 5 kullanıcı-yüzlü domain (identity, profile, content, operations, telemetry) Supabase Postgres üzerindedir.


📚 Kaynakça ve Yararlanılan Bağlantılar

Resmî dokümantasyonlar

Güvenlik & veri kaynakları

Eğitim içeriği esinlenilen alanlar

  • The Hacker News, Krebs on Security, BleepingComputer, SANS ISC (blog/haber RSS beslemeleri)

👨‍💻 Geliştirici

SALİM AYBASTI — Öğrenci No: 24010509065


📝 Lisans ve Not

Bu proje bir ders/capstone projesidir ve eğitim amaçlı geliştirilmiştir. Yeniden dağıtım için ayrı bir açık lisans tanımlanmamıştır.

Not: /home dashboard'undaki saldırı/telemetri verileri eğitim amaçlı bir simülasyondur, gerçek saldırı verisi değildir ve arayüzde açıkça "SİMÜLASYON" olarak etiketlenmiştir.

About

Cybersecurity portfolio + education platform — Next.js 14 + Supabase Postgres + Vercel. Audit-grade engineering: 941 tests, 13 review passes, live at siberlab.dev

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors