v2.6.0 — 485 tests passing

WordPress security that pays for itself on day one

Nine integrated defence layers. One plugin. Every attack vector covered — with real numbers to prove why each one matters to your bottom line.

0
Security Layers
0
Tested Modules
0
Test Assertions
0
Third-Party Dependencies
The problem

The cost of not having this

Most WordPress site owners don't think about security until after the breach. By then, the bill has already landed.

💀
£21,000

Average SMB Breach Cost

The UK's Cyber Security Breaches Survey puts the average cost of a breach for small businesses at £21,000 — and that's before you count lost customer trust, SEO damage, and recovery time.

194 days

Average Detection Time

IBM's Cost of a Data Breach report finds it takes organisations nearly 200 days to even identify a breach. That's six months of an attacker inside your database, your customer data, your payment systems.

🤖
47%

Of Web Traffic is Bots

Nearly half of all requests hitting your site aren't human. They're scrapers stealing your content, bots stuffing credentials, or crawlers hoovering data for AI training — all consuming your hosting resources.

One plugin. Nine layers. Zero gaps.

Every layer feeds intelligence to the next. A suspicious login triggers the risk engine, which informs the session manager, which logs to the audit trail, which feeds Fail2Ban. Security that thinks.

Login Fortress Two-Factor Auth Session Armour Risk Engine File Integrity Database Shield Header Hardening Audit Trail Bot Defence
1
Layer One

Login Fortress

The threat Critical

Brute-force attacks are the single most common vector against WordPress. Automated tools cycle through thousands of username/password combinations per minute. A default WordPress install will happily serve every one of those requests, giving attackers unlimited attempts to guess their way in.

Most plugins address this with a simple lockout counter. Lock after 5 failed attempts, wait 15 minutes, repeat. The problem? Attackers simply rotate IP addresses. A thousand different IPs each making 4 attempts never trigger the threshold.

How Bulwark handles it

Bulwark layers three mechanisms: progressive delays that make each successive failure slower (not just locked out), IP-based lockout with configurable thresholds, and username-based tracking that catches distributed attacks from multiple IPs targeting the same account.

Key difference: Username-level tracking means even if an attacker uses 10,000 different IPs, Bulwark sees them all targeting "admin" and shuts it down. Most plugins only track by IP and miss this entirely.
Cost of a compromised login
£3,000–£15,000
Site cleanup, forensic investigation, customer notification, SEO recovery, and lost revenue during downtime.
What you get
3-layer protection
Progressive delays + IP lockout + username tracking working together. Configurable thresholds for every parameter.
  • Progressive delay scaling per failed attempt
  • IP-based lockout with configurable duration
  • Username-level distributed attack detection
  • Admin notifications on lockout events
2
Layer Two

Two-Factor Authentication

The threat Critical

Passwords are fundamentally broken. They get reused across sites, stored in plaintext by careless services, phished through fake login pages, and leaked in data breaches. Even a strong, unique password can be stolen by a keylogger or shoulder-surfing.

The reality: 81% of data breaches involve weak or stolen credentials. If your only defence is "they need to know the password," you've already lost.

How Bulwark handles it

TOTP-based two-factor authentication adds a second proof-of-identity that changes every 30 seconds and lives on the user's physical device. Even if an attacker has the password, they need the user's phone to generate the current code.

Bulwark's implementation includes per-user enforcement (mandate 2FA for admins while leaving subscribers optional), one-time backup codes for lockout recovery, and a setup wizard that works with any standard authenticator app — Google Authenticator, Authy, 1Password, Bitwarden.

Key difference: Bulwark generates backup codes at setup time and encrypts them at rest. If a user loses their device, they're not locked out forever — and the codes can't be read from the database even if it's compromised.
Credential breach probability
81%
The proportion of data breaches that involve weak or stolen credentials, per Verizon's DBIR.
Reduction in account takeover
99.9%
Google's own research found that TOTP-based 2FA blocks 99.9% of automated attacks and 96% of targeted phishing.
  • TOTP with any standard authenticator app
  • Per-role enforcement policies
  • Encrypted backup codes for recovery
  • Grace period for user setup compliance
3
Layer Three

Session Armour

The threat

Once someone logs in, WordPress creates a session cookie and trusts it completely. If that cookie is stolen — through XSS, network sniffing, shared hosting, or browser extension malware — the attacker inherits the full session. They don't need the password. They don't need the 2FA code. They are the user.

