To stop WordPress brute force attacks, first reduce live pressure on wp-login.php and xmlrpc.php, then harden accounts with strong passwords, two-factor authentication, login limits, WAF or server rate limits, backups and log monitoring. Plugin-only protection helps small sites, but repeated login floods often need host-level controls because every failed login can still consume PHP and database resources.
This guide focuses on defensive WordPress administration and hosting controls. For background on authentication risk, see the OWASP Authentication Cheat Sheet.
If the site is currently being hit, do not start with a long plugin comparison. Start with visibility, containment and account safety. The first goal is to reduce login endpoint pressure while keeping legitimate administrators able to recover access.
| Priority | Action | Where to do it | Pass signal |
|---|---|---|---|
| Immediate | Review access logs for repeated wp-login.php and xmlrpc.php requests. | Hosting panel, server logs or WAF logs | You know which endpoint is being abused and whether traffic is from a few IPs or a broad set. |
| Immediate | Temporarily rate-limit or challenge login traffic. | WAF, security plugin or host firewall | Failed-login volume drops without locking out the real admin. |
| Today | Force strong administrator passwords and remove unused admin accounts. | WordPress Users screen | Only known administrators remain, with current contact details. |
| Today | Enable two-factor authentication for administrators and editors. | Security plugin or identity provider | Credential stuffing alone cannot open the admin account. |
| This week | Confirm backups, malware scan and restore path. | Hosting panel and backup tool | You can recover if login abuse was paired with compromise. |
Brute force traffic is often visible before a user reports a problem. These patterns do not prove compromise by themselves, but they tell you where to investigate.
POST /wp-login.php 200 repeated from many IPs
POST /xmlrpc.php 200 repeated with small request bodies
wp-login.php requests continue after normal users stop browsing
High PHP worker usage while page traffic stays flat
If these requests are paired with unknown admin users, changed plugin files, injected redirects or suspicious scheduled tasks, move from brute-force prevention into incident response. The deeper WordPress backdoor removal and prevention guide is a better next step in that case.
| Control | Plugin layer | Hosting or server layer | Important caveat |
|---|---|---|---|
| Login attempt limits | Limit attempts by username, IP or time window. | Rate-limit requests before WordPress loads. | Server-side limits reduce PHP load earlier. |
| Two-factor authentication | Adds a second step for admin users. | Can be paired with identity or access policies. | 2FA protects accounts but does not reduce all bot traffic. |
| XML-RPC controls | Disable XML-RPC features or block specific methods. | Block or restrict xmlrpc.php at the web server or WAF. | Jetpack, mobile apps or integrations may need XML-RPC. |
| WAF rules | Challenge suspicious login behavior inside WordPress. | Filter repeated login traffic before it reaches the app. | Rules need testing so real admins can log in. |
| Monitoring | Show failed logins and plugin alerts. | Show access logs, PHP errors, resource spikes and firewall events. | Both layers help diagnose repeated attacks. |
XML-RPC can be useful for older integrations, mobile publishing and some plugin workflows, but it is also a common target for login abuse. If the site does not need XML-RPC, blocking it can reduce noise. If the site does need it, restrict methods or traffic sources instead of making a blind change.
# Apache example: test on staging before production.
<Files "xmlrpc.php">
Require all denied
</Files>
That example is for Apache-style configuration and should be tested before production. Nginx, LiteSpeed and managed hosting environments may require a different rule. For a deeper decision guide, see disable xmlrpc.php in WordPress.
Brute force is not the same as a network-layer DDoS attack, but large login floods can still exhaust PHP workers, database connections or account resources. A WAF, host firewall or rate limit can help earlier in the request path than a WordPress plugin. For repeated resource pressure, review DDoS protection services and managed WordPress hosting as part of the broader hosting plan.
The right control depends on where the site runs. On shared hosting, the site owner may only have plugin-level settings and a support ticket path. On managed WordPress hosting, the provider may help with WAF rules, backups, malware scanning, PHP limits and log review. On a VPS, the technical owner can add firewall rules, web server rate limits and custom monitoring, but that also means the owner must maintain the operating system and services.
| Environment | Good first control | Escalation point |
|---|---|---|
| Shared hosting | 2FA, login limits and XML-RPC review inside WordPress. | Ask support to review logs and account-level resource pressure. |
| Managed WordPress hosting | Provider-supported WAF, backups, malware scan and admin hardening. | Ask the provider to tune login challenges and inspect traffic patterns. |
| Self-managed VPS | Web server rules, firewall limits, log monitoring and plugin-level controls together. | Move to managed support if no one owns patching, backups and incident response. |
After the immediate attack is under control, the work becomes routine. The site owner should review user roles monthly, confirm 2FA coverage after staff changes, test backups after plugin changes, and check failed-login trends after marketing campaigns or bot spikes. If failed login traffic returns every week, treat it as a hosting and firewall pattern, not just a WordPress settings issue.
Document the normal login path for real administrators, the plugin or WAF used for rate limits, the XML-RPC decision, the backup restore owner and the hosting contact path. That documentation prevents emergency confusion when the next login flood happens outside working hours.
Stopping WordPress brute force attacks requires layered controls. Start with logs and rate limits during an active attack, then harden administrator accounts, add 2FA, review XML-RPC, use WAF rules, keep backups ready and involve hosting support when login floods consume server resources.
Hassan Tahir writes Voxfor guides on WordPress hosting, server security and practical site operations. This update focuses on defensive controls for WordPress login abuse and hosting-layer escalation.
Check logs, rate-limit login traffic, challenge or block abusive sources, protect administrator accounts with 2FA, review XML-RPC traffic and ask the host to inspect server-level pressure.
Changing the login URL can reduce simple bot noise, but it should be paired with 2FA, strong passwords, rate limits, WAF rules, backups and monitoring.
2FA makes stolen passwords much less useful, but it does not reduce all request volume. Rate limits and WAF rules are still needed during heavy login floods.
Disable or restrict XML-RPC when the site does not need it. If Jetpack, mobile apps or integrations require it, restrict methods or sources instead of blocking blindly.
No. Plugins help inside WordPress, but host-level rate limits, WAF rules and log review may be needed when login traffic consumes server resources.
Contact hosting support when failed logins create resource spikes, the site slows down, XML-RPC traffic is heavy, logs are needed or firewall rules must be adjusted outside WordPress.