Secure your joomla site
Tips to secure your joomla site
Securing your site is rather easy, if you know what, where, and how it needs to be completed. This article may only scratch the surface, but will provide you with enough advice to perform a major upgrade in your site’s security in a few, easy steps.
1. Change the default database prefix (jos_)Most SQL injections that are written to hack a Joomla! website, try to retrieve data from the jos_users table. This way, they can retrieve the username and password from the super administrator of the website. Changing the default prefix into something random, will prevent (most / all) SQL injections.
You can set the database prefix when installing your Joomla! website. If you've already installed Joomla! and want to change your prefix, do the following:
* Log on to your Joomla! back-end.
* Go to your global configuration and search for the database
* Change your database prefix (Example: fdasqw_) and press Save.
* Go to phpMyAdmin to access your database.
* Go to export, leave all default values and press Start. Exporting the database can take a while.
* When done, select all code and copy it to notepad (or any other text editor)
* In phpMyAdmin, select all tables and delete them
* In notepad, do a Search & replace (Ctrl + H). Set the searchterm to jos_ and change it into your new prefix (Example: fdasqw_). Press "Replace all".
* Select everything in your notepad file and copy it. In phpMyAdmin, go to SQL, paste the queries and press Start.
2. Remove version number / name of extensionsMost vulnerabilities only occur in a specific release of a specific extension. Showing MyExtension version 2.14 is a really bad thing. You can modify this message to only the name of the extension by doing the following:
* Retrieve all files of the extension from your server.
* Open up Dreamweaver.
* Load any file from the extension that you just downloaded to your local machine.
* Use the Search function and set the search to Search through specified folder. Navigate to the folder where you downloaded the exploit to.
* Set the search term to "MyExtension version 2.14" and press OK.
* When found the correct file, remove the version number.
* Upload the changed file to your server and check if the changes are made.
3. Use a SEF componentMost hackers use the Google inurl: command to search for a vulnerable exploit. Use Artio, SH404SEF or another SEF component to re-write your URL's and prevent hackers from finding the exploits.
Additionally, you'll get a higher rank in Google when using search engine friendly URL's.
4. Keep Joomla! and extensions up to dateThis one is pretty obvious. Always check for the latest versions of Joomla! and the extensions you're using. Many vulnerabilities are resolved most of the times in later versions.
5. Use the correct CHMOD for each folder and fileSetting files or folders to a CHMOD of 777 or 707 is only necessary when a script needs to write to that file or directory. All other files should have the following configuration:
PHP files: 644
Other folders: 755
6. Delete leftover filesWhen you installed an extension that you didn't like, don't set the extension to unbublished. If you do, the vulnerable files will still be on your website. So simply use the un-install function to totally get rid of the extension.
Add the following lines to your .htaccess file to block out some common exploits.
7. Change your .htaccess file
Open your .htaccess file
########## Begin - Rewrite rules to block out some common exploits
#
# Block out any script trying to set a mosConfig value through the URL
RewriteCond %{QUERY_STRING} mosConfig_[a-zA-Z_]{1,21}(=|%3D) [OR]
# Block out any script trying to base64_encode crap to send via URL
RewriteCond %{QUERY_STRING} base64_encode.*(.*) [OR]
# Block out any script that includes a < script> tag in URL
RewriteCond %{QUERY_STRING} (<|%3C).*script.*(>|%3E) [NC,OR]
# Block out any script trying to set a PHP GLOBALS variable via URL
RewriteCond %{QUERY_STRING} GLOBALS(=|[|%[0-9A-Z]{0,2}) [OR]
# Block out any script trying to modify a _REQUEST variable via URL
RewriteCond %{QUERY_STRING} _REQUEST(=|[|%[0-9A-Z]{0,2}) [OR]
# Block out any script that tries to set CONFIG_EXT (com_extcal2 issue)
RewriteCond %{QUERY_STRING} CONFIG_EXT([|%20|%5B).*= [NC,OR]
# Block out any script that tries to set sbp or sb_authorname via URL (simpleboard)
RewriteCond %{QUERY_STRING} sbp(=|%20|%3D) [OR]
RewriteCond %{QUERY_STRING} sb_authorname(=|%20|%3D)
# Send all blocked request to homepage with 403 Forbidden error!
RewriteRule ^(.*)$ index.php [F,L]
#
########## End - Rewrite rules to block out some common exploits