maximus Posted December 14, 2025 Posted December 14, 2025 Hello ! π I'm excited to share WireWall, a comprehensive security firewall module I've been developing for ProcessWire. After months of real-world testing on production sites (including blocking 99.98% of malicious traffic on my e-commerce platform), I'm ready to release it to the community. What is WireWall? WireWall is a ProcessWire-native security module that provides enterprise-grade protection with granular geographic and network-level blocking. Unlike traditional firewalls that only block by country, WireWall lets you block by city, region (state/province), VPN/Proxy/Tor, ASN, and more. Key Features Geographic Blocking: City-level blocking - Block specific cities worldwide (e.g., "Philadelphia", "Beijing", "Tokyo") Region blocking - Block entire states/provinces (e.g., "Pennsylvania", "California", "Tokyo Prefecture") Country blocking - Traditional country-level controls with whitelist/blacklist modes Network Protection: VPN/Proxy/Tor detection - Multi-API detection system with intelligent fallback Datacentre detection - Block AWS, Google Cloud, DigitalOcean, and other hosting providers ASN blocking - Block entire autonomous systems by ASN number Rate limiting - Per-IP rate limits with automatic temporary bans AI bot blocking - Automatically block GPTBot, ClaudeBot, and other AI scrapers Performance & Scalability: File-based cache - Scales to 1M+ IPs with zero database overhead Lightning-fast lookups - 0.5-2ms with MaxMind databases HTTP fallback - Works without MaxMind databases (though less performant) Smart caching - GeoIP cached for 30 days, VPN checks for 7 days Developer-Friendly: Priority-based system - 14 security layers evaluated in order JavaScript challenge - Detect and block headless browsers Comprehensive logging - Debug mode with detailed request information Cache management UI - Built-in interface to view stats and clear cache Triple admin protection - Logged-in users, IP whitelist, admin area bypass Real-World Results On my e-commerce site (LQRS.com), WireWall has been running for several months with impressive results: 99.98% blocking rate - Nearly all malicious traffic blocked Zero false positives - Legitimate customers unaffected Significant reduction in AWS/cloud-based automated attacks Complete elimination of VPN/proxy fraud attempts Installation cd /site/modules/ git clone https://github.com/mxmsmnv/WireWall.git Then in ProcessWire admin: Modules β Refresh Install WireWall Configure your blocking rules You're protected! How It Works - Priority System WireWall processes every request through 14 prioritised security layers: Admin Area β ALLOW (ProcessWire admin always accessible) IP Whitelist β ALLOW (manual whitelist bypass) Rate Limiting β BLOCK (excessive requests) IP Blacklist β BLOCK (permanent blocks) JavaScript Challenge β CHALLENGE (suspicious requests) VPN/Proxy/Tor β BLOCK (anonymous services) Datacentre Detection β BLOCK (cloud hosting) ASN Blocking β BLOCK (autonomous systems) Global Rules β BLOCK (known patterns) Country Blocking β BLOCK (country rules) City Blocking β BLOCK (city rules) Region Blocking β BLOCK (region rules) Country-specific Rules β BLOCK (custom rules) Default β ALLOW β First match wins - once a rule triggers, evaluation stops. MaxMind Integration WireWall works best with MaxMind GeoLite2 databases (free): GeoLite2-Country.mmdb - Country detection GeoLite2-City.mmdb - City and region detection GeoLite2-ASN.mmdb - Network/ISP detection Without MaxMind, it falls back to ip-api.com HTTP API (slower, with rate limits). City and region blocking require the MaxMind City database. Download MaxMind databases from: https://dev.maxmind.com/geoip/geolite2-free-geolocation-data Technical Details ProcessWire: 3.0.200 or higher PHP: 8.1 or higher Optional: MaxMind GeoLite2 databases (Country, ASN, City) Optional: Composer (for MaxMind GeoIP2 library) Why Another Firewall Module? I needed something specifically for ProcessWire that: Scales efficiently - File-based cache handles millions of IPs without database bloat Provides granular control - City and region blocking isn't available in other solutions Works offline - MaxMind databases work without external API calls Integrates natively - Built specifically for ProcessWire's architecture Stays free - Open source, no premium tiers or upsells Other solutions like Wordfence (WordPress), Sucuri (paid service), and ModSecurity (server-level) either don't integrate well with ProcessWire or lack the geographic granularity needed for fraud prevention. Resources GitHub Repository: https://github.com/mxmsmnv/WireWall Documentation: Full README with installation, configuration, and troubleshooting Landing Page: https://wirewall.org Licence: MIT (free for commercial use) Quick Start TL;DR # Install cd site/modules && git clone https://github.com/mxmsmnv/WireWall.git # Activate in ProcessWire admin Modules β Install β WireWall # Configure - Enable module - Set blocking rules (cities/regions/countries) - Enable VPN detection - Configure rate limiting - Save # Monitor Setup β Logs β wirewall.txt I'm happy to answer any questions! Has anyone else been working on security solutions for ProcessWire? I'd love to hear about your approaches and challenges. Best regards, Maxim 18 6
maximus Posted December 14, 2025 Author Posted December 14, 2025 Check out more on website -Β https://wirewall.org 1
jacmaes Posted December 15, 2025 Posted December 15, 2025 Hi @maximus. Quick question: I use adguard on my iPhone, which basically acts as a VPN to block ads in apps and in Safari. When I visit wirewall.org, I'm blocked. Isn't it a bit too aggressive? I'm not a threat, I just want to browse ad-freeΒ π
matjazp Posted December 15, 2025 Posted December 15, 2025 I also can't reach it as I'm browsing with javascript off.
Tiberium Posted December 15, 2025 Posted December 15, 2025 1 hour ago, matjazp said: I also can't reach it as I'm browsing with javascript off. I assume because of the JavaScript challenge ^^. @maximus Can specific block steps be switched off?
Stefanowitsch Posted December 15, 2025 Posted December 15, 2025 @maximusΒ i really would like to give this module a try! I am having slight problems with spam bot form submissions from time to time. But: I am using custom ajax endpoints via the RockFrontend Module:Β https://www.baumrock.com/en/processwire/modules/rockfrontend/docs/ajax/ Although I enabled the "Allow AJAX from trusted module" checkbox in the module settings, the ajax requests are getting blocked (status 403) when WireWall is active. Is there a way to add "trusted modules" manually? 1
matjazp Posted December 15, 2025 Posted December 15, 2025 @maximus, a minor inconsistency. In your post: ProcessWire Version:Β 3.0+ PHP Version:Β 7.4+ (8.0+ recommended) But in the module: 'requires' => 'ProcessWire>=3.0.200,PHP>=8.1',
maximus Posted December 20, 2025 Author Posted December 20, 2025 On 12/15/2025 at 4:37 AM, jacmaes said: Hi @maximus. Quick question: I use adguard on my iPhone, which basically acts as a VPN to block ads in apps and in Safari. When I visit wirewall.org, I'm blocked. Isn't it a bit too aggressive? I'm not a threat, I just want to browse ad-freeΒ π I don't think you need a disguise to view your website, but you can always add exceptions. Also this week, I updated the module to version 1.1.9, where, in addition to prohibitions, exception fields have been added: for search robots (user agent), ASN and IP. On 12/15/2025 at 1:38 PM, matjazp said: @maximus, a minor inconsistency. In your post: ProcessWire Version:Β 3.0+ PHP Version:Β 7.4+ (8.0+ recommended) But in the module: 'requires' => 'ProcessWire>=3.0.200,PHP>=8.1', Thanks a lot, I've corrected it everywhere. On 12/15/2025 at 6:05 AM, matjazp said: I also can't reach it as I'm browsing with javascript off. Yes, I see that access to the site is blocked when javascript is disabled. I'll think about how to solve it. 1
maximus Posted December 20, 2025 Author Posted December 20, 2025 On 12/15/2025 at 11:41 AM, Stefanowitsch said: @maximusΒ i really would like to give this module a try! I am having slight problems with spam bot form submissions from time to time. But: I am using custom ajax endpoints via the RockFrontend Module:Β https://www.baumrock.com/en/processwire/modules/rockfrontend/docs/ajax/ Although I enabled the "Allow AJAX from trusted module" checkbox in the module settings, the ajax requests are getting blocked (status 403) when WireWall is active. Is there a way to add "trusted modules" manually? Please try manually making changes to the module code in the relevant lines and, if possible, let us know whether it works or not. Β Spoiler Β 1
Stefanowitsch Posted December 22, 2025 Posted December 22, 2025 The custom AJAX endpoints that RockFrontend is using are basically PHP files located in: /site/templates/ajax/ So the requests go to: http://www.mysite.com/ajax/myEndpoint To prevent these requests from being blocked I tweaked this piece of module code: // WireWall.module.php line 1140 // Check if request URL contains /processwire/ or /admin/ or /ajax/ $requestUri = $_SERVER['REQUEST_URI'] ?? ''; if (stripos($requestUri, '/processwire/') !== false || stripos($requestUri, '/admin/') !== false || stripos($requestUri, '/ajax/') !== false) { return true; } 1
maximus Posted 20 hours ago Author Posted 20 hours ago WireWall v1.3.2 β Advanced Traffic Firewall Released: January 4, 2026 Stable release with major improvements in data persistence, IPv6 support, and configuration reliability. What's New in v1.3.2 Permanent data persistence GeoLite2 databases, Composer vendor folder, and composer files are now safely stored in /site/assets/WireWall/ β No more data loss or reinstallation needed after module updates Automatic migration from older versions When upgrading from β€1.2.0, old files from /site/modules/WireWall/ are automatically moved to the new location Full IPv6 CIDR support Complete IPv6 range matching for both blocking and whitelisting Enhanced exception system New configuration fields: β’ Custom Trusted AJAX Paths β’ Custom API Paths (bypass for ALL HTTP methods β GET/POST/PUT/DELETE/etc.) Robust checkbox handling All toggle options now reliably save as 0/1 (fixes old config issues after updates/reinstalls) Improved configuration interface New colorful "Setup Information" section with current paths, migration guide, and clear installation instructions Recommended post-update steps Go to Modules β WireWall β Configure Verify GeoIP databases are located at: /site/assets/WireWall/geoip/GeoLite2-*.mmdb If you have GeoLite2-City.mmdb β enable City & Subdivision blocking Add any custom paths you need in: β’ Custom Trusted AJAX Paths β’ Custom API Paths Requirements ProcessWire β₯ 3.0.200 PHP β₯ 8.1 Strongly recommended: MaxMind GeoLite2 databases (Country + ASN required, City optional for detailed logging) Downloads WireWall.module.php Full module archive (zip) Full documentation β README Website β wirewall.org Thanks to everyone testing and providing feedback! Stay secure! π‘οΈ 2
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now