HostLeet
Active member
NOTE: Please read this post carefully and follow the directions, exactly! - This post is meant to help users SECURE WordPress on a cPanel and Linux hosting environment, using .HTACCESS Rules and other simple methods. If you're using another control panel and Operating System, this guide might not work for you!
First, I would like to say that all information provided in this post is freely available on the web to anyone. That being said, this post is a modified version of another post by HostWinds. I've simply improved it a bit!
Due to the recent Global WordPress Brute-Force Attack we've all seen in the past few days, I figured it couldn't hurt to post such valuable information in as many places as possible.
=================
A large number of our clients do not fully understand, or know exactly how to SECURE their WordPress website(s). Here's a quick tutorial with step-by-step directions on how to do exactly just that... If you build websites using WordPress regularly, than this guide is definitely for you. You should implement these security methods on every WP site you make! :thumbup:
STEP #1
Create a COMPLETE Backup of your website:
Make sure to keep regular backups, and keep them on a CD-ROM, DVD, or Portable Drive (don't forget to make sure your backups work!). You can do this with the cPanel Backup Manager Feature in your control panel or via FTP. A FULL cPanel backup is highly recommended. A full cPanel backup file contains the entire contents of your hosting account, and can be used to easily and seamlessly move to another host that uses cPanel. You can even send your backup file to a remote server, such as another hosting account or a Remote Backup Service Provider.
NOTE: Never keep or store your backup files on the same hosting account/server that created it. If your hosting account or server goes down, so are your backups! - Always keep off-site backups.
STEP #2
UPDATE your WordPress installation to the latest Stable Version:
This is critical because WordPress updates usually close security vulnerabilities/exploits and implement other important fixes!.. Many users ignore upgrades fearing it will break their website or theme. And although sometimes this is true, the cost of NOT upgrading is far worse than upgrading and possibly having to fix your theme or plugin. You could be faced with account termination, or worse, be liable for damages and blacklisting fees. Do yourself a HUGE favor and upgrade your WP installation and all themes and plugins, as well.
STEP #3
Change your "Admin" user login account and password:
The default WP username is "admin" and hackers know this. So - you should change it to something more personal (e.g. - "LeetUser1337" or "John1234", ect..). The best thing to do is to ADD a new user with admin privileges and then simply delete the original "admin" user account.
ALWAYS use really Strong Passwords (it should include UPPER and lowercase letters, numbers and symbols) and make them at least 16 character long. Most attackers try to brute-force your passwords so having a strong password is imperative. Also, you should never use the same password twice...
STEP #4
Change your WordPress Keys:
Many people overlook this step but it is an important one as these keys work as 'salts' for cookies and ensure better encryption of data.
Use the WordPress Key Generator to generate mentioned keys. Then edit your "wp-config.php" file and find the lines:
And replace them with the new ones you got from the Key Generator.
STEP #5
Install Some Security Plugins:
There are many to choose from, but not all of them are good. I highly recommend (and use) Better WP Security Plugin. This plugin is the #1 security plugin for WordPress. It takes the best WordPress security features and techniques and combines them in a single plugin thereby ensuring that as many security holes as possible are patched.
Another highly recommended plugin is Wordfence Security Plugin. Wordfence Security is a free enterprise class security plugin that includes a firewall, anti-virus scanning, malicious URL scanning and live traffic including crawlers. Wordfence is the only WordPress security plugin that can verify and repair your core, theme and plugin files.
STEP #6
Change your Database Table Prefix:
Warning: Make a backup of your database first!
The default database table prefix for a WordPress is "wp_" This makes your WP site vulnerable to SQL injection attacks. Changing the prefix to something custom like "wp1337_" or "mysite123_" is highly recommended. You can do this easily with the Better WP Security Plugin... Alternatively, you can manually change this by following the directions HERE.
STEP #7
Prevent attacks by blocking search engine spiders from indexing the admin area and other sensitive areas:
Spiders crawl all over your site structure unless they are told not to. The easiest way to prevent spiders from indexing the admin area is to create a "robots.txt" file in your "public_html" folder with the following code:
STEP #8
Secure your ".HTACCESS" files:
Hypertext Access or .HTACCESS is the default name of directory-level configuration file that provides decentralized management of configuration while inside your directory structure and are often used for security restrictions on a particular directory. Again, most of the fixes listed in this thread can be easily implemented with a click of a button using Better WP Security Plugin.
NOTE: To ensure the codes below are not overwritten by WordPress, place them outside the # BEGIN WordPress and # END WordPress tags in the root .htaccess file. WordPress can overwrite anything between these tags!
First, we want to protect the ".htaccess" file itself, so add the following code inside the file using your favorite editor (I recommend Notepad++):
NOTE: Remember to do add this to ALL ".htaccess" files you have or create!
Now, lets secure your "wp-config.php" file by adding the code below inside of your ROOT ".htaccess" file:
Now, lets prevent hackers from browsing your directory structure by adding the code below inside of your ROOT ".htaccess" file:
Now, lets prevent some SQL script injections by adding the code below inside of your ROOT ".htaccess" file:
Now, lets block known bad hosts and agents with HackRepair.com's blacklist by adding the code below inside of your ROOT ".htaccess" file:
Now, lets secure your "wp-includes" folder. Limit access to this directory by adding the code below inside the ROOT".htaccess" file:
Now, lets secure your "wp-content" folder. Limit access to this directory by creating a NEW ".htaccess" file inside this folder and then adding the code below inside (do NOT place code inside your root .htaccess!):
This code allows users to see images, CSS, etc … but will protect the important PHP files.
Now, lets secure your "wp-admin" folder with IP Restriction. Limit access to this directory by creating a NEW ".htaccess" file inside this folder and then adding the code below inside (do NOT place code inside your root .htaccess!):
This code denies access to the admin folder for everyone, with the exception of the IP address you have specified. Simply replace the default IP with your own.
NOTE: If you have a dynamic IP, you will need to regularly alter this file to avoid locking yourself out!
STEP #9
Make sure to Password Protect your "wp-admin" folder:
Adding server-side password protection (such as BasicAuth) to your "wp-admin" directory adds a second layer of protection around your WP admin area, the login screen, and your files. This forces an attacker or bot to attack this second layer of protection instead of your actual admin files. This, along with IP Restriction, are probably the 2 most effective ways to prevent your WP site from being hacked.
STEP #10
NEVER stop implementing security measures:
There are many other tweaks you can do and implement in order to secure your websites furtehr, such as forcing SSL, or renaming your wp-admin folder to hide the backend, ect... However, the methods listed here should protect most WP sites enough. I urge you to implement AS MANY security features as you possibly can. :thumbup:
=================
Okay, then... Now that you've successfully secured your WP website, let's KEEP IT THAT WAY!
Remember These Simple Rules To Keep Your Website(s) HACK-PROOF:
RULE #1 - Remove any plugins/addons and/or themes that you're NOT actively using. "Disabled" does not qualify as removed, physically delete the files from the server!
RULE #2 - Keep ALL of your scripts up-to-date and secured at all times (updated does not mean secure!). This is critical as updates from developers often patch security exploits and other vulnerabilities.
RULE #3 - Keep ALL plugins/addons and/or themes that you DO actively use, up-to-date/patched and secured at all times.
RULE #4 - ALWAYS keep your own off-site backups available (CD-ROM, Portable Drive, ect..). When (not if) the worst happens, you will be ready to take control and get back to business.
RULE #5 - SCAN your personal computer(s) and/or any other computer(s) used to access your hosting account and website with, regularly using a leading Anti-virus and Malware/Spyware Tool (THIS IS IMPORTANT!). No amount of security in WordPress or on your web server will make the slightest difference if there is a keylogger on your computer. Always keep your operating system and the software on it, especially your web browser, up-to-date and secured.
RULE #6 - ALWAYS connect to your hosting account using a secure connection such as FTPES (highly recommended) or using SFTP (if available).. NEVER connect using regular FTP. When you connect via regular FTP your username and password are transmitted over the internet in unsecured PLAIN TEXT! - You can connect to your account via FTPES (if your host supports it, and for your sake I hope they do!) using most FTP clients (I recommend FileZilla since it's FREE).
RULE #7 - keep an eye on your websites!.. Log into your cPanel hosting control panel and browse your website on a regular basis to monitor for malicious activity.
=================
SOME USEFUL LINKS:
More Recommended Steps To harden Your WordPress Installation: http://codex.wordpress.org/Hardening_WordPress
FREE Online Website Malware + Blacklist Scan: http://sitecheck.sucuri.net/scanner/
Download a FREE Anti-Virus & Malware Tool for Microsoft Windows (XP,Vista, Windows7): http://windows.microsoft.com/en-US/windows/products/security-essentials
I hope this guide will help many of you. I run dozens of personal WP sites and I use these very same security measures on all of them, without any issues whatsoever. Please feel free to post more tips in this thread, or if I've made a mistake, do let me know so I can correct it.
Thank you for reading! :wave:
First, I would like to say that all information provided in this post is freely available on the web to anyone. That being said, this post is a modified version of another post by HostWinds. I've simply improved it a bit!
Due to the recent Global WordPress Brute-Force Attack we've all seen in the past few days, I figured it couldn't hurt to post such valuable information in as many places as possible.
=================
A large number of our clients do not fully understand, or know exactly how to SECURE their WordPress website(s). Here's a quick tutorial with step-by-step directions on how to do exactly just that... If you build websites using WordPress regularly, than this guide is definitely for you. You should implement these security methods on every WP site you make! :thumbup:
STEP #1
Create a COMPLETE Backup of your website:
Make sure to keep regular backups, and keep them on a CD-ROM, DVD, or Portable Drive (don't forget to make sure your backups work!). You can do this with the cPanel Backup Manager Feature in your control panel or via FTP. A FULL cPanel backup is highly recommended. A full cPanel backup file contains the entire contents of your hosting account, and can be used to easily and seamlessly move to another host that uses cPanel. You can even send your backup file to a remote server, such as another hosting account or a Remote Backup Service Provider.
NOTE: Never keep or store your backup files on the same hosting account/server that created it. If your hosting account or server goes down, so are your backups! - Always keep off-site backups.
STEP #2
UPDATE your WordPress installation to the latest Stable Version:
This is critical because WordPress updates usually close security vulnerabilities/exploits and implement other important fixes!.. Many users ignore upgrades fearing it will break their website or theme. And although sometimes this is true, the cost of NOT upgrading is far worse than upgrading and possibly having to fix your theme or plugin. You could be faced with account termination, or worse, be liable for damages and blacklisting fees. Do yourself a HUGE favor and upgrade your WP installation and all themes and plugins, as well.
STEP #3
Change your "Admin" user login account and password:
The default WP username is "admin" and hackers know this. So - you should change it to something more personal (e.g. - "LeetUser1337" or "John1234", ect..). The best thing to do is to ADD a new user with admin privileges and then simply delete the original "admin" user account.
ALWAYS use really Strong Passwords (it should include UPPER and lowercase letters, numbers and symbols) and make them at least 16 character long. Most attackers try to brute-force your passwords so having a strong password is imperative. Also, you should never use the same password twice...
STEP #4
Change your WordPress Keys:
Many people overlook this step but it is an important one as these keys work as 'salts' for cookies and ensure better encryption of data.
Use the WordPress Key Generator to generate mentioned keys. Then edit your "wp-config.php" file and find the lines:
Code:
define(‘AUTH_KEY’, ‘put your unique key here’);
define(‘SECURE_AUTH_KEY’, ‘put your unique key here’);
define(‘LOGGED_IN_KEY’, ‘put your unique key here’);
define(‘NONCE_KEY’, ‘put your unique key here’)
................
................
and so on.
And replace them with the new ones you got from the Key Generator.
STEP #5
Install Some Security Plugins:
There are many to choose from, but not all of them are good. I highly recommend (and use) Better WP Security Plugin. This plugin is the #1 security plugin for WordPress. It takes the best WordPress security features and techniques and combines them in a single plugin thereby ensuring that as many security holes as possible are patched.
Another highly recommended plugin is Wordfence Security Plugin. Wordfence Security is a free enterprise class security plugin that includes a firewall, anti-virus scanning, malicious URL scanning and live traffic including crawlers. Wordfence is the only WordPress security plugin that can verify and repair your core, theme and plugin files.
STEP #6
Change your Database Table Prefix:
Warning: Make a backup of your database first!
The default database table prefix for a WordPress is "wp_" This makes your WP site vulnerable to SQL injection attacks. Changing the prefix to something custom like "wp1337_" or "mysite123_" is highly recommended. You can do this easily with the Better WP Security Plugin... Alternatively, you can manually change this by following the directions HERE.
STEP #7
Prevent attacks by blocking search engine spiders from indexing the admin area and other sensitive areas:
Spiders crawl all over your site structure unless they are told not to. The easiest way to prevent spiders from indexing the admin area is to create a "robots.txt" file in your "public_html" folder with the following code:
Code:
User-agent: *
Disallow: /cgi-bin
Disallow: /wp-admin
Disallow: /wp-includes
Disallow: /wp-content/plugins/
Disallow: /wp-content/cache/
Disallow: /wp-content/themes/
Disallow: */trackback/
Disallow: */feed/
Disallow: /*/feed/rss/$
Disallow: /category/*
STEP #8
Secure your ".HTACCESS" files:
Hypertext Access or .HTACCESS is the default name of directory-level configuration file that provides decentralized management of configuration while inside your directory structure and are often used for security restrictions on a particular directory. Again, most of the fixes listed in this thread can be easily implemented with a click of a button using Better WP Security Plugin.
NOTE: To ensure the codes below are not overwritten by WordPress, place them outside the # BEGIN WordPress and # END WordPress tags in the root .htaccess file. WordPress can overwrite anything between these tags!
First, we want to protect the ".htaccess" file itself, so add the following code inside the file using your favorite editor (I recommend Notepad++):
Code:
# Protect .htaccess file
<files .htaccess>
Order allow,deny
Deny from all
</files>
NOTE: Remember to do add this to ALL ".htaccess" files you have or create!
Now, lets secure your "wp-config.php" file by adding the code below inside of your ROOT ".htaccess" file:
Code:
# Protect wp-config file
<files wp-config.php>
Order allow,deny
Deny from all
</files>
Now, lets prevent hackers from browsing your directory structure by adding the code below inside of your ROOT ".htaccess" file:
Code:
# Disable directory browsing
Options All -Indexes
Now, lets prevent some SQL script injections by adding the code below inside of your ROOT ".htaccess" file:
Code:
# Protect from SQL injection
RewriteCond %{QUERY_STRING} \.\.\/ [NC,OR]
RewriteCond %{QUERY_STRING} ^.*\.(bash|git|hg|log|svn|swp|cvs) [NC,OR]
RewriteCond %{QUERY_STRING} etc/passwd [NC,OR]
RewriteCond %{QUERY_STRING} boot\.ini [NC,OR]
RewriteCond %{QUERY_STRING} ftp\: [NC,OR]
RewriteCond %{QUERY_STRING} http\: [NC,OR]
RewriteCond %{QUERY_STRING} https\: [NC,OR]
RewriteCond %{QUERY_STRING} (\<|%3C).*script.*(\>|%3E) [NC,OR]
RewriteCond %{QUERY_STRING} mosConfig_[a-zA-Z_]{1,21}(=|%3D) [NC,OR]
RewriteCond %{QUERY_STRING} base64_encode.*\(.*\) [NC,OR]
RewriteCond %{QUERY_STRING} ^.*(\[|\]|\(|\)|<|>|ê|"|;|\?|\*|=$).* [NC,OR]
RewriteCond %{QUERY_STRING} ^.*("|'|<|>|\|{||).* [NC,OR]
RewriteCond %{QUERY_STRING} ^.*(%24&x).* [NC,OR]
RewriteCond %{QUERY_STRING} ^.*(%0|%A|%B|%C|%D|%E|%F|127\.0).* [NC,OR]
RewriteCond %{QUERY_STRING} ^.*(globals|encode|localhost|loopback).* [NC,OR]
RewriteCond %{QUERY_STRING} ^.*(request|select|concat|insert|union|declare).* [NC]
RewriteCond %{QUERY_STRING} !^loggedout=true
RewriteCond %{QUERY_STRING} !^action=rp
RewriteCond %{HTTP_COOKIE} !^.*wordpress_logged_in_.*$
RewriteCond %{HTTP_REFERER} !^http://maps\.googleapis\.com(.*)$
RewriteRule ^(.*)$ - [F,L]
Now, lets block known bad hosts and agents with HackRepair.com's blacklist by adding the code below inside of your ROOT ".htaccess" file:
Code:
# Begin HackRepair.com Blacklist
RewriteEngine on
# Abuse Agent Blocking
RewriteCond %{HTTP_USER_AGENT} ^BlackWidow [NC,OR]
RewriteCond %{HTTP_USER_AGENT} ^Bolt\ 0 [NC,OR]
RewriteCond %{HTTP_USER_AGENT} ^Bot\ mailto:craftbot\@yahoo\.com [NC,OR]
RewriteCond %{HTTP_USER_AGENT} CazoodleBot [NC,OR]
RewriteCond %{HTTP_USER_AGENT} ^ChinaClaw [NC,OR]
RewriteCond %{HTTP_USER_AGENT} ^Custo [NC,OR]
RewriteCond %{HTTP_USER_AGENT} ^Default\ Browser\ 0 [NC,OR]
RewriteCond %{HTTP_USER_AGENT} ^DIIbot [NC,OR]
RewriteCond %{HTTP_USER_AGENT} ^DISCo [NC,OR]
RewriteCond %{HTTP_USER_AGENT} discobot [NC,OR]
RewriteCond %{HTTP_USER_AGENT} ^Download\ Demon [NC,OR]
RewriteCond %{HTTP_USER_AGENT} ^eCatch [NC,OR]
RewriteCond %{HTTP_USER_AGENT} ecxi [NC,OR]
RewriteCond %{HTTP_USER_AGENT} ^EirGrabber [NC,OR]
RewriteCond %{HTTP_USER_AGENT} ^EmailCollector [NC,OR]
RewriteCond %{HTTP_USER_AGENT} ^EmailSiphon [NC,OR]
RewriteCond %{HTTP_USER_AGENT} ^EmailWolf [NC,OR]
RewriteCond %{HTTP_USER_AGENT} ^Express\ WebPictures [NC,OR]
RewriteCond %{HTTP_USER_AGENT} ^ExtractorPro [NC,OR]
RewriteCond %{HTTP_USER_AGENT} ^EyeNetIE [NC,OR]
RewriteCond %{HTTP_USER_AGENT} ^FlashGet [NC,OR]
RewriteCond %{HTTP_USER_AGENT} ^GetRight [NC,OR]
RewriteCond %{HTTP_USER_AGENT} ^GetWeb! [NC,OR]
RewriteCond %{HTTP_USER_AGENT} ^Go!Zilla [NC,OR]
RewriteCond %{HTTP_USER_AGENT} ^Go-Ahead-Got-It [NC,OR]
RewriteCond %{HTTP_USER_AGENT} ^GrabNet [NC,OR]
RewriteCond %{HTTP_USER_AGENT} ^Grafula [NC,OR]
RewriteCond %{HTTP_USER_AGENT} GT::WWW [NC,OR]
RewriteCond %{HTTP_USER_AGENT} heritrix [NC,OR]
RewriteCond %{HTTP_USER_AGENT} ^HMView [NC,OR]
RewriteCond %{HTTP_USER_AGENT} HTTP::Lite [NC,OR]
RewriteCond %{HTTP_USER_AGENT} HTTrack [NC,OR]
RewriteCond %{HTTP_USER_AGENT} ia_archiver [NC,OR]
RewriteCond %{HTTP_USER_AGENT} IDBot [NC,OR]
RewriteCond %{HTTP_USER_AGENT} id-search [NC,OR]
RewriteCond %{HTTP_USER_AGENT} id-search\.org [NC,OR]
RewriteCond %{HTTP_USER_AGENT} ^Image\ Stripper [NC,OR]
RewriteCond %{HTTP_USER_AGENT} ^Image\ Sucker [NC,OR]
RewriteCond %{HTTP_USER_AGENT} Indy\ Library [NC,OR]
RewriteCond %{HTTP_USER_AGENT} ^InterGET [NC,OR]
RewriteCond %{HTTP_USER_AGENT} ^Internet\ Ninja [NC,OR]
RewriteCond %{HTTP_USER_AGENT} ^InternetSeer\.com [NC,OR]
RewriteCond %{HTTP_USER_AGENT} IRLbot [NC,OR]
RewriteCond %{HTTP_USER_AGENT} ISC\ Systems\ iRc\ Search\ 2\.1 [NC,OR]
RewriteCond %{HTTP_USER_AGENT} ^Java [NC,OR]
RewriteCond %{HTTP_USER_AGENT} ^JetCar [NC,OR]
RewriteCond %{HTTP_USER_AGENT} ^JOC\ Web\ Spider [NC,OR]
RewriteCond %{HTTP_USER_AGENT} ^larbin [NC,OR]
RewriteCond %{HTTP_USER_AGENT} ^LeechFTP [NC,OR]
RewriteCond %{HTTP_USER_AGENT} libwww [NC,OR]
RewriteCond %{HTTP_USER_AGENT} libwww-perl [NC,OR]
RewriteCond %{HTTP_USER_AGENT} ^Link [NC,OR]
RewriteCond %{HTTP_USER_AGENT} LinksManager.com_bot [NC,OR]
RewriteCond %{HTTP_USER_AGENT} linkwalker [NC,OR]
RewriteCond %{HTTP_USER_AGENT} lwp-trivial [NC,OR]
RewriteCond %{HTTP_USER_AGENT} ^Mass\ Downloader [NC,OR]
RewriteCond %{HTTP_USER_AGENT} ^Maxthon$ [NC,OR]
RewriteCond %{HTTP_USER_AGENT} MFC_Tear_Sample [NC,OR]
RewriteCond %{HTTP_USER_AGENT} ^microsoft\.url [NC,OR]
RewriteCond %{HTTP_USER_AGENT} Microsoft\ URL\ Control [NC,OR]
RewriteCond %{HTTP_USER_AGENT} ^MIDown\ tool [NC,OR]
RewriteCond %{HTTP_USER_AGENT} ^Mister\ PiX [NC,OR]
RewriteCond %{HTTP_USER_AGENT} Missigua\ Locator [NC,OR]
RewriteCond %{HTTP_USER_AGENT} ^Mozilla\.*Indy [NC,OR]
RewriteCond %{HTTP_USER_AGENT} ^Mozilla\.*NEWT [NC,OR]
RewriteCond %{HTTP_USER_AGENT} ^MSFrontPage [NC,OR]
RewriteCond %{HTTP_USER_AGENT} ^Navroad [NC,OR]
RewriteCond %{HTTP_USER_AGENT} ^NearSite [NC,OR]
RewriteCond %{HTTP_USER_AGENT} ^NetAnts [NC,OR]
RewriteCond %{HTTP_USER_AGENT} ^NetSpider [NC,OR]
RewriteCond %{HTTP_USER_AGENT} ^Net\ Vampire [NC,OR]
RewriteCond %{HTTP_USER_AGENT} ^NetZIP [NC,OR]
RewriteCond %{HTTP_USER_AGENT} ^Nutch [NC,OR]
RewriteCond %{HTTP_USER_AGENT} ^Octopus [NC,OR]
RewriteCond %{HTTP_USER_AGENT} ^Offline\ Explorer [NC,OR]
RewriteCond %{HTTP_USER_AGENT} ^Offline\ Navigator [NC,OR]
RewriteCond %{HTTP_USER_AGENT} ^PageGrabber [NC,OR]
RewriteCond %{HTTP_USER_AGENT} panscient.com [NC,OR]
RewriteCond %{HTTP_USER_AGENT} ^Papa\ Foto [NC,OR]
RewriteCond %{HTTP_USER_AGENT} ^pavuk [NC,OR]
RewriteCond %{HTTP_USER_AGENT} PECL::HTTP [NC,OR]
RewriteCond %{HTTP_USER_AGENT} ^PeoplePal [NC,OR]
RewriteCond %{HTTP_USER_AGENT} ^pcBrowser [NC,OR]
RewriteCond %{HTTP_USER_AGENT} PHPCrawl [NC,OR]
RewriteCond %{HTTP_USER_AGENT} PleaseCrawl [NC,OR]
RewriteCond %{HTTP_USER_AGENT} ^psbot [NC,OR]
RewriteCond %{HTTP_USER_AGENT} ^RealDownload [NC,OR]
RewriteCond %{HTTP_USER_AGENT} ^ReGet [NC,OR]
RewriteCond %{HTTP_USER_AGENT} ^Rippers\ 0 [NC,OR]
RewriteCond %{HTTP_USER_AGENT} SBIder [NC,OR]
RewriteCond %{HTTP_USER_AGENT} ^SeaMonkey$ [NC,OR]
RewriteCond %{HTTP_USER_AGENT} ^sitecheck\.internetseer\.com [NC,OR]
RewriteCond %{HTTP_USER_AGENT} ^SiteSnagger [NC,OR]
RewriteCond %{HTTP_USER_AGENT} ^SmartDownload [NC,OR]
RewriteCond %{HTTP_USER_AGENT} Snoopy [NC,OR]
RewriteCond %{HTTP_USER_AGENT} Steeler [NC,OR]
RewriteCond %{HTTP_USER_AGENT} ^SuperBot [NC,OR]
RewriteCond %{HTTP_USER_AGENT} ^SuperHTTP [NC,OR]
RewriteCond %{HTTP_USER_AGENT} ^Surfbot [NC,OR]
RewriteCond %{HTTP_USER_AGENT} ^tAkeOut [NC,OR]
RewriteCond %{HTTP_USER_AGENT} ^Teleport\ Pro [NC,OR]
RewriteCond %{HTTP_USER_AGENT} ^Toata\ dragostea\ mea\ pentru\ diavola [NC,OR]
RewriteCond %{HTTP_USER_AGENT} URI::Fetch [NC,OR]
RewriteCond %{HTTP_USER_AGENT} urllib [NC,OR]
RewriteCond %{HTTP_USER_AGENT} User-Agent [NC,OR]
RewriteCond %{HTTP_USER_AGENT} ^VoidEYE [NC,OR]
RewriteCond %{HTTP_USER_AGENT} ^Web\ Image\ Collector [NC,OR]
RewriteCond %{HTTP_USER_AGENT} ^Web\ Sucker [NC,OR]
RewriteCond %{HTTP_USER_AGENT} Web\ Sucker [NC,OR]
RewriteCond %{HTTP_USER_AGENT} webalta [NC,OR]
RewriteCond %{HTTP_USER_AGENT} ^WebAuto [NC,OR]
RewriteCond %{HTTP_USER_AGENT} ^[Ww]eb[Bb]andit [NC,OR]
RewriteCond %{HTTP_USER_AGENT} WebCollage [NC,OR]
RewriteCond %{HTTP_USER_AGENT} ^WebCopier [NC,OR]
RewriteCond %{HTTP_USER_AGENT} ^WebFetch [NC,OR]
RewriteCond %{HTTP_USER_AGENT} ^WebGo\ IS [NC,OR]
RewriteCond %{HTTP_USER_AGENT} ^WebLeacher [NC,OR]
RewriteCond %{HTTP_USER_AGENT} ^WebReaper [NC,OR]
RewriteCond %{HTTP_USER_AGENT} ^WebSauger [NC,OR]
RewriteCond %{HTTP_USER_AGENT} ^Website\ eXtractor [NC,OR]
RewriteCond %{HTTP_USER_AGENT} ^Website\ Quester [NC,OR]
RewriteCond %{HTTP_USER_AGENT} ^WebStripper [NC,OR]
RewriteCond %{HTTP_USER_AGENT} ^WebWhacker [NC,OR]
RewriteCond %{HTTP_USER_AGENT} ^WebZIP [NC,OR]
RewriteCond %{HTTP_USER_AGENT} Wells\ Search\ II [NC,OR]
RewriteCond %{HTTP_USER_AGENT} WEP\ Search [NC,OR]
RewriteCond %{HTTP_USER_AGENT} ^Wget [NC,OR]
RewriteCond %{HTTP_USER_AGENT} ^Widow [NC,OR]
RewriteCond %{HTTP_USER_AGENT} ^WWW-Mechanize [NC,OR]
RewriteCond %{HTTP_USER_AGENT} ^WWWOFFLE [NC,OR]
RewriteCond %{HTTP_USER_AGENT} ^Xaldon\ WebSpider [NC,OR]
RewriteCond %{HTTP_USER_AGENT} zermelo [NC,OR]
RewriteCond %{HTTP_USER_AGENT} ^Zeus [NC,OR]
RewriteCond %{HTTP_USER_AGENT} ^Zeus\.*Webster [NC,OR]
RewriteCond %{HTTP_USER_AGENT} ZyBorg [NC]
RewriteRule ^.* - [F,L]
# Abuse bot blocking rule end
# End HackRepair.com Blacklist
Now, lets secure your "wp-includes" folder. Limit access to this directory by adding the code below inside the ROOT".htaccess" file:
Code:
# Block the include-only files.
RewriteEngine On
RewriteBase /
RewriteRule ^wp-admin/includes/ - [F,L]
RewriteRule !^wp-includes/ - [S=3]
RewriteRule ^wp-includes/[^/]+\.php$ - [F,L]
RewriteRule ^wp-includes/js/tinymce/langs/.+\.php - [F,L]
RewriteRule ^wp-includes/theme-compat/ - [F,L]
Now, lets secure your "wp-content" folder. Limit access to this directory by creating a NEW ".htaccess" file inside this folder and then adding the code below inside (do NOT place code inside your root .htaccess!):
Code:
Order deny,allow
Deny from all
<Files ~ ".(xml|css|jpe?g|png|gif|js)$">
Allow from all
</Files>
This code allows users to see images, CSS, etc … but will protect the important PHP files.
Now, lets secure your "wp-admin" folder with IP Restriction. Limit access to this directory by creating a NEW ".htaccess" file inside this folder and then adding the code below inside (do NOT place code inside your root .htaccess!):
Code:
# IP access for wp-admin
order deny,allow
allow from 11.22.33.44.55
deny from all
This code denies access to the admin folder for everyone, with the exception of the IP address you have specified. Simply replace the default IP with your own.
NOTE: If you have a dynamic IP, you will need to regularly alter this file to avoid locking yourself out!
STEP #9
Make sure to Password Protect your "wp-admin" folder:
Adding server-side password protection (such as BasicAuth) to your "wp-admin" directory adds a second layer of protection around your WP admin area, the login screen, and your files. This forces an attacker or bot to attack this second layer of protection instead of your actual admin files. This, along with IP Restriction, are probably the 2 most effective ways to prevent your WP site from being hacked.
STEP #10
NEVER stop implementing security measures:
There are many other tweaks you can do and implement in order to secure your websites furtehr, such as forcing SSL, or renaming your wp-admin folder to hide the backend, ect... However, the methods listed here should protect most WP sites enough. I urge you to implement AS MANY security features as you possibly can. :thumbup:
=================
Okay, then... Now that you've successfully secured your WP website, let's KEEP IT THAT WAY!
Remember These Simple Rules To Keep Your Website(s) HACK-PROOF:
RULE #1 - Remove any plugins/addons and/or themes that you're NOT actively using. "Disabled" does not qualify as removed, physically delete the files from the server!
RULE #2 - Keep ALL of your scripts up-to-date and secured at all times (updated does not mean secure!). This is critical as updates from developers often patch security exploits and other vulnerabilities.
RULE #3 - Keep ALL plugins/addons and/or themes that you DO actively use, up-to-date/patched and secured at all times.
RULE #4 - ALWAYS keep your own off-site backups available (CD-ROM, Portable Drive, ect..). When (not if) the worst happens, you will be ready to take control and get back to business.
RULE #5 - SCAN your personal computer(s) and/or any other computer(s) used to access your hosting account and website with, regularly using a leading Anti-virus and Malware/Spyware Tool (THIS IS IMPORTANT!). No amount of security in WordPress or on your web server will make the slightest difference if there is a keylogger on your computer. Always keep your operating system and the software on it, especially your web browser, up-to-date and secured.
RULE #6 - ALWAYS connect to your hosting account using a secure connection such as FTPES (highly recommended) or using SFTP (if available).. NEVER connect using regular FTP. When you connect via regular FTP your username and password are transmitted over the internet in unsecured PLAIN TEXT! - You can connect to your account via FTPES (if your host supports it, and for your sake I hope they do!) using most FTP clients (I recommend FileZilla since it's FREE).
RULE #7 - keep an eye on your websites!.. Log into your cPanel hosting control panel and browse your website on a regular basis to monitor for malicious activity.
=================
SOME USEFUL LINKS:
More Recommended Steps To harden Your WordPress Installation: http://codex.wordpress.org/Hardening_WordPress
FREE Online Website Malware + Blacklist Scan: http://sitecheck.sucuri.net/scanner/
Download a FREE Anti-Virus & Malware Tool for Microsoft Windows (XP,Vista, Windows7): http://windows.microsoft.com/en-US/windows/products/security-essentials
I hope this guide will help many of you. I run dozens of personal WP sites and I use these very same security measures on all of them, without any issues whatsoever. Please feel free to post more tips in this thread, or if I've made a mistake, do let me know so I can correct it.
Thank you for reading! :wave: