Asegurando Wordpress IV: configuración de .htaccess

El fichero .htaccess puede mejorar la configuración de seguridad de Wordpress y de cualquier aplicación Web. Es el complemento perfecto a la protección de directorios.



En la anterior entrega de esta serie de notas, se describió el proceso de configuración básica de seguridad para la protección de directorios de Wordpress. Además de establecer los permisos adecuados a ciertos directorios y ficheros, es posible realizar una configuración más avanzada y completa mediante el uso del fichero .htaccess.

El fichero htaccess es un fichero del Servidor Web Apache, denominado también fichero de configuración distribuida, mediante el cual es posible definir distintas directivas que permiten modificar el comportamiento del servidor web, pudiendo distribuirlas en varios ficheros sin necesidad de usar la configuración global de servidor web, posibilitando distintos comportamientos del servidor.

Las directivas que se pueden incluir en .htaccess son muy variadas y permiten realizar todo tipo de acciones. En el caso que se menciona, únicamente interesan aquellas destinadas a la seguridad y en concreto a proteger ciertos directorios y comportamientos en Wordpress.

El fichero .htaccess se puede crear de forma automática en el directorio donde es instalado Wordpress. Si el directorio raíz donde se va a instalar Wordpress se crea a través de herramientas del servicio de hosting, entonces, se suele generar de forma automática un fichero vacio o con alguna configuración por defecto. Si el directorio es creado manualmente, entonces, por lo general, hay que crear el fichero también manualmente, por ejemplo, a través de una consola.

En nuestro caso, el fichero se ha creado automáticamente al crear el directorio que va a contener Wordpress mediante las herramientas del servicio de hosting. Lo podemos ver en la imagen que se muestra a continuación.



No permitir mostrar el contenido de directorios
Debido a que Wordpress es muy conocido, su estructura de directorios también lo es, lo que supone un riesgo debido a que es posible que un atacante aprovechando ese conocimiento para intentar listar el contenido de los directorios y obtener información sobre plugins, temas, etc. Para evitarlo, utilizamos la siguiente directiva.

# no permitir mostrar el contenido de directorios
Options All –Indexes

Proteger wp-config.php
La primera directiva que vamos a indicar se refiere a la protección del fichero wp-config.php, donde se almacena la configuración de Wordpress. Para evitar su modificación o el acceso desde el exterior para ver su contenido, incorporamos el código que vemos a la derecha.

# proteger el archive wp-config.php

order allow, deny
deny from all


Proteger el acceso al directorio wp-content
El directorio wp-content aglutina todos aquellos ficheros y contenidos que sirven para personalizar un sitio, desde temas gráficos, plugins y otros ficheros. Para protegerlo de accesos no autorizados utilizamos la siguiente directiva.

# proteger el acceso al directorio wp-content
Order deny, allow
Deny from all

Allow from all


Limitar el acceso por ip como administrador
Por lo general los administradores de sitios web suelen acceder a la gestión de un sitio web desde varias IP’s más o menos habituales, aunque hoy día, los dispositivos móviles suponen que está premisa no se cumpla, pero limitar el acceso como administrador a una o varias IP’s es una técnica muy efectiva para proteger la gestión de un sitio web. Para aplicar esta característica de seguridad, incorporamos el código que se muestra a continuación.

# limitar el acceso como administrador por IP
order deny, allowallow
from XXX.XXX.XXX.XXX (reemplazar con la dirección ip que se desea permitir)
deny from all (denegamos el acceso a todas, excepto a la dirección de la línea superior)

Limitar el acceso por IP a direcciones maliciosas (baneo)
En ocasiones se producen intentos de intrusión de determinadas IP’s desde las cuales se lanzan ataques reiterados en forma de intentos de acceso, ataques de fuerza bruta contra formularios de acceso, etc. Cuando esto ocurre, es posible limitar estas direcciones IP mediante una directiva similar a la que hemos visto en el apartado anterior.

# limitar el acceso por IP a direcciones maliciosas (baneo)

Order allow, deny
Deny from XXX.XXX.XXX.XXX (ip maliciosa bloqueada)
Allow from all (permitimos al resto de IP’s)


Limitar el acceso por dominio a direcciones maliciosas (baneo)
Al igual que en el apartado anterior, es posible limitar el acceso no solo por IP sino también por dominio, tal y como se muestra a continuación:

# limitar el acceso por dominio (baneo)
RewriteEngine On
Options +FollowSymlinks
RewriteCond %{HTTP_REFERER} dominio_a_banear\.com [NC]
RewriteRule .* - [F]

Proteger el fichero .htaccess
Finalmente, podemos incluir una directiva para proteger el propio fichero .htaccess, tal y como se ve a continuación, de forma que se previene el acceso a cualquier fichero cuyo nombre comience con la cadena de texto “hta”.

# proteger el archivo htaccess

Order allow, deny
Deny from all
Satisfy all


Además de estas directivas, es posible incluir otras, pero la inclusión de directivas deberá de ser cuidadosa. En la siguiente entrega conoceremos algunos plugins que permiten incorporar características de seguridad adicionales y recomendables.

Fuente: http://cert.inteco.es/cert/Notas_Actualidad/asegurando_wordpress_iv_configuracion_htaccess_20120612?origen=boletin

Comentarios

Entradas populares de este blog

El Modelado de Amenazas de Seguridad

¿Como atacar Kerberos?

Trámites a Distancia: Serie de vulnerabilidades permiten el acceso a datos personales de terceros