Protegiendo WordPress con .htaccess

,
Protegiendo WordPress con htaccess

Los archivos .htaccess son archivos de configuración usados por el servidor web Apache. Estos pueden sobreescribir la configuración para un directorio particular o VirtualHost. Para que estos archivos sean cargados por el servidor Apache, la opción AllowOverride debe estar en On a nivel de servidor para todos los VirtualHost o debe ser activada en el VirtualHost. Esta opción debe estar activa para poder usar los enalces permanentes en WordPress.

Es importante destacar que los archivos .htaccess son sensibles a errores de configuración, por lo que una sintaxis mal hará que tu sitio no se vea. Siempre antes de modificarlos haz una salva del archivo .htaccess a modificar. De esta forma, si algo estuviera mal podrás restaurarlo sin problemas.

Modificando el archivo .htaccess de WordPress

Cuando se activan los enlaces permanentes de WordPress, un archivo .htaccess es creado en el directorio raíz de la instalación de WordPress. El archivo contiene algo como esto:

WordPress inserta sus datos entre los comentarios “# Begin WordPress” y “# End WordPress”. Por ello, no se debe agregar ninguna información entre los mismos, ya que puede ser borrado WordPress.

Cómo mejorar la seguridad de WordPress con htaccess

A continuación, te listo una serie de configuraciones que mejoran la seguridad de WordPress mediante htaccess. Ten presente que el código mostrado se debe agregar en el archivo .htaccess del directorio raíz de tu instalación de WordPress, a menos que se indique lo contrario.

1. Bloquear Robots de mala reputación (Bad Robots)

Uno de los mayores usos de htaccess es bloquear el acceso a tu sitio desde varias direcciones IPs. Esto te permite bloquear el acceso a spammers o a orígenes de actividad maliciosa o sospechosa:

2. Desactivar el listado de directorios

Por defecto, el servidor web Apache posibilita listar el contenido de los directorios. Esto permite a cualquiera revisar la información que tienes subida en el directorio wp-content/uploads, además de listar otros directorios de tu instalación de WordPress.

Esta opción también se puede bloquear a nivel de servidor o en el VirtualHost de tu sitio. Para desactivar el listado de directorios en Apache, solo tienes que agregar esto a tu archivo .htaccess:

3. Permitir solo determinados archivos desde el directorio wp-content

El directorio wp-content contiene los temas, plugins, archivos de media subidos a WordPress, entre otros archivos. Aunque, por defecto, no puedes ver el contenido del mismo, ya que en su raíz existe un archivo index.php (el cual es servido primero y muestra una página en blanco), como medida adicional de seguridad a la desactivar el listado de directorios, puedes limitar a qué tipos de archivos se puede acceder. Para ello, debes crear un archivo .htaccess en el directorio wp-content y agregar lo siguiente:

4. Restringir todo el acceso a directorio wp-includes

El directorio wp-includes contiene solamente los archivos necesarios para ejecutar el núcleo de WordPress, sin ningún plugin o tema. Así que ningún visitante necesita acceso al mismo. Para bloquear el acceso, agrega el siguiente código:

5. Permitir acceso a la administración de WordPress desde determinados IPs

El directorio wp-admin contiene todos los archivos necesarios para ejecutar el Dashboard de WordPress. En muchos casos, tus visitantes no necesitan acceso al mismo, por lo que es una buena práctica solo permitir el acceso desde IPs de confianza. Crea un archivo .htaccess dentro del directorio wp-admin y agrega el siguiente código:

Realmente el método descrito anteriormente no funciona si las direcciones IPs de los usuarios que quieres que acceden al Dashboard de tu WordPress cambian dinámicamente. Una solución a ello, es que se conecten a tu sitio a través de una VPN con IP fijo o cambiar el slug de la interfaz de administración (con estos plugins lo puedes hacer fácilmente: iTheme Security o WPS Hide Login) y comunicarles solo a ellos la nueva URL de acceso al Dashboard de WordPress.

6. Proteger el archivo wp-config.php y .htaccess

El archivo wp-config.php contiene información sensible sobre tu sitio web como el nombre de la base datos, usuario y contraseña, entre otros datos. Por esto, es recomendable denegar el acceso a dicho archivo al igual que a los archivos .htaccess.

Es válido destacar que, por defecto, el servidor web Apache, no muestra el contenido de los archivos .php y .htaccess, pero esta medida de seguridad adicional no permite que puedan ser descargados mediante una brecha de seguridad.

Para denegar el acceso al archivo wp-config.php:

Para denegar el acceso de todos los archivos .htaccess de tu instalación de WordPress:

7. Desactivar XMLRPC

Según Wikipedia:

XML-RPC es un protocolo de llamada a procedimiento remoto que usa XML para codificar los datos y HTTP como protocolo de transmisión de mensajes.

Básicamente es un protocolo que te permite publicar en tu WordPress desde clientes webblog como Windows Live Writer. Además, es usado si empleas la aplicación para móvil de WordPress o para conexiones de aplicaciones IFTTT. No obstante, muchos atacantes emplean XMLRPC para realizar ataques de fuerza bruta amplificados con el método system.multicall.

Para bloquear las peticiones XMLRPC, agrega el siguiente código:

8. Evitar que otros sitios enlacen tus imágenes

El enlace de imágenes desde otros sitios o hotlinking como se le conoce en inglés, no es una vulnerabilidad, sino más bien repercute en ancho de banda consumido y esto, por lo general, te afecta si tu hosting te limita en ancho de banda.

Para evitar que otros sitios enlacen tus imágenes puedes agregar el siguiente código:

Conclusiones

En este tutorial has aprendido cómo aumentar la seguridad de tu sitio WordPress a través de configuraciones básicas, mediante htaccess. Es importante probar cada uno de los ejemplos descritos, ya que un error de sintaxis puede dejar tu sitio inoperable.

Si conoces otros códigos u otras vías que te permiten aumentar la seguridad en WordPress, compártelo con nosotros en los comentarios y ayúdanos a mejorar.

0 comentarios

Dejar un comentario

¿Quieres unirte a la conversación?
Siéntete libre de contribuir

Deja una respuesta

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