• Ir a navegación principal
  • Ir al contenido principal
  • Ir a la barra lateral primaria
  • Ir al pie de página

Diseñador web WordPress Freelance

Diseño web, WordPress y Marketing Online

  • Inicio
  • Portfolio
  • Blog
  • Contacto

Seguridad, Wordpress · 1 febrero, 2016

Proteger WordPress con htaccess

En éste tutorial vamos a ver cómo proteger WordPress con htaccess, sin necesidad de usar pesados plugins que ralenticen nuestra web y engorden nuestra base de datos.

Un archivo .htaccess (hypertext access)  es un archivo en formato ASCII  popularizado por el Servidor HTTP Apache, que es el más usado en el mundo cuando hablamos de servidores Web. Permite definir diferentes directivas de configuración para cada directorio.

Los archivos .htaccess se usan, entre otras cosas, para especificar restricciones de seguridad. Y eso es lo que vamos a ver en éste tutorial. Vamos a mejorar muchísimo la seguridad de nuestro WordPress añadiendo unas pocas líneas de código.

Por defecto, un archivo .htaccess tras una instalación de WordPress está así:

1
2
3
4
5
6
7
8
9
10
# BEGIN WordPress
 
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
 
# END WordPress

Pues bien,vamos a ir añadiéndole pequeños trozos de código para proteger nuestro WordPress.

1.Restringimos el acceso  al directorio /wp-includes

Éste directorio contiene, esencialmente, el core de WordPress. Nada ni nadie debería tocarlo. Ni nosotros(en la mayoría de los casos), ni un plugin, un theme, etc…

Para hacerlo, pegamos en nuestro .htaccess el siguiente código:

1
2
3
4
5
6
7
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]

2.Restringimos el acceso  al archivo wp-config.php

El archivo wp-config.php contiene, entre otras cosas, los datos de acceso a nuestra base de datos (nombre, usuario, contraseña, etc.)

Lo protegemos añadiendo:

1
2
3
4
<Files wp-config.php>
Order Allow,Deny
Deny from all
</Files>

3.Protegemos el propio .htaccess

¿Quién protege a .htaccess?. Pues éste código:

1
2
3
    Order allow,deny
    Deny from all
    Satisfy all

4.Cerramos el acceso a todos los directorios de themes y de plugins.

Vamos a proteger el acceso a todos los directorios de themes y de plugins, es decir, todo lo que esté en los directorios:

wp-content/plugins

wp-content/themes

1
2
3
4
5
6
RewriteCond %{REQUEST_URI} !^/wp-content/plugins/file/to/exclude\.php
RewriteCond %{REQUEST_URI} !^/wp-content/plugins/directory/to/exclude/
RewriteRule wp-content/plugins/(.*\.php)$ - [R=404,L]
RewriteCond %{REQUEST_URI} !^/wp-content/themes/file/to/exclude\.php
RewriteCond %{REQUEST_URI} !^/wp-content/themes/directory/to/exclude/
RewriteRule wp-content/themes/(.*\.php)$ - [R=404,L]

5.Bloqueamos en el login, todas las IP´s (menos la nuestra)

Pues eso, si alguien intenta loguearse desde una IP no autorizada, le saldrá un error 403 de acceso prohibido:

1
2
3
   Order Allow,Deny
   Deny from all
   Allow from 127.0.0.1

Tendréis que cambiar esa IP por la vuestra, puedes hacer clic aquí para saber cuál es tu IP.  Pero cuidado!, tenéis que tener una IP fija para hacer esto.

6. Bloqueamos el acceso a subdirectorios

1
Options -Indexes

7. Bloquear SPAM

1
2
3
4
5
6
RewriteEngine On
RewriteCond %{REQUEST_METHOD} POST
RewriteCond %{REQUEST_URI} .wp-comments-post.php*
RewriteCond %{HTTP_REFERER} !.*tu_dominio.com.* [OR]
RewriteCond %{HTTP_USER_AGENT} ^$
RewriteRule (.*) ^http://%{REMOTE_ADDR}/$ [R=301,L]

8. Bloquear IP´s específicas de SPAM

Con éste código bloqueamos IP´s específicas que no estén haciendo SPAM, cambia la IP del ejemplo por la que quieras bloquear:

1
2
3
   order allow,deny
   deny from 159.89.156.129
   allow from all

Pues con estos sencillos trozos de código,y sin tener que usar ningún plugin, hemos mejorado muchísimo la seguridad de nuestra web en WordPress. 

¿Necesitas más ayuda?Si quieres seguir aprendiendo o necesitas mi ayuda, puedes:

  • Contactar para ver cómo puedo ayudarte.
  • Suscribirte para no perderte ninguna de mis publicaciones.
  • Si quieres comentar, adelante, te responderé encantado.

Muchas gracias por leerme 😉

 

Comparte si crees que le puede servir de ayuda alguien.

Archivado en:Seguridad, Wordpress

Diego Fresno

Diego Fresno López

Diseñador web freelance especializado en WordPress y Genesis.

Interacciones con los lectores

Comentarios

  1. Nacho dice

    12 febrero, 2016 en 9:23 am

    Hola buenos días,

    Podrias indicarme dónde se pegan los códigos? supongo que entre las etiquetas pero lo realizo y no funciona correctamente.

    Un saludo

    Responder
    • Diego Fresno dice

      12 febrero, 2016 en 9:36 am

      Perdona, Nacho, te respondí antes, pero en relación al post de hoy :-S

      Los tienes que copiar y pegar tal cual en el archivo .htaccess que está en la raiz de tu hosting.

      Un saludo.

      Responder
  2. Sexymetru dice

    8 mayo, 2016 en 10:03 pm

    Hola ¿cómo estás? yo use este código para proteger el wp-config y funcionó un poco mejor:

    order allow,deny
    deny from all

    Y, tengo una duda, el código para proteger los themes y los plugins y funciona solo que desapareció el header y al menú se le fue el color así que lo tuve que quitar; ¿no sabes cómo puedo solucionarlo?

    Gracias, saludos…

    Responder
    • Diego Fresno dice

      16 mayo, 2016 en 10:29 am

      Hola!!!!.
      Pues muchas gracias por enviarme tu feedback y mejorar el código 😉
      Mmmmm, la verdad es que no sé por qué te está pasando eso. Has hecho más cambios además de el htaccess?. Has probado a proteger themes y plugins por separado para ver cuál está dando el error?.
      Ya me dices…

      Un saludo!.

      Responder
  3. Carlos M. Díaz Honrado dice

    7 noviembre, 2016 en 1:26 pm

    Hola.

    Creo que tienes que habilitar el acceso a la API de AJAX de WordPress al Wp-admin:

    # Permite a los archivos css, js, jpg, jpeg, gif y png de Themes, Widgets o plugins en acceso al archivo admin-ajax.php para poder ejecutar llamadas a la API Ajax de WordPress

    Order Allow,Deny
    Allow from All
    Satisfy Any

    Order Allow,Deny
    Allow from All
    Satisfy Any

    Responder
  4. Carlos M. Díaz Honrado dice

    7 noviembre, 2016 en 1:27 pm

    Perdón este es el código.

    # Permite a los archivos css, js, jpg, jpeg, gif y png de Themes, Widgets o plugins en acceso al archivo admin-ajax.php para poder ejecutar llamadas a la API Ajax de WordPress

    Order Allow,Deny
    Allow from All
    Satisfy Any

    Order Allow,Deny
    Allow from All
    Satisfy Any

    Responder
  5. Carlos M. Díaz Honrado dice

    7 noviembre, 2016 en 1:29 pm

    Perdón de nuevo, por alguna razón no se muestra correctamente e código en el comentario.

    Puedes verlo en : http://infinitopuntocero.com/wordpress-seguro-ii/

    Feliz semana.

    Responder

Deja una respuesta Cancelar la respuesta

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

diegofresno.com te informa que los datos de carácter personal que me proporciones rellenando el presente formulario serán tratados por Diego Fresno López como responsable de esta web.
La finalidad de la recogida y tratamiento de los datos personales que te solicito es para gestionar los comentarios que realizas en este blog.
Legitimación: Consentimiento del interesado.El hecho de que no introduzcas los datos de carácter personal que aparecen en el formulario como obligatorios podrá tener como consecuencia que no atender pueda tu solicitud.

  • Como usuario e interesado te informo que los datos que me facilitas estarán ubicados en los servidores de Raiola (proveedor de hosting de diegofresno.com) dentro de la UE. Ver política de privacidad de Raiola.
  • Podrás ejercer tus derechos de acceso, rectificación, limitación y suprimir los datos en hola@diegofresno.com así como el derecho a presentar una reclamación ante una autoridad de control.
    Puedes consultar la información adicional y detallada sobre Protección de Datos en mi página web: https://diegofresno.com, así como consultar mi política de privacidad.

Barra lateral primaria

Últimas Entradas

Filtrar spam en Analytics

Cómo filtrar el spam de Analytics

Crear custom post types

Crear custom post types en WordPress

Pasar WordPress a SSL

Añadir áreas de widget personalizadas en WordPress

Añadir un nuevo área de widgets personalizado en WordPress

Importar y exportar widgets en WordPress

Importar y exportar widgets en WordPress

Suscríbete al blog

Footer

diegofresno.com Diseño web y Marketing Online Av. Argentina, 132. Oficina 239 33213 Gijón Asturias

  • Inicio
  • Portfolio
  • Blog
  • Contacto
  • Facebook
  • LinkedIn
  • Aviso Legal
  • Políticas de privacidad
Google ârtner Diego Fresno
DMCA.com Protection Status