Many WordPress users are looking for the easiest way to install and setup WordPress. It can be as easy as clicking a button, if your web host provides that option, but if the install our site vulnerable to attack – the ease of setting it up quickly fades.
Here are a few steps we can do to tighten up the security for our WordPress websites.
Always, Always, Always Upgrade to the Latest Version
WordPress’ popularity makes it a big target for security attacks. At the same time, its popularity requires that security gets better and better. The latest version of WordPress will be the most secure. Upgrade WordPress as soon as possible when a new version come out.
Install WordPress to a Subdirectory
Since WordPress installs are so common, the default naming convention for files/folders/databases, etc. are well known. One way to make your install different from the guy next door is to install your WordPress into a subdirectory off your root directory. This can be done without exposing the name of your subdirectory to the general public.
After installing WordPress to a subdirectory, move the index.php file from inside this subdirectory to the root directory. This not only keeps your root directory clean, your subdirectory name will not be used in the URL for your site.
Use Obscure Database Name and Table Names
The other way to make things less obvious is to name your database something besides wordpress or wp. Call it sometopic_wp, or wp_somenumbers, or somethingmoreobscure. Along the same lines, give the prefix for your database tables something else besides wp_. Try wp_numChars or wpnumChars.
If you are using a self-installer, you will be prompted for this information. Plug in your obscure names.
If you are not using a self-installer, set these parameters inside the wp-config.php file.
Set the database name in the following line:
[php]define(‘DB_NAME’, ‘obscurename’);[/php]
For the table prefix, change the following line
[php]$table_prefix = ‘wp_'[/php]
to
[php]$table_prefix = ‘wp_obscurename'[/php]
Use Obscure Database User Name
In carrying through with the idea security through obscurity idea, use an obscure database user name, too. A unique combination of letters and numbers hides the obvious.
Disabling Directory Views
If directory views are enabled the contents of your website directories will be listed for your visitors to see if that directory does not have a index file. Not good! If someone has access to your wp-config.php file, they could quickly compromise your site. Many hosts already disable directory view, but if it hasn’t been disabled, you can take care of it rather quickly.
In the htaccess file of the root directory add this line near the top of the file
[php]Options -Indexes[/php]
If htaccess is not an option, you can add a blank index.htm or index.php into each of your WordPress directories. Instead of seeing a directory listing, a blank page will appear (the index file).
Protect wp-config.php File
WordPress uses the wp-config.file to connect to the database and set various preferences. Valuable information is contained within this file. At a minimum, set the permissions of the wp-config.php file to 644 (read and write for the owner, read for group, read only for the world).
To further secure the file, you could update the htaccess file and limit the IP address that can access the file. Visit themelab for more info. (Note: In themelab’s example, they show how to limit access for the wp-login.php file. Substitute wp-config.php for the file name.)
Permissions for File and Directories
It’s likely that your web host has already set up optimal permission settings and access rights. Directory permissions should be set to 755, file permissions to 644. You might run across exceptions to this when configuring files or directories with plugins, but for the most part these settings should work across the board.
Change Admin Username
Most self-installers let you specify an admin name and password upon installation. Never use ‘admin’ as the user name. Be a bit more creative! If the install automatically adds the admin user, update this immediately after installation to a different username.
This gives you a good foundation in securing down your site. What are some of the steps you’ve taken to keep your site secure from the bad guys?
Note: If you stumbled across this post looking for a security service that’ll clean your hacked site, then utilize this excellent WordPress Malware Removal Service by MalCare, one of the best security services out there. It’ll clean your website in a jiffy.
8 Responses
One of my favorite modifications is to change the location of wp-content. It throws some bots. I think that the majority of users are hacked because of improper file ownership and group permissions.
I am looking for this topic advice.
Thank you.
Great points, Roger! I especially like the plugin list. I was familiar with a couple of them, but not all of them. Thanks for sharing!
Also, don’t forget to remove the references to WordPress in theme php coding, etc. It’s one thing to use obfuscation for directory structure, etc. but it’s also important to not give out too much information.
Additionally, what about monitoring? Sites like WebSiteDefender allow people a free account to monitor and scan the security of their WordPress based sites. If something changes, or an update is needed, etc. They get an alert.
Don’t forget, users should also configure the salt (secret keys) in their wp-config.php file. 😉
Another HUGE issue is that users should be advised to use strong passwords. It’s easy to access the admin area if a simple “easy” password is used.
One very large point that could me mentioned… Do not use “admin” as the username, (some people still do that for some strange reason).
What about plugins?
* Block Bad Queries
* WordPress Firewall
* Login LockDown
* WP Security Scan
The above are just some plugin examples, there are more available at WordPress.org
All to often, I find that there is no .htaccess file in the admin folder. To help with securing WordPress, there really should be! Below is one example of such an .htaccess file:
# BEGIN WordPress
RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
# END WordPress
Backup, backup, backup… Don’t forget that backups are an important aspect of security.
I hope this comment helps someone, somewhere! 🙂
Lorenzo – Glad you found the points easy to follow!
Saqib – Thanks for the link! Very helpful.
Thanks Carma,
All the points mentioned are really useful and few of these were new to me.
I just like to mention one thing that beginners could have trouble in installing WordPress in a subdirectory. So it would be nice to add a link to
Regards
Good point Saqib, thanks.
Many thanks for this short list of ‘safety tips’
Very good, and easy to follow, indeed.