10 Consejos de seguridad con .htaccess en WordPress

por | Jun 30, 2020 | Seguridad WordPress

10 Consejos de seguridad con .htaccess en WordPress

 

Que tu sitio web se vea afectado por ataques, hackeos o infecciones no es divertido ni agradable y acaba revirtiendo en el soporte técnico de tu alojamiento, por lo que tener presente que puedes hacer como usuario y administrador de sitios WordPress puede aliviar esta presión y mejorar la seguridad de WordPress.

El archivo .htaccess WordPress en directorios de tu sitio web, es un archivo de configuración que se puede utilizar para anular la configuración del servidor web (si este lo permite).

En este articulo mostramos algunos cambios simples que se pueden llevar a cabo en WordPress usando el archivo .htaccess para aumentar la seguridad del sitio.

Con los códigos adecuados es posible habilitar o deshabilitar funcionalidades y características adicionales para proteger tu sitio de spammers, hackers y otras amenazas.

Algunas de estas características incluyen redirecciones básicas, bloqueando el acceso externo a archivos concretos, o usando funciones más avanzadas como la protección mediante contraseña del contenido o la prevención del uso inadecuado de imágenes del sitio web en sitios externos (hotlinking).

Importante: Artículo actualizado el 11/11/2020

 

 Configura el archivo .htaccess

 

Aparte del uso de plugins, hay una serie de mejoras que se pueden llevar a cabo en el archivo .htaccess, y que junto con el uso de los plugins adecuados y realizar actualizaciones de forma regular la seguridad se verá reforzada añadiendo un nivel extra de protección al que implemente el propio servidor.

El archivo .htaccess mínimo y típico que por defecto debe incluir cualquier instalación de WordPress es:

# 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

Cabe destacar que cualquier añadido que se realice en este archivo debería hacerse “después” de # END WordPress y nunca antes.

Esto aseguraría que no se rompe ninguna de las funciones de WordPress basadas en .htaccess. Antes de realizar cambios al archivo .htaccess se recomienda encarecidamente realizar una copia de seguridad.

 

 Edita el archivo .htaccess en WordPress

 

Cuando se habilitan enlaces permanentes (permalinks) en WordPress, se crea automáticamente un archivo .htaccess en el directorio raíz del sitio.

Cuando WordPress escribe un archivo .htaccess, siempre añade los datos entre # BEGIN WordPress y END WordPress. El carácter almohadilla # significa que estas líneas son comentarios y no afectarán a la configuración.

Estos archivos son de gran alcance y un error de sintaxis, como olvidar un carácter de apertura o cierre <, pueden dejar tu sitio inaccesible, por lo que es importante hacer una copia de seguridad de tu archivo .htaccess antes de hacer cambios en el.

Algunos sistemas operativos no permiten crear un archivo .htaccess por lo que la forma más fácil de hacerlo es:

  1. Usa el Bloc de Notas o un editor de texto plano semejante (Notepad ++) para agregar los comandos necesarios.
  2. Guarda el archivo como un archivo txt, por ejemplo: htaccess.txt
  3. Sube el archivo a tu sitio a la carpeta adecuada.
  4. Una vez subido, renombra el archivo htaccess.txt a .htaccess

 

 Protege el archivo wp-config.php

 

Uno de los archivos más importantes de tu instalación de WordPress es el archivo wp-config.php.

Este archivo se encuentra en la raíz de tu directorio de archivos de WordPress y contiene detalles de configuración de la base de tu sitio, y claves de seguridad de WordPress e información de conexión de base de datos. Esta información, por supuesto, es sensible y cualquier persona que acceda a ella puede acabar afectando a tu sitio.

La mejor forma de proteger este archivo es agregando el siguiente fragmento de código en el archivo .htaccess:

	<files wp-config.php>
	order allow,deny
	deny from all
	</files>

Por supuesto, aun con esta protección, este archivo será accesible a través de FTP, cPanel, etc.

 

 Evita el acceso a la carpeta wp-content

 

La carpeta wp-content contiene imágenes, temas y plugins y es una carpeta muy importante dentro de tu instalación de WordPress, así que tiene sentido evitar que se pueda acceder a esta carpeta de forma no autorizada.

Esto requiere añadir al archivo .htaccess las indicaciones que permitan a los usuarios ver imágenes, CSS, etc., pero proteger los archivos PHP importantes:

	Order deny,allow
	Deny from all
	<Files ~ ".(xml|css|jpe?g|png|gif|js)$">
	Allow from all
	</Files>

 

 Desactiva el TRACE de HTTP y TRACK

 

TRACE y TRACK son métodos HTTP, son funcionalidades por defecto de la mayoría de servidores web Apache utilizados con el propósito de depurar errores. Sin embargo, estos métodos pueden llegar a comprometer la seguridad de tu sitio WordPress, ya que hay algunos ataques como Cross Site Tracing (XST) y Cross Site Scripting (XSS), que pueden robar las cookies y muchas otras informaciones sensibles de tu servidor web.

Afortunadamente estos métodos se pueden desactivar con facilidad mediante la colocación de las siguientes líneas de código en el archivo .htaccess de la raíz de tu Hosting:

	RewriteEngine on
	RewriteCond %{REQUEST_METHOD} ^(TRACE|TRACK)
	RewriteRule .* - [F]

 

 Evita la navegación por directorios

 

La protección de los directorios de WordPress es importante y la seguridad por oscuridad en este caso es justificable. Es decir, se trata de esconder estas carpetas de la vista, lo que impide la navegación a través de los directorios a personas no autorizadas.