Worse: WordPress allows unlimited concurrent sessions by default. An admin can be logged in from London while an attacker uses the same session from Moscow, and WordPress won't notice or care.

How Bulwark handles it

Every session is fingerprinted against the browser, operating system, and network characteristics of the device that created it. If a session cookie suddenly appears from a different browser or a different country, it's terminated immediately.

Concurrent session limits prevent an attacker from silently riding alongside a legitimate session. Configurable idle timeouts ensure forgotten sessions don't stay open indefinitely. And session rotation on privilege escalation means a session token used pre-login can't be replayed post-login.

Key difference: Device fingerprinting goes beyond IP address. Bulwark tracks the browser engine, platform, and user-agent signature. An attacker replaying a stolen cookie from a different machine triggers instant revocation — even if they spoof the IP.
Session hijack impact
Full Takeover
A hijacked admin session gives an attacker complete control: install plugins, modify files, access the database, create backdoor accounts.
Protection depth
4 mechanisms
Device fingerprinting, concurrent session limits, idle timeout, and privilege-escalation rotation working in concert.
  • Browser/OS/platform fingerprint binding
  • Configurable concurrent session limits
  • Idle timeout with automatic revocation
  • Session rotation on role or privilege change
4
Layer Four

Contextual Risk Engine

The threat

A correct password from an unusual location is still suspicious. Traditional security treats authentication as binary — right password, you're in; wrong password, you're out. But context matters enormously.

If your admin normally logs in from Birmingham at 9am and suddenly a login appears from Vladivostok at 3am using the correct credentials, something is very wrong. But most security plugins will wave it through because the password was correct.

How Bulwark handles it

The risk engine scores every authentication attempt against multiple contextual signals: geographic location (using IP geolocation), time-of-day patterns, device familiarity, network characteristics, and impossible travel detection.

Impossible travel is the crown jewel. If a user logs in from London at 14:00 and an attempt appears from Tokyo at 14:30, Bulwark calculates the physical impossibility — you cannot travel 9,500km in 30 minutes — and blocks or challenges the attempt regardless of whether the credentials are correct.

Key difference: Impossible travel uses actual geographic distance and elapsed time to calculate whether movement between two login locations is physically possible. This catches sophisticated attackers who have valid credentials but can't fake being in two places at once.
What binary auth misses
100%
Of attacks using legitimate stolen credentials. If the password is correct, binary auth has zero ability to detect the compromise.
Enterprise feature, plugin price
Impossible Travel
This capability is typically found in enterprise IAM solutions like Azure AD Premium P2 (£7.50/user/month). Bulwark includes it in every install.
Risk signals analysed
5+ per login
  • Geographic distance + travel time physics
  • Device and browser familiarity scoring
  • Time-of-day anomaly detection
  • Network and IP reputation signals
  • Configurable risk thresholds per role
5
Layer Five

File Integrity Monitor

The threat

The most dangerous moment in a breach isn't the initial entry — it's what happens after. Attackers inject backdoors into theme files, modify core WordPress files to create persistent access, plant web shells in upload directories, and alter plugin code to redirect traffic or skim payment data.

Without file monitoring, these changes are invisible. The attacker's backdoor survives password resets, plugin updates, and even most "security scans" because the malicious file is the scan target's own codebase.

How Bulwark handles it

Bulwark maintains a cryptographic hash baseline of every monitored file. On each scan, it recalculates hashes and compares against the baseline. Any modification, addition, or deletion is flagged immediately with precise detail: which file, what changed, and when.

Core WordPress files are verified against official checksums from wordpress.org. Custom files are tracked against their own baseline. Scans run on a configurable schedule and can be triggered manually after deployments.

Key difference: Real-time detection versus the industry average of 194 days. Bulwark catches file tampering on the next scan cycle — hours, not months. And by comparing against official checksums for core files, it can distinguish between "WordPress updated itself" and "someone injected code into wp-login.php."
Undetected breach cost multiplier
4.5×
Breaches that take longer than 200 days to identify cost 4.5 times more than those caught within 30 days. File integrity monitoring is the single most effective way to collapse detection time.
Detection coverage
Every file, every scan
  • SHA-256 hash comparison per file
  • Official WordPress.org core checksum verification
  • New file / deleted file / modified file detection
  • Configurable scan schedules + manual triggers
  • Exclusion rules for expected changes (caches, logs)
6
Layer Six

Database Shield

The threat

