13 cosas que debes cambiar inmediatamente en tu WordPress.

Aunque no soy muy dado a guías, me parece interesante compartir unos apuntes básicos. Se completan en 10 minutos y tratan de mejorar la seguridad de tu web. Son configuraciones que debes cambiar inmediatamente en tu WordPress. Y es que por muy básicas que sean, la mayoría de gente sigue sin aplicarlas.

Quería algo fácil, casi insultante. Tan sencillo que sólo haga falta una cuenta FTP y el panel de administración. Todo aquel que haya instalado un WordPress en su vida debería ser capaz de seguirlo.

 

#1 – Elimina la cuenta admin

No dudo que sea un golpe fuerte para tu ego pero créeme, si tienes algún lector, te reconocerá por tu nombre.

Cualquiera que haya instalado un WordPress sabe que admin es el usuario por defecto, y además, el que posee todos los poderes. Eso lo hace muy apetecible para los ataques de fuerza bruta. Se trata de un tipo de ataque frecuente entre malhechores que consiste en, conociendo un username probar todas las posibles combinaciones como contraseña. Y no te imaginas lo rápidos que son los ordenadores probando combinaciones.

No tientes a la suerte. La cuenta admin no tiene cabida en tu blog.

Cómo lo hago:

  • Crea un usuario nuevo y darle permisos de “Administrador”.
  • Login con el usuario recién creado.
  • Elimina el usuario admin (el viejo). Preguntará si quieres eliminar los posts existentes o enviarlos a otro usuario. Elige la segunda opción y asígnalos al usuario que acabas de crear.

 

#2 – Utiliza nickname en lugar de username

Las cuentas nuevas, utilizan por defecto el valor username. Este es el valor que WordPress muestra como autor al escribir un post. Al igual que pasa con la cuenta admin, a partir de un username conocido y con la dosis de paciencia adecuada, obtener contraseñas a base de fuerza bruta no es complicado.

Solución:

  • Editar el “Alias” / “Nickname” del usuario. Éste será el nombre con el que se mostrará el usuario, ocultando así su username.

Intento ilustrarlo un poco mejor con el antes, y el después.

WordPress username vs WordPress nickname

 

#3 – Elige una contraseña “Strong”

Utiliza (sí, imperativo) contraseñas complejas, con el mayor número de caracteres posible. Cuanto más compleja sea una contraseña más costará a cualquier persona, ordenador o programa obtenerla.

Independientemente de lo que diga WordPress, puedes comprobar la fortaleza de tu contraseña mediante esta fantástica herramienta. Cabe destacar que esta práctica es recomendable para cualquier servicio que utilices en la red.

 

#4 – Eliminar el archivo readme.html de la carpeta raíz

Toda instalación de WordPress viene con un archivo readme.html en la carpeta raíz. Este archivo expone la versión de WordPress que está siendo utilizada. Es una torpeza, se mire por donde se mire. Aportar pistas gratuitas a posibles atacantes es una forma fantástica de acabar de heces hasta el cuello.

Hazte un favor y elimina este archivo. Lo único que hará es causarte problemas.

 

#5 – Elimina temas y plugins que no utilices

Cada tema o plugin es como una nueva puerta en casa. Cuantas más haya, más tendremos que supervisar. Y por tanto, aumenta la posibilidad de que algún pestillo no esté bien cerrado.

Al instalar un plugin, estamos añadiendo una nueva puerta a nuestra casa. Si la puerta está defectuosa, muy posiblemente no nos daremos cuenta hasta que alguien la tire abajo.

Es por eso por lo que cada plugin o cada tema, es potencialmente peligroso para nuestra web. La seguridad de todo el bloque está directamente relacionada con la fortaleza / debilidad de sus plugins.

Por tanto:

  • Elimina todos los plugins innecesarios.
  • Elimina todos los plugins que no utilices.
  • Elimina todos los temas innecesarios
  • Elimina todos los temas que no utilices.

 

#6 – Genera un archivo robots.txt en condiciones

User-agent: *

Disallow: /feed/
Disallow: /trackback/
Disallow: /wp-admin/
Disallow: /wp-content/
Disallow: /wp-includes/
Disallow: /xmlrpc.php
Disallow: /wp-

