Halloween DealsAmazon USHalloween week deals: useful picks before month-endAmazon US: current deals, useful picks and tech finds.Check DealsClean PCRecommendedOne scan can reveal what keeps slowing WindowsLook for cleanup and repair opportunities.Run ScanHalloween DealsAmazon USOctober picks are moving - compare before checkoutAmazon US: current deals, useful picks and tech finds.See Picks×
VGSOURCES
Get listed

brute-force protectionPATCH 2026.10.15

How to Prevent Brute-Force Attacks on WordPress

By VGSources Team 11 min read

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

Prevent WordPress brute-force attacks with layers that stop automated guesses before they consume PHP resources: remove unnecessary administrator accounts, require strong unique passwords and phishing-resistant two-factor authentication, rate-limit /wp-login.php and /xmlrpc.php at the CDN, WAF or web-server level, challenge suspicious traffic, disable XML-RPC when it is not needed, and keep tested backups. A login-security plugin can fill gaps, but edge or server controls are the better first line against high-volume attacks.

What a WordPress brute-force attack is

A brute-force attack repeatedly submits guessed username-and-password combinations to a login surface until one succeeds. WordPress’s Advanced Administration Handbook describes it as the simplest way to break in: the attacker keeps trying combinations rather than exploiting a complicated software flaw. Automated tools can target the normal login form, XML-RPC, or another exposed authentication endpoint.

As an Amazon Associate I earn from qualifying purchases.

Free tools Windows power users keep installed

One-click scans. No signup required.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

The danger is not limited to a successful password guess. Each request can consume web-server workers, PHP processes, database connections and bandwidth. A compromised administrator account can then change content, install malicious code, create new users, steal customer data or use a gaming site to distribute scams. Your goal is therefore twofold: make an account takeover difficult and keep the login traffic from exhausting the site.

The protection order that works best

Apply controls in this order so that inexpensive, high-impact safeguards come before optional hardening:

  1. Inventory privileged accounts. Remove abandoned administrators, replace legacy usernames such as admin, and use lower-privilege roles for routine editing.
  2. Harden every credential. Give each user a long, unique password generated and stored by a password manager.
  3. Require a second factor. Enforce two-factor authentication (2FA) for administrators and other privileged users; use passkeys or WebAuthn where practical.
  4. Throttle requests before PHP. Rate-limit /wp-login.php and /xmlrpc.php at a CDN, WAF or web server, then add a CAPTCHA or Turnstile challenge for suspicious traffic.
  5. Make an XML-RPC decision. Disable xmlrpc.php when nothing on the site needs it; otherwise restrict and aggressively rate-limit it.
  6. Reduce follow-on damage. Update WordPress core, themes and plugins, monitor authentication anomalies, use HTTPS, temporarily ban clear abusers and maintain tested backups.

Changing or hiding the login URL can reduce background noise, but it does not replace authentication, rate limiting or a WAF. Treat it as an optional nuisance-reduction measure, never as the main defense.

1. Audit administrators and privileged access

Remove accounts that no longer have a job

Open the WordPress dashboard’s user list and review every account with an Administrator role. Delete abandoned accounts rather than leaving dormant credentials available for guessing. Before deleting a user who owns posts, reassign those posts to an active account so content history is preserved.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

Replace predictable usernames

Do not use a public or legacy username such as admin. An attacker who can identify the username has already removed half of the login problem. Create a new administrator with a non-obvious username, transfer content and settings, test the new account, and then remove the predictable one. Do not rely on merely hiding the author name shown on posts; audit the actual login username.

Use least privilege

Give writers, moderators and contractors the lowest role that lets them do their work. Reserve Administrator for people who genuinely need plugin, theme, user and site-setting access. A guessed Editor account is still serious, but it has a smaller blast radius than a guessed Administrator account.

2. Use passwords that automated guessing cannot cheaply predict

