Lewati ke konten

CodeIgniter 4 Shieldv1.2.x

Perintah Spark

Shield menyertakan enam perintah Spark. Semuanya opsional, dan tidak ada satu pun yang perlu Anda jalankan supaya Shield bekerja.

Perintah Untuk apa
shield:health Memeriksa apakah semua komponen siap. Jalankan pertama kali.
shield:report Merangkum kejadian keamanan. Baca setiap hari saat tuning.
shield:rules:list Menampilkan rule yang aktif beserta skor dan severity.
shield:prune Menghapus kejadian lama dan ban yang sudah kedaluwarsa.
shield:release Melepas ban satu IP.
shield:replay Menguji ulang korpus serangan terhadap rule saat ini.
Terminal window
php spark shield:health

Memeriksa koneksi database, cache, mesin Shield, konfigurasi trusted proxy (proxyIPs), dan resolusi DNS untuk verifikasi crawler. Jalankan setiap kali Shield dipasang, dan lagi setiap kali ada masalah.

Perintah ini tidak memeriksa konfigurasi admin. Peringatan adminAuthorize hanya tersedia di endpoint admin GET /{prefix}/health.

Terminal window
php spark shield:report

Mencetak ringkasan kejadian keamanan. Ini perintah yang paling sering Anda perlu saat menyetel mode.

Untuk satu host saja:

Terminal window
php spark shield:report --host=toko-online.test

Dari output ini Anda bisa melihat total event, jumlah BLOCK_REQUEST, dan rule yang paling sering memicu. Perintah ini tidak menghitung challenge atau pass rate challenge.

Kalau --host tidak dipakai, semua host ikut dirangkum. Berguna saat satu server menjalankan banyak aplikasi dengan app_id berbeda.

Terminal window
php spark shield:rules:list

Menampilkan rule yang benar-benar dimuat aplikasi Anda. Perintah ini tidak mencetak ruleVersion; yang tampil adalah ID, category, matcher, severity, skor, immediate-ban, dan state. Tambahkan --disabled untuk ikut menampilkan rule berstatus disabled (jika ada):

Terminal window
php spark shield:rules:list --disabled

Perintah ini berguna untuk memastikan rule pack yang dipilih (rulesPacksInjection, rulesPacksWordpress) benar-benar dimuat.

Terminal window
php spark shield:prune

Menghapus event yang lebih lama dari retentionDays, ban berstatus released yang sudah melewati expires_at, dan semua baris berstatus expired.

Tidak ada scheduler bawaan di CodeIgniter, jadi host Anda yang menjalankan perintah ini secara berkala. Pastikan cron berikut ada:

* * * * * cd /path/ke/aplikasi && php spark shield:prune >> /dev/null 2>&1

Umur retensi bisa diubah per pemanggilan:

Terminal window
php spark shield:prune --days=7
Terminal window
php spark shield:release 203.0.113.10

Melepas ban yang sedang aktif untuk satu IP. Tambahkan alasannya supaya tercatat:

Terminal window
php spark shield:release 203.0.113.10 --reason="pelanggan salah ketik"
Terminal window
php spark shield:replay storage/shield/corpus.json

Menjalankan korpus JSON atau ekspor tabel security_events melalui DefaultRules (dan opsional wordpress), lalu melaporkan tingkat deteksinya. Perintah ini tidak memakai custom rule dari app/Config/Shield.php.

Untuk menguji dengan paket WordPress aktif selama pemutaran:

Terminal window
php spark shield:replay storage/shield/corpus.json --pack-wordpress

Nilai --min-rate bawaannya 0.98, artinya 98 persen entri dengan expected=block harus terdeteksi. Exit code juga menjadi 1 jika ada false positive (entri expected=allow yang justru diblokir). Ini berguna di CI:

Terminal window
php spark shield:replay tests/corpus.json || exit 1

Turunkan --min-rate kalau korpus Anda memang tidak lengkap:

Terminal window
php spark shield:replay tests/corpus.json --min-rate=0.90
  1. Setelah memasang: shield:health.
  2. Mode observe selama beberapa hari: baca shield:report.
  3. Sebelum naik ke enforce: shield:rules:list untuk memastikan konfigurasi Anda aktif.
  4. Setiap naik versi: shield:replay dengan korpus Anda sendiri.
  5. Ada keluhan pengguna terblokir: shield:release.

Powered by PT Ganadev Multi Solusi