13 pasos para configurar WordPress

1.  Eliminar la cuenta “Admin”

Seguramente prefieres utilizar este usuario ya que es el “Todo poderoso” pero que mejor que te reconozcan por tu nombre.

Cualquiera que haya instalado  WordPress sabe que admin es el usuario por defecto, y  que tiene todos los poderes. Esto lo hace demasiado vulnerable para ser atacado en cualquier momento. Se trata de un tipo de ataque frecuente 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 te arriesgues y cambiala lo antes posible.

Cómo lo hago:

  • Crea un usuario nuevo y darle permisos de “Administrador”.
  • Login con el usuario recién creado.
  • Elimina el usuarioadmin” (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.

3. Elige una contraseña “Fuerte”

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

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.

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.

¿Qué es lo que hace?

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-$'); 
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.