Step-by-Step Security Hardening for WordPress on a Public VPS
🔐 Overview
This guide explains how to harden your public WordPress site using free plugins and smart configuration. It includes login obfuscation, brute-force protection, 2FA, and XML-RPC lockdown.
🔧 Step 1: Hide the Default Login Page
Change the default /wp-admin or /wp-login.php to prevent brute-force login scans.
➤ Install the Plugin
Go to Plugins > Add New, and search for WPS Hide Login.
Click Activate and proceed to Settings > General to configure.
⚙️ Configure Login Path
Change the login path to something unique like <secret panel> and redirect unauthorized users to /404.

Click Save Changes to finalize the setting.
🚫 Step 2: Rate-Limit Login Attempts
Block bots and brute-force attempts using Limit Login Attempts Reloaded.
➤ Install the Plugin
Search for Limit Login Attempts Reloaded.

🚷 Skip Premium Prompts
Click “No, I don’t want advanced protection” during setup:

Then skip the email/cloud opt-in:
⚙️ Set Lockout Thresholds
Once installed, configure:
-
Allowed retries:
3 -
Lockout time:
20 minutes -
Lockout escalation: After 4 fails, extend to
24 hours -
Retry reset:
24 hours
Use REMOTE_ADDR for trusted IP origins.
🔒 Step 3: Enforce Two-Factor Authentication (2FA)
Add strong login protection with time-based one-time codes using WP 2FA.
➤ Install the Plugin
Search and install WP 2FA:

🛠️ Configure Authentication Method
In the wizard:
-
Enable TOTP App (Google Authenticator, Authy, etc.)
-
Optionally enable Email fallback
⏳ Set Grace Period
Allow users a short time (e.g., 3 hours) to configure 2FA.
Choose to block dashboard access if they don’t enroll in time.
✂️ Step 4: Disable XML-RPC
XML-RPC is often abused and rarely needed unless you're using remote publishing or Jetpack.
➤ Install the Plugin
Search for Disable XML-RPC-API by Amin Nazemi:

Activate it — no configuration required.
✅ Final Notes
You’ve now:
