IP Blocking, Whitelisting, and Managing Locked-Out IPs
GuardPress → IP Management is the single console for every IP-based access rule on your site. It shows three separate lists that get confused for each other constantly — the manual Whitelist (trust always, bypass every check), the manual Blacklist (block always, at every endpoint), and the auto-populated Active Lockouts & Permanent Bans table that brute-force protection writes to. This walkthrough covers which list to use when, how CIDR ranges work, how to import and export lists across sites, and the everyday operations (whitelist my office, unblock a legit user, block a persistent attacker).
Three Lists, Three Purposes
The GuardPress → IP Management page shows three tables that do different things. Getting them mixed up is the single most common cause of “why won’t this IP unblock?” tickets.
1. Manual Whitelist (green shield icon)
Storage: guardpress_ip_whitelist option. Populated only by you, the admin. IPs on this list bypass every firewall check GuardPress runs — brute-force counter, rate limiting, geographic access rules, WAF pattern matching, everything. Checked at the very top of every request, before any block is evaluated. Use for:
- Your office IP
- Your home IP (if you work remotely and it’s stable)
- Trusted business partners’ static IPs
- Uptime monitoring services with known IP ranges (UptimeRobot, Better Uptime, etc.)
- Payment gateway callback IP ranges (Stripe, PayPal, when their calls are getting rate-limited)
2. Manual Blacklist (red X icon)
Storage: guardpress_ip_blacklist option. Populated only by you. IPs on this list are permanently blocked at every endpoint — there’s no expiration and no rate limit to trip. Not to be confused with the brute-force auto-lockout below. Use for:
- Persistent attackers who keep coming back from the same IP after their auto-lockout expires
- Known-bad IPs from your host’s security reports
- Ranges you never want to serve, ever (a country’s cellular ranges you don’t do business in — though the Geographic Access Rules section is usually the right tool for whole countries)
3. Active Lockouts & Permanent Bans (yellow lock icon)
Storage: gp_ip_blocklist database table. Populated automatically by the brute-force protection module — you don’t add entries here manually. Each row is either a temporary lockout (with an unblock_at timestamp in the future) or a permanent ban (after the escalation threshold from brute-force protection was hit). Use for:
- Unblocking a real user who got caught in the auto-lockout — two clicks
- Seeing which IPs are currently being blocked and why, without waiting for their expiry
- Clearing test-generated lockouts during development
Removing an IP from Active Lockouts doesn’t remove it from the manual Blacklist and vice versa. If an IP is on both, it stays blocked until it’s removed from both. Whitelist wins over everything — if you accidentally end up with the same IP on the Whitelist and Blacklist, Whitelist takes precedence and the IP is allowed through.
Whitelisting an IP or Range
The fastest way to whitelist your own IP is the shortcut at the top of the IP Management page.
Open GuardPress → IP Management
The top of the page shows Your Current IP Address in a box — that’s whatever GuardPress detected from your current session (post-Cloudflare-real-IP, post-proxy header resolution). Confirm it’s actually your public IP by cross-checking with ifconfig.me or a similar service if you’re not sure.
Click “Whitelist My IP”
The IP is added to the manual Whitelist immediately — no confirmation needed. You’ll see it appear in the Whitelist table below, tagged (You).
Or add a specific IP or CIDR range
Under the Whitelist section, type an IP or range into the input box and click Add. Formats accepted:
203.0.113.42— single IPv4 address203.0.113.0/24— IPv4 CIDR range (256 addresses in this case)203.0.113.0/16— larger IPv4 CIDR range (65,536 addresses)2001:db8::1— single IPv6 address (matched by exact-string equality against the resolved client IP)
Note: IPv6 CIDR ranges (e.g. 2001:db8::/32) can be entered without an error but are not currently matched at runtime — only exact-string IPv6 addresses trigger a whitelist hit. If you need to whitelist a large IPv6 block, list the specific addresses one per line, or open a support ticket and we’ll prioritise the CIDR-IPv6 gap.
Test the whitelist is working
Refresh the IP Management page. Your IP should now show a green Whitelisted badge next to the “Your Current IP Address” label at the top. If you were on the temporary Active Lockouts list, you’ll still be listed there — whitelist doesn’t retroactively clear existing entries, only prevents future checks. Click Unblock in the Active Lockouts row to clear the leftover.
“My IP starts with 76.x so I’ll whitelist 76.0.0.0/8” whitelists 16 million addresses across half your ISP’s subscriber base. If any of them get compromised, they’re now in your allow-list. Always whitelist the narrowest range that solves your actual problem — a single IP for a residential connection, a /24 for a business VPN with a small pool, a /29 or /30 for a specific service with a known allocation.
Blacklisting an IP or Range
The manual Blacklist is for IPs that shouldn’t ever be able to talk to your site — not just “temporarily locked out after failed logins” but “we do not want this address, period.”
Confirm the IP is actually a persistent problem
Check GuardPress → Audit Log and the Active Lockouts & Permanent Bans table. If the IP is already permanently banned by brute-force protection (is_permanent = 1), you don’t need to also add it to the manual Blacklist — it’s already blocked. If it’s only ever hit a temporary lockout once, it might be a real user with a shared IP, not an attacker.
Add the IP or CIDR to the Blacklist input
Under the Blacklist section (red X icon), type the address into the input box. Same format rules as whitelist — single IP, CIDR range, IPv4 or IPv6. Click the red Block button.
Verify by trying to reach the site from that IP
If you can, try loading any URL on the site from the blacklisted IP (a VPN, phone hotspot, etc.). You should see the block response — not just for login pages, but for every URL. Manual Blacklist entries block at the firewall layer, before WordPress even runs.
If you’re blocking a whole country’s worth of IPs, don’t enumerate them in the Blacklist. Use the Geographic Access Rules section on the same page — it maintains up-to-date country IP ranges automatically. See Country Blocking and the Cloudflare Real-IP Gotcha for the full walkthrough, especially the important note about how Cloudflare-fronted sites need real-IP restoration for country blocking to work.
Reviewing and Clearing Active Lockouts
The Active Lockouts & Permanent Bans table is auto-populated by brute-force protection — you can’t add entries here manually, only clear them.
Each row shows:
- IP Address — the blocked address
- Status — yellow “Temporary” badge or red “Permanent” badge
- Lockouts — how many times this IP has been temporarily locked out (once it hits your Permanent Ban Threshold, the next lockout escalates to permanent)
- Reason — the string from the brute-force module, usually
Brute force attempt detected — N failed login attemptsfor temporary blocks orPermanently banned after N temporary lockoutsfor escalations - Blocked At — when the current block was recorded
- Expires — UTC timestamp for temporary blocks; Never for permanent bans
- Action — Unblock button clears the row immediately
To unblock a legit user who got caught:
Confirm it’s them
Ideally check the IP against the affected user’s actual location — ask them for their IP via ifconfig.me or similar, or check the audit log for their username’s recent failed-login IP. Don’t unblock random rows without confirming they map to someone you actually want to let in.
Click Unblock
The row disappears immediately. That IP can now attempt to sign in again on the next request. No page refresh needed on the client side.
Consider whitelisting if this keeps happening
If the same user keeps getting caught, whitelist their IP (see above). Or if it’s clearly a legit user who has a mobile IP that changes, ask them to slow down when signing in — the brute-force counter can’t distinguish “typed my password wrong 5 times fast” from an attacker.
Importing and Exporting IP Lists
The Whitelist and Blacklist can be exported as a single JSON file and re-imported into another site — useful when you run multiple sites and want to keep known-bad or trusted IPs in sync.
Export
Scroll to the Import / Export section on the IP Management page
Below the Active Lockouts table.
Click “Export IP Lists”
Your browser downloads a JSON file containing both the Whitelist and Blacklist. The Active Lockouts & Permanent Bans table is not included in the export — those are per-site automatic state, not portable.
Import
Click “Import IP Lists” on the destination site
Select the JSON file from your source site. GuardPress validates the file structure before importing — a malformed file is rejected with an error, no partial import.
Confirm the merge behaviour
Import merges with the existing lists — it does not replace them. If the destination site already has some IPs whitelisted, they stay. New IPs from the import file are added. Duplicates are deduplicated. If you want to fully replace an existing list, delete the existing entries manually before importing.
Export first, then import. If the merge produces something you didn’t want, you have the original state to compare against. Since import merges rather than replaces, undoing a bad import means going through the merged list and manually removing anything from the import that shouldn’t be there — much easier when you have the pre-import export to diff against.
Locked Yourself Out via the Manual Blacklist
If you accidentally added your own IP to the manual Blacklist — or you added a range that turned out to include your IP — wp-admin will refuse to load. Unlike Emergency Lockdown, there’s no wp-config bypass constant for manual Blacklist. Recovery paths, in order of convenience:
- Sign in from a different IP. Phone hotspot, VPN, or work network. The Blacklist is per-IP; a different address gets through. Once in, remove your normal IP from the Blacklist.
- Ask another admin. If you’re on a multi-admin site, someone else can remove you from the Blacklist in ten seconds.
- Delete the Blacklist row from the database. Via phpMyAdmin, WP-CLI, or MySQL:
# WP-CLI (adjust for your table prefix) wp option get guardpress_ip_blacklist --format=json # Then edit the returned JSON to remove your IP and set it back: wp option update guardpress_ip_blacklist '["OTHER.IP.HERE"]' --format=jsonOr use SQL directly:
SELECT option_value FROM wp_options WHERE option_name = 'guardpress_ip_blacklist'; -- Edit the serialized array and: UPDATE wp_options SET option_value = '<new-serialized-array>' WHERE option_name = 'guardpress_ip_blacklist';WP-CLI is much less error-prone than raw SQL because you don’t have to hand-write PHP-serialized data. If you don’t have WP-CLI, use phpMyAdmin.
- Deactivate GuardPress from wp-cli or by renaming the plugin folder. Nuclear option:
wp plugin deactivate guardpressfrom CLI, or SFTP-rename thewp-content/plugins/guardpressfolder. Neither of these deletes your settings — the lists persist and re-take effect when you reactivate. Once you have wp-admin access, fix the Blacklist and reactivate.
Common Mistakes
Confusing the auto-lockout table with the manual Blacklist
The Unblock button in Active Lockouts clears the auto-populated lockout row. It doesn’t remove the IP from the manual Blacklist if you also added it there separately — you have to remove it from the Blacklist too. Two separate tables, two separate clicks.
Whitelisting an IP that’s shared across an office pool
If your office has a NAT pool that hands out addresses across a shared /28, whitelisting only your specific momentary IP will stop working the next time DHCP hands you a different one. Ask your IT for the CIDR range of the pool and whitelist that instead. Or just whitelist your IP once and add the others as you encounter them.
Blacklisting a Cloudflare edge IP
Not really a mistake on your end — a diagnostic reminder. If GuardPress isn’t correctly detecting real visitor IPs (pre-1.6.30 or a misconfigured proxy header), you might end up looking at your firewall logs and seeing lots of “attacks” from Cloudflare’s edge IPs. Don’t blacklist those — you’ll block a chunk of the internet from reaching your site. Fix the real-IP detection first (see Country Blocking and the Cloudflare Real-IP Gotcha).
Not whitelisting uptime monitors
Services like UptimeRobot, Better Uptime, StatusCake hit your site every 60–300 seconds. If they fail a request and start retrying quickly, they can trip your rate limit and end up temporarily locked out — and then your uptime monitor shows the site as “down” because it can’t reach it. Whitelist your monitor’s published IP ranges once and forget about it.
Importing a Blacklist from a different site type
A Blacklist that made sense for a US-only membership site might block half of your international WooCommerce customers if you import it wholesale into a global store. Curate the import file before applying it — delete country-wide ranges that don’t apply to the new site’s audience.
Still Stuck? Email Priority Support
If IP Management is behaving unexpectedly — whitelisted IPs still getting blocked, CIDR ranges not matching, imports failing to apply, or the wrong IPs showing in the Active Lockouts table:
Email support@royalplugins.com with the diagnostic info below. Priority email support is included with your GuardPress Pro license — typical response time is within 24 hours.
Information to include in your email
- GuardPress version from WP Admin → Plugins
- WordPress version from WP Admin → Updates
- Which list the problem IP is on — manual Whitelist, manual Blacklist, or auto Active Lockouts
- The exact IP or CIDR range as it appears in the input box — format matters, we’ll want to see the exact string
- The IP GuardPress detected for you from the “Your Current IP Address” box at the top of the IP Management page (if this doesn’t match your actual public IP, real-IP restoration is misconfigured)
- Whether the site is behind a CDN (Cloudflare, StackPath, Bunny CDN, etc.), and if so, whether the CDN’s real-IP header is being honoured
- Recent
ip_blocked_*orfirewall_blockentries from GuardPress → Audit Log
IP Management sits at the centre of several other features:
- Brute-Force Protection Setup — what populates the Active Lockouts table, and how to tune when it happens
- Country Blocking and the Cloudflare Real-IP Gotcha — the Geographic Access Rules section on the same IP Management page, plus the important Cloudflare compatibility note
- MCP / OAuth Clients Getting Locked Out — if AI agents (Claude, Apify, n8n, Make) are ending up on the Active Lockouts list because their high call rates trip the counter
- Emergency Lockdown Recovery — the different feature that rejects all sign-ins site-wide (not per-IP)
- WordPress Locked-Out Recovery — the general blog article on regaining wp-admin access