Saltar al contenido principal




La seguridad de WordPress es uno de los factores más debilitados entre los blogueros novatos. En una instalación de WordPress sin supervisión, hay bastantes vulnerabilidades potenciales que se dejan desatendidas. La mayoría de los tutoriales de instalación de WordPress explican una forma rápida y fácil de llevar a la práctica WordPress en minutos. Pero se pierden algunos factores de seguridad importantes. A modo de ejemplo, la exploración de directorios y el uso del nombre de usuario ‘admin’ se consideran lagunas de seguridad graves. Hoy vamos a echar un vistazo a 10 fragmentos de código .htaccess que ayudarán a mejorar la seguridad de su blog de WordPress. Antes de comenzar, echemos un vistazo rápido a qué es el archivo htaccess.

¿Qué es el archivo .htaccess?

Un archivo htaccess es un archivo de configuración opcional para que lo interprete el servidor web Apache, para cada directorio. Puede almacenar varias configuraciones en ese archivo, como: proteger con contraseña un directorio, bloquear IP, bloquear un archivo o carpeta del acceso público, etc. Tradicionalmente, el archivo .htaccess está presente en el directorio de instalación base de WordPress. Almacena la estructura del enlace permanente de forma predeterminada.

PROPINA: Antes de comenzar con la guía, asegúrese de hacer una copia de seguridad del archivo .htaccess actual (si está presente) en un servicio de almacenamiento en la nube como Dropbox. Esto es para volver al último archivo .htaccess conocido en funcionamiento, si cierto fragmento de código rompe su sitio. Vamos a empezar.

1. Bloquear bots malos

bad-bots-4165331

Uno de los mejores usos del archivo .htaccess es su capacidad para denegar que varias direcciones IP accedan a su sitio. Esto es útil para bloquear spammers conocidos y otros orígenes de acceso sospechoso o malicioso. El codigo es:

# Block one or more IP address.
# Replace IP_ADDRESS_* with the IP you want to block

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

Donde IP_ADDRESS_1 es la primera IP que desea evitar que acceda a su sitio. Puede agregar tantas direcciones IP como desee. No importa qué agentes de usuario (navegadores) utilicen estas direcciones IP, no podrán entrar a un solo archivo desde su servidor. El servidor web denegará de forma automática todo acceso.

2. Deshabilitar la exploración de directorios

wordpress-htaccess-hack-disable-directory-browsing-1023093

Esta es una de las fallas de seguridad más socavadas en un sitio de WordPress. De forma predeterminada, el servidor web Apache habilita la exploración de directorios. Esto significa que todos los archivos y carpetas dentro del directorio raíz (a veces llamado directorio de inicio) del servidor web pueden alistarse y ser accesibles por un visitante. No quiere eso porque no quiere que las personas naveguen a través de de sus cargas de medios o su tema o archivos de complemento.

Si elijo al azar 10 sitios web personales o comerciales que ejecutan WordPress, 6-8 de ellos no tendrán la navegación de directorio deshabilitada. Esto posibilita nadie para oler fácilmente alrededor del wp-content / uploads carpeta o cualquier otro directorio que no tenga el valor predeterminado index.php expediente. De hecho, la captura de pantalla que ves es de uno de los sitios de mi cliente, antes de que recomendara la solución. Fragmento de código para deshabilitar la exploración de directorios:

# Disable directory browsing
Options All -Indexes

3. Permitir solo los archivos seleccionados de wp-content

shutterstock_108312266-e1404459350882-2469270

Como ya sabrás el contenido de wp La carpeta contiene la mayoría de sus temas, complementos y todas las cargas de medios. Posiblemente, no desea que la gente acceda a él sin restricciones. A la vez de deshabilitar la exploración de directorios, al mismo tiempo puede denegar el acceso a todos los tipos de archivos, excepto algunos. En esencia, puede desbloquear de forma selectiva archivos como JPG, PDF, DOCX, CSS, JS, etc. y rechazar el resto. Para hacer esto, pegue este fragmento de código en su archivo .htaccess:

# Disable access to all file types except the following
Order deny,allow
Deny from all
<Files ~ ".(xml|css|js|jpe?g|png|gif|pdf|docx|rtf|odf|zip|rar)$">
Allow from all
</Files>

Debe crear un nuevo archivo .htaccess con el código y pegarlo en el contenido de wp carpeta. No coloque esto en el directorio de instalación base, de lo contrario no funcionará. Al mismo tiempo puede agregar cualquier tipo de archivo a la lista agregando un ‘|’ posteriormente de ‘rar’. La lista anterior contiene los archivos necesarios: XML, CSS y JavaScript, formatos de documentos e imágenes comunes y, para terminar, los formatos de archivo más utilizados.

