Last active
August 29, 2015 14:05
-
-
Save benytocarlo/d6b6297ed4e28983dbbd to your computer and use it in GitHub Desktop.
seguridad htaccess
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#activar charset utf8 cuando servidor no lo reconoce | |
AddDefaultCharset UTF-8 | |
#Ocultar Listado Directorios | |
Options All -Indexes | |
#Hotlink | |
#RewriteRule \.(jpg|jpeg|png|gif)$ - [NC,F,L] | |
# asegurar htaccess | |
<Files .htaccess> | |
order allow,deny | |
deny from all | |
</Files> | |
# Block suspicious request methods | |
RewriteCond %{REQUEST_METHOD} ^(HEAD|TRACE|DELETE|TRACK|DEBUG) [NC] | |
RewriteRule ^(.*)$ - [F,L] | |
# Block WP timthumb hack | |
RewriteCond %{REQUEST_URI} (timthumb\.php|phpthumb\.php|thumb\.php|thumbs\.php) [NC] | |
RewriteRule . - [S=1] | |
# Block suspicious request methods | |
RewriteCond %{REQUEST_METHOD} ^(HEAD|TRACE|DELETE|TRACK|DEBUG) [NC] | |
RewriteRule ^(.*)$ - [F,L] | |
# Block WP timthumb hack | |
RewriteCond %{REQUEST_URI} (timthumb\.php|phpthumb\.php|thumb\.php|thumbs\.php) [NC] | |
RewriteRule . - [S=1] | |
# Block suspicious user agents and requests | |
RewriteCond %{HTTP_USER_AGENT} (libwww-perl|wget|python|nikto|curl|scan|java|winhttp|clshttp|loader) [NC,OR] | |
RewriteCond %{HTTP_USER_AGENT} (<|>|'|%0A|%0D|%27|%3C|%3E|%00) [NC,OR] | |
RewriteCond %{HTTP_USER_AGENT} (;|<|>|'|"|\)|\(|%0A|%0D|%22|%27|%28|%3C|%3E|%00).*(libwww-perl|wget|python|nikto|curl|scan|java|winhttp|HTTrack|clshttp|archiver|loader|email|harvest|extract|grab|miner) [NC,OR] | |
RewriteCond %{THE_REQUEST} \?\ HTTP/ [NC,OR] | |
RewriteCond %{THE_REQUEST} \/\*\ HTTP/ [NC,OR] | |
RewriteCond %{THE_REQUEST} etc/passwd [NC,OR] | |
RewriteCond %{THE_REQUEST} cgi-bin [NC,OR] | |
RewriteCond %{THE_REQUEST} (%0A|%0D) [NC,OR] | |
# Block MySQL injections, RFI, base64, etc. | |
RewriteCond %{QUERY_STRING} [a-zA-Z0-9_]=http:// [OR] | |
RewriteCond %{QUERY_STRING} [a-zA-Z0-9_]=(\.\.//?)+ [OR] | |
RewriteCond %{QUERY_STRING} [a-zA-Z0-9_]=/([a-z0-9_.]//?)+ [NC,OR] | |
RewriteCond %{QUERY_STRING} \=PHP[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12} [NC,OR] | |
RewriteCond %{QUERY_STRING} (\.\./|\.\.) [OR] | |
RewriteCond %{QUERY_STRING} ftp\: [NC,OR] | |
RewriteCond %{QUERY_STRING} http\: [NC,OR] | |
RewriteCond %{QUERY_STRING} https\: [NC,OR] | |
RewriteCond %{QUERY_STRING} \=\|w\| [NC,OR] | |
RewriteCond %{QUERY_STRING} ^(.*)/self/(.*)$ [NC,OR] | |
RewriteCond %{QUERY_STRING} ^(.*)cPath=http://(.*)$ [NC,OR] | |
RewriteCond %{QUERY_STRING} (\<|%3C).*script.*(\>|%3E) [NC,OR] | |
RewriteCond %{QUERY_STRING} (<|%3C)([^s]*s)+cript.*(>|%3E) [NC,OR] | |
RewriteCond %{QUERY_STRING} (\<|%3C).*iframe.*(\>|%3E) [NC,OR] | |
RewriteCond %{QUERY_STRING} (<|%3C)([^i]*i)+frame.*(>|%3E) [NC,OR] | |
RewriteCond %{QUERY_STRING} base64_encode.*\(.*\) [NC,OR] | |
RewriteCond %{QUERY_STRING} base64_(en|de)code[^(]*\([^)]*\) [NC,OR] | |
RewriteCond %{QUERY_STRING} GLOBALS(=|\[|\%[0-9A-Z]{0,2}) [OR] | |
RewriteCond %{QUERY_STRING} _REQUEST(=|\[|\%[0-9A-Z]{0,2}) [OR] | |
RewriteCond %{QUERY_STRING} ^.*(\[|\]|\(|\)|<|>).* [NC,OR] | |
RewriteCond %{QUERY_STRING} (NULL|OUTFILE|LOAD_FILE) [OR] | |
RewriteCond %{QUERY_STRING} (\./|\../|\.../)+(motd|etc|bin) [NC,OR] | |
RewriteCond %{QUERY_STRING} (localhost|loopback|127\.0\.0\.1) [NC,OR] | |
RewriteCond %{QUERY_STRING} (<|>|'|%0A|%0D|%27|%3C|%3E|%00) [NC,OR] | |
RewriteCond %{QUERY_STRING} concat[^\(]*\( [NC,OR] | |
RewriteCond %{QUERY_STRING} union([^s]*s)+elect [NC,OR] | |
RewriteCond %{QUERY_STRING} union([^a]*a)+ll([^s]*s)+elect [NC,OR] | |
RewriteCond %{QUERY_STRING} (;|<|>|'|"|\)|%0A|%0D|%22|%27|%3C|%3E|%00).*(/\*|union|select|insert|drop|delete|update|cast|create|char|convert|alter|declare|order|script|set|md5|benchmark|encode) [NC,OR] | |
RewriteCond %{QUERY_STRING} (sp_executesql) [NC] | |
RewriteRule ^(.*)$ - [F,L] | |
RewriteEngine On | |
RewriteCond %{REQUEST_METHOD} ^TRACE | |
RewriteRule .* - [F] | |
<ifModule mod_headers.c> | |
# Security improvements | |
Header unset Server | |
#Header unset X-Pingback | |
Header unset Accept-Ranges | |
# | |
<FilesMatch "\.html> | |
Header set X-Frame-Options "SAMEORIGIN" | |
# | |
BrowserMatch MSIE ie | |
Header set Imagetoolbar "no" env=ie | |
Header set X-Content-Type-Options "nosniff" env=ie | |
Header set X-UA-Compatible "IE=edge" env=ie | |
Header set X-XSS-Protection "1;mode=block" env=ie | |
Header set X-Content-Security-Policy "default-src 'self'; img-src 'self' analytics.example.com; \ | |
script-src 'self' analytics.example.com ajax.googleapis.com; font-src 'self' data:" env=ie | |
# | |
BrowserMatch Firefox ff | |
Header set Content-Security-Policy "default-src 'self'; img-src 'self' analytics.example.com; \ | |
script-src 'self' analytics.example.com ajax.googleapis.com; \ | |
font-src 'self' data:" env=ff | |
# | |
BrowserMatch SAFARI safari | |
Header set X-XSS-Protection "1;mode=block" env=safari | |
Header set X-WebKit-CSP "default-src 'self'; img-src 'self' analytics.example.com; \ | |
script-src 'self' analytics.example.com ajax.googleapis.com; font-src 'self' data:" env=safari | |
# | |
BrowserMatch CHROME ch | |
Header set X-Content-Type-Options "nosniff" env=ch | |
Header set X-WebKit-CSP "default-src 'none'; img-src 'self' analytics.example.com; \ | |
script-src 'self' analytics.example.com ajax.googleapis.com; font-src 'self' data:" env=ch | |
# | |
BrowserMatch chromeframe chf | |
Header set Imagetoolbar "no" env=chf | |
Header set X-Content-Type-Options "nosniff" env=chf | |
Header set X-UA-Compatible "IE=edge,chrome=1" env=chf | |
Header set X-XSS-Protection "1;mode=block" env=chf | |
Header set X-WebKit-CSP "default-src 'none'; img-src 'self' analytics.example.com; \ | |
script-src 'self' analytics.example.com ajax.googleapis.com; font-src 'self' data:" env=chf | |
</FilesMatch> | |
</IfModule> | |
<IfModule mod_expires.c> | |
ExpiresActive On | |
ExpiresByType image/x-icon "access plus 2592000 seconds" | |
ExpiresByType image/jpeg "access plus 2592000 seconds" | |
ExpiresByType image/png "access plus 2592000 seconds" | |
ExpiresByType image/gif "access plus 2592000 seconds" | |
ExpiresByType application/x-shockwave-flash "access plus 2592000 seconds" | |
ExpiresByType text/css "access 592000 seconds" | |
#ExpiresByType application/x-javascript "access 592000 seconds" | |
#ExpiresByType text/javascript "access plus 592000 seconds" | |
#ExpiresByType application/javascript "access 592000 seconds" | |
</IfModule> | |
# Block the include-only files. | |
<IfModule mod_rewrite.c> | |
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] | |
RewriteRule ^wp-content/plugins/ - [F,L] | |
</IfModule> |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment