Que tu sitio web se vea afectado por ataques, hackeos o infecciones no es divertido ni agradable, y acaba traduciéndose en inversión de tiempo (y ocasiones dinero) en revisiones, recuperaciones y restauraciones que no estaban previstas; por lo que debes tener presente qué puedes hacer como usuario y administrador de sitios WordPress, para aliviar esta presión y mejorar la seguridad de tu sitio.
En este caso puedes emplear el archivo de configuración .htaccess, donde 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).
Aparte del uso de plugins (que pueden llegar a ralentizar tu sitio, consumir demasiados recursos del servidor, o hasta causar conflictos en tu página que resulten en posibles fallas en su funcionamiento), 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 (justos y precisos), añaden un nivel extra de protección al que implementa 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 la línea “# END WordPress” y nunca antes. Esto asegura que no se rompa ninguna de las funciones de WordPress basadas en .htaccess. Antes de realizar cambios al archivo .htaccess se recomienda encarecidamente (como en todo proceso de cambio, ajuste o actualización en wordpress) realizar una copia de seguridad.
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 (simple tipeo), 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.
Por default deberías poder ubicar el archivo .htaccess de tu instalación wordpress dentro de la misma carpeta donde están los archivos de dicha instalación, si no lo ves asegúrate de acceder a la siguiente ruta en el cPanel de tu cuenta hosting: Archivos > Administrador de Archivos , allí ubicas arriba a la derecha el botón Configuración y luego te aseguras que esté seleccionada la opción: Mostrar archivos ocultos (dotfiles) .
Algunos sistemas operativos no permiten crear un archivo .htaccess por lo que la forma más fácil de hacerlo es:
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, 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 página.
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.
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>
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]
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
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.
Hay muchas formas de proteger el acceso al dashboard de WordPress (directorio /wp-admin), algunas las hemos explicado aquí.
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 aquí).
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.
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.
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>
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.