Seguridad WordPress con el archivo .htaccess

Antes de desvelar todo el potencial de este fichero y ver la multitud de funcionalidades realmente útiles que nos ofrece hay que tener en cuenta que puesto que es muy potente, en consecuencia es muy peligroso. El mínimo error de sintaxis, puede provocar un mal funcionamiento en el servidor hosting. Así que es importante tener copia antes de cualquier cambio de toda la web.También quería aclara que aunque en el titular de esta entrada se refleja que es para WordPress, este fichero es ajeno a WordPress totalmente, por lo que todo lo visto es realmente útil para cualquier web, por lo que es importante conocer de él y familiarizarse con este fichero.

 

¿Qué es el archivo .htaccess y para que sirve?

És un fichero de configuración del servidor HTTP apache, que permite definir directivas de configuración sin necesidad de editar el fichero principal de Apache. Ubicado en cada directorio de nuestro hosting o en sus respectivos subdirectorios. Las funciones mas importantes que nos ofrece es:

 

– Autorización y autentificación
– Creación de URLs Amigables
– Restringir el acceso
– Server Side Includes (Permite directivas SSI)
– Listado de directorio
– Crear redirecciones estáticas
– Página de error personalizada
– Control de caché
– Evitar hot-linking
– Forzar dominio sin www

Y muchas mas opciones..

Aquí únicamente me centraré en nombrar y aplicar la configuración correspondiente para aquellas funcionalidades que creo que son muy importantes a tener en cuenta en nuestro hosting.

 

Proteger el archivo .htaccess

En primer lugar es proteger este archivo ya que puede ser leído desde el propio navegador:

 Order allow,deny
 Deny from all

Almacenamiento en caché de imágenes

De entrada, soy una persona que No soy muy amigable con los plugins (intento usar lo imprescindible). Mis motivos son diversos (rendimiento, mantenimiento…) pero tampoco voy a entrar en este tema, lo dejo para otra entrada. El rendimiento es un punto muy importante a tener en cuenta, por lo que en paginas web tienen mucho protagonismo las imágenes. Es importante optimizar imágenes y su almacenamiento en nuestro sitio. Cada vez que recibimos una visita en la web, el servidor tiene que cargar todos los archivos necesarios (CSS y JavaScript), así coo fotos e imágenes para poder mostrarla. Todo este proceso implica una carga en nuestro servidor. Y si nuestro servidor tuviera todo eso preparado antes que nuestro visitante cargara nuestro sitio web? Accelerará el tiempo de carga ya que todo lo tendrá previamente preparado.

 ExpiresActive On
 ExpiresByType image/gif A432000
 ExpiresByType image/jpg A432000
 ExpiresByType image/jpeg A432000
 ExpiresByType image/png A432000
 ExpiresByType image/ico A432000
 ExpiresByType image/bmp A432000
 ExpiresByType text/css A432000
 ExpiresByType text/javascript A432000
 ExpiresByType application/javascript A432000
 ExpiresByType application/x-javascript A432000

Evita la navegación en directorios de nuestro hosting

Se puede desactivar la navegación con el siguiente codigo:

Options All -Indexes

Por el contrario, si queremos permitir, se usa la siguiente directiva:

Options All +Indexes

Evitar el listado de carpetas

IndexIgnore *

Evitar que se muestren ciertos tipos de archivo

IndexIgnore *.wmv *.mp4 *.avi *.etc

 

Impedir cualquier acceso a un sitio web

Todas las conexiones a tu sitio web serán denegadas, sin excepciones, por lo que es una forma rápida de «apagarlo» y hacerlo desaparecer de Internet:

Deny from All

Impedir el acceso a los archivos y directorios ocultos

Los archivos y directorios ocultos normalmente no son públicos, por lo que el servidor web no debería servirlos:

RewriteCond %{SCRIPT_FILENAME} -d [OR]
RewriteCond %{SCRIPT_FILENAME} -f
RewriteRule "(^|/)." - [F]

Esta configuración protege tambien los archivos como .htaccess .htpasswd y directorios como .gity .hg.

Si lo prefieres puedes devolver un error de tipo 404 (Not Found) para confundir un poco más:

RedirectMatch 404 /..*$

Impedir que otros sitios web enlacen a tus imágenes

La siguiente configuración impide que cualquier sitio web externo pueda enlazar a tus imágenes para «robártelas». Cambia el valor ejemplo.com por tu propio dominio, de manera que solamente tu puedas enlazar a tus imágenes:

RewriteEngine on
RewriteCond %{HTTP_REFERER} !^$
RewriteCond %{HTTP_REFERER} !^http(s)?://(www.)?ejemplo.com [NC]
RewriteRule .(jpg|jpeg|png|gif)$ - [NC,F,L]

Proteger el acceso a un directorio mediante contraseña

Primero debes crear un archivo llamado .htpasswd con el comando htpasswd. Este archivo se debe guardar en cualquier directorio que no sea directamente accesible mediante el servidor web:

$ htpasswd -c /home/usuario/.htpasswd nombre_usuario

Y ahora ya puedes usar este archivo para proteger con contraseña el acceso a cualquier directorio:

AuthType Basic
AuthName "Zona Segura"
AuthUserFile /home/usuario/.htpasswd
Require valid-user

Proteger uno o varios archivos mediante contraseña

AuthName «Zona Segura» AuthType Basic AuthUserFile /home/usuario/.htpasswd <Files «archivo_secreto.zip»> Require valid-user </Files> <FilesMatch ^(facturad+.pdf)$> Require valid-user </FilesMatch>

Páginas de error personalizadas

ErrorDocument 400 /errores/error400.html
ErrorDocument 401 /errores/error401.html
ErrorDocument 403 /errores/error403.html
ErrorDocument 404 /errores/error404.html
ErrorDocument 500 /errores/error500.html

important2
Esta entrada esta en constante actualización. A diferencia de otras publicaciones, por su importancia ire poco a poco introduciendo nuevos parámetros muy importantes a tener en cuenta. Por lo que os recomiendo no perder esta página... Hasta pronto:)

 

Deja un comentario

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

  Acepto la política de privacidad

Información sobre protección de datos

  • Responsable: Julian Mariscal
  • Fin del tratamiento: Controlar el spam, gestión de comentarios
  • Legitimación: Tu consentimiento
  • Comunicación de los datos: No se comunicarán los datos a terceros salvo por obligación legal.
  • Derechos: Acceso, rectificación, portabilidad, olvido.
  • Contacto: rgpd@julianmp.info.
  • Información adicional: Más información en mi política de privacidad.

Chatbot (En pruebas)
Desarrollado por Julian Mariscal