Every account needs a password that is long, random and unique to this site. A password manager should generate and store it; do not recycle a password used for email, hosting, a game platform or another WordPress installation. Avoid names, site names, dictionary words, dates, keyboard patterns and short passwords. Passwords built from only one character class are easier to search than long, varied passphrases.

  • Generate the password rather than modifying an old one with a final number or symbol.
  • Store the password in a reputable manager and protect that manager with its own strong authentication.
  • Reset credentials immediately when a staff member leaves, an account is exposed, or the same password was used elsewhere.
  • Never send an administrator password through a public chat, an issue tracker or an email thread.

A strong password does not stop an attacker from sending requests, so pair it with 2FA and rate limiting. Password quality is one layer, not a reason to omit the others.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

3. Require 2FA, with passkeys for the strongest login

WordPress core does not ship with built-in 2FA. Use a maintained login-security plugin or an identity provider that supports the accounts and workflows your site needs. Enforce enrollment for administrators first, then extend the policy to any role that can edit code, manage users or access sensitive data.

Choose the authenticator

  • Passkeys/WebAuthn: Phishing-resistant, passwordless authentication using a platform authenticator such as Face ID, Touch ID or Windows Hello, or a hardware security key. The private credential stays with the authenticator, so a fake login page cannot simply collect a reusable code.
  • FIDO2 security key: A physical passkey authenticator that can be kept on a keyring or in a secure location. It is useful for administrators who need a separate, durable device.
  • Time-based one-time passwords (TOTP): A stronger layer than password-only login, but codes can still be phished if entered into a fraudulent page. Protect the authenticator app and its backup process.

Plan recovery before enforcing the policy

Enroll a backup authenticator for each administrator before making 2FA mandatory. Store recovery codes offline and document who can approve an emergency reset. Test the recovery path with a non-production account; an untested policy can lock out the legitimate team during a phone loss or device replacement.

4. Rate-limit the login endpoint before PHP runs

The most effective place to absorb a high-volume attack is the CDN, WAF or web server, in front of WordPress. A PHP plugin must start WordPress for each request it evaluates, which means abusive traffic can still consume CPU, memory and database resources even when every login is eventually rejected.

Protect /wp-login.php

Create a rule for requests to /wp-login.php. Start with a per-IP request threshold appropriate for your legitimate staff and integrations, then return a temporary denial or challenge when the threshold is exceeded. Apply the rule narrowly to this path so ordinary pages and game downloads are not throttled accidentally. If your edge service supports separate rules for successful and failed logins, make repeated failures progressively slower or block them for a short period.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

Use a web-server rule when no edge service is available

Nginx, Apache and many managed hosts can enforce connection or request limits before PHP. Test changes in staging first. A badly scoped directory rule can break admin-ajax.php, REST requests or other WordPress functionality. Roll out one rule at a time, verify administrator login, publishing, media uploads and scheduled tasks, and keep a documented rollback.

Add a challenge for suspicious traffic

CAPTCHA or Turnstile challenges are useful when traffic looks automated but should not be blocked permanently. Place the challenge on the login flow or trigger it only after suspicious behavior, rather than adding friction to every visit. Ensure the challenge works for your accessibility needs and does not block trusted editors using mobile networks or a corporate gateway.

5. Decide whether XML-RPC should remain enabled

The xmlrpc.php endpoint can accept remote WordPress requests and has historically been a frequent target for password guessing, including batched system.multicall requests. Do not leave it open by default without knowing why it is needed.

Disable it when no integration depends on it

If your site does not use a mobile publishing app, Jetpack connection or another XML-RPC integration, disable xmlrpc.php at the edge, web server or WordPress configuration layer. Verify that publishing, comments, scheduled jobs and any external workflow still operate after the change.

What’s actually slowing this PC down?

Pick the symptom - the matching free tool is one click away.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

Restrict it when it is required

