Download the PHP package robyajo/pasak without Composer
On this page you can find all versions of the php package robyajo/pasak. It is possible to download/install these versions without Composer. Possible dependencies are resolved automatically.
Download robyajo/pasak
More information about robyajo/pasak
Files in robyajo/pasak
Package pasak
Short Description Pasak - enterprise-grade headless self-hosted WAF, threat detection engine, zero-tolerance blocking, stepped login lockout, and security auditing toolkit for Laravel.
License MIT
Homepage https://github.com/robyajo/pasak
Informations about the package pasak
Pasak (Bulwark)
Pasak (Bulwark) adalah paket keamanan komprehensif (Self-Hosted WAF & Threat Engine) berbasis Headless REST API untuk ekosistem Laravel. Paket ini murni PHP Composer library (Zero-NPM / standar Spatie) yang dirancang khusus untuk memproteksi aplikasi web internal dari serangan siber tingkat lanjut, injeksi payload pentest, eksploitasi webshell, dan brute force tanpa mengikat aplikasi ke template frontend tertentu.
๐ Portal Dokumentasi Resmi Lengkap: Tersedia 25 bab dokumentasi mendalam di direktori
documents/index.html.
๐ Fitur Utama
-
Self-Hosted WAF & Zero-Tolerance Threat Detection:
- Deteksi instan tanpa batas ambang (zero-tolerance) untuk null-byte upload (
.php%00.jpg), ekstensi ganda (.php.jpg), path traversal (../../../public/), probe file sensitif (.htaccess,.env,.git), dan SSTI canary ({{7*7}}). - Deteksi komprehensif untuk SQL Injection, Cross-Site Scripting (XSS), Local File Inclusion (LFI), Command Injection, dan Scanner User-Agents.
- Pola regex yang diperketat dan kebal terhadap serangan ReDoS (Regular Expression Denial of Service).
- Deteksi instan tanpa batas ambang (zero-tolerance) untuk null-byte upload (
-
Isolasi Perangkat Granular (Device-Level Quarantine):
- Dukungan isolasi di tingkat perangkat menggunakan
device_id(WebRTC/fingerprint) danlocal_ip. - Memastikan perangkat penyerang terblokir tanpa mengganggu pengguna sah lain yang berbagi alamat IP publik yang sama (seperti kantor atau router Wi-Fi publik).
- Dukungan isolasi di tingkat perangkat menggunakan
-
Tiket Banding & Permohonan Buka Blokir (Appeal Tickets):
- Endpoint publik REST API bagi pengguna yang terblokir untuk mengajukan tiket permohonan buka blokir beserta status pelacakannya.
- Antarmuka persetujuan admin yang secara otomatis mencabut karantina IP/perangkat dan memasukkannya ke whitelist.
-
Multi-Tier Stepped Login Lockout:
- Sistem pencegahan credential stuffing & brute force berjenjang (1 menit, 5 menit, 15 menit, 1 jam, hingga 24 jam).
- Pencatatan otomatis riwayat kegagalan otentikasi ke log audit keamanan.
-
Server Integrity & Webshell Scanner:
- Pembuatan dan verifikasi baseline hash SHA-256 untuk berkas-berkas aplikasi inti.
- Pemindaian berkas mencurigakan / webshell (ekstensi ganda, skrip di direktori publik/upload, polyglot media).
- Fitur penghapusan berkas berbahaya yang aman dengan proteksi path traversal dan berkas sistem vital.
- Audit konfigurasi keamanan server (
APP_DEBUG, secure session cookie, Fortify 2FA).
-
Streaming Access Log Scanner:
- Pemindai berkas log mentah Apache / Nginx secara streaming berdaya hemat memori untuk menangkap penyerang yang ditolak oleh web server sebelum request mencapai proses PHP Laravel.
- Headless & Arsitektur Terkopel Longgar:
- 100% REST API JSON murni.
- Model
Userdan nama tabel database sepenuhnya dapat dikonfigurasi melaluiconfig/pasak.php. - Trait
HasSecurityRelationsuntuk kemudahan integrasi relasi Eloquent.
๐ Persyaratan Sistem
- PHP:
^8.2,^8.3,^8.4, atau^8.5 - Laravel:
^10.0,^11.0,^12.0, atau^13.0
๐ Instalasi
1. Pasang Paket via Composer
Penting โ jangan pakai
@devdi produksi. Menuliscomposer require robyajo/pasak:@devmemaksa Composer mengambil branch defaultdev-main(kode yang belum dirilis), bukan tag rilis stabil. Selalu pakai constraint rilis (mis.^1.0) atau tanpa constraint sama sekali. Flag@devhanya diperlukan saat mengembangkan paket ini lewat path repository lokal.
2. Publikasikan Aset Otomatis (pasak:install)
Gunakan perintah satu langkah untuk mempublikasikan dan menerapkan seluruh aset keamanan secara otomatis:
Aset yang Didapat Pengguna Setelah Menjalankan Perintah Ini:
- ๐
config/pasak.php: Konfigurasi lengkap WAF, ambang batas blokir, IP whitelist, stepped login lockout, dan log scanner. - ๐๏ธ
database/migrations/(migrasi konsolidasi + tambahan): Menyiapkan tabelblocked_ips,pasak_logs,login_attempts,ip_unblock_requests,user_logins,trusted_ips,settings, danallowed_ips(otomatis memindahkan data dari tabel lamasecurity_logs/security_settingsbila ada). - ๐
nginx.conf: Konfigurasi produksi Nginx Hardened WAF (Dual-zone rate limit, single-PHP execution/index.php, storage sandboxing). - ๐ก๏ธ
public/.htaccess: Hardening web server Apache & LiteSpeed (Blokir dotfiles, double extension.php.jpg, file backup dump.sql, dan matikan directory listing).Catatan Keamanan: Jika
public/.htaccesslama sudah ada, installer otomatis membuat cadanganpublic/.htaccess.backup-YYYYMMDD_HHMMSSdan menyisipkan aturan keamanan di bawah tanpa merusak rewrite rules aplikasi Anda. - ๐ซ
resources/views/errors/blocked.blade.php: Halaman 403 default yang menampilkan alasan blokir, kode referensi, dan formulir banding yang terhubung langsung ke endpoint publik tiket banding. Dapat disesuaikan sesuai branding aplikasi Anda. - โ๏ธ Penyematan Variabel ke
.env&.env.example: Installer secara otomatis menambahkan blok konfigurasi lengkap disertai penjelasan fungsi berbahasa Indonesia untuk setiap variabel (PASAK_*) langsung ke berkas.envdan.env.exampleaplikasi Anda. - ๐ (Opsional) Dashboard monitoring Blade murni: Tampilan monitoring
resources/views/pages/pasak/(100% Pure PHP, jalan di semua aplikasi Laravel tanpa Livewire/Inertia/Vue), wajib login. Dipublikasikan bila Anda menambahkan opsi--with-dashboard(alias:--with-plain,--with-blade).
Opsi Perintah pasak:install:
| Opsi | Keterangan |
|---|---|
--force |
Menimpa seluruh berkas konfigurasi, migrasi, nginx.conf, public/.htaccess, dan halaman blokir. |
--without-nginx |
Melewatkan pembuatan berkas nginx.conf. |
--without-apache |
Melewatkan pembuatan berkas apache2.conf. |
--without-htaccess |
Melewatkan pembaruan berkas public/.htaccess. |
--without-views |
Melewatkan publikasi halaman blokir errors/blocked.blade.php. |
--without-env |
Melewatkan penyematan variabel konfigurasi ke berkas .env dan .env.example. |
--without-user-trait |
Melewatkan penyematan trait HasSecurityRelations ke model User. |
--without-middleware |
Melewatkan pendaftaran middleware WAF ke bootstrap/app.php / Kernel. |
--without-routes |
Melewatkan publikasi berkas routes/pasak.php dan routes/pasak-api.php. |
--without-api |
Melewatkan pemasangan dukungan API (tanpa rute API). |
--without-web |
Melewatkan pemasangan dashboard web (tanpa halaman/dashboard). |
--api-only |
Jalan pintas: API ya, Web tidak (inti + keamanan saja). |
--with-dashboard |
Mempublikasikan dashboard monitoring Blade murni, jalan di semua aplikasi Laravel (wajib login). |
--with-plain |
Alias dari --with-dashboard. |
--with-blade |
Alias dari --with-dashboard. |
--with-htaccess |
Memaksa pembaruan berkas public/.htaccess. |
Publikasi Aset Secara Parsial (Manual):
Jalankan migrasi database:
3. Dashboard Monitoring Blade Murni
Paket ini menyediakan panel monitoring siap pakai Blade murni (100% Pure PHP, tanpa Livewire/Inertia/Vue) yang dapat dipublikasikan langsung ke dalam aplikasi host di prefix /pasak โ berjalan di semua aplikasi Laravel:
Perintah tersebut menyalin *`resources/views/pages/pasak/.blade.php** (tujuh halaman + layout dengan CSS/JS mandiri, tanpa build step) beserta konfigurasidashboardpadaconfig/pasak.php`.
Mengaktifkan Dashboard & Wajib Login
Konfigurasi di .env:
Setelah diaktifkan, panel dapat diakses pada /pasak.
๐ Wajib Login: Seluruh halaman dashboard di prefix
/pasakdilindungi oleh middlewareweb+auth. Pengguna yang belum login otomatis diarahkan ke halaman login. Jika Anda ingin membatasi dashboard khusus untuk administrator, setPASAK_DASHBOARD_ADMIN_ONLY=truedi berkas.env.
โ๏ธ Konfigurasi & Integrasi
1. Tambahkan Trait ke Model User
Buka model App\Models\User.php dan tambahkan trait HasSecurityRelations:
Trait ini menyediakan relasi Eloquent bawaan:
$user->logins(): Riwayat login pengguna (UserLogin).$user->trustedIps(): Daftar IP terpercaya pengguna (TrustedIp).$user->securityLogs(): Riwayat event keamanan pengguna (SecurityLog).$user->blockedIps(): Riwayat pemblokiran yang dilakukan oleh pengguna (BlockedIp).$user->allowedIps(): Entri allowlist yang dibuat oleh pengguna (AllowedIp).$user->resolvedTickets(): Tiket permohonan buka blokir yang diselesaikan admin (IpUnblockRequest).
2. Daftarkan Middleware
Pada Laravel 11 / 12 / 13 (bootstrap/app.php)
Pada Laravel 10 (app/Http/Kernel.php)
๐ก Headless REST API Reference
Semua rute REST API didaftarkan secara default dengan prefix /api/pasak (dapat diubah melalui config('pasak.routes.prefix')).
1. Endpoint Publik
| Metode | URI | Deskripsi |
|---|---|---|
POST |
/api/pasak/unblock-tickets/submit |
Mengirim permohonan banding pembukaan blokir IP/perangkat |
GET |
/api/pasak/unblock-tickets/check/{ticketNumber} |
Memeriksa status tiket permohonan banding |
Contoh Payload Pengajuan Tiket:
2. Endpoint Pengguna Terautentikasi (auth)
| Metode | URI | Deskripsi |
|---|---|---|
POST |
/api/pasak/trusted-ips/save-my-ip |
Menyimpan alamat IP saat ini sebagai IP terpercaya pengguna |
3. Endpoint Manajemen Admin (auth + pasak.admin)
Log Keamanan & Analitik Serangan
| Metode | URI | Deskripsi |
|---|---|---|
GET |
/api/pasak/logs |
Mendapatkan log ancaman (paginasi, filter event/level/tanggal, statistik, tren 24 jam/7 hari) |
DELETE |
/api/pasak/logs/clear |
Mengosongkan seluruh log audit keamanan |
DELETE |
/api/pasak/logs/{id} |
Menghapus satu entri log keamanan tertentu |
Daftar Blokir IP & Perangkat
| Metode | URI | Deskripsi |
|---|---|---|
GET |
/api/pasak/blocked-ips |
Mendapatkan daftar IP yang diblokir (aktif & kedaluwarsa) |
POST |
/api/pasak/blocked-ips |
Memblokir IP atau perangkat secara manual |
GET |
/api/pasak/blocked-ips/{id} |
Melihat detail data pemblokiran |
PATCH |
/api/pasak/blocked-ips/{id}/toggle |
Mengaktifkan / menonaktifkan status blokir |
DELETE |
/api/pasak/blocked-ips/{id} |
Mencabut blokir dan menghapus entri |
Audit Server & Integritas Berkas
| Metode | URI | Deskripsi |
|---|---|---|
GET |
/api/pasak/server |
Laporan komprehensif audit keamanan server & integritas berkas |
POST |
/api/pasak/server/baseline |
Membuat baseline hash SHA-256 berkas aplikasi baru |
DELETE |
/api/pasak/server/baseline |
Menghapus baseline integritas |
DELETE |
/api/pasak/server/suspicious-files |
Menghapus berkas mencurigakan/webshell yang terdeteksi |
DELETE |
/api/pasak/lockouts/{id} |
Membuka kunci akun yang terkena lockout login berjenjang |
Sesi Pengguna & IP Terpercaya
| Metode | URI | Deskripsi |
|---|---|---|
GET |
/api/pasak/user-sessions |
Riwayat sesi login seluruh pengguna |
GET |
/api/pasak/user-sessions/realtime |
Daftar pengguna yang aktif secara real-time |
DELETE |
/api/pasak/user-sessions/{id} |
Menghapus log sesi pengguna |
DELETE |
/api/pasak/user-sessions/session/{sessionId} |
Memutus sesi pengguna tertentu (force logout) |
DELETE |
/api/pasak/trusted-ips/{id} |
Menghapus IP dari daftar terpercaya |
Pengelolaan Tiket Banding
| Metode | URI | Deskripsi |
|---|---|---|
GET |
/api/pasak/unblock-tickets |
Daftar seluruh tiket permohonan banding |
POST |
/api/pasak/unblock-tickets/{id}/respond |
Menyetujui atau menolak tiket (buka blokir & whitelist) |
DELETE |
/api/pasak/unblock-tickets/{id} |
Menghapus arsip tiket |
๐ก๏ธ Validation Rules Bawaan
Paket menyediakan aturan validasi siap pakai untuk request form aplikasi Anda:
1. SafeImageFile
Memvalidasi unggahan gambar dan mencegah serangan polyglot image (gambar JPEG/PNG sah yang diinjeksi kode <?php), ekstensi ganda berbahaya, dan SVG bereksekusi JavaScript/XSS:
2. SafeAssetPath
Memvalidasi string path aset gambar/ikon agar terbebas dari path traversal, probe direktori sensitif, dan file .htaccess:
๐ป Perintah Artisan CLI
Paket ini menyertakan perintah Artisan lengkap untuk otomasi di server produksi:
1. Pemindaian Log Akses Web Server (pasak:scan-logs)
Memindai berkas log Apache atau Nginx, mendeteksi pola serangan, dan memblokir IP penyerang secara otomatis:
2. Manajemen Baseline Integritas Berkas (pasak:baseline)
3. Membuka Blokir IP (pasak:unblock-ip)
4. Pembersihan Log Kedaluwarsa (pasak:prune-logs)
5. Pembersihan Data Residu Pentest (pasak:purge-injected-data)
Mendeteksi dan menghapus payload injeksi sisa pengujian keamanan (seperti {{7*7}}, .htaccess, path traversal) dari tabel aplikasi:
6. Pembaruan Otomatis & Sinkronisasi Komponen (pasak:upgrade)
Periksa rilis terbaru dan perbarui package sekaligus sinkronkan migrasi database, rute kustom, dan tampilan dashboard monitoring:
Notifikasi Otomatis: Saat menjalankan
php artisan serveataucomposer run dev, sistem akan secara otomatis memeriksa versi terbaru dari Packagist/GitHub secara non-blocking dan menampilkan notifikasi di terminal konsol bila versi baru telah dirilis.
๐ Konfigurasi Web Server Hardened
Paket ini menyertakan template konfigurasi hardened siap pakai untuk web server Nginx maupun Apache / LiteSpeed / cPanel.
1. Nginx Hardened WAF (nginx.conf)
Diterbitkan via php artisan vendor:publish --tag=pasak-nginx:
- Dua Zona Rate Limiting Terpisah:
auth_limit: 5 request/menit (burst 5) untuk endpoint sensitif (/login,/register,/forgot-password,/reset-password, dll.).general_limit: 30 request/detik (burst 50) untuk rute umum aplikasi.
- Proteksi Aset Statis Vite / Frontend:
- Direktori
/build/dibebaskan dari rate-limiting agar chunk parallel JS tidak memicu HTTP 429 atauNS_ERROR_CORRUPTED_CONTENT.
- Direktori
- Strict Single-PHP Execution:
- Hanya
/index.phpyang boleh dieksekusi oleh PHP-FPM. Berkas skrip lain yang berada di direktori publik langsung ditolak dengan HTTP 403.
- Hanya
- Pencegahan Double Extension & Ekstensi Berbahaya:
- Menolak ekstensi ganda (
.php.jpg,.phtml.zip, dll.).
- Menolak ekstensi ganda (
- Sandboxing Direktori Storage / Upload:
- Folder
/storage/dimatikan dari eksekusi PHP dengan headerX-Content-Type-Options: nosniffdan CSP sandbox.
- Folder
- Blokir Dotfiles & Berkas Backup:
- Menolak akses berkas
.env,.git,.htaccess,.sql,.bak, dan.log.
- Menolak akses berkas
2. Apache & LiteSpeed Hardened (public/.htaccess)
Diterapkan otomatis via php artisan pasak:install atau php artisan vendor:publish --tag=pasak-htaccess:
- Front Controller & Authorization Header: Routing Laravel standar, pemeliharaan header
AuthorizationdanX-XSRF-Token. - Blokir Akses ke Dotfile (
<FilesMatch "^\.">):- Menutup akses ke
.htaccess,.env,.git,.htpasswd(kompatibel Apache 2.4+Require all denieddan Apache 2.2Deny from all).
- Menutup akses ke
-
Blokir Serangan Ekstensi Ganda (Double Extension Webshell):
- Menolak berkas berbahaya seperti
shell.php.jpgatau trik null-bytewne.php%00.jpg:
- Menolak berkas berbahaya seperti
- Blokir Berkas Backup, Dump Database, dan Log Sensitif:
- Menutup berkas
.sql,.bak,.old,.orig,.save,.swp,.log,.ini,.conf,.yml,.yaml.
- Menutup berkas
- Matikan Directory Listing:
Options -Indexesmencegah browser menampilkan daftar berkas di dalam folder publik/storage.
๐งช Menjalankan Pengujian (Testing)
Paket ini dilengkapi dengan pengujian menyeluruh menggunakan Pest PHP dan Orchestra Testbench:
Hasil uji: 115 passed (478 assertions) 100% Passed mencakup:
DetectorTuningTest: Verifikasi akurasi pola deteksi dan ketahanan ReDoS.InstantBlockTest: Verifikasi zero-tolerance instant blocking pada percobaan pertama.PolyglotImageTest: Uji penolakan polyglot image ber-tag PHP dan SVG XSS.SecurityAdminApiTest: Pengujian lengkap otorisasi, mutasi data, dan respons JSON REST API.DeviceLevelBlockingTest: Uji isolasi perangkat pada IP publik bersama.ServerSecurityTest: Audit keamanan lingkungan, baseline SHA-256, dan webshell sanitizer.AccessLogScanTest: Uji parser streaming log akses web server.PasakTest: Uji ambang batas auto-blocking dan rotasi log.NginxPublishTest: Verifikasi publikasi konfigurasi hardened virtual host Nginx.HtaccessPublishTest: Verifikasi publikasi, penambahan aturan otomatis, dan pencadangan.htaccessApache.
โค๏ธ Dukungan (Support)
Jika paket ini bermanfaat untuk proyek Anda, Anda dapat mendukung pengembangan berkelanjutannya melalui:
- ๐ฎ๐ฉ Saweria: https://saweria.co/robykartis
Dukungan Anda sangat membantu agar paket ini tetap terawat, aman, dan terus diperbarui. Terima kasih! ๐
๐ Lisensi
Paket ini dilisensikan di bawah lisensi terbuka MIT.
All versions of pasak with dependencies
guzzlehttp/guzzle Version ^7.8|^8.0
illuminate/auth Version ^10.0|^11.0|^12.0|^13.0
illuminate/console Version ^10.0|^11.0|^12.0|^13.0
illuminate/database Version ^10.0|^11.0|^12.0|^13.0
illuminate/http Version ^10.0|^11.0|^12.0|^13.0
illuminate/routing Version ^10.0|^11.0|^12.0|^13.0
illuminate/support Version ^10.0|^11.0|^12.0|^13.0
illuminate/validation Version ^10.0|^11.0|^12.0|^13.0