Brute-force lockout
Progressive delays escalating to a hard lockout after repeated failures, tracked by hashed IP and username. Error messages stay generic — they never reveal whether a username exists.
Login hardening and two-factor authentication in one lean plugin — replacing the three or four separate free plugins most sites stitch together to lock down wp-login.php.
free forever · no pro tier · no ads · nothing phones home
From the first honeypot check to the audit log you review afterwards — Guard covers the whole path an attacker would take.
Progressive delays escalating to a hard lockout after repeated failures, tracked by hashed IP and username. Error messages stay generic — they never reveal whether a username exists.
TOTP with any standard authenticator app. Opt-in per user by default; admins can require it per role with a grace-period nag before enforcement bites.
Generated at enrolment, shown once, stored hashed. Losing your phone means a recovery code — not a database edit.
Cloudflare Turnstile or reCAPTCHA, verified server-side. A hidden honeypot and time-trap run first, so most bots never trouble the CAPTCHA — or your users.
XML-RPC closed, pingback and RSD headers removed, ?author=N probing blocked, and usernames stripped from unauthenticated REST and oEmbed responses.
Set a secret slug and wp-login.php stops answering direct hits — QA'd against password resets, registration and WooCommerce login forms before every release.
Every attempt recorded — IP, user agent, time, result — with a 90-day retention cap and pruning cron, wired into WordPress's personal-data export and erase tools.
See every active session, revoke one or log out everywhere. An email fires on the first login from an unrecognised device — rate-limited, so alerts stay meaningful.
Most login-security plugins are a free taste of a paid one — the firewall, the real lockout rules, the audit trail all live behind a pro tier. Guard inverts that: the whole feature set is free, because the point is to prove the standard Oiko builds to.
So every release is run through WP HealthKit's own audit before it ships. The scanner we sell is the same one standing between this plugin and the WordPress.org directory.
Built the Oiko way
Any RFC 6238 app — 1Password, Bitwarden, Authy, Google Authenticator, and the rest. Enrolment is a QR code in your profile; recovery codes are generated at the same moment.
Lockouts are progressive and time-boxed, recovery codes cover a lost authenticator, and nothing in Guard can disable your own admin account. Worst case, renaming the plugin folder over SFTP releases everything — the same escape hatch as any well-behaved WordPress plugin.
Yes. Guard hardens WordPress's own authentication rather than replacing it, so theme and WooCommerce login forms keep working. The custom-login-URL module is manually QA'd against password reset, registration and WooCommerce account flows before every release.