Search by

mixudev / security-defense

Enterprise-grade, modular, and configurable Laravel security defense package for threat detection, correlation, IP quarantine, alerting, and prevention without duplicating auth.

Maintainers

Package info

github.com/mixudev/package_LaravelSecurityDefense

pkg:composer/mixudev/security-defense

Transparency log

Statistics

Installs: 30

Dependents: 0

Suggesters: 0

Stars: 0

Open Issues: 0

v1.7.1 2026-09-06 10:00 UTC

README

Versi Terbaru di Packagist Release GitHub Hasil Pengujian Versi PHP Kompatibilitas Laravel Lisensi: MIT

mixudev/security-defense adalah package pertahanan keamanan tingkat enterprise untuk aplikasi Laravel. Bertindak sebagai "kamera pengawas, perisai proaktif, dan integritas data" yang mendeteksi ancaman secara real-time, mengorelasikan pola serangan multi-vektor, mengisolasi penyerang (Fail2Ban IP Quarantine), memantau mutasi data & mendeteksi manipulasi parameter Burp Suite, melindungi sesi terautentikasi dari pencurian cookie malware, serta mengirimkan alert ter-deduplikasi ke berbagai saluran.

Ringkasan Teknologi & Sistem

  • Decoupled Architecture: Tidak menggantikan auth (user, session, hashing, atau token). Package murni mengonsumsi telemetri keamanan dari aplikasi.
  • 11 Aturan Deteksi Modular: Brute Force, Credential Stuffing, Distributed Spray, Rate Limit Bypass, Injeksi Payload (SQLi, XSS, RCE, LFI), Impossible Travel, Path Reconnaissance, Scanner User-Agent, Session Fingerprint & Hijack, Behavioral Velocity, dan HTTP Header Consistency.
  • Database Change Monitoring & Burp Tamper Detection: Melacak mutasi database (created, updated, deleted), old vs new values, URL, method, actor, snapshot payload, dan mendeteksi injeksi parameter sensitif / mass assignment via Burp Suite dengan garansi zero-leakage redaction (password disamarkan).
  • Session Intelligence Layer: Mendeteksi pencurian session cookie oleh malware di device korban (infostealer) serta scraping cepat pada akun yang sudah login.
  • Multi-Tab Security Dashboard: Navigasi lengkap untuk Threat Telemetry SIEM, Database Mutations, dan Session Intelligence.
  • Compound Threat Scoring: Menghitung akumulasi risiko antar jenis serangan pada entitas yang sama sepanjang waktu dan otomatis mengelevasi status ke ancaman kritis jika melampaui ambang batas.
  • Karantina IP Fail2Ban: Memutus koneksi IP penyerang secara instan di awal middleware dengan HTTP 429, menghemat CPU hingga 99% saat diserang.
  • Fast-Path & Self-Defense Bounded: Request GET/HEAD bersih tanpa body/query melewati scan regex secara instan. Dilengkapi proteksi Anti-ReDoS, batas memori rekursi, dan pembatas penulisan database.
  • Notifikasi Multi-Channel: Database, Telegram, Discord, Webhook (tanda tangan HMAC-SHA256), dan Email native Laravel dengan dukungan antrean asinkron (queue).
  • Interactive Telegram Bot: Kontrol panel interaktif via bot Telegram untuk health check, review insiden, dan unban IP.

Persyaratan Sistem

  • PHP ^8.2
  • Laravel 10.x, 11.x, 12.x, atau 13.x
  • Driver cache Redis atau Memcached (sangat disarankan untuk produksi)

Panduan Instalasi & Aktivasi Singkat

1. Instalasi via Composer

composer require mixudev/security-defense

2. Publish Konfigurasi & Migrasi

php artisan vendor:publish --provider="Mixudev\SecurityDefense\Providers\SecurityDefenseServiceProvider"
php artisan migrate

3. Aktifkan WAF Middleware

Daftarkan middleware RequestThreatScanner agar seluruh request masuk dipindai dan dilindungi dari IP karantina:

Laravel 11, 12, 13 (bootstrap/app.php):

use Mixudev\SecurityDefense\Middleware\RequestThreatScanner;

return Application::configure(basePath: dirname(__DIR__))
    ->withMiddleware(function (Middleware $middleware) {
        $middleware->append(RequestThreatScanner::class);
    })
    ->create();

Laravel 10 (app/Http/Kernel.php):

protected $middleware = [
    // ...
    \Mixudev\SecurityDefense\Middleware\RequestThreatScanner::class,
];

4. Hubungkan Telemetri Autentikasi

Teruskan event autentikasi aplikasi ke SecurityDefense::record() pada AppServiceProvider::boot():

namespace App\Providers;