Your WordPress database holds everything: user accounts, passwords, customer data, order history, payment tokens, private content, configuration secrets. A SQL injection vulnerability in any plugin — and WordPress sites average 20+ active plugins — is a direct line to all of it.

Beyond injection, the database is vulnerable to table prefix guessing (WordPress defaults to wp_), unauthorized enumeration of user data through REST API endpoints, and information disclosure through error messages that reveal table structures.

How Bulwark handles it

Bulwark hardens the database layer from multiple angles: custom table prefix enforcement (eliminating the default wp_ that every attack tool targets), database error suppression in production (no more stack traces revealing your table schema), and monitoring for suspicious query patterns.

User enumeration protection blocks the classic ?author=1 scan and REST API user listing that attackers use to harvest valid usernames before launching credential attacks.

Key difference: Database security isn't just about SQL injection firewalls. Bulwark removes the information disclosure that makes attacks possible in the first place — table prefix guessing, user enumeration, and error-based reconnaissance all get shut down before an attacker can even begin.
If your database is breached
GDPR Fines
Personal data exposure triggers mandatory ICO notification within 72 hours. Fines up to £17.5M or 4% of annual turnover. Plus mandatory customer notification costs.
Hardening depth
4 protection layers
  • Custom table prefix enforcement
  • Database error suppression in production
  • User enumeration blocking (REST + author scans)
  • Information disclosure prevention
7
Layer Seven

Header Hardening

The threat

Every response your server sends includes HTTP headers that tell the browser what's allowed. Without the right headers, your site is vulnerable to: cross-site scripting (XSS) where attackers inject malicious scripts, clickjacking where your pages are embedded in invisible frames, MIME-type confusion attacks, and information disclosure that reveals your server software and versions.

The frustrating part? These are free defences. Adding the right headers costs nothing and blocks entire categories of attack. Yet the majority of WordPress sites ship without them because they require manual server configuration that most users can't do.

How Bulwark handles it

Bulwark injects a comprehensive security header suite into every response: Content-Security-Policy to control script sources, X-Frame-Options to prevent clickjacking, X-Content-Type-Options to stop MIME sniffing, Referrer-Policy to control information leakage, Permissions-Policy to restrict browser API access, and HSTS to enforce HTTPS.

WordPress version numbers, PHP version disclosure, and server software identification headers are stripped — removing the reconnaissance information attackers use to select exploits.

Key difference: Bulwark applies headers at the application level — no server config files to edit, no .htaccess to maintain, no nginx.conf to manage. Headers are applied consistently regardless of hosting provider or server software. One toggle in the dashboard.
The ROI reality
Free security
Security headers are the highest-ROI defence in web security. They cost zero performance overhead, block entire attack categories, and most sites still don't have them.
Headers managed
8+ headers
  • Content-Security-Policy (XSS prevention)
  • X-Frame-Options (clickjacking prevention)
  • Strict-Transport-Security (HTTPS enforcement)
  • Version & server info stripping
  • Permissions-Policy (API access control)
8
Layer Eight

Audit Trail

The threat

When something goes wrong — and eventually it will — the first question is always "what happened?" Without comprehensive logging, you're investigating in the dark. Who logged in? What did they change? When did the modification occur? Which plugin was activated? What settings were altered?

WordPress has no built-in audit trail. None. An admin could delete every page, install a malicious plugin, and create a backdoor account, and the only trace would be the damage itself. For any business handling customer data, this isn't just a security gap — it's a compliance failure.

How Bulwark handles it

Every significant action is logged with full context: who performed it, what was changed, when it happened, and from where (IP and geolocation). This covers login/logout events, content changes, user modifications, plugin/theme management, settings changes, file uploads, and all Bulwark security events.

Logs are stored in a dedicated database table with retention policies and export capabilities. For businesses subject to GDPR, PCI-DSS, or other compliance frameworks, the audit trail provides the evidence needed to demonstrate security controls are in place and functioning.

Key difference: Bulwark's audit trail isn't a bolt-on — it's integrated with every other security layer. When the risk engine flags a login, when a file integrity check catches a modification, when a bot gets blocked — it all flows into one searchable, exportable timeline.
Compliance risk without logging
Non-Compliant
GDPR Article 5(2) requires you to demonstrate compliance. PCI-DSS Requirement 10 mandates audit trails. No logs = no evidence = non-compliant by default.
Forensic investigation value
Hours vs. Weeks
With a comprehensive audit trail, incident response that would take weeks of forensic analysis can be resolved in hours. The timeline is already written.
What's captured
Everything material
  • Login, logout, and failed authentication events
  • Content creation, modification, and deletion
  • User account and role changes
  • Plugin/theme install, activate, deactivate
  • All Bulwark security events and actions