El archivo robots.txt es utilizado por los crawlers. Son programas (como Googlebot) que analizan la web de forma automática. Entre otras cosas, se encargan de que todo el contenido de una web se vea en los buscadores. Rastrea todo lo que encuentra por el camino a no ser que nosotros le indiquemos lo contrario. El generar por nuestra cuenta un archivo robots.txt nos ayudará a que Google (y otros buscadores) sepa qué mostrar en los resultados de búsqueda y qué no.

Solución:

Oye, esto es demasiado fácil, ¿verdad?

 

#7 – Desactivar los errores de la página de Login

function login_errors_message() {
	return 'Ooooops!';
}
add_filter('login_errors', 'login_errors_message');

Primeras lineas de código. Seguro que alguno ya no ha podido resistirse y ha ido corriendo al baño. Bueno, para el que quede por aquí, debo decirte que me siento orgulloso de ti.

Este código anula los errores de la página de Login y sustituye cualquier mensaje informativo por un clarificador “Ooooops!”. Con esto evitamos que WordPress arroje información valiosa, como “el usuario es incorrecto” o “La contraseña que introdujo para el usuario xxx no es correcta”.

Solución:

  • Añadir esas 3 lineas al final del archivo functions.php, en el propio tema.

 

#8 – Eliminar la basura de la etiqueta <head>

remove_action('wp_head', 'wp_generator');
remove_action('wp_head', 'rsd_link');
remove_action('wp_head', 'wlwmanifest_link');
remove_action('wp_head', 'index_rel_link');
remove_action('wp_head', 'parent_post_rel_link', 10, 0);
remove_action('wp_head', 'start_post_rel_link', 10, 0);
remove_action('wp_head', 'adjacent_posts_rel_link', 10, 0);

La etiqueta <head> del HTML viene, por defecto, repleta de porquería. Podemos observar la versión de WordPress, RSD, Windows Live Writter, etc.

La solución no es otra que eliminar toda esa basura:

  • Añade esas 7 lineas al final del archivo functions.php, en el propio tema.

 

#9 – Desactivar editor del panel de administración

define('DISALLOW_FILE_EDIT', true); // Added manually

Este es uno de mis favoritos. Desactiva la opción del editor de código. Evita que cualquier usuario con acceso al panel pueda modificar los archivos CSS/PHP. Y de paso, previene que tus manazas puedan cargarse la web.

Solución:

  • Añadir esta linea al final del archivo wp-config.php, en el directorio raíz de WordPress.

 

#10 – Desactivar actualizaciones de plugins desde el panel

define('DISALLOW_FILE_MODS', true); // Added manually

Este es otro de los que me gusta. Desactiva la posibilidad de actualizar e instalar plugins desde el panel de administración. Es algo muy recomendable por los problemas que puede ocasionar en las actualizaciones. Evitamos además que alguien que haya conseguido colarse en nuestro panel quite y ponga según le plazca.

Solución:

  • Añadir esta linea al final del archivo wp-config.php, en el directorio raíz de WordPress.

 

#11 – Desactivar el código HTML en los comentarios

Un must para mi. En pocas palabras y para entendernos a la primera, se encarga de desactivar el código HTML en los comentarios. No es que borre el código, sino que lo procesa para que no se ejecute. Parece lo mismo pero no lo es.

¿Y cuál es el problema de aceptar código HTML? Permitiendo insertar algo tan teóricamente inofensivo como imágenes, un usuario avanzado podría escribir un código como este:

<img/onload="alert(String.fromCharCode(89,111,117,32,103,111,116,32,104,97,99,107,101,100,32,98,121,32,119,119,119,46,97,117,114,107,101,110,46,110,101,116))" src="http://www.holafamilias.com/wp-content/uploads/2010/11/hola-11.jpg"/>

Cada vez que alguien lee un post, se acaban cargando los comentarios. Y con los comentarios se estaría ejecutando el código indeseado. Por tanto, el post ejecutaría por defecto el código malicioso. Y os preguntaréis, ¿qué es lo que hace?

Hacked image preview

Este código en concreto es una simple prueba. Aparte de ser tremendamente molesto no tiene mayor peligro. Pero con un poco de imaginación es muy sencillo hacer redirecciones, robar cookies, mostrar formularios falsos para robar claves, etc. Una carnicería, vaya.

