Cuando creamos una web en wordpress (y yo me incluyo) normalmente solemos dar mucha importancia al aspecto, las funcionalidades, la usabilidad o el contenido pasando por alto muchas veces un factor tan importante como la seguridad.
¿Te imaginas levantarte mañana por la mañana y después de semanas o meses de trabajo encontrarte con que te han hackeado la web? Yo prefiero ni pensarlo.
Para intentar evitar eso, hoy os traigo 8 sencillos consejos (algunos mas que otros) para mejorar la seguridad de tu web en WordPress. Ya sabes, mas vale prevenir que lamentar.
Securizar al 100% una web creada con wordpress es casi casi misión imposible. Al final, si alguien se empeña en acceder a tu web y tiene los conocimientos necesarios, de un modo u otro, es probable que lo consiga.
Hay mucha gente colaborando en el código de WordPress, infinidad de plugins y themes desarrollados por terceros y es muy fácil que aparezca un bug por algún lado que les haga la vida más fácil a los hackers.
Nuestro objetivo hoy es ponérselo tan difícil como podamos. Si quieren entrar, al menos que se lo ganen.
Uno de los grandes problemas de WordPress en el aspecto de seguridad (por suerte con cada nueva versión se esfuerzan en mejorarlo) es que da muchas pistas a un posible intruso. Más aun si utilizas la instalación automática de tu alojamiento, de ahí que en mi artículo sobre la instalación de WordPress te recomendara hacerlo de una forma un poco mas artesanal. Además de para aprender como funciona, para no dejar algunas cosas en manos de un instalador automático.
Si tu ves una web realizada con este CMS de entrada ya sabes que es muy probable que su dueño acceda a ella a través de http://unsitiocualquiera.com/wp-login.php o que acceda al panel de administración a través de http://unsitiocualquiera.com/wp-admin/. Es casi seguro que tendrá el archivo config.ini en la raíz del sitio y bastante probable que los prefijos de las tablas de la base de datos sean wp_. Incluso podría ser que si se ha instalado con un instalador automático, el usuario por defecto admin aun este creado.
Podríamos seguir buscando pistas y más pistas muy fácilmente. Y seguramente, si alguien quiere acceder a esa web, estos detalles serán los primeros que buscará.
Para evitar este tipo de cosas y mejorar la seguridad de tu WordPress, veremos enseguida una serie de tips muy sencillos, al alcance de todo el mundo, que como mínimo le pondrán las cosas un poco mas difíciles al próximo maleante que se fije en tu web.
Así que sin mas dilación, vamos a ello.
1.-Nombre de usuario
Puede parecer muy obvio, pero te sorprendería la cantidad de sitio a los que aun se accede con el típico usuario admin.
Debes evitar este tipo de usuario (admin, administrador, editor, etc…). Del mismo modo, evita usar tu nombre o cualquier referencia al dominio del sitio.
En general, debes evitar cualquier nombre de usuario que pueda ser predecible.
Ten en cuenta, que muchos de los accesos no deseados a WordPress se hacen por fuerza bruta y ese tipo de nombres de usuario, serán los primeros que probarán.
[alert-announce]En informática se denomina ataque de fuerza bruta a la forma de recuperar una clave probando todas las combinaciones posibles hasta encontrar aquella que permite el acceso. Esto se logra con programas a los que se carga una lista de usuarios y contraseñas mas frecuentemente utilizados y se encarga de ir probando todas las combinaciones una a una hasta que encuentra la correcta[/alert-announce]
Hay que distinguir entre nombre de usuario y alias. WordPress, por defecto, utiliza el nombre de usuario como el nombre que se muestra públicamente y esto es algo que debes cambiar. Para ello, accede a editar un usuario y verás un apartado como este:
El nombre de usuario, como ves esta en gris y no lo puedes cambiar. Pero puedes meter un alias en el campo para ello y luego en el desplegable del nombre a mostrar elegir el alias. De este modo, podría firmar mis artículos como Santi Centelles (poniéndolo en mi campo Alias), pero estar accediendo a mi panel de control con el nombre de usuario pericodelospalotesysuprimodelsegundo (en el campo nombre de usuario).
Si ya tienes creado un usuario admin, con tu nombre o similar (ya sea porque tu autoinstalador lo creó así o porque no te pareció inapropiado al instalar tu WordPress), la solución es sencilla. Creas un nuevo usuario. Accedes a la administración con el nuevo usuario y borras el antiguo. En el momento de borrar, te pedirá que hacer con los artículos que ya estaban escritos por ese usuario. Le dices que los asigne al nuevo usuario y listo.
2.- Contraseña segura
Si, lo sé, este también es de cajón. Pero es que aun hay gente que utiliza contraseñas como password o 123456. ¿Que no te lo crees? Mira la lista de anual de peores passwords de Splashdata y sorprendete.
¿Como debería ser una contraseña segura?
-Debería tener como mínimo 8 caracteres.
-Debería ser alfanumérica. Contener letras minúsculas, letras mayúsculas, números y signos de puntuación.
–No utilices información personal en ella. Nada de fechas, nombres de parejas o hijos, etc… Que nos conocemos.
Una buena contraseña debería tener un aspecto parecido a esta: Ow\SoJs2 y para bordarlo, deberías tener una distinta para cada servicio que utilices. Es evidente, si utilizas la misma en todos los servicios, el día que alguien consiga descubrir una, las descubre todas. Y de verdad, vale la pena perder algo de tiempo con esto, que no nos damos cuenta de la importancia que tiene, hasta que nos pasa a nosotros.
Algunos trucos para crear contraseñas seguras y fáciles de recordar
El primer truco consiste en utilizar una frase que te sea fácil de recordar y utilizar la primera letra de cada palabra. Por ejemplo, en lugar de usar tu fecha de cumpleaños, que la adivinaría hasta tu vecino del tercero, podrías usar la frase «Yo nací el 29 de Julio del 80» y cogiendo la primera letra de cada palabra quedaría Yne2dJd8. Fácil de recordar, difícil de descifrar.
Si quieres generar una para cada servicio que utilizas, puedes utilizar otro tipo de frase. Por ejemplo, la frase «Me gustaría hacer login en Gmail.com» podríamos transformarla en algo parecido a esto: MghleG.c. Fácil de recordar, difícil de descifrar y adaptable a cada servicio que utilices.
Que llevas mucho tiempo con las mismas contraseñas y las quieres cambiar. Cambias la frase, cambian todas las contraseñas. Sólo hay que usar un poco la imaginación.
El segundo truco consiste en crear un «algoritmo» propio y aplicarlo a cada servicio a utilizar. Dicho así suena complicado, pero ya verás como no. Por ejemplo. Quieres crear una contraseña para Gmail. Decides que tu algoritmo será ponerle un 15 delante, un 7 detras, la tercera letra en mayúscula y un punto al principio. La contraseña nos quedaría algo así: .15gmAil7. Fácil de recordar, difícil de descifrar.
Una vez tenemos nuestro «algoritmo» que es fácil de recordar, puedes crear todas las contraseñas seguras que quieras. Siguiendo con el mismo ejemplo, la de Facebook quedaría tal que así: .15faCebook7.
Que llevas mucho tiempo con las mismas contraseñas y las quieres cambiar. Cambias el algoritmo, cambian todas las contraseñas.
3.- Actualizar WordPress, theme y plugins regularmente
Actualiza tanto WordPress como el theme y los plugins que utilices en cuanto haya versiones nuevas. Más a menudo de lo que nos gustaría se descubren bugs y fallos en el código que pueden permitir accesos no deseados a nuestra instalación.
Los desarrolladores se esfuerzan en detectar y subsanar estos fallos tan pronto como aparecen y sacan una nueva versión de su código para solucionarlo. Es por esto que es importante mantener nuestro sistema actualizado como si de un sistema operativo se tratara.
4.- Utilizar Themes y Plugins originales
El que nunca haya descargado un programa pirata que levante la mano . La tentación de conseguir algo sin pagar es grande y los themes y plugins de WordPress no són una excepción.
El problema de piratería en este caso es que muchas veces los themes y plugins no originales pueden llevar scripts y códigos maliciosos que pueden echar al traste tu web en cuestión de segundos. Mas o menos los mismos que tardas en instalarlos.
Piénsalo por un momento. ¿Para que se molestaría alguien en comprar un theme para luego compartirlo con todo el mundo? Hay mucha gente de buena fe por ahí ¿Pero tanta?
Mi consejo es que utilices única y exclusivamente themes y plugins originales descargados o desde el repositorio oficial o desde la página web del desarrollador. Y ojo, que originales no siempre quiere decir de pago.
Intentaré publicar otro artículo pronto con recursos para conseguir themes y plugins de calidad gratuitos o de bajo coste en caso de no haberlos para alguna necesidad especial.
5.- Proteger wp-admin desde el panel de control
Esto es muy sencillo y te puede ahorrar muchos dolores de cabeza. Se trata de proteger el directorio wp-admin desde tu panel de control a nivel de servidor, para que solo se pueda acceder si se conoce el usuario y la contraseña para ese directorio.
Te muestro como hacerlo en CPanel que es uno de los más utilizados, pero es muy fácil de hacer sea cual sea el panel de control de tu proveedor.
Accede a tu Cpanel. Ve bajando hasta el apartado de seguridad. Verás algo parecido a esto:
Dale a Directorios protegidos por contraseña y se abrirá una ventana donde podrás elegir el directorio a proteger. Elige wp-admin y te aparecerá la pantalla a configurar. Es muy sencillo:
En la parte de arriba marcas la casilla de proteger el directorio y eliges el nombre de la ventana que aparecerá para pedirte usuario y contraseña.
En la parte de abajo, elegimos el nombre de usuario y la contraseña. Botón de agregar usuario autorizado y ya lo tienes.
[alert-note]Acuérdate de las recomendaciones que has leído arriba para el usuario y la contraseña. ¡Ni se te ocurra utilizar admin y 123456 que la liamos eh![/alert-note]
¿Que pasará después de proteger el directorio? Que primero tendrás que introducir el usuario y password que acabas de crear para acceder al directorio y una vez autenticado, podrás acceder al login de WordPress. Digamos que tendrás una doble verificación para acceder a la administración de tu web.
6.- Realiza backups regularmente
Es primordial realizar copias de seguridad de tu web periódicamente. Al menos una vez por semana y a poder ser de forma automática. Ya sabes lo cabroncete que es a veces el tal Murphy y falta que una semana se te olvide sacar el backup a ti, para que se pase el señor por tu página y se líe la de dios.
La forma mas sencilla es a través de plugin. Te muestro un par de ellos para automatizar tus copias de seguridad y incluso mandarlas a algún sistema en la nube como Google Drive o Dropbox.
Los dos son bastante parecidos y funcionan igual de bien. Me gustaría explicarte como funcionan, pero podría empezar a parecer esto un capítulo de la biblia. Mejor te los explico en detalle en otro artículo.
Es posible realizar las copias de seguridad a través del mismo Cpanel de tu servidor. También resulta sencillo, pero luego automatizarlo no tanto porque hay que usar CronJobs y eso lo veremos mas adelante.
Otro punto importante en cuanto a las copias de seguridad es contar con un buen proveedor de hosting. Por ejemplo, en Raiola Networks donde esta alojado este blog, realizan copias de seguridad cada 24h. Eso quiere decir, que en caso de estropicio, si yo no tengo una copia de seguridad reciente, ellos podrán restaurar la suya por mí. Ojo, que esto no quiere decir que nos olvidemos nosotros de las copias, debemos realizarlas, pero es una capa mas de seguridad por si todo lo demás falla.
7.- Limita los intentos de login
Esto es tan sencillo como instalar un plugin. Si por ejemplo, limitamos el número de intentos fallidos a 3, si alguien escribe mal el usuario y el pass 3 veces, no podrá volver a intentarlo hasta pasado un tiempo predefinido. ¿Que conseguimos con esto? Dificultar los ataques de fuerza bruta de los que he hablado un poco mas arriba. Estos ataques se basan en intentar el login infinidad de veces hasta encontrar la combinación correcta. Si limitamos los intentos de login, estamos protegiéndonos de este tipo de ataques.
Te dejo dos opciones que funcionan bien:
Limit login attempts: Es un plugin muy sencillo y aunque lleva mucho tiempo sin actualizarse, a día de hoy aun sigue funcionando bien.
Login Lockdown: Parecido al anterior. Este también es muy sencillo de usar y a diferencia del anterior, su creador lo actualiza regularmente. Login Lockdown, además de permitirte limitar el numero de logins y el tiempo a esperar si se fallan, crea una lista negra con las IP que han intentado acceder fraudulentamente a nuestro WordPress. Esta lista la podrás gestionar directamente desde el plugin, por si alguna IP ha sido incluida por error y debe borrarse.
8.- Cambiar el prefijo de las tablas de la base de datos
Como dije al principio, uno de los problemas de WordPress es la cantidad de pistas que da a los visitantes con intenciones de dudosa moralidad. Otra de esas pistas son los prefijos de las tablas de la base de datos. Si alguien quiere atacar tu sitio mediante una inyección SQL, lo primero que comprobará es si los prefijos de las tablas son los que vienen por defecto (que es algo que muy poca gente cambia). Si es así, como las tablas son conocidas, ya sabe todas (o casi todas) las tablas de tu base de datos.
La primera opción, y la mas sencilla es cambiarlos cuando haces la instalación de tu wordpress. Si utilizas un instalador automático del hosting que tengas contratado, seguramente no puedas modificarlos pero como ya has aprendido a instalar WordPress de forma manual hace poco, realizar este cambio te resultará muy sencillo.
[alert-note]Este proceso debe realizarse antes de instalar WordPress, si ya lo tienes instalado no servirá[/alert-note]
¿Recuerdas el archivo wp-config.php? Ábrelo con tu editor de texto plano preferido y busca el siguiente texto:
/** * Prefijo de la base de datos de WordPress. * * Cambia el prefijo si deseas instalar multiples blogs en una sola base de datos. * Emplea solo números, letras y guión bajo. */ $table_prefix = 'wp_';
Ese wp_ es el prefijo por defecto que usarán tus tablas. Cámbialo por algo un poco mas complicado, como si fuera una contraseña, pero en este caso no te preocupes porque no necesitaras recordarla. Podrías usar por ejemplo algo así: Wj4De]a9 Con este ejemplo, el código del archivo quedaría así:
/** * Prefijo de la base de datos de WordPress. * * Cambia el prefijo si deseas instalar multiples blogs en una sola base de datos. * Emplea solo números, letras y guión bajo. */ $table_prefix = 'Wj4De]a9_';
La segunda opción, es un plugin, como no. Y este procedimiento sí lo podrás usar aunque ya tengas tu WordPress instalado. Los pasos a seguir son:
[alert-note]Siempre que trabajes sobre la base de datos es imprescindible realizar una copia de seguridad previamente por si algo sale mal.[/alert-note]
Descargar el plugin desde esta web.
Súbelo a la carpeta plugins de tu servidor con Filezilla, es un único archivo llamado wordpress-table-rename.php.
Activa el plugin desde el administrador de WordPress.
Entra en Opciones >>> Table Rename y te aparecerá una pantalla como esta:
En el primer campo aparece el prefijo actual de tus tablas. En el segundo campo debes poner el nuevo prefijo que quieres usar. Y haces click en Generate New Tables. Si todo va bien y no se produce ningún error, esto creara un duplicado de tus tablas actuales, con el nuevo prefijo que hayas elegido. Lo puedes comprobar con PhpMyAdmin.
Una vez creadas las nuevas tablas, haz click en Change $table_prefix. Este segundo paso modificará el prefijo en el wp-config.php.
Para terminar, si todo funciona correctamente, deberías borrar las tablas viejas con PhpMyAdmin.
Y por último, tenemos la tercera opción que es hacerlo todo manualmente. No es difícil, pero si bastante mas tedioso. Para no enrollarme mucho mas, te dejo un enlace de Ayudawp donde te explican muy bien como realizar el cambio manualmente.
Como te imaginarás, estas no son todas las medidas que puedes tomar para securizar tu instalación de WordPress, pero si que són las más importantes desde mi punto de vista. En artículos futuros iré explicando nuevas medidas de seguridad para tu web.
¿Y tu, que medidas de seguridad tomas para proteger tu instalación de WordPress?
Pingback: Seguridad web en wordpress trucos y recomendaciones
Buen artículo Santi.
Además de hacer todo esto que comentas añado algun plugin como puede ser Wordfence Security ( un plugin de seguridad), WP reCaptcha Integration que es de Google y cambio los valores AUTH / SALT sobre todo porque vienen por defecto. Una manera fácil de generar estos códigos es con un API del mismo wordpress: http://api.wordpress.org/secret-key/1.1/salt
Saludos!
Muchas gracias por el comentario Monica. El tema de los plugins lo tenga presente, pero esperaba abordarlo en otro artículo en el que hablaré extensamente de los plugins que uso yo. De todos modos, tengo pensado ir ampliando el artículo y el cambio de los valores AUTH /SALT se me pasó completamente al escribir el artículo, así que ya tengo trabajo.
Necesito ayuda! He creado un sitio web en wordpress, pero el mismo resulta invadido por pop ads que son molestos. Aqui les muestro el sitio http://www.grupohgmsa.com, cada vez que abro el sitio y doy clic en cualquier boton, periódicamente se abren anuncios molestos… A qué puede deberse?
Hola Jesus, a mi no me aparece ningún anuncio ni el addblock me muestra que este bloqueando ninguno. Seguro que no es cosa de tu ordenador? No te habrán colado algun bichejo por ahi?
Prueba abriendo la web desde otro ordenador a ver si te salen los mismos anuncios y si es así, saca un pantallazo a ver que podemos hacer ;D
Muchas gracias por el artículo, cada año se incrementan los ataques en WordPress y otras plataformas, la esencial es fundamental.
Muy buena esta información, no tenía idea de que pudiera haber ataques a la vulnerabilidad de wordpress.