En dinahosting siempre te recomendamos mejorar de forma constante la seguridad de tu página web. Una de las formas más comunes de trabajar en esta seguridad es usar reglas para bloquear los accesos innecesarios en el fichero .htaccess.
A continuación te mostramos algunas de las reglas más comunes que se pueden añadir al fichero .htaccess para mantener tu hosting seguro.
Contenidos
Reglas para bloquear accesos
Bloquear el acceso al propio archivo .htaccess
Antes de nada, recomendamos bloquear los accesos al propio fichero .htaccess. Es muy sencillo y solo necesitamos añadir estas cuatro líneas:
<Files .htaccess>
order allow,deny
deny from all
</Files>
Impedir los accesos a un archivo específico
Si deseamos bloquear los accesos a un archivo en concreto, podemos hacerlo con el siguiente ejemplo que bloquea los accesos al fichero llamado “nombre.jpg”:
<files nombre.jpg>
order allow,deny
deny from all
</files>
Bloquear los accesos a varias extensiones
Igual que en el ejemplo anterior, podemos bloquear los accesos a una o varias extensiones. A continuación podemos ver cómo bloquear los accesos a archivos de distintas extensiones:
<FilesMatch "\.(htaccess|htpasswd|ini|phps|fla|psd|log|sh)$">
Order Allow,Deny
Deny from all
</FilesMatch>
Disfrazar la extensión de los archivos
Otro modo de aumentar la seguridad de tu web es cambiando las extensiones de tus archivos. Con este ejemplo, podemos modificar los ficheros PHP a .foo y se reconocerán como .php:
AddType application/x-httpd-php .foo
Proteger el directorio bloqueando el acceso mediante una IP y/o dominio
Si vemos peticiones indebidas desde una IP o desde un dominio, podemos bloquearlos. Con este código estamos bloqueando las peticiones GET, POST y PUT desde la IP 123.45.67.890 y desde el dominio ejemplo.com:
<Limit GET POST PUT>
order allow,deny
allow from all
deny from 123.45.67.890
deny from .*ejemplo\.com.*
</Limit>
Denegar todo acceso a un directorio excepto a la IP especificada
Al contrario de la regla anterior, podemos permitir esas peticiones solo desde una IP o un dominio:
<Limit GET POST PUT>
order deny,allow
deny from all
allow from 123.123.123.123
allow from .*ejemplo\.com.*
</Limit>
Bloquear visitantes que provienen del dominio especificado
A menudo hay muchas peticiones que pueden sobrecargar tu servidor, como por ejemplo aquellas generadas desde foros. Una manera de evitar esto es bloquear las peticiones que vienen desde un dominio en concreto. En este ejemplo se bloquean los accesos que provienen de los dominios foro1.com y foro2.com:
<IfModule mod_rewrite.c>
RewriteEngine on
RewriteCond %{HTTP_REFERER} foro1\.com [NC,OR]
RewriteCond %{HTTP_REFERER} foro2\.com [NC,OR]
RewriteRule .* - [F]
</ifModule>
Denegar o permitir acceso a IP
Podemos permitir o bloquear los accesos desde una IP o desde distintos rangos. Esto puede ser muy útil si queremos evitar accesos desde países en concreto o si solo queremos permitir accesos desde una IP. A continuación veremos ambos ejemplos:
Denegar rangos de IP:
Deny from 99.88.77.66
Deny from 99.88.77
Deny from 99.88
Deny from 99
Permitir rangos de IP:
Allow from 99.88.77.66
Allow from 99.88.77
Allow from 99.88
Allow from 99
Evitar Hotlinking
Hotlinking es una práctica muy utilizada que puede sobrecargar el servidor donde tienes alojado tu página web. Esto ocurre cuando una persona incluye una imagen en su página web, pero en realidad está alojado en tu servidor. Es decir, no tiene esa imagen en su servidor, sino que hace una petición a tu página para cargar la imagen. Esto puede crear peticiones innecesarias y consumo de recursos en el servidor donde estás alojado.
Esta práctica se puede evitar fácilmente mediante el .htaccess con el siguiente código donde bloqueamos la carga de imágenes a no ser que vengan desde dominio1.com y dominio2.com e indicamos qué imagen mostrar en lugar de la que nos solicitan, dominio.com/fichero.jpe:
<IfModule mod_rewrite.c>
RewriteEngine on
RewriteCond %{HTTP_REFERER} !^$
RewriteCond %{HTTP_REFERER} !^http://(www\.)?dominio1\.com/.*$ [NC]
RewriteCond %{HTTP_REFERER} !^http://(www\.)?dominio2\.com/.*$ [NC]
RewriteRule .*\.(gif|jpg)$ http://www.dominio.com/fichero.jpe [R,NC,L]
</ifModule>
Bloquear robots maliciosos
Los robots, o también conocido como bots, son programas que realizan tareas automáticamente. Es muy común ver peticiones por parte de bots que pertenecen a motores de búsqueda como Google, Yahoo, etc. pero también existen bots maliciosos. Estos bots maliciosos pueden ser utilizados para generar carga, robar información delicada, crear phishing y mucho más. Por este motivo, es importante poder saber como bloquear las peticiones generadas por los mismos.
Una forma de poder hacer esto es con el siguiente código:
RewriteEngine On
RewriteCond %{HTTP_USER_AGENT} ^BlackWidow [OR]
RewriteCond %{HTTP_USER_AGENT} ^Zeus
RewriteRule .* - [F]
En este ejemplo, estamos redireccionando las peticiones generadas por los bots llamados “BlackWidow” y “Zeus” a una dirección inexistente. Se puede personalizar el error generado a estos robots modificando la última línea RewriteRule.
Bloquear “referers” específicos
El referer es una cabecera HTTP que contiene la dirección URL desde donde proviene la visita. Por ejemplo, si estamos en un foro llamado foro.com y accedemos mediante ella al tu página dominio.com, en la cabecera HTTP, el referer será foro.com. Esta regla es útil para evitar visitas que provienen de páginas ilícitas o problemáticas.
En este ejemplo se bloquean las visitas de usuarios que vienen desde ejemplo.com:
RewriteCond %{HTTP_REFERER} ^http://www.ejemplo.com$
RewriteRule !^http://[^/.]\.dominio\.com.* - [F,L]
Protección contra ataques DDoS, limitando el tamaño de archivos que suben al servidor
Al realizar ataques DDoS, las peticiones pueden venir acompañadas de intentos de subidas de ficheros de varios megas para saturar el ancho de banda del servidor. Con la directiva “LimitRquestBody” podemos establecer un límite al tamaño de los ficheros que se intenta subir mediante peticiones. Esta directiva es útil si permites que los usuarios de tu sitio suban archivos (10000000 bytes equivale a 10 megabytes):
LimitRequestBody 10000000
Bloqueo para WordPress contra ataques wp-login en .htaccess
Un ataque muy común es el producido contra el wp-login de un WordPress. Consiste en generar varias peticiones POST que puede llegar a sobrecargar el servidor donde tienes alojada tu página web o incluso acceder a la administración de tu WordPress mediante fuerza bruta. Una manera eficaz de evitar esto es usando el .htaccess con el siguiente código:
<IfModule mod_rewrite.c>
RewriteEngine on
RewriteCond %{REQUEST_METHOD} =POST
RewriteCond %{HTTP_REFERER} !^<a class="moz-txt-link-freetext" href="http://%28.*%29?.dominio.com">http://(.*)?.dominio.com</a> [NC]
RewriteCond %{REQUEST_URI} ^/wp-login\.php(.*)$ [OR]
RewriteCond %{REQUEST_URI} ^/wp-admin$
RewriteRule ^(.*)$ - [R=403,L]
</IfModule>
Y esto es todo. Si quieres ampliar la información, en este post te explicamos cómo aplicar algunas medidas de seguridad en tu WordPress. También puedes acceder a la sección de bloqueos de tu hosting dentro del Panel de Control.