9
Layer Nine

Bot & Scraper Defence

The threat Growing fast

Bot traffic now accounts for nearly half of all web requests — and the majority of it is hostile. Content scrapers duplicate your articles and outrank you. Credential stuffing bots test stolen password lists against your login page. AI training crawlers hoover your content without permission. Inventory scalpers hit WooCommerce stores. And all of them consume your hosting resources, inflate your bandwidth bills, and pollute your analytics.

The AI boom has made this dramatically worse. Every new language model needs training data, and your content is being harvested at industrial scale by crawlers that ignore robots.txt entirely.

How Bulwark handles it

Six integrated modules working together. The Bot Firewall maintains a database of 50+ known AI crawlers, scrapers, and attack tools with per-bot allow/block/tarpit controls. Honeypot Tracker plants invisible trap URLs that real users never see but bots follow — permanently flagging the IP. Robots Guard tracks which bots actually read your robots.txt and flags those who ignore it.

The Request Rate Limiter enforces sliding-window rate limits with separate thresholds for anonymous visitors, authenticated users, and REST API calls. The Request Signature Scorer analyses HTTP header anomalies — missing Accept headers, suspicious user-agent strings, impossible browser configurations — and feeds scores into the risk engine. And the Fail2Ban Emitter writes structured log entries that integrate with Fail2Ban at the server level for IP-level blocking before requests even reach PHP.

Key difference: Six mechanisms, one intelligence loop. The honeypot catches bots the firewall doesn't know about. The signature scorer detects bots disguising their user-agent. The rate limiter stops volume abuse even from new, unknown bots. And Fail2Ban escalates the worst offenders to the server firewall itself — blocking at the network layer before they consume any application resources.
Real cost of bot traffic
30–50% wasted
Up to half your hosting bill may be serving bots, not humans. CDN bandwidth, database queries, PHP execution time — all consumed by non-human traffic that generates zero revenue.
Content scraping impact
SEO + Revenue
Scraped content appearing on other sites dilutes your search rankings. For publishers and content businesses, this directly erodes the asset they're building.
Defence modules
6 integrated systems
  • Bot Firewall with 50+ known crawler signatures
  • Zero false-positive honeypot trap system
  • Robots.txt compliance monitoring
  • Sliding-window rate limiting (3 tiers)
  • HTTP signature anomaly scoring
  • Fail2Ban integration (server-level blocking)
How it compares

Features you'd normally need 4–5 plugins for

Each additional plugin is another codebase, another update cycle, another potential vulnerability. Bulwark consolidates everything into one tested, integrated package.

Capability
Typical Stack
Bulwark
Brute-force protection
Basic
Two-factor authentication
Session management & fingerprinting
Impossible travel detection
Contextual risk scoring
File integrity monitoring
Paid tier
Security headers (auto-configured)
Manual
Full audit trail
Separate plugin
Bot firewall (50+ signatures)
Honeypot trap system
Fail2Ban integration
Zero third-party dependencies
Cross-layer intelligence sharing
The alternative

What you'd pay to build this yourself

If you bought separate solutions for each capability Bulwark provides, here's what your annual bill would look like.

Login Security Plugin
Brute-force, lockouts
£79 /yr
2FA Plugin (Pro)
TOTP, backup codes, role enforcement
£59 /yr
Activity Log Plugin
Audit trail, user tracking
£99 /yr
File Integrity Plugin
Hash monitoring, change detection
£89 /yr
Bot Protection Service
Bot firewall, rate limiting
£120 /yr
Security Headers Plugin
CSP, HSTS, hardening
£49 /yr
Total cost of separate plugins per year — without impossible travel, risk engine, session fingerprinting, honeypots, or Fail2Ban integration (which none of them offer):
£495/yr
One plugin — coming soon
Early access

Join the launch list

Be first to get WP Bulwark when it ships. Early access members get founding pricing locked in for life.

Enter your email and we'll let you know the moment it's ready.

No spam, ever. One email when we launch. Unsubscribe anytime.

You're on the list

Check your email for a confirmation. We'll be in touch when Bulwark is ready to ship.