Hace pocos días, ha habido una ola enorme de hackeos de WordPress. Más de 30.000 sitios han sido hackeados modificando más de 200.000 páginas de estos sitios. La intencionalidad de ello y las consecuencias, es lo de menos en este momento. Mi intención es mostraros como asegurar vuestro WordPress para que, en la medida de lo posible, tengáis vuestro WordPress seguro.
Mucho se ha escrito sobre el tema y parece que la gente sigue sin tomárselo enserio o piensa, a mí no me pasará. Por desgracia, este pensamiento está más extendido de lo que debería y seguramente, más de uno leerá esta entrada por que ya está escaldado y ha perdido mucho tiempo acumulado en su sitio.
Las reglas básicas para el mantenimiento un sitio de WordPress seguro son:
- Tener WordPress SIEMPRE actualizado
- Usar SOLO plugin del repositorio o plugins Premium (de pago) y que SIEMPRE estén actualizados a la última versión.
- Instalar themes desde sitios confiables y NUNCA instalar themes Premium si no son de las páginas oficiales (descargados de otros sitios par no pagar su coste).
- No usar NUNCA el usuario admin, usar cualquier otro usuario y si ya lo tenemos, cambiarlo.
- Utilizar contraseñas complejas y por supuesto NUNCA nuestra fecha de cumpleaños, aniversario, pins varios, etc….
- Realizar copias de seguridad diarias completas y muy aconsejable realizar copia de seguridad de la base de datos 2 veces al día (cada 12 horas).
- Utilizar plugins de seguridad.
- Mover el archivo wp-config.php al directorio superior, sacándolo del acceso público.
- Si tenéis el registro abierto, nunca tener ningún usuario registrado mediante un bot (robot).
- Tener el software del servidor siempre actualizado, sobre todo si se actualiza por vulnerabilidades (PHP, MySQL, etc…)
- Utilizar Mods de php para aumentar la seguridad del servidor.
Cabrían otras cosas, como protección del subdirectorio wp-admin, plugins para protección de login con brute forcé, etc… pero lo anterior es lo básico.
Ahora, pasemos a desgranar cada uno de los puntos.
Tener WordPress siempre actualizado.
Muchos se piensan que el actualizar WordPress es un capricho o que solo les va servir para un diseño más moderno o alguna funcionalidad más. Pensar eso es un error enorme. Es cierto que cada gran versión suele incluir nuevas funcionalidades, retoques de diseño o nuevo diseño, pero también suelen llevar arreglos de bugs, que pueden ser tanto para arreglar algo que no funcionara correctamente como para arreglar un error de seguridad. Ya no hablemos de las actualizaciones puntuales, es decir, aquellas que se indican por el tercer número ej: 3.3.1) estas versiones siempre son para arreglar bugs y algunas de ellas han sido por vulnerabilidades cero day, o lo que es lo mismo, una vulnerabilidad muy grabe por la que se pueden hacer con tu sitio realizando alguna acción. Simplemente manteniendo tu WordPress actualizado, ya tendrás mucho ganado.
Usar SOLO plugin del repositorio o plugins Premium (de pago) y que SIEMPRE estén actualizados a la última versión.
Es muy importante descargarse siempre los plugins del repositorio. Descargárselos del repositorio no es una garantía al 100% que no tendrán malware, pero al estar en el repositorio están más controlados ya que cualquier usuario que detectara algo provocaría la eliminación inmediata del plugin. Lógicamente, cuando hablo de descargárselo del repositorio, incluye la instalación automática desde el mismo WordPress. De ninguna manera hay que descargarse cualquier plugin que encontremos por ahí. La instalación de un plugin de cualquier web (siempre y cuando no sea una web confiable) podría significar meternos el enemigo en casa.
También existen los plugins Premium, que son plugins de pago. Nunca debéis descargaros un plugin Premium, si no es desde la web oficial. Pensad que el descargarse un plugin Premium desde un sitio que no sea el oficial, puede significar que haya sido modificado para abrir una puerta trasera, con lo que en menos que canta un gallo, perderéis vuestro sitio.
Por último, siempre hay que tener todos los plugins actualizados, ya sea un plugin descargado desde el repositorio como si se trata de un plugin Premium. Lógicamente, el mantener un plugin Premium actualizado, significa en muchos casos mantener una cuota al día. En el caso en que decidáis que os dais de baja debéis realizar un seguimiento de las actualizaciones que se realizan, para ver los motivos de estas. En el momento en que una de las actualizaciones arreglan una vulnerabilidad, si ya no queréis mantener la cuota, debéis eliminar ese plugin de inmediato. Si el pluin se actualiza por vulnerabilidad, eso quiere decir que es conocida y por lo tanto habrá cientos de spiders rastreando la web en busca de esas vulnerabilidades y no dudéis que tarde o temprano encontrarán vuestro WordPress.
Instalar themes desde sitios confiables y NUNCA instalar themes Premium si no son de las páginas oficiales (descargados de otros sitios par no pagar su coste).
En este punto, no hay mucho que decir, simplemente es aplicar los del punto anterior pero en vez de a los plugins, a los themes.
No usar NUNCA el usuario admin, usar cualquier otro usuario.
Hasta hace relativamente poco, el único usuario principal que se podía utilizar en WordPress, era el “admin” pero en su día cambio y se pudo comenzar a utilizar otros usuarios. Lo que sucede, es que por costumbre o por lo que sea, mucha gente continua utilizando el usuario admin cuando realiza una nueva instalación. Es un gran error ya que la inmensa mayoría de scripts que buscan hacerse con una instalación por fuerza bruta, se basan en el usuario admin, es decir, utilizan el usuario admin y van probando diferentes contraseñas hasta que dan con la combinación adecuada. Si no utilizamos el usuario admin, dificultamos enormemente la posibilidad de acceso por fuerza bruta. Pero ¿Qué pasa si tenemos una antigua instalación o ya hemos realizado la instalación nueva con el usuario admin? Pues hay una solución. La solución pasa por realizar una acción muy sencilla.
- Crearemos un usuario nuevo.
- En el momento de la Creación, le damos el rol de Administrador.
- Una vez creado, nos aseguramos que le hemos dado el rol de Administrador.
- Salimos de la instalación.
- Nos identificamos con el nuevo usuario, que también es administrador.
- Apretamos sobre “eliminar” en el usuario admin y en el siguiente paso seleccionamos el nuevo usuario para que le traspase todas las entradas.
Y ya está, habremos eliminado el peligroso usuario admin de nuestra instalación. Existen plugins para realizar esta operación, pero ¿para que utilizar un plugin para realizar una operación que se puede realizar de forma sencilla?
Utilizar contraseñas complejas y por supuesto NUNCA nuestra fecha de cumpleaños, aniversario, pins varios, etc….
Esto es uno de los puntos en los que más peca la gente. Ya sea por comodidad, pereza o desconocimiento, mucha gente tiende a poner contraseñas muy simples, de fácil relación con el (fecha de nacimiento, fecha de la boda, fechas de nacimiento de los hijos, mujer, etc…) o repetir la misma contraseña en todos los sitios. Esta es la forma más sencilla que la encuentren.
Hace poco, un cliente me sorprendió con un email dónde me relataba muchas cosas de mi que sinceramente no sabía ni que estaban en internet. Hoy en día y sobre todo por las redes sociales vamos dejando cantidades inmensas de información y si no lo hacemos nosotros, otros lo harán por nosotros, ya sean amigos, familiares o el mismo gobierno o BOE. La información que se puede encontrar en estos momentos en internet de una persona en particular, es enorme. Solo hay que saber dónde y cómo buscar. Si laa contraseña de acceso es algo relacionado con vosotros, os aseguro que si quieren acceder a vuestro sitio lo harán.
¿Cuál es la solución? Pues contraseñas complejas y largas y por supuesto, una contraseña para cada sitio. Por regla general, la mejor contraseña es aquella que os sea imposible de memorizar y eso para cada sitio que tengáis. Cómo es lógico y natural, para acceder a vuestro sitios, si son contraseñas complejas, necesitareis apuntároslas, pero nunca en un papel, ya que sería también un gran peligro. En mi caso, uso un software que lo tengo instalado en todos mis pc/mac y en el iPhone/iPad. Es un software que descubrí ya hace mucho tiempo y que os aseguro que nopodría vivir ya sin el. La tranquilidad que me da es enorme. El software en cuestión se llama 1Password y con el podreis tener contraseñas enormemente complejas y en todos accesibles desde todos vuestros dispositivos. Lógicamente, el software solo es una opción, pero el usar contraseñas complejas, no es una opción, es una obligación.
Realizar copias de seguridad diarias completas y muy aconsejable realizar copia de seguridad de la base de datos 2 veces al día (cada 12 horas).
Otra de las cosas que son muy importantes, es el realizar un Backup diario (cómo mínimo). Mucha gente se lamenta el día que han tenido un problema y lo han perdido todo.
Cada día, miles de sitios se pierden en su totalidad por hackeos, roturas de discos duros, servidores que se queman o por errores humanos. Los que llevamos mucho tiempo en internet con webs, todos, hemos tenido que tirar alguna vez de copias de seguridad. Os puedo asegurar que tarde o temprano acabareis usando esa copia de seguridad, si es que la estáis realizando.
En mi caso, yo realizo cada día una copia de seguridad completa y al cabo de 12 horas, realizo una copia de seguridad de las bases de datos. Esas copias de seguridad las guardo durante 7 días. En caso de desastre, el tiempo máximo de archivos perdidos será de 23 horas y 59 minutos y en el caso de datos de 11 horas y 59 minutos y esto en el peor de los casos.
Existen mucho plugins para realizar backups, pero si queréis instalar uno gratuito, que sea BackWPup
Existe un plugin Premium muy bueno, y que sobre todo va muy bien para desarrolladores por la funcionalidad de importación-exportación de sitios que tiene, que es BackupBuddy, pero tiene una gran pega, y es que solo realiza Backups en formato zip. Esto que a priori puede parecer una tontería, es un gran problema. Los zip tiene una limitación de tamaño, que creo recordar que es de 2Gb en sistemas operativos de 32bits y de 4Gb en sistemas de 4Gb. La consecuencia de esto es que si tu instalación es my grande, no podrás realizar el backup ya que no podrá crear el archivo. Alguno pensareis por se realiza un splid del archivo, pues estamos en lo mismo ya que solo se puede realizar un Split de un zip si el archivo ya ha sido creado en su totalidad (estamos hablando a nivel de servidor). Así que si tenéis sitios muy grandes, no os gastéis el dinero en BackupBuddy.
Utilizar plugins de seguridad
Existen varios plugins de seguridad para WordPress, pero el que yo suelo utilizar es BulletProof Security
Este plugin es fantástico, os asegurará toda la instalación y os creará archivos .htahccess personalizados.
Hay muchos plugins de seguridad, pero como Fernando Tellado de AyudaWordPress ya realizó un artículo al respecto, no voy a repetirlos así que si estáis interesados en plugins de seguridad, solo debéis visitar su entrada.
Mover el archivo wp-config.php al directorio superior, sacándolo del acceso público.
Quizá es una de las medidas de seguridad menos conocidas, y consiste en mover el archivo wp-config.php al directorio superior. Por ejemplo, si tuviéramos instalado WordPress en un servidor que utilizara un panel de control cPanel, consistiría en trasladar el archivo wp-config.php a directorio anterior de public_html, de forma que la estructura quedaría así:
/home/tu_usuario/wp-config.php
/home/tu_usuario/public_html/wp-admin
/home/tu_usuario/public_html/wp-includes
/home/tu_usuario/public_html/wp-content
Esta que es un acción muy sencilla, es muy efectiva ya que sacamos de la parte pública el archivo de configuración, de forma que no podrán acceder fácilmente a los datos de nuestra base de datos.
Si tenéis el registro abierto, nunca tener ningún usuario registrado mediante un bot (robot).
Si tenéis el registro abierto de WordPress, es muy probable que estéis llenos de usuarios spam que se han registrado mediante bots (robots o software).
Muchos de esos usuarios spam, con total seguridad, estarán ahí y ya está. Al ser robots en busca de WordPress con registro abierto, se han registrado en busca de las posibilidades que les podáis brindar. Si por ejemplo solo dejáis a los usuarios registrados comentar en vuestro sitio, seguramente ni os enterareis que existen estos usuarios, ya que lo que buscan es poder crear entradas completas.
El peligro está en los “dormilones”, es decir, usuarios que se registran (también mediante bots) y quedan a la espera de una vulnerabilidad. Estos usuarios se registran en cientos, miles de sitios y crean una gran base de datos con todos ellos. Un buen día, se descubre una vulnerabilidad cero day ¿recordáis el principio de esta entrada? y programan un script para hacerse con todos los sitios. En unas pocas horas, se pueden haber hecho con miles de sitios.
La solución contra estos usuarios pasa por eliminarlos y por no dejar que se registren. Para ello, existe WangGuard. Este plugin, no solo no dejará que se registren en vuestra instalación, si no que eliminará todos o casi todos los usuarios spam que tengáis ya registrados. Además os ofrecerá muchas herramientas que os facilitará la detección de estos usuario no deseados.
Tener el software del servidor siempre actualizado, sobre todo si se actualiza por vulnerabilidades (PHP, MySQL, etc…)
Si estáis en un hosting compartido, seguramente no os tendréis que preocupar sobre estos temas ¿o sí? Siempre es mejor estar en un hosting que se preocupe por la seguridad y estar al día.
Hace unos pocos días, se ha liberado la última versión de PHP. La versión 5.4, pero aun no es muy recomendable actualizar, a las pocas horas de liberarse, ya sacaron un par de parches. Lo que se que es imprescindible, es utilizar PHP 5.3.10 Cualquier versión inferior esta, tiene vulnerabilidades y todas ellas se pueden tirar los servidores abajo con relativa facilidad, incluidos los servidores que tengan instalado PHP 5.2.x
Es muy aconsejable que se utilice un hosting que tenga suPHP instalado o Mod Ruid2.
Si tenéis vuestro propio servidor, es muy aconsejable que instaléis Mod Ruid2 en lugar de suPHP. El motivo es bien sencillo. Mod Ruid2, da la misma seguridad que suPHP pero con la velocidad de mod_php, lo que quiere decir que vuestro servidor irá mucho más relajado sin perder nada de seguridad.
Habrían otros plugins a instalar o configuraciones a realizar, pero en la base, está todo dicho. Cumpliendo todo lo anterior, lo pondréis difícil a los hackers, aunque no imposible.