Usa .htaccess como Firewall

El fichero .htaccess es la primera línea de entrada de cualquier sistema web montado sobre Apache, así que también puede convertirse en la primera línea de defensa frente a ataques de hackers, inyecciones de código o intrusiones.

Además, como su construcción es ya veterana está muy documentada y fácil de configurar. Si usas WordPress y has cambiado la estructura de enlaces permanentes, ya tendrás (por lo menos) un fichero .htaccess en la carpeta raíz de tu instalación.

Las cadenas que añade WordPress suelen ser estas:

# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>
# END WordPress

Y uno de los mejores, y más simples métodos de proteger tu WordPress es añadir reglas que bloqueen automáticamente peticiones basadas en cadenas en la URL.

Por ejemplo, no hay razón alguna (al menos buena) para que una URL empiece con un corchete «[«. Solo hay dos motivos «normales«, uno que sea un error de tecleo, y el otro que esté buscando agujeros de seguridad. Así que una primera regla a aplicar para evitar esto sería añadir una regla que provoque una página de error «403 Forbidden» a todo aquel que llegue a tu sitio con la URL comenzando con un corchete.

Añades esto al principio del archivo .htaccess y guardas los cambios:

RedirectMatch 403 \[

¿Quieres más?, pues estamos de suerte porque en Perishable Press han creado algo que han llamado el 5G Firewall, que viene a ser una lista de reglas para .htaccess que bloquea una buena cantidad de posibles atacantes que, en su versión actual, nos ofrece esto:

# 5G FIREWALL from PerishablePress.com

# 5G:[QUERY STRINGS]
<IfModule mod_rewrite.c>
 RewriteEngine On
 RewriteBase /
 RewriteCond %{QUERY_STRING} (environ|localhost|mosconfig|scanner) [NC,OR]
 RewriteCond %{QUERY_STRING} (menu|mod|path|tag)\=\.?/? [NC,OR]
 RewriteCond %{QUERY_STRING} boot\.ini  [NC,OR]
 RewriteCond %{QUERY_STRING} echo.*kae  [NC,OR]
 RewriteCond %{QUERY_STRING} etc/passwd [NC,OR]
 RewriteCond %{QUERY_STRING} \=\\%27$   [NC,OR]
 RewriteCond %{QUERY_STRING} \=\\\'$    [NC,OR]
 RewriteCond %{QUERY_STRING} \.\./      [NC,OR]
 RewriteCond %{QUERY_STRING} \:         [NC,OR]
 RewriteCond %{QUERY_STRING} \[         [NC,OR]
 RewriteCond %{QUERY_STRING} \]         [NC]
 RewriteRule .* - [F]
</IfModule>

# 5G:[USER AGENTS]
<IfModule mod_setenvif.c>
 SetEnvIfNoCase User-Agent ^$ keep_out
 SetEnvIfNoCase User-Agent (casper|cmsworldmap|diavol|dotbot)   keep_out
 SetEnvIfNoCase User-Agent (flicky|ia_archiver|jakarta|kmccrew) keep_out
 SetEnvIfNoCase User-Agent (libwww|planetwork|pycurl|skygrid)   keep_out
 <Limit GET POST PUT>
  Order Allow,Deny
  Allow from all
  Deny from env=keep_out
 </Limit>
</IfModule>

# 5G:[REQUEST STRINGS]
<IfModule mod_alias.c>
 RedirectMatch 403 (https?|ftp|php)\://
 RedirectMatch 403 /(cgi|https?|ima|ucp)/
 RedirectMatch 403 (\=\\\'|\=\\%27|/\\\'/?|\)\.css\()$
 RedirectMatch 403 (\,|//|\)\+|/\,/|\{0\}|\(/\(|\.\.\.|\+\+\+|\|)
 RedirectMatch 403 \.(cgi|asp|aspx|cfg|dll|exe|jsp|mdb|sql|ini|rar)$
 RedirectMatch 403 /(contac|fpw|install|pingserver|register)\.php
 RedirectMatch 403 (base64|crossdomain|localhost|wwwroot)
 RedirectMatch 403 (eval\(|\_vti\_|\(null\)|echo.*kae)
 RedirectMatch 403 \.well\-known/host\-meta
 RedirectMatch 403 /function\.array\-rand
 RedirectMatch 403 \)\;\$\(this\)\.html\(
 RedirectMatch 403 proc/self/environ
 RedirectMatch 403 msnbot\.htm\)\.\_
 RedirectMatch 403 /ref\.outcontrol
 RedirectMatch 403 com\_cropimage
 RedirectMatch 403 indonesia\.htm
 RedirectMatch 403 \{\$itemURL\}
 RedirectMatch 403 function\(\)
 RedirectMatch 403 labels\.rdf
</IfModule>

Estas reglas incluyen la protección contra URLs con corchetes y, como puedes ver, muchísimo más.

VALORA Y COMPARTE ESTE ARTÍCULO PARA MEJORAR LA CALIDAD DEL BLOG…
(5 votos, promedio: 5)

¿Te gustó este artículo? ¡Ni te imaginas lo que te estás perdiendo en YouTube!

AVISO: Esta publicación es de hace 3 años o más. Si es un código o un plugin podría no funcionar en las últimas versiones de WordPress, y si es una noticia podría estar ya obsoleta. Luego no digas que no te hemos avisado.

14 comentarios en “Usa .htaccess como Firewall”

  1. Creo que lees la mente Fernando, justo después del problema que reporté en el blog sobre archivos PHP y JS sacas un artículo sobre el tema y ahora que estoy pensando poner un .htaccess más seguro vienes y ¡zas! publicas esto. Gracias mil.

  2. Esto creo que es lo que buscaba para impedir código en Base64. Lo que se hablaba en el post anterior sobre infección.

    RedirectMatch 403 (base64|crossdomain|localhost|wwwroot) 

    Mil gracias!

  3. Hola FERNANDO este es mi htaccess

    # BEGIN WordPress

    RewriteEngine On
    RewriteBase /
    RewriteRule ^index.php$ – [L]
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteRule . /index.php [L]

    # END WordPress
    –>La diferencia entre el mio y el ejemplo que tu pusistes al inicio es observa:
    Yo–> RewriteRule ^index.php$ – [L]
    Tu–> RewriteRule ^index.php$ – [L]

    MIs preguntas??????
    1-porque esta diferencia es grave?
    -quiero agregar–> RedirectMatch 403 [ <–
    2-donde lo devo colocar especificamente debajo de ?

    Gracias de antemano y disculpa las molestias.

  4. Tampoco funciona en instalaciones de WP 3.2.x y 3.1.x asi mismo con el WP MU me da error 500 (error interno del servidor)

  5. Pingback: Los 3 modos más comunes de hackear WordPress y cómo evitarlo | Ayuda WordPress

  6. Hola Fernando.
    Resumiendo , solo tendríamos que sustituir nuestro código completo del .htacces por este de aqui arriba?

Deja un comentario

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

 

Ir arriba Ir al contenido