Esta es una buena práctica para evitar la exploración de directorios, junto con la aplicación de otras medidas enfocadas a proteger tu sitio.

Para deshabilitar la exploración de directorios debes añadir esto en el archivo .htaccess:

	# Navegación de directorios
	Options All -Indexes

 

 Evita el Hotlinking

 

El Hotlinking o robo de ancho de banda, se da cuando se enlazan las imágenes o archivos de tus artículos o post a artículos y/o post de un servidor diferente, normalmente externo y ajeno a ti, donde el ancho de banda que se consume es el tuyo.

Añadiendo este código en tu archivo .htaccess evitarás ser víctima de hotlinking:

	RewriteEngine On
	RewriteCond %{HTTP_REFERER} !^$
	RewriteCond %{HTTP_REFERER} !^http://(www.)?tu_dominio.com/.*$ [NC]
	RewriteRule .(gif|jpg)$ http://www.tu_dominio.com/hotlink.gif [R,L]

Nota Cambia “tu_dominio.com” por el nombre real del dominio que utilices en tu sitio web.

Tendrás que cambiar la imagen hotline.gif por el nombre del archivo de imagen que quieras mostrar en tu servidor que explica que el hotlinking está desactivado en tu sitio.

 

 Restringe el acceso al área de administración (dashboard)

 

Hay muchas formas de proteger el acceso al dashboard de WordPress (directorio /wp-admin), algunas las hemos explicado en este blog, en otros artículos.

Una forma sencilla de restringir el acceso si tu conexión a Internet utiliza una dirección IP fija y siempre accedes a tu sitio desde el mismo lugar, es mediante la creación de un nuevo archivo .htaccess con el siguiente fragmento en la carpeta /wp-admin:

	order deny,allow
	allow from 202.108.5.1
	deny from all

Nota Cambia la dirección IP por la que quieras permitir el acceso a tu sitio web o por la dirección IP tuya (puedes averiguar tu dirección IP en Cual es mi IP).

Esto te permitirá tener acceso a área de administración de tu sitio, bloqueando todos los demás intentos de acceso a esta carpeta desde otras IPs.

Adicionalmente puedes añadir la dirección IP de otros administradores de tu sitio, o incluso de otros lugares desde los que te conectas habitualmente, teniendo en cuenta que no es recomendable añadir IPs dinámicas por razones de seguridad.

 

 Prohibe el acceso a IPs no deseadas

 

Si utilizas extensiones como Wordfence que te permiten ver que IPs de forma persistente y constante tratan de acceder a tu sitio, principalmente al dashboard /wp-admin para lanzar un ataque de fuerza bruta, puedes prohibir estas IPs utilizando el siguiente código en el archivo .htaccess:

	<Limit GET POST>
	order allow,deny
	deny from 202.090.21.1
	allow from all
	</Limit>

Nota Cambia la dirección IP por la que quieras bloquear el acceso a tu sitio web.

Este código impedirá que la citada IP no pueda volver a acceder a tu sitio. También puedes agregar más IPs replicando la línea de negación deny from, por ejemplo:

	<Limit GET POST>
	order allow,deny
	deny from 202.090.21.1
	deny from 211.190.151.122
	allow from all
	</Limit>

Nota Cambia la dirección IP por la que quieras bloquear el acceso a tu sitio web.

 

 Protege el archivo .htaccess

 

No tiene sentido aplicar protecciones adicionales a carpetas, etc., sino se protege el propio archivo .htaccess pues este archivo suele ser objetivo de atacantes para invalidar otras protecciones adicionales.

Cuando alguien intenta acceder a tu archivo .htaccess, el servidor genera automáticamente un error 403, Prohibido, incluso con permisos predeterminados del archivo.

Protegerlo es sencillo implementando el siguiente código en el archivo .htaccess de la carpeta principal del sitio WordPress:

	<Files .htaccess>
	order allow,deny
	deny from all
	</Files>

 

 BONUS. Evita el SPAM en comentarios desde .htaccess

 

Puedes evitar SPAM en el formulario de comentarios nativo de WordPress, procedentes de visitas sin cabecera HTTPS (sin URI), habituales de bots de spam, añadiendo el siguiente código en tu archivo .hatccess:

	RewriteEngine On
	RewriteCond %{REQUEST_METHOD} POST
	RewriteCond %{REQUEST_URI} .wp-comments-post.php*
	RewriteCond %{HTTP_REFERER} !.*dominio.com.* [OR]
	RewriteCond %{HTTP_USER_AGENT} ^$
	RewriteRule (.*) ^https://%{REMOTE_ADDR}/$ [R=301,L]

Nota Cambia “dominio.com” por el nombre real del dominio que utilices en tu sitio web.

 

Conclusiones

 

Editar tu archivo .htaccess existente o crear otros nuevos para los subdirectorios puede aumentar la seguridad en tu sitio. Aún así, es bueno utilizar los consejos de este artículo para complementar otras medidas de seguridad que tengas aplicadas en tu sitio WordPress.

Este artículo surgió a raíz del artículo escrito por Raelene Wilson “5 Simple .htaccess Tips to Tighten Your Site’s Security”, mejorado y ampliado en base a las experiencias en Webempresa, en el soporte diario a nuestros clientes.

¿Quieres profundizar en el uso del archivo .htaccess en WordPress?

 

Lectura recomendada:
Códigos útiles .htaccess para WordPress

Adicionalmente, si quieres analizar la seguridad de tu actual instalación de WordPress para saber que puntos mejorar, una opción interesante es el uso del plugin Acunetix WP Security, del que hablamos en otro artículo de este Blog.