Protegerse y evitar ataques DoS, SQL injection, XSS, Robots malignos, etc


Todos hemos tenido la preocupación de que nuestra web no sea segura y necesitamos una manera de comprobarlo. Todo lo que tenemos que hacer es editar nuestro archivo .htaccess e incluir estas lineas:

## Seguridad extra para PHP
php_flag safe_mode on
php_flag expose_php off
php_flag display_errors off

## Manejo de errores de Apache. Cuando se produzca uno de estos errores, redirigimos a una pagina especial desarrollada por nosotros.
ErrorDocument 401 /error401.html
ErrorDocument 403 /error403.html
ErrorDocument 404 /error404.html

RewriteEngine On

Options +FollowSymLinks
# Evitar escaneos y cualquier intento de manipulación malintencionada
# de la URL. Con esta regla es imposible lanzar ataques de inyección (SQL, XSS, etc)
RewriteCond %{HTTP_USER_AGENT} ^$ [OR]
RewriteCond %{HTTP_USER_AGENT} ^(-|\.|') [OR]
RewriteCond %{HTTP_USER_AGENT} ^(.*)(<|>|%3C|%3E)(.*) [NC,OR]
RewriteCond %{HTTP_USER_AGENT} ^(java|curl|wget)(.*) [NC,OR]
RewriteCond %{HTTP_USER_AGENT} ^(.*)(libwww-perl|libwwwperl|snoopy|curl|wget|winhttp|python |nikto|scan|clshttp|archiver|loader|email|harvest|fetch|extract|grab|miner|suck|reaper|leach)(.*) [NC,OR]

RewriteCond %{REQUEST_URI} ^(/,|/;|/<|/>|/'|/`|/%2C|/%3C|/%3E|/%27|/////) [NC,OR]
RewriteCond %{HTTP_REFERER} ^(.*)(%00|%08|%09|%0A|%0B|%0C|%0D|%0E|%0F|%2C|<|>|'|%3C|%3E|%26%23 |%27|%60)(.*) [NC,OR]
RewriteCond %{QUERY_STRING} ^(.*)(%00|%08|%09|%0A|%0B|%0C|%0D|%0E|%0F|%2C|%3C|%3E|%27|%26%23 |%60)(.*) [NC,OR]
RewriteCond %{QUERY_STRING} ^(.*)('|-|<|>|,|/|\\|\.a|\.c|\.t|\.d|\.p|\.i|\.e|\.j)(.*) [NC,OR]
RewriteCond %{HTTP_COOKIE} ^(.*)(<|>|'|%3C|%3E|%27)(.*) [NC]

RewriteRule ^(.*)$ error.php [NC]
## No permitir acceso al .htaccess
order allow,deny
deny from all

## Evitar que se liste el contenido de los directorios
Options All -Indexes

## Lo mismo que lo anterior
IndexIgnore *

## Denegar el acceso a robots dañinos, browsers offline, etc
RewriteBase /
RewriteCond %{HTTP_USER_AGENT} ^Anarchie [OR]
RewriteCond %{HTTP_USER_AGENT} ^ASPSeek [OR]
RewriteCond %{HTTP_USER_AGENT} ^attach [OR]
RewriteCond %{HTTP_USER_AGENT} ^autoemailspider [OR]
RewriteCond %{HTTP_USER_AGENT} ^Xaldon\ WebSpider [OR]
RewriteCond %{HTTP_USER_AGENT} ^Xenu [OR]
RewriteCond %{HTTP_USER_AGENT} ^Zeus.*Webster [OR]
RewriteCond %{HTTP_USER_AGENT} ^Zeus
##redireccionar a los robots a otra web
RewriteRule ^.*$ http://www.otraweb.com [R,L]

# Protegerse contra los ataques DOS limitando el tamaño de subida de archivos
LimitRequestBody 10240000

Espero que les sirva de ayuda en sus proyectos. Saludos.

NOTA: Si os da problemas el copiar y pegar estas lineas del Blog, descarga el siguiente archivo: htaccess-antiddos.txt y renombralo despues en tu servidor a .htaccess

Share
Javier Rodriguez Escrito por:

4 comentarios

  1. web
    30 de octubre de 2009

    hola , al poner el archivo, sale «internal server error, The server encountered an internal error or misconfiguration and was unable to complete your request.» en ambos en local y en el server.

  2. 4 de noviembre de 2009

    Puede ser porque has copiado y pegado sin mas, y eso es un problema porque hay varias lineas del RewriteCond que aqui en el Blog ocupan dos lineas y realmente deberian ocupar una sola linea. Voy a modificarlo ahora para evitar mas futuros errores.

    Gracias.

  3. 23 de septiembre de 2010

    Se que este post tiene SU tiempo, pero He copiado correctamente las lineas, ingresando al link que has dejo alli debajo. Y aun asi me devuelve: «Error en el servidor» (Error 500).

  4. 21 de octubre de 2010

    Esas mismas lineas las he probado yo y funciona perfectamente. Puedes ir probando a ir introduciendo linea a linea hasta ver cual es la que falla…

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *