Gauntlet Security Plugin
Performs a detailed security analysis of your WordPress installation. Provides specific instructions on how to make your site more secure.
Gauntlet Security can find opportunities for improving the security of your site. It checks many aspects of the site’s configuration including file permissions, server software, PHP, database, plugins, themes, and user accounts. The plugin will give each check a pass, warning, or fail and explain in clear language how you can fix the issue.
How you ultimately choose to patch these issues is up to you but whatever method you use, this plugin should always provide an accurate report. It does not make changes to your database or to any of your files and it should be compatible with all other security plugins.
Checks and recommendations include:
- Set correct file and directory permissions
- Turn off directory indexing
- Prevent code execution in the uploads directory
- Block files in the includes directory
- Prevent access to stray files which could be useful to attackers
- Keep PHP up-to-date
- Disable dangerous PHP functions
- Disable allow_url_include and allow_url_fopen PHP flags
- Turn off the display of PHP errors
- Don’t advertise the PHP version you are running
- Use a strong database password
- Change the default database table prefix
- Keep WordPress up-to-date
- Turn off file editing in the control panel
- Set security keys in WP-Config file
- Don’t advertise the WordPress version you are running
- Turn off self-registration
- Force SSL when accessing the admin area
- Review the development activity and reputation of all plugins
- Remove unused themes from the server
- Rename the plugin directory
- Move the active theme to an alternate location
- Do not use TimThumb
- Do not use common user names (such as “admin”)
- Do not use weak passwords
- Do not have a user with an ID = 1
- Minimize the number of admin users
- Users should not display their login usernames publicly
- Prevent username enumeration through standard author URLs
- …more tests planned
Check the screenshots for more detail on some of the above features.
Many of these security checks are based on recommendations from the WordPress codex: https://codex.wordpress.org/Hardening_WordPress.
Disclaimer
Some of the tips included in this plugin only require making small changes to configuration files (.htaccess, php.ini, wp-config.php, functions.php). Others require more in-depth changes to the filesystem or database. Before attempting any of these fixes, you should be comfortable experimenting and know how to undo any change you make. That includes making backups and knowing how restore your site from those backups. I can’t guarantee that the recommendations or sample code provided in this plugin will not break your site or that they will prevent it from being hacked.
Requirements
- Apache web server
- WordPress 3.4 minimum
- PHP 5.2.7 minimum
Installation
Using The WordPress Dashboard
- Navigate to the ‘Add New’ in the plugins dashboard
- Search for ‘gauntlet security’
- Click ‘Install Now’
- Activate the plugin on the Plugin dashboard
Multisite
- Navigate to ‘Network Admin’ > ‘Plugins’ in the top toolbar (must be logged in as a Super Admin)
- Click ‘Add New’ in the plugins dashboard
- Search for ‘gauntlet security’
- Click ‘Install Now’
- Click ‘Network Activate’ on the Plugin dashboard. Only Super Admin users can access and use the plugin.
Uploading in WordPress Dashboard
- Navigate to the ‘Add New’ in the plugins dashboard
- Navigate to the ‘Upload’ area
- Select ‘gauntlet-security.zip’ from your computer
- Click ‘Install Now’
- Activate the plugin in the Plugin dashboard
Using FTP
- Download ‘gauntlet-security.zip’
- Extract the ‘gauntlet-security’ directory to your computer
- Upload the ‘gauntlet-security’ directory to the ‘/wp-content/plugins/’ directory
- Activate the plugin in the Plugin dashboard
Screenshots
The main page.
All checks include a detailed explanation and instructions on how to fix the issue.
Not all issues need to be fixed. Less important tests are included for the paranoid.
The plugin check will raise red flags if plugins aren't being maintained or haven't been updated
FAQ
Why doesn’t this plugin make these changes automatically?
Most of this plugin’s recommendations are server configurations or WordPress configurations that only need to be set once. My belief is that plugins should not be making permanent changes to your site’s configuration. Any change a plugin makes, it should be able to undo. Other plugins can automate a few of these hardening techniques for you, but if something breaks it’s not always easy to figure out what the plugin did and how to revert it.
Changelog
1.4.1
- New test: Move the active theme to an alternate location
- Enhancement: Now prepared for localization!
- Enhancement: Highlight the importance of changing the plugin directory name
- Enhancement: Update the PHP version check (5.5 is no longer supported)
- Enhancement: Provide caveats for the user ID = 1 check
- Tested on WordPress 4.6
1.4.0
- New test: Keep PHP up-to-date
- New test: Don’t advertise the PHP version you are running
- Enhancement: Remove deprecated WordPress function, force_ssl_login
- Enhancement: Improve colour-coding on plugin check
- Enhancement: Add stray file check for “error_log” files
- Tested on WordPress 4.5
1.3.0
- Enhancement: Add compatibility with WordPress Multisite installs
- Tested on WordPress 4.3.1
1.2.2
- Fix: Stray file test failing on PHP versions less than 5.3.6
- Enhancement: Account for multilingual WordPress installs when testing for salts
- Enhancement: Plugin version check only triggers warning if plugin is older than current
- Tested on WordPress 4.1.1
1.2.1
- Tested on WordPress 4.1
- Fix: Test for user ID #1
1.2.0
- New test: Prevent access to stray non-Wordpress files which could be useful to attackers
- Remove test: Shellshock test (not an ongoing concern)
- Enhancement: User enumeration test checks users with posts
- Enhancement: Increase reliabilty if site is using a self-signed TLS certificate
- Enhancement: Added common usernames (thanks to Viktor Szépe & Simon Fredsted)
- Enhancement: Allowance for overriding requirements check
1.1.2
- Fix: Remove PHP short tags
- Enhancement: File Permissions check includes more “why” and less “how”
- Enhancement: Shellshock check uses a more reliable method
1.1.1
- Fix: Plugin “PHP Fatal error”
1.1.0
- New test: Check for Shellshock bug
- Enhancement: Add reference links to many tests for more information
- Enhancement: Improve PHP display errors check
- Enhancement: Improve TimThumb check
1.0.1
- Fix: TimThumb test
- Enhancement: Link to support forum and donation button
- Enhancement: Run less code on non-plugin admin pages
- Enhancement: Text tweaks
1.0.0