use Illuminate\Auth\Events\Failed;
use Illuminate\Auth\Events\Login;
use Illuminate\Support\Facades\Event;
use Illuminate\Support\ServiceProvider;
use Mixudev\SecurityDefense\Support\Facades\SecurityDefense;

class AppServiceProvider extends ServiceProvider
{
    public function boot(): void
    {
        // 1. Catat kegagalan login (Brute Force, Credential Stuffing)
        Event::listen(Failed::class, function (Failed $event) {
            SecurityDefense::record([
                'ip' => request()->ip(),
                'identifier' => $event->credentials['email'] ?? $event->credentials['username'] ?? 'unknown',
                'eventType' => 'LoginFailed',
                'userAgent' => request()->userAgent(),
                'metadata' => ['user_id' => $event->user?->id],
            ]);
        });

        // 2. Catat login sukses (Impossible Travel)
        Event::listen(Login::class, function (Login $event) {
            SecurityDefense::record([
                'ip' => request()->ip(),
                'identifier' => (string) $event->user->getAuthIdentifier(),
                'eventType' => 'LoginSucceeded',
                'userAgent' => request()->userAgent(),
                'metadata' => [
                    'latitude' => request()->header('CF-IPLatitude'),
                    'longitude' => request()->header('CF-IPLongitude'),
                    'country' => request()->header('CF-IPCountry'),
                ],
            ]);
        });
    }
}

5. Masukkan Kredensial Channel di .env (Opsional)

Aktivasi channel dilakukan di config/security-defense.php. File .env hanya digunakan untuk menyimpan kredensial:

# Telegram Alerting
SECURITY_TELEGRAM_BOT_TOKEN=123456789:ABCdefGhIJKlmNoPQRsTUVwxyZ
SECURITY_TELEGRAM_CHAT_ID=-1001234567890

# Discord Webhook
SECURITY_DISCORD_WEBHOOK=https://discord.com/api/webhooks/123456789/token_here

# SIEM Webhook
SECURITY_WEBHOOK_URL=https://siem.internal/api/v1/ingest
SECURITY_WEBHOOK_SECRET=your-secret-key

# Email Alert
SECURITY_ALERT_EMAIL=security@example.com

Uji konektivitas channel melalui terminal:

php artisan security:test-webhook --all

Manajemen Programatik Singkat

use Mixudev\SecurityDefense\Support\Facades\SecurityDefense;

// Cek apakah IP sedang diblokir
$isBlocked = SecurityDefense::quarantine()->isQuarantined('198.51.100.22');

// Blokir IP manual (IP, durasi detik, alasan)
SecurityDefense::quarantine()->jail('198.51.100.22', 3600, 'Blokir manual admin');

// Bebaskan IP dari blokir
SecurityDefense::quarantine()->pardon('198.51.100.22');

// Dapatkan akumulasi skor risiko IP
$score = SecurityDefense::scoring()->getScore(request()->ip());

Daftar Isi Dokumentasi Lengkap

Untuk panduan konfigurasi mendalam, detail arsitektur, dan operasional tingkat lanjut, silakan baca dokumentasi di folder docs/:

1. Memulai (Getting Started)

2. Fitur Keamanan (Features)

  • docs/features/detection-rules.md — Penjelasan cara kerja 8 aturan deteksi modular (Brute force, Stuffing, Spray, Injection, Travel, Recon, Scanner UA).
  • docs/features/dashboard.md — Fitur dashboard monitoring: KPI, quick-action toggle, IP quarantine management, live WAF events, date range filter.
  • docs/features/waf-middleware.md — Penjelasan pipeline inspeksi middleware RequestThreatScanner, proteksi request flood, dan Fail2Ban auto-jailing.
  • docs/features/threat-scoring.md — Mekanisme kalkulasi skor risiko kumulatif multi-vektor dan eskalasi otomatis ke status compound threat.
  • docs/features/alert-channels.md — Konfigurasi 5 saluran alert (Database, Telegram, Discord, Webhook HMAC, Email), deduplikasi fingerprint, dan antrean asinkron (queue).

3. Integrasi Sistem (Integrations)

4. Operasional & Pemeliharaan (Operations)

5. Arsitektur & Prinsip Desain

  • docs/architecture/overview.md — Filosofi pemisahan tugas (Auth vs Defense), diagram pipeline keamanan, dan kebijakan privasi Zero-Leakage Sanitizer.
  • docs/ai/README.md — Dokumentasi living internal engineering (Architecture Decision Records, detail class implementasi, dan catatan perubahan versi).

Pengujian

Jalankan test suite menggunakan PHPUnit:

composer test

Lisensi

Didistribusikan di bawah lisensi MIT. Lihat file LICENSE untuk informasi lebih lanjut.