4. Restringir el acceso total a wp-includes

shutterstock_135573032-7442513

los carpeta wp-includes contiene solo los archivos que son estrictamente necesarios para ejecutar la versión principal de WordPress, uno sin complementos ni temas. Recuerde, el tema predeterminado aún reside en el wp-content / theme directorio. Por lo tanto, ningún visitante (incluido usted) debe requerir acceso al contenido del wp-include carpeta. Puede inhabilitar el acceso utilizando este siguiente fragmento de código:

# Block wp-includes folder and files
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^wp-admin/includes/ - [F,L]
RewriteRule !^wp-includes/ - [S=3]
RewriteRule ^wp-includes/[^/]+.php$ - [F,L]
RewriteRule ^wp-includes/js/tinymce/langs/.+.php - [F,L]
RewriteRule ^wp-includes/theme-compat/ - [F,L]
</IfModule>

5. Permitir que solo las direcciones IP seleccionadas accedan a wp-admin

shutterstock_140373169-6680815

los wp-admin La carpeta contiene los archivos necesarios para ejecutar el panel de WordPress. En la mayoría de los casos, sus visitantes no necesitan acceso al panel de WordPress, a menos que quieran registrar una cuenta. Una buena medida de seguridad es permitir que solo unas pocas direcciones IP seleccionadas accedan al wp-admin carpeta. Puede permitir las direcciones IP de las personas que necesitan acceso al panel de WordPress: editores, colaboradores y otros administradores. Este fragmento de código posibilita que solo las direcciones IP fijas accedan al wp-admin carpeta y deniega el acceso al resto del mundo.

# Limit logins and admin by IP
<Limit GET POST PUT>
order deny,allow
deny from all
allow from 302.143.54.102
allow from IP_ADDRESS_2
</Limit>

Asegúrese de crear un nuevo archivo .htaccess y péguelo en la carpeta wp-admin y no en el directorio de instalación base. Si es lo último, nadie excepto usted podrá navegar por su sitio, ¡ni siquiera los motores de búsqueda! Posiblemente no quieres eso. Un par de inconvenientes de esta medida son los siguientes:

  • Si su sitio posibilita o promueve Registro de nuevo usuario, sería casi imposible realizar un seguimiento del número de usuarios. A modo de ejemplo, en R Marketing Digital, si desea descargar nuestros increíbles temas gratuitos, debe registrarse.
  • Personas con direcciones IP dinámicas (en su mayoría usuarios de banda ancha ADSL que utilizan protocolos PPP o PPPoE) cambian sus IP cada vez que cierran la sesión e inician sesión en su ISP. Posiblemente, no sería práctico realizar un seguimiento de todas estas IP y agregarlas al archivo htaccess.
  • Banda ancha dispositivo móvil: Ya sea que esté en 3G o 4G, su dirección IP depende de la torre celular actual a la que esté conectado. Supongamos que está viajando: su IP cambiará constantemente con cada par de millas que se mueva desde el origen. Nuevamente, hacer un seguimiento del archivo htaccess es casi imposible.
  • Puntos de acceso Wi-Fi públicos: Usar credenciales cuando está conectado a Internet usando un punto de acceso Wi-Fi público es un gran no-no, ya que un niño con un software pequeño puede extraer cada carácter que escriba. Sin mencionar que cada punto de acceso Wi-Fi tendrá una dirección IP única.

Por suerte, todas estas desventajas (salvo la primera) se pueden corregir a través el uso de una VPN. Si configura su VPN para que se conecte usando una única dirección IP, puede agregarla a su archivo htaccess y todos sus problemas se resolverán.

6. Proteja wp-config.php y .htaccess de todos

wordpress-ecommerce-security-shopping-tips-1543660

los wp-config.php El archivo contiene las credenciales de acceso más confidenciales de su sitio de WordPress. Contiene el nombre de la base de datos y las credenciales de acceso y varios otros datos críticos, entre otras configuraciones. Bajo ninguna circunstancia desea que otras personas examinen este archivo. Y, de todos modos, desea deshabilitar el acceso público a la fuente de toda esta seguridad: la .htaccess archivo en sí. Puede deshabilitar el acceso a wp-config.php con este siguiente código:

# Deny access to wp-config.php file
<files wp-config.php>
order allow,deny
deny from all
</files>

