Following a lot of trial-and-error while watching for effect, here are some things I now have in place:
https://codex.www.ads-software.com/Hardening_WordPress#Securing_wp-config.php
Also:
# .htaccess file to harden certain WordPress folders (as recommended by Sucuri and others)
# ref: https://www.wpbeginner.com/wp-tutorials/how-to-disable-php-execution-in-certain-wordpress-directories/
# note: Do not use in ~/wp-content if your site uses TimThumb or similar scripts.
# 1. Place in ~/wp-content/uploads and check for problems...
#>> Blocks Plugins Garbage Collector plugin from scanning ~/wp-content/plugins/
# 2. else Place in ~/wp-content/ and check for problems...
# 3. Place in ~/wp-includes and check for problems...
## note: ~/wp-includes has many .php files.
<Files *.php>
deny from all
</Files>
With BPS, first do a “Create default.htaccess File” to get your permalinks entries in place, then do a “Create secure.htaccess File”, then do an “Activate Website Root Folder .htaccess Security Mode” and an “Activate Website wp-admin Folder .htaccess Security Mode”. At that point, your protection has begun and you can later go to “Custom Code” and tweak as you wish.
Next:
https://forum.ait-pro.com/forums/topic/broken-link-checker-plugin-403-error/
The above for BPS is if you use this:
https://www.ads-software.com/plugins/search.php?q=Broken+Link+Checker
Then in reference to this…
https://llocally.com/blog/2013/08/19/what-is-your-login-username-to-your-wordpress-website/
…you could use this plugin…
https://www.ads-software.com/plugins/stop-user-enumeration/
…or this:
# added to BPS CUSTOM CODE PLUGIN/THEME SKIP/BYPASS RULES
# BEGIN enumeration and author redirects
## ba00 send username enumeration to Home Page
<IfModule mod_rewrite.c>
RewriteEngine on
RewriteCond %{QUERY_STRING} ^/?author=([0-9]*)
RewriteRule ^(.*)$ /? [L,R=301]
</IfModule>
# END enumeration and author redirects
AITpro is not a fan of this next one, but I have it at the bottom of htaccess:
# added to BPS CUSTOM CODE BOTTOM HOTLINKING/FORBID COMMENT SPAMMERS/BLOCK BOTS/BLOCK IP/REDIRECT CODE
## ref https://calladeveloper.blogspot.com/2013/04/global-wordpress-brute-force-attacks.html
# BEGIN br01 stop certain brute-force login attempts
<IfModule mod_rewrite.c>
RewriteEngine on
RewriteCond %{REQUEST_METHOD} =POST
##RewriteCond %{HTTP_REFERER} !^https://(.*)?.yoursite.com [NC]
RewriteCond %{REQUEST_URI} ^/wp-login\.php(.*)$ [OR]
RewriteCond %{REQUEST_URI} ^/wp-admin$
RewriteRule ^(.*)$ - [R=403,L]
</IfModule>
# END br01 stop certain brute-force login attempts
Then right below that:
#### prevent view of directives
## add at end of .htaccess
<Files .htaccess>
Order allow,deny
Deny from all
Satisfy All
</Files>
#### prevent view of 403.shtml
## add at end of .htaccess
<Files 403.shtml>
Order allow,deny
Deny from all
</Files>
I might never completely understand what all the above things are doing, but my list of undesirable/unnecessary IPs being blocked is now greatly reduced!
And finally, I have just discovered Sucuri shows additions and deletions to WordPress core files where Wordfence only shows changes:
https://www.ads-software.com/plugins/search.php?q=sucuri
Good security can take a little time to set up, but then it is there and you can go on about your own business.