When an integration needs XML-RPC, allow only the required traffic and apply a stricter rate limit than the normal login page. Restrict by trusted network or application capability where your setup permits it, and monitor for repeated failures. Make sure the rule covers system.multicall; blocking only single requests can leave the batched attack path available.

Do not disable XML-RPC blindly on a site whose editors depend on a mobile app. Document the dependency, test the replacement workflow and schedule a controlled change instead.

6. Keep the software that handles authentication current

Update WordPress core, themes and plugins promptly through a maintained process. Security updates can close vulnerabilities that attackers exploit after a login, while abandoned plugins can create an additional route around otherwise strong authentication.

  • Remove plugins and themes that are inactive, abandoned or no longer required instead of merely deactivating them.
  • Use a staging copy to test updates that affect login, memberships, commerce or game-community features.
  • Confirm that updates did not disable your 2FA provider, CAPTCHA, XML-RPC restriction or rate-limit rule.
  • Keep HTTPS enabled for the entire site, including the login page and administrative screens.

7. Monitor failed logins and respond to an active attack

Collect authentication events from the edge service, web server and WordPress security layer where possible. Look for bursts of failures against one username, attempts spread across many usernames, repeated requests to xmlrpc.php, sudden geographic changes and successful logins at unusual times.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

When requests are merely noisy

Let the edge rate limit and challenge absorb the traffic. Review whether legitimate editors are being challenged and adjust the rule narrowly rather than opening the endpoint for everyone.

When one source is clearly abusive

Apply a temporary IP or network ban at the edge and record the reason, start time and expiry. Avoid broad country blocks unless there is a documented business need; they can lock out legitimate players, staff and accessibility services. Keep exceptions narrow and review them regularly.

When an account may be compromised

Disable the account, reset its password from a clean device, revoke active sessions and rotate any credentials it could access. Review newly created users, changed administrator roles, modified plugins and unexpected scheduled tasks. Restore from a known-good backup only after identifying and closing the entry path.

Independent reader supportYour contribution helps us test, update, and keep practical guides available for everyone.Support on Ko-Fi

How the main controls compare

Control Where it runs Attack-time resource cost Authentication strength XML-RPC and mobile compatibility Operational considerations
CDN or WAF rate limit Edge, before the origin Lowest origin cost; absorbs high-volume traffic upstream Protects the endpoint; does not replace a second factor Can cover both login paths; rules must allow required integrations Usually configured by the host or edge provider; test thresholds and trusted exceptions
Web-server rate limit Origin server, before PHP Lower PHP cost than a plugin; still uses server connections Protects the endpoint; does not authenticate the user Can target /wp-login.php and /xmlrpc.php separately Requires server access; incorrect directory rules can break admin-ajax.php
Login-security plugin Inside WordPress/PHP Consumes PHP resources for each request during an attack Can add 2FA, TOTP, CAPTCHA and lockouts Compatibility depends on the plugin and integration settings Useful when edge controls are unavailable; choose a maintained plugin and test updates
Passkey/WebAuthn Authenticator plus WordPress login layer Little server overhead beyond normal authentication Phishing-resistant and passwordless Works independently of XML-RPC; enrollment and recovery must be planned Requires supported devices or a FIDO2 key and a backup authenticator
TOTP 2FA Authenticator app plus WordPress login layer Little additional server overhead Stronger than password-only; codes can still be phished Does not depend on XML-RPC Requires secure backup and recovery-code handling
CAPTCHA or Turnstile Login request, commonly enforced at the edge Reduces automated submissions before or during login Bot challenge, not a replacement for 2FA Can be applied to login while leaving required XML-RPC integrations alone Use adaptively for suspicious traffic and check accessibility

