Skip to content

Conversation

@garrettb-imh
Copy link

This article mixes good guidance with a lot of legacy/fragile techniques and repeats some sections. I’ve prepared a full modernization that emphasizes 2FA/passkeys, edge/WAF rate-limiting, XML-RPC protections, and keeps concise Apache/Nginx/IIS plus new Caddy v2 examples. It also adds a See Also link to the Caddy thread discussed with core maintainers.

Highlights
• Keep: strong passwords, avoid admin, server-side examples (updated).
• Add: 2FA + passkeys (plugin/IdP), edge/WAF login throttling, CAPTCHA/Turnstile, XML-RPC controls, clearer Nginx/Apache/IIS, and Caddy v2 snippets.
• Remove/soften: country IP blocklists (collateral damage), BasicAuth over all of /wp-admin (breaks AJAX), repeated sections.

Based on comment suggestion, Caddy reference added: Using Caddy to deter brute force attacks in WordPress – https://caddy.community/t/using-caddy-to-deter-brute-force-attacks-in-wordpress/13579

@kittenkamala kittenkamala requested review from Crixu and chaion07 August 27, 2025 02:47
@kittenkamala kittenkamala added the WCUS-CD-2025 Tickets and issues worked on during WCUS Contributor Day 2025 label Aug 27, 2025
@kittenkamala kittenkamala self-requested a review August 27, 2025 02:55
@kittenkamala
Copy link

Great work! Thank you so much.

@kittenkamala kittenkamala linked an issue Aug 27, 2025 that may be closed by this pull request
2 tasks
Copy link

@chaion07 chaion07 left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

All good from my end

@chaion07
Copy link

Thank you for contributing @garrettb-imh

**Limit access to `/wp-login.php` by IP:**
```caddyfile
@blacklist {
not remote_ip forwarded 203.0.113.15 203.0.113.16
Copy link

@GiggleSquid GiggleSquid Aug 28, 2025

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I believe remote_ip forwarded is deprecated since caddy v2.8.0 in favour of client_ip with the use of the trusted_proxies directive

See:
Deprecation: https://github.com/caddyserver/caddy/releases/tag/v2.8.0
client_ip: https://caddyserver.com/docs/caddyfile/matchers#client-ip
trusted-proxies: https://caddyserver.com/docs/caddyfile/options#trusted-proxies

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Clarification

It is long deprecated and was removed in 2.8.0

Copy link
Member

@Crixu Crixu left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Content looks great, my recommendation would be to replace the current file instead of adding a new one.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

WCUS-CD-2025 Tickets and issues worked on during WCUS Contributor Day 2025

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Update page: Brute Force Attacks

5 participants