How to Protect Your WordPress Site from Brute Force Attacks

 

How to Protect Your WordPress Site from Brute Force Attacks

Brute force attacks target your WordPress login by attempting thousands of username and password combinations. While WordPress is secure by default, its /wp-login.php and /xmlrpc.php endpoints are common targets. If you're running your site on Sun Servers or any performance-grade Linux server, you can implement both application-level and system-level protections to stop brute force attacks effectively.


???? Understand the Threat

Brute force attacks involve automated scripts that:

  • Try many combinations of usernames and passwords

  • Exploit weak credentials

  • Target common admin paths (/wp-login.php, /wp-admin/)

  • Abuse the xmlrpc.php endpoint for mass login attempts

Why it’s dangerous:

  • Increases CPU and memory usage

  • Can slow down or crash your server

  • May eventually succeed in gaining unauthorized access


???? Core Defense Strategies

There’s no single magic bullet. Combine multiple methods for layered security:

Protection Layer Examples
Application-level Limit login attempts, CAPTCHA
Web server config Rate limiting, IP blocks
Network-level defense Fail2ban, firewall rules
Server hardening Disable XML-RPC, block bots

1. Change the Default Login URL

Problem:
Bots scan for /wp-login.php or /wp-admin/.

Solution:
Use a plugin like WPS Hide Login to change the login path to something obscure.

/wp-login.php → /my-custom-login/

This won’t stop a determined attacker, but it reduces automated scanning.


2. Limit Login Attempts

By default, WordPress allows unlimited login tries. Block brute force attempts using:

Recommended Plugins:

  • Limit Login Attempts Reloaded

  • Login LockDown

  • Wordfence Security

What it does:

  • Temporarily blocks IPs after X failed attempts

  • Adds delay or CAPTCHA after failures

Nginx Rate Limiting (Server-Side):

limit_req_zone $binary_remote_addr zone=one:10m rate=1r/s;

server {
  location = /wp-login.php {
    limit_req zone=one burst=5 nodelay;
    ...
  }
}

3. Use Two-Factor Authentication (2FA)

Even if an attacker guesses your password, 2FA blocks unauthorized access.

Plugins:

  • Google Authenticator

  • WP 2FA

  • Two Factor Authentication by Plugin Contributors

Best Practice:
Use time-based one-time passwords (TOTP), like Authy or Google Authenticator, not SMS.


4. Disable XML-RPC Access

xmlrpc.php is often abused for brute force via multicall login attempts.

Option 1: Disable XML-RPC Completely

<Files xmlrpc.php>
    Order Allow,Deny
    Deny from all
</Files>

Or for Nginx:

location = /xmlrpc.php {
    deny all;
}

Option 2: Use Plugin

  • Disable XML-RPC

  • Wordfence Firewall can block XML-RPC abuse


5. Install a Web Application Firewall (WAF)

A WAF filters bad traffic before it hits your server.

Options:

  • Wordfence – Built-in firewall with login protection

  • Sucuri – External WAF with DDoS and brute force blocking

  • Cloudflare – Cloud-based WAF with rate limiting rules

Example Cloudflare Rule:

Path contains "/wp-login.php"
Action: Block or Challenge

6. Monitor Failed Logins

Track failed login attempts to identify brute force patterns.

WordPress Plugins:

  • WP Security Audit Log

  • Activity Log

System Tools:

  • Use fail2ban with Apache or Nginx logs

  • Send alerts on abnormal login rates

Sample fail2ban jail for WordPress (Apache):

[wordpress]
enabled  = true
port     = http,https
filter   = wordpress
logpath  = /var/log/apache2/access.log
maxretry = 5

7. Enforce Strong Passwords

Force users (especially admins) to use secure passwords.

Plugins:

  • Password Policy Manager

  • iThemes Security Pro

Tips:

  • Enforce length and complexity rules

  • Disable reuse of old passwords

  • Audit users regularly


8. Use SSH or SFTP Instead of FTP

Don't leave FTP open. It's plaintext and insecure. Configure:

  • SFTP with key authentication

  • Use fail2ban for SSH login protection

  • Disable root login over SSH

sudo nano /etc/ssh/sshd_config
PermitRootLogin no
PasswordAuthentication no

9. Lock Down wp-admin via IP Whitelisting

Only allow trusted IPs to access the admin area.

Apache:

<Directory /var/www/html/wp-admin>
    Order Deny,Allow
    Deny from all
    Allow from 192.168.1.100
</Directory>

Nginx:

location /wp-admin {
    allow 192.168.1.100;
    deny all;
}

This is best used when only one or a few static IPs need admin access.


10. Regular Backups and Updates

Even with protection in place, always prepare for the worst.

  • Update WordPress, plugins, and themes weekly

  • Back up files and databases daily or hourly for active sites

  • Use tools like UpdraftPlus, JetBackup, or system cron jobs


Summary Table: Brute Force Protection Layers

Layer Tool / Method Server-Level?
Login Protection WPS Hide Login, Limit Login Attempts No
2FA WP 2FA, Google Authenticator No
XML-RPC Blocking Apache/Nginx config Yes
WAF Wordfence, Cloudflare Both
IP Whitelisting Server Config Yes
Password Policy Plugin or Script No
SSH Hardening sshd_config, Fail2Ban Yes

Final Thoughts

Brute force attacks are predictable—but only if you’re watching. Don’t rely on WordPress defaults. With the right configuration, plugins, and server-side rules, you can render brute force attempts useless while maintaining full usability for legitimate users.

If your WordPress is running on Sun Servers or any enterprise-grade hosting, leverage the system’s inherent performance and security capabilities. Harden your stack, monitor logs, and stay one step ahead of attackers.

  • How to Protect Your WordPress Site from Brute Force Attacks
  • 0 Корисниците го најдоа ова како корисно
Дали Ви помогна овој одговор?

Понудени резултати

How to check if Linux server is under DDOS Attack

To check if a Linux server is under a DDoS (Distributed Denial of Service) attack, you need to...

How to Install ClamAV on AlmaLinux

Certainly! Here's a step-by-step guide on how to install ClamAV on AlmaLinux, including how to...

Powered by WHMCompleteSolution