Geçtiğimiz yıl, Laravel uygulamamın loglarında rahatsız edici bir durum tespit ettim: yüzlerce SQL injection denemesi, /wp-admin için tarayıcı botları ve arama alanlarına yerleştirilmiş XSS yükleri. Her gün.
Bu tehditleri algılamak ve kaydetmek için bir güvenlik modülü geliştirdim. Üzerinde aylarca üretim ortamında çalıştırdıktan sonra, onu bağımsız bir Laravel paketi olarak çıkardım ve açık kaynak hale getirdim.
Ne Yapar?
Ne Yapar?
laravel-threat-detection, yollarınızın önünde oturan bir middleware’dir ve her gelen isteği 100’den fazla regex deseni ile inceler. Şüpheli bir şey bulduğunda, bunu IP, URL, yük, tehdit türü ve ciddiyet seviyesi ile birlikte veritabanınıza kaydeder.
Dış hizmetler yok. API anahtarları yok. Yapı araçları yok.
composer require jayanta/laravel-threat-detection
Middleware’i kaydetmeniz yeterli.
Neleri Algılar?
Neleri Algılar?
- SQL Injection — UNION saldırıları, yığılmış sorgular, kör SQLi
- XSS — Script etiketleri, olay işleyicileri, JavaScript URI’leri
- Uzak Kod Çalıştırma — system(), exec(), eval(), shell_exec()
- Directory Traversal — ../../etc/passwd, LFI/RFI
- Tarayıcı Botları — SQLMap, Nikto, Nmap, Burp Suite, Acunetix, WPScan
- DDoS — Oran bazlı eşik algılama
- SSRF — Localhost erişimi, AWS/GCP metadata uç noktası sorgulama
- XXE, Log4Shell, LDAP injection — Ve 30’dan fazla kategori
Gösterge Paneli
Gösterge Paneli
Paket, yapılacak bir adım olmadan gelen yerleşik bir koyu mod gösterge paneli ile birlikte gelir. Alpine.js + Tailwind CDN kullanır ve tüm verileri paketin JSON API’sinden alır.
Aşağıdakileri edinirsiniz:
- İstatistik kartları (toplam, yüksek/orta/düşük ciddiyet, benzersiz IP’ler)
- 7 günlük zaman çizelgesi grafiği
- Paging ile arama yapılabilir, filtrelenebilir tehdit tablosu
- En çok geri dönen IP’ler
- Ülkeye göre tehditler
Bunu bir env değişkeni ile etkinleştirin:
THREAT_DETECTION_DASHBOARD=true
API
API
Kendi ön yüzünüzü oluşturmayı tercih ediyorsanız, 12 REST uç noktası bulunmaktadır:
- /api/threat-detection/stats — Genel istatistikler
- /api/threat-detection/threats — Sayfalama ile filtrelenebilir tehdit listesi
- /api/threat-detection/top-ips — En çok geri dönen IP’ler
- /api/threat-detection/by-country — Ülkeye göre gruplama
- /api/threat-detection/timeline — Grafik görselleştirmeleri için
- /api/threat-detection/export — CSV dışa aktarımı
- Ve 6 daha fazla
Tüm uç noktalar JSON döner. Vue, React, Livewire ile inşa edin — istediğiniz gibi.
Coğrafi Zenginleştirme
Coğrafi Zenginleştirme
Tehdit loglarınızı ülke, şehir, ISS ve bulut sağlayıcı verileri ile zenginleştirmek için bir artisan komutu çalıştırabilirsiniz:
php artisan threat-detection:enrich –days=7
Ücretsiz ip-api.com hizmetini kullanır. Oran limitleri içinde kalacak şekilde otomatik olarak sınırlandırılır.
Slack Bildirimleri
Slack Bildirimleri
Yüksek ciddiyetteki tehditler için gerçek zamanlı Slack bildirimleri alın:
THREAT_DETECTION_NOTIFICATIONS=true
THREAT_DETECTION_SLACK_WEBHOOK=https://hooks.slack.com/services/…
Hızlı Başlangıç
Hızlı Başlangıç
Kurulum
composer require jayanta/laravel-threat-detection
Yapılandırmayı ve göçleri yayınlayın
php artisan vendor:publish –tag=threat-detection-config
php artisan vendor:publish –tag=threat-detection-migrations
php artisan migrate
Laravel 11+’de middleware’i kaydedin:
->withMiddleware(function (Middleware $middleware) {
$middleware->web(append: [
\JayAnta\ThreatDetection\Http\Middleware\ThreatDetectionMiddleware::class,
]);
})
İşte bu kadar. Uygulamanız artık tehditleri tespit ediyor.
Neden Bunu Geliştirdim?
Neden Bunu Geliştirdim?
Çoğu WAF çözümü ya pahalı bulut hizmetleri ya da karmaşık kendi barındırılan kurulumlardır. Ben, şunları isteyen bir şey istedim:
- Laravel uygulaması içinde yer alması
- Kurulumu 2 dakika alması
- Hiçbir maliyetinin olmaması
- Uygulamama kimlerin saldırı yaptığını görmemi sağlaması
Bu paket tam olarak bunu yapıyor.
Bağlantılar
Bağlantılar
Laravel 10, 11 ve 12 ile uyumlu. PHP 8.1+. MIT lisanslı.
Geri bildirimler, yıldızlar ve katkılar her zaman hoş karşılanır!
Kaynak: Orijinal Makale