A practical implementation checklist

  1. Record dependencies. List every administrator, publishing workflow, mobile app, remote integration and monitoring system that touches WordPress.
  2. Clean the user list. Delete abandoned administrators, replace predictable usernames and downgrade routine accounts.
  3. Reset credentials. Generate a unique password for each privileged account with a password manager; revoke shared credentials.
  4. Enroll 2FA. Require a passkey, FIDO2 security key or TOTP method, and register a backup authenticator plus offline recovery codes.
  5. Configure edge throttling. Add separate rules for /wp-login.php and /xmlrpc.php; begin with conservative thresholds and observe legitimate use.
  6. Add adaptive challenges. Challenge suspicious login traffic with CAPTCHA or Turnstile instead of forcing every visitor through a challenge.
  7. Choose an XML-RPC state. Disable it if unused; otherwise restrict access, rate-limit it aggressively and cover system.multicall.
  8. Test server changes. In staging, verify login, logout, publishing, media uploads, admin-ajax.php, REST features, scheduled tasks and mobile workflows.
  9. Update and remove software. Patch core, themes and plugins; uninstall components that are no longer maintained or needed.
  10. Exercise recovery. Restore a backup to a test location, confirm that it contains the database and uploads, and document who can recover the site if administrators are locked out.

Troubleshooting common failures

Legitimate editors are blocked

Check whether several editors share one office, VPN or mobile carrier address. A per-IP rule can treat them as one attacker. Raise the threshold carefully, use authenticated exceptions where supported, or apply a challenge rather than a permanent block. Do not remove rate limiting from the entire endpoint.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

The mobile app stopped publishing

The app may depend on XML-RPC. Confirm the dependency in staging, then either re-enable narrowly with strict rate limiting or move the workflow to a supported alternative. Never open the endpoint broadly just to make one integration work.

WordPress functions fail after a server rule change

Rollback the most recent rule and test admin-ajax.php, REST requests, media uploads and scheduled tasks. Directory protection applied too broadly is a common cause. Reapply the control to the exact login paths rather than the whole administrative directory.

An administrator lost the second-factor device

Use the preplanned backup authenticator or offline recovery code. If neither is available, follow a documented identity-verification and emergency-reset process from a clean device, then enroll a new primary and backup authenticator and review recent login events.

Attack traffic continues after changing the login URL

Changing the URL does not remove xmlrpc.php or other authentication paths, and scanners may discover the new location. Keep the URL change only if it helps reduce noise; rely on edge throttling, 2FA, XML-RPC controls and monitoring for protection.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

What to avoid

  • Do not depend on a hidden login URL as your only defense.
  • Do not install several overlapping lockout plugins without testing their interaction; conflicting rules can lock out staff or fail open.
  • Do not use permanent, broad country or IP blocks without documenting exceptions and an expiry review.
  • Do not disable XML-RPC before checking mobile, remote publishing and other integrations.
  • Do not test new server rules directly on a live gaming community site without a rollback and a staging check.
  • Do not assume a successful backup exists until you have restored it and verified the result.

Final decision

For most WordPress sites, the strongest practical baseline is unique password-manager credentials, mandatory administrator 2FA with a passkey or security key where available, edge or web-server rate limits on both login endpoints, adaptive CAPTCHA or Turnstile challenges, and a deliberate XML-RPC policy. Add software updates, least-privilege access, anomaly monitoring, HTTPS and tested backups to limit the damage if an attacker gets through. This layered approach protects both the account and the resources that keep your site online.

Product prices and availability are accurate as of the date/time indicated and are subject to change. Any price and availability information displayed on Amazon at the time of purchase will apply.

brute-force protectionpasskeystwo-factor authenticationWAFwebsite securityWordPress securityXML-RPC

Leave a reply

Your email address will not be published. Required fields are marked *

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

Recommended PC Tool
Recommended PC Tool
Crashes, No Sound, or Screen Glitches?Free driver scan
PC Slower Than It Used to Be?Free scan - under a minute

Two free Windows tools

One Free Minute Could Fix That PC

Before you go - each of these free tools takes about a minute and tackles what quietly slows a Windows PC down.

Special offer. View Outbyte info, uninstall instructions, EULA, and Privacy Policy.