It is becoming increasingly difficult to protect a site from being hacked! Below are some lines which can be added to the .htaccess file to protect a site against some of the most common vulnerabilities:
# prevent access from santy webworm a-e RewriteCond %{QUERY_STRING} ^(.*)highlight=\%2527 [OR] RewriteCond %{QUERY_STRING} ^(.*)echr(.*) [OR] RewriteCond %{QUERY_STRING}% s:(.*)252echr [OR] RewriteCond %{QUERY_STRING} ^(.*)esystem(.*) [OR] RewriteCond %{QUERY_STRING} ^(.*)rush=\%65\%63\%68 [OR] RewriteCond %{QUERY_STRING} ^(.*)rush=echo [OR] RewriteCond %{QUERY_STRING} ^(.*)wget\%20 [OR] RewriteCond %{QUERY_STRING}% s:(.*)wget RewriteRule ^.*$ http://127.0.0.1/ [R,L] # prevent pre php 4.3.10 bug RewriteCond %{HTTP_COOKIE}% s:(.*):\%22test1\%22\%3b RewriteRule ^.*$ http://127.0.0.1/ [R,L] # this ruleset is to "stop" stupid attempts to use MS IIS Web Server expolits on us # NIMDA RewriteCond %{REQUEST_URI} /(admin|cmd|httpodbc|nsiislog|root|shell)\.(dll|exe) [NC] RewriteRule .* - [F,L] # CODERED RewriteCond %{REQUEST_URI} /default\.(ida|idq)$ [NC,OR] RewriteCond %{REQUEST_URI} /.*\.printer$ [NC] RewriteRule .* - [F,L] # IE's "make available offline" mode RewriteCond %{HTTP_USER_AGENT} MSIECrawler [OR] # unknown bot RewriteCond %{HTTP_USER_AGENT} ^NG [OR] # You may want to enable these lines below to disallow php and perl scripts to access your site RewriteCond %{HTTP_USER_AGENT} ^.*PHP.*$ [OR] RewriteCond %{HTTP_USER_AGENT} ^.*libwww-perl [NC,OR] # Ignorant user trying to edit my site RewriteCond %{HTTP_USER_AGENT} FrontPage [OR] #this one will ban everything microsoft. Use with caution. RewriteCond %{HTTP_USER_AGENT} ^(Microsoft|MFC).(Data|URL|WebDAV|Foundation).(Access|Control|MiniRedir|Class) [NC,OR] # MSOffice RewriteCond %{REQUEST_URI} ^/(MSOffice|_vti) [NC,OR] # Various RewriteCond %{REQUEST_URI} ^/(bin/|cgi/|cgi\-local/|cgi\-bin/|sumthin) [NC,OR] RewriteCond %{THE_REQUEST} ^GET\ http [NC,OR] RewriteCond %{REQUEST_URI} /sensepost\.exe [NC,OR] RewriteCond %{REQUEST_METHOD}!^(GET|HEAD|POST) [NC,OR] # Cyveillance is a spybot that scours the web for copyright violations and ?damaging information? on # behalf of clients such as the RIAA and MPAA. Their robot spoofs its User-Agent to look like Internet # Explorer, and it completely ignores robots.txt. I have # banned it by IP address. RewriteCond %{REMOTE_ADDR} ^63\.148\.99\.2(2[4-9]|[34][0-9]|5[0-5])$ [OR] RewriteCond %{REMOTE_ADDR} ^63\.226\.3[34]\. [OR] RewriteCond %{REMOTE_ADDR} ^63\.212\.171\.161$ [OR] RewriteCond %{REMOTE_ADDR} ^65\.118\.41\.(19[2-9]|2[01][0-9]|22[0-3])$ [OR] # NameProtect peddles their ?online brand monitoring? to unsuspecting and gullible companies # looking for people to sue. Despite the claims on their robot information page, they do not # respect robots.txt; in fact, they spoof their User-Agent in multiple ways to avoid detection. # I have banned them by User-Agent and IP address. RewriteCond %{REMOTE_ADDR} ^12\.148\.196\.(12[8-9]|1[3-9][0-9]|2[0-4][0-9]|25[0-5])$ [OR] RewriteCond %{REMOTE_ADDR} ^12\.148\.209\.(19[2-9]|2[0-4][0-9]|25[0-5])$ [OR] RewriteCond %{HTTP_USER_AGENT} ^NPBot [NC,OR] # Web Content International RewriteCond %{REMOTE_ADDR} ^65\.102\.12\.2(2[4-9]|3[01])$ [OR] RewriteCond %{REMOTE_ADDR} ^65\.102\.17\.(3[2-9]|[4-6][0-9]|7[01]|8[89]|9[0-5]|10[4-9]|11[01])$ [OR] RewriteCond %{REMOTE_ADDR} ^65\.102\.23\.1(5[2-9]|6[0-7])$ [OR] # dumb bot RewriteCond %{HTTP_USER_AGENT} "^Mozilla/4.0$" [OR] # Wordtracker RewriteCond %{REMOTE_ADDR} ^128\.242\.197\.101$ [OR] # Unknown # unknown.Level3.net RewriteCond %{REMOTE_ADDR} ^64\.156\.198\.(6[89]|7[0-9]|80)$ [OR] # host25x.keebler.com RewriteCond %{REMOTE_ADDR} ^65\.223\.250\.25[0-3]$ [OR] # Turnitin spybot RewriteCond %{REMOTE_ADDR} ^64\.140\.49\.6([6-9])$ [OR] RewriteCond %{HTTP_USER_AGENT} TurnitinBot [OR] # this ruleset is for formmail script abusers... # we don't use Perl for Postnuke so this is not really needed. RewriteCond %{REQUEST_URI} (mail.?form|form|form.?mail|mail|mailto)\.(cgi|exe|pl)$ [NC,OR] RewriteCond %{HTTP_USER_AGENT} ^.*FileHound.*$ RewriteRule .* - [F,L] # dumb bot RewriteCond %{HTTP_USER_AGENT} "^Mozilla/3.0$" RewriteRule .* - [F,L] <FILES .htaccess> order allow,deny deny from all </FILES>