Cristian in Wordpress
June 26, 2008
Hace unos meses cuando hice la primera instalación de este blog, una vez ya lo tenía configurado y funcionando (toma minutos) hice un repaso a la seguridad haciendo especial hincapié en la configuración del fichero .htaccess.
Después de algunos problemas iniciales entendiendo el funcionamiento de esta aplicación y con la ayuda de los miembros de los wordpress forums dimos con un setup que de momento, y después de probarlo por algunos meses me parece óptimo.
Consejos para optimizar la seguridad de tu instalación de wordpress
- Actualizar siempre a la última versión, esto es como una carrera, tenlo en cuenta.
- Añade un prefijo aleatorio a las tablas de tu base de datos
- Revisa como han quedado los permisos después de la instalación, con especial atención a los archivos críticos en wordpress.
- Oculta el acceso a los directorios para que no sean accesibles tecleando directamente la dirección. Esto lo conseguirás añadiendo un fichero index.php en blanco (silence is golden) en el directorio.
- Establece reglas en el .htaccess para controlar la visibilidad de los directorios de tu wordpress y para proteger el archivo de configuración.
Modelo de fichero .htaccess
Este es el modelo de configuración del fichero .htaccess optimizado para wordpress. Recuerda que debes ponerlo en el directorio raíz de tu servidor y que necesitarás activar la opción de ver archivos invisibles en tu gestor FTP.
# BEGIN WordPress<IfModule mod_rewrite.c.c>RewriteEngine On RewriteBase / RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule . /index.php [L]</IfModule<# END WordPress # BEGIN Redirect if request is not in the domain<IfModule mod_rewrite.c.c>RewriteCond %{HTTP_REFERER} !^https?://(www.)?yourdomain.com/.* [NC] RewriteRule ^/?wp-content/?.* http://www.yourdomain.com/ [NC,L,R=301] RewriteCond %{HTTP_REFERER} !^https?://(www.)?yourdomain.com/.* [NC] RewriteRule ^/?wp-includes/?.* http://www.yourdomain.com/ [NC,L,R=301] # RewriteCond %{HTTP_REFERER} !^https?://(www.)?your domain.com/.* [NC] # RewriteRule ^/?wp-admin/?.* http://www.yourdomain.com/ [NC,L,R=301]</IfModule.c># END Redirect if request is not in the domain # BEGIN wp-content protection Redirect 301 /wp-content/index.php http://www.yourdomain.com/ Redirect 301 /wp-content/themes/index.html http://www.yourdomain.com/ Redirect 301 /wp-content/plugins/index.html http://www.yourdomain.com/ Redirect 301 /wp-content/uploads/index.html http://www.yourdomain.com/ # END wp-content protection # START disable hotlinking of images with forbidden or custom image option<IfModule mod_rewrite.c<RewriteEngine on RewriteCond %{HTTP_REFERER} !^$ RewriteCond %{HTTP_REFERER} !^http://(www\.)?www.yourdomain.com/.*$ [NC] #RewriteRule \.(gif|jpg)$ - [F] # END disable hotlinking of images with forbidden or custom image option # protect the htaccess file<files .htaccess>order allow,deny deny from all</files># protect wpconfig.php<files wp-config.php>order allow,deny deny from all</files>
Analicemos el contenido detenidamente.
El primer bloque “Wordpress” establece los parámetros para el re-write de las urls, siempre que el módulo re-write esté activado. El contenido cambiará dependiendo de la estructura que hayas montado.
En los siguientes bloques se establecen las reglas para:
- Denegar el acceso a los directorios críticos de wordpress si la petición no viene desde el sitio web
- Proteger el acceso al directorio wp-content, donde se almacena parte del contenido que generas como usuario de wordpress
- Desactivar la posibilidad de linkear externamente las imágenes del dominio
- Proteger el acceso a los ficheros .htaccess y wp-config.php.
Denegar el acceso a los directorios críticos de wordpress si la petición no viene desde el sitio web
Si las peticiones viene de fuera del dominio especificado se redirecciona al usuario a la página principal del sitio web.
Así se previene el acceso a los directorios que son parte del core de wordpress, así como al módulo de administración y al directorio donde almacenamos el contenido.
De este modo, cuando las peticiones van al directorio includes, wp-admin o wp-content lo redirecionamos con un 301.
Proteger el acceso al directorio wp-content, donde se almacena parte del contenido que generas como usuario de wordpress
Para reforzar la seguridad en los directorios críticos de wordpress, añadiremos una hoja index.php en blanco a los directorios, asegurando un redireccionamiento en modo 301 si hay alguna petición directa a los ficheros alojados ahí.
Desactivar la posibilidad de linkear externamente las imágenes del dominio
De este modo protegerás que la gente embeba las imágenes directamente desde tu blog, ahorrando en gasto de banda y preveniendo el robo de contenido sin permiso.
Hay una opción, desactivada en el ejemplo, que te permite asignar una imagen que saldrá en lugar de la original si se da el hotlinking.
Proteger el acceso a los ficheros .htaccess y wp-config.php.
De este modo protegerás el acceso a los dos ficheros más importantes de la instalación de wordpress, el wp-config.php y el fichero .htaccess del que ahora estamos hablando.
A alguien se le ocurre como mejorar este modelo?
Comments(1)
thank you, guy
Insert Comment