So, for those who are interested here is the current processing flow and update cycles for my Enterprise Shield and Bot Filtering setup.
Currently this setup comfortably supports blocking 425,000 CIDR Blocks and 10K AbuseIPDB IPs, with additional processing for cloud providers that depends on the rate they send traffic through.
Attackers, do what you will.
Enterprise Shield — Component Update Cycles
Scheduled refresh intervals and out-of-band injection methods for each protection layer.
🕐 All scheduled times are UTC| Component | What it controls | Update cycle (UTC) | Out-of-band injection |
|---|---|---|---|
| blocked_asns ipset Kernel | IP ranges for all ASNs in blocklist_asns.txt, resolved via RADB WHOIS using 8 parallel threads | Nightly — 02:00 |
|
| Country IP blocks Kernel | IPv4 CIDRs for blocked countries from the ipverse GitHub feed, merged into the same blocked_asns ipset | Nightly — 02:00 |
|
| SHIELD_PENALTY ipset Kernel | Top abusive IPs from AbuseIPDB API (≥ 90% confidence). Evaluated before the ASN chain in iptables INPUT | 5x Daily — :00 |
|
| AI bot verifier Kernel | Python daemon on NFQUEUE 10. Intercepts known AI crawler UAs (GPTBot, ClaudeBot, Google-Extended) and verifies via rDNS before allowing or dropping | On service restart |
|
| mod_rewrite UA rules Apache | Apache-level .htaccess and VirtualHost rewrite rules blocking by UA string, version ranges, empty UAs, and attack patterns. Returns 403 GO AWAY! inline — no PHP, no WordPress bootstrap | Manual |
|
| Wordfence WAF WordPress | PHP-layer WAF bootstrapped before WordPress via waf/bootstrap.php. Independently evaluates every request surviving Apache, checks Wordfence’s threat database, and serves its own 403 pages from wp-content/wflogs/ |
Automatic
Free: 30-day rule delay. Premium: real-time feed. |
|
Boot persistence: shield-ipset-restore → ufw.service → shield-iptables-restore → shield-ai-bot.service. All ipsets and chains restored on reboot. All times UTC.
Leave a Reply