This plugin is the panel front end for ModSecurity v3 with the OWASP Core Rule Set. It does not install anything itself: the bundled install.sh detects the running web server — Apache2, nginx, or OpenLiteSpeed — installs the appropriate ModSecurity connector and CRS, and wires them in. Apache is preferred when present, because mod_security2 from the distribution is more dependable than the nginx connector.
From the page an admin sets the global engine mode (blocking, log-only, or off), adjusts the CRS paranoia level and the anomaly-scoring threshold, and can drop into a raw configuration editor when the guided controls are not enough. When a legitimate request keeps tripping a rule you can disable that rule by id with a note explaining why, re-enable it later, or whitelist a source IP. Individual domains can be given their own engine mode, overriding the global setting — useful for a single site that cannot tolerate blocking yet — and their own rule exclusions, limited to a path if needed. Countries can be blocked (or only some allowed) for the whole server or one site, using a local GeoIP country database; login pages get a per-IP brute-force limit; and the OWASP CRS can be updated to the latest release in one click, verified by SHA-256 and rolled back if the web server rejects it. When the web server is switched, the WAF reinstalls ModSecurity for the new one.
Recent blocks are read back from the audit log; log parsing is delegated to a compiled Go helper when the binary is present. Website owners who are not admins get a read-only view: the effective mode for each domain they own, whether it is overridden, and the recent attacks aimed at those domains. All actual WAF control stays with admins. Uninstalling the plugin sets the engine to off rather than leaving a half-configured firewall behind.
Use VinzaPanel's REST API to download and install this app programmatically.
POST /plugins/api/download/waf/ Content-Type: application/json { "panel_version": "1.0.0" }
{
"success": true,
"plugin_id": "waf",
"version": "1.0.7",
"download_url": "..."
}