Para denegar el acceso a todos los archivos htaccess (recuerde que algunos pueden residir en wp-admin y otras carpetas), use este fragmento de código:

# Deny access to all .htaccess files
<files ~ "^.*.([Hh][Tt][Aa])">
order allow,deny
deny from all
satisfy all
</files>

7. Denegar el enlace directo de imágenes

image-hotlinking-5480511

Uno de los mejores hacks de archivos .htaccess, este envía raspadores de contenido corriendo con la cola entre las piernas. Cuando alguien usa la imagen de su sitio, su ancho de banda se está consumiendo y la mayoría de las veces, ni siquiera se le acredita por ello. Este fragmento de código elimina ese problema y envía esta imagen cuando se detecta un enlace activo.

# Prevent image hotlinking script. Replace last URL with any image link you want.
RewriteEngine on
RewriteCond %{HTTP_REFERER} !^$
RewriteCond %{HTTP_REFERER} !^http(s)?://(www.)?yourwebsite.com [NC]
RewriteCond %{HTTP_REFERER} !^http(s)?://(www.)?yourotherwebsite.com [NC]
RewriteRule .(jpg|jpeg|png|gif)$ http://i.imgur.com/MlQAH71.jpg [NC,R,L]

8. Habilite el almacenamiento en caché del navegador

list-of-web-browsers-9496893

Al mismo tiempo conocido como almacenamiento en caché del lado del cliente, este truco .htaccess habilita las opciones recomendadas de almacenamiento en caché del navegador para su sitio de WordPress. Al mismo tiempo puede usarlo en otros proyectos: sitios HTML, etc.

# Setup browser caching
<IfModule mod_expires.c>
ExpiresActive On
ExpiresByType image/jpg "access 1 year"
ExpiresByType image/jpeg "access 1 year"
ExpiresByType image/gif "access 1 year"
ExpiresByType image/png "access 1 year"
ExpiresByType text/css "access 1 month"
ExpiresByType application/pdf "access 1 month"
ExpiresByType text/x-javascript "access 1 month"
ExpiresByType application/x-shockwave-flash "access 1 month"
ExpiresByType image/x-icon "access 1 year"
ExpiresDefault "access 2 days"
</IfModule>

9. Redirigir a una página de mantenimiento

shutterstock_93288208-2219158

Cuando está migrando webhosts o realizando alguna tarea de mantenimiento, siempre se recomienda crear un archivo HTML estático «inactivo por mantenimiento» para informar a sus visitantes que el sitio web está experimentando una actualización o una operación de mantenimiento. Simplemente cree un archivo maintenance.html (o cualquier otro nombre de archivo) y cárguelo en el directorio de instalación base de WordPress. Pegue el siguiente fragmento en su archivo .htaccess. Una vez finalizada la operación, asegúrese de eliminar o comentar estas líneas para volver a la operación general. Puede comentar agregando un ‘#’ al comienzo de cada línea.

# Redirect all traffic to maintenance.html file
RewriteEngine on
RewriteCond %{REQUEST_URI} !/maintenance.html$
RewriteCond %{REMOTE_ADDR} !^123.123.123.123
RewriteRule $ /maintenance.html [R=302,L] 

10. Páginas de error personalizadas

404-template-6165196

Al mismo tiempo puede usar el archivo .htaccess para configurar páginas de error personalizadas fáciles de usar para errores como 403, 404 y 500. Una vez que haya preparado su página de error, digamos error.html, cárguela en su directorio de instalación base de WordPress. Luego agregue el siguiente fragmento de código a su archivo .htaccess para habilitar la página de error personalizada:

# Custom error page for error 403, 404 and 500
ErrorDocument 404 /error.html
ErrorDocument 403 /error.html
ErrorDocument 500 /error.html

Conclusión:

Hoy hemos aprendido algunos de los mejores trucos de htaccess para fortalecer su sitio de WordPress. Le sugiero que pruebe cada módulo uno por uno mientras realiza una copia de seguridad del archivo .htaccess antes y posteriormente de probar cada módulo. Esto se debe a que el archivo .htaccess es muy importante. Un carácter ‘#’ faltante o un ‘‘ extraviado podrían destruir la integridad de su sitio. Si accede a su panel de WordPress habitualmente sobre la marcha, se recomienda no habilitar IP selectivas en su wp-admin carpeta.

Depende de usted, ¿cuál es su opinión sobre esta publicación? ¿Crees que vale la pena la molestia de editar el archivo htaccess? ¿Conoce un consejo de seguridad mejor? Nos encantaría saber de ti.

R Marketing Digital