La solución, una vez más:

  • Copia esta linea al final del archivo functions.php, en el propio tema.
add_filter('pre_comment_content', 'wp_specialchars');

 

#12 – Fijar los valores AUTH / SALT

define('AUTH_KEY',         '#$h&k?eUK7pYs5|[RD[|JT+56l*M_1`t4');
define('SECURE_AUTH_KEY',  'I3$gIXoznohgW/DQs<&E(Eu7mVEc[qNU-

El archivo wp-config.php contiene unas lineas parecidas a estas. Es muy recomendable cambiar los valores por defecto y generar los tuyos propios. Al tratarse de una guía básica no entraré en demasiadas explicaciones. Quedémonos con que son claves que se utilizan para el funcionamiento interno de WordPress.

Cómo aplicarlo:


  • Copiar el código desde el generador de WordPress.
  • Editar wp-config.php en la carpeta raíz de WordPress.
  • Reemplazar esas lineas con los valores obtenidos en el generador de WordPress.
 

#13 - (Pre-instalación) Cambia el prefijo de las tablas de la BD

Cuando instales un WordPress acuérdate de cambiar el prefijo de las tablas de la base de datos. Por defecto viene "wp_", prefijo que ya todos conocemos. El cambiarlo hace actuar "a ciegas" a un posible malhechor. Es fundamental si estás instalando de nuevo desde cero.   Información sencilla para que tu abuela pueda montar un WordPress en condiciones, aunque no por eso menos eficaz. Son los cambios que nos gustan. Los que con poco esfuerzo vemos grandes resultados. Así que si eres tan vago imprudente de no querer invertir 10 minutos de tu tiempo, por lo menos invéntate una excusa. Di que se te borró la cuenta FTP, internet no funcionaba o tu gato cambió la clave. Pero no digas que no te pusieron sobre aviso. ); define('NONCE_KEY', '1/gsi z?j+!NDB`|jOAP$a);n)oz-zdr=eo7'); define('AUTH_SALT', 'uIOw|h+dfANSZA#w_zW$T-rD)UQ6a$4aDWG`9'); define('SECURE_AUTH_SALT', '0xS/-[iY6wE|c;)77r86wCOC%yoWzs+Jl,eJ'); define('LOGGED_IN_SALT', '|l(EuDWsamU|.n|Jf{&-R8l_&[%R`X{{g-Q{'); define('NONCE_SALT', '#,6D8l=YC<q24+7+Q`l1b!,sDW:+K^e8>meS');

El archivo wp-config.php contiene unas lineas parecidas a estas. Es muy recomendable cambiar los valores por defecto y generar los tuyos propios. Al tratarse de una guía básica no entraré en demasiadas explicaciones. Quedémonos con que son claves que se utilizan para el funcionamiento interno de WordPress.

Cómo aplicarlo:

  • Copiar el código desde el generador de WordPress.
  • Editar wp-config.php en la carpeta raíz de WordPress.
  • Reemplazar esas lineas con los valores obtenidos en el generador de WordPress.

 

#13 – (Pre-instalación) Cambia el prefijo de las tablas de la BD

Cuando instales un WordPress acuérdate de cambiar el prefijo de las tablas de la base de datos. Por defecto viene “wp_”, prefijo que ya todos conocemos. El cambiarlo hace actuar “a ciegas” a un posible malhechor. Es fundamental si estás instalando de nuevo desde cero.

 

Información sencilla para que tu abuela pueda montar un WordPress en condiciones, aunque no por eso menos eficaz. Son los cambios que nos gustan. Los que con poco esfuerzo vemos grandes resultados.

Así que si eres tan vago imprudente de no querer invertir 10 minutos de tu tiempo, por lo menos invéntate una excusa. Di que se te borró la cuenta FTP, internet no funcionaba o tu gato cambió la clave. Pero no digas que no te pusieron sobre aviso.

Thanks! I promise to only send relevant stuff to your inbox.

Join the conversation

83 Comments

  1. Me ha encantado vuestro articulo y me ha sabido a poco pero ya sabeis lo que dice el dicho "si lo bueno es breve es dos veces bueno". Me gustara volver a leeros de nuevo.
    Saludos

  2. Muy bueno, muy conciso, muy claro, estupendamente redactado y con una magnífica presentación, de lo más adecuada. Volveré a por más 😀

  3. Da gusto encontrarse con información tan bien explicada como la que expones en este artículo

    Muchas gracias y he seguido tus informaciones. En el caso de un blog descubrí que esa línea para deshabilitar el editro dentro de Apariencia, la había llamado un plugin de seguridad (seguí la instrucción a la inversa)

    He aprendido mucho y por eso te quedo agradecido.

    Un saludo

    1. Buenas Txerra,

      Buena pregunta. Lo mejor es no saturar demasiado WordPress con plugins. Yo utilizo estos 5 (siempre):
      – Akismet: Para prevenir el spam en los comentarios. Muy recomendable.
      – Better WP Security: Mejora la seguridad de WordPress utilizando prácticas recomendadas. Muy recomendable.
      – WP Super Cache: Acelera la página "cacheando" el contenido. Es decir, se guarda una copia de la última versión modificada para poder mostrarla rápidamente a nuevos usuarios. Muy recomendable.
      – Google XML Sitemaps: Crea un esquema con todo el contenido de nuestra página. Podemos indicar a Google este archivo a través de Google Webmaster Tools.
      – WordPress SEO: Optimiza la web para que se muestre mejor en buscadores y redes sociales. El mismo plugin nos recomienda acciones a tomar.

      En concreto, los 3 primeros son *imprescindibles*. ¡Espero que te haya servido!

      Saludos,
      Aurken

      1. Muy buenos: el post y la respuesta a la pregunta de Txerra Cirbián. Y aunque mis dos abuelas murieron ancianas y mucho antes de la era Internet, seguramente se les habría hecho fácil siguiendo tus instrucciones a pesar de que no sabían leer jeje… bueno al menos a uno de sus nietos se le hizo fácil pero será posible cambiar el prefijo wp de la BD sin alterar nada? El nieto de la abuela (o sea Yo) no hizo eso a tiempo.

  4. 1000 gracias hermano, un post con elementos de seguridad para cualquier site o blog wn WP… de 10 – 10… ya lo comparto con mis colegas y estudiantes de marketing digital… saludos

  5. Fantastico aporte!!

    Tan solo una pequeña duda. Veo que hay algunos puntos donde modificas el archivo config.php. En el caso de que WP actualice su version, tocara repetir estos pasos, ya que la nueva instalacion "pisara" ese fichero config.php, cierto?

    Gracias y un saludo!

  6. La verdad es que esos 13 pasos me parecen genial la verdad. Lo que pasa es que no es recomendable no actulizar los plugins , considero yo, pero bueno. Esta genial tu post. Gracias.

  7. Muchas gracias muy buenos consejos! un único problema he tenido al renombrar las tablas, claro el sitio está casi listo y al renombrarlas me aparece nuevamente la página de instalación de wordpress, alguna idea?

  8. Hola! Primero que nada agradecerte porque este artículo es excelente! Muy interesante y enseñando cosas que uno no suele saber. Instalar WordPress hoy por hoy es parecido a instalar un windows, en que uno lo instala y cree que ya está todo listo, ignorando que hay mucho que configurar para que funcione bien y seguro. Te hago una pregunta, al día de hoy, hay algún cambio en estos pasos? Leí que por ejemplo el robots.txt debiera cambiar un poquito, que hay algunas carpetas que ahora ya no hay que bloquear(es cierto?). Quería confirmar que estos pasos fueran todos aún vigentes. Gracias por todo!

  9. Hola!! muy bueno esto de proteger el blog wordpress. Soy inexperto en esto y he podido aplicar casi todos los puntos. Me he quedado trabado en el de los robots…(punto 6). Alguien puede dar un poco de luz en este asunto, para qué sirve.. cómo se configura. El fichero no consigo descargarlo. GRACIAS!!!

  10. hola amigo recurri a tu blog por que esta genial muy bien explicado , sucedio que me aprecio una de mis cuentas de administrador renombradas por user hades procedi a bloquearla y luego vi que de la misma cuenta bloqueda renombraron la direccion de email , tenes alguna idea de que tipo de ataque es y como solucionarlo

  11. Hola, cuanto costaria aplicar todas esas medidas a mi web-blog?
    Si realizan ese trabjo, estaria interesado.

    Saludos cordiales.

  12. Fabuloso artículo.
    ¿Todos los puntos que comentas siguen vigentes o alguno ya está superado?
    Un saludo y gracias

    Te sigo

  13. Hola Aurken, bueno muy buenos tu aporte te lo agradezco mucho pero tengo una pregunta haber si me puedes ayudar. Bueno yo tengo una web en wordpress y me gustaría que al lado de mi nombre saliera la palabra admin pero solo cuando responda comentarios. si me puedes ayudar te lo agrade seria mucho saludos y suerte.

  14. Hola
    Gracias por el post. Soy algo inexperta en el tema y seguido tus pasos uno por uno sin saber muy bien las consecuencias de cada uno de ellos.
    En un momento dado me he dado cuenta que yo, que soy la única administradora de la web, he perdido el botón de añadir plugin, la posibilidad de actualizar wordpress…. y otras funciones…
    He estado dos días hasta descubrir que al tocar wp-config.php, concretamente al meter el código: define('DISALLOW_FILE_MODS', true); // Added manually era la causa de mis males…. Hay una manera de desactivar estas cosas para otros/as usuarias pero que quede activo para la administradora, o sea, yo.
    Por otro lado, también he perdido la opción de roles y no sé si tiene que ver con alguno de los cambios que he realizado siguiendo estos pasos.
    ¿Podrías ayudarme con esto?
    Quería, además, preguntarte si hay una posibilidad de otorgar roles a usuarios/as para que puedan modificar sólamente una página, por ejemplo, una asociación invitada en la web, que tiene su propio espacio y que pueda entrar en su espacio y modificar a su gusto, pero no pueda modificar el resto de la web. Pero que sea público, no hablo de contenido privado, que su contenido sea público pero sólo puedan modificar su página..
    Gracias por todo, María.

  15. Normalmente no suelo, escribir en sitios ni en foros como estos, pero es que… que cojones, te lo mereces.
    Muchas Gracia por la ayuda prestada en este tutorial y Gracias por esta gran explicación
    Un cordial saludo

  16. ¡Genial! Me ha sido de gran ayuda e iluminación 🙂 Por otro lado, me comentaron que era bueno hacer desaparecer o redireccionar o cambiar… la página de login a la zona de administración de wordpress. ¿Es cierto que es bueno? Si es así, ¿cómo se haría? Me han comentado que existen plugin para eso.

    ¡Gracias por tu ayuda!

  17. Pregunta absurda. Si llevo a cabo el punto 10 como/desdedonde actualizo los pluggins?! Gracias!

  18. Muchas gracias por el artículo, aprendí mucho. Voy a guardar esta eb en mis favoritas, ojalá no desaparezca.

  19. Muy buen post!
    Clarito y directo para quienes están empezando, te animo a crear un segundo post sobre todas las formas para proteger el inicio de sesión en wordpress, complementaría a las mil maravillas con esta entrada y aportaría más valor a tu blog ( tarea dificil por lo que veo jeje )
    Te seguiré fenómeno, un saludo!

  20. Lo del muñequito en los comentarios lo he probado y al funcionar me ha dolido tanto como si me hubieran violado el ojete.

    Asi que me he puesto como un loco a hacer todas las modificaciones.

    No me queda más narices que reconocer que sabes lo que haces, no eres otro sabiondo de la web.

    Saludos cabreados por tener que reconocerlo.

  21. Post interesante, aunque algunas acciones ya conocía hay otras muy útiles que utilizaré sin duda en futuras instalaciones.

    Gracias por compartir y crear.

    Saludos.

    1. Hola Zorisbel,
      Simplemente borra las dos lineas que has añadido.
      – define('DISALLOW_FILE_EDIT', true); // Added manually
      – define('DISALLOW_FILE_MODS', true); // Added manually

  22. Hola Aurken

    Hace un par de años seguí todos y cada uno de los consejos que das en este artículo. Magnífico, por supuesto.

    Quería preguntarte si todos los puntos que comentas están aún vigentes o algunos ya no son necesarios.
    Lo pregunto más que nada por si alguno de ellos ha quedado obsoleto y puede provocar problemas de SEO.

    Mil gracias y un saludo

  23. Excelente!!!! claro, sencillo y super divertido, te felicito y muchas gracias.

Leave a comment

Your email address will not be published. Required fields are marked *