Seguridad Joomla. Pasos para proteger en gran medida tu sitio contra hackeos y malware.
Sumario
- Protege tu Joomla de las vulnerabilidades del software
- Notificaciones de actualización en joomla
- Comprobar actualizaciones en joomla manualmente
- Forzar errores de sistema en joomla 4
- Extensiones abandonadas y extensiones vulnerables
- Sé meticuloso con los controles de acceso
- Configuración de las cuentas de usuario
- Acceso al panel de control (Backend)
- Funciones y principio de privilegio mínimo
- Utiliza contraseñas lo más seguras posible.
- Como cambiar los parámetros para conseguir que los usuarios dejen contraseñas seguras:
- Autenticación por factor múltiple
- Extensiones de seguridad en Joomla
- Alojamiento web
- Copias de seguridad (Backups)
- Registro de acciones de los usuarios
- El archivo .htaccess y el archivo web.config
- Otras acciones que pueden ayudar
Hoy día velar por la seguridad de nuestros sitios es primordial. Con este tutorial sobre seguridad en Joomla vamos a intentar minimizar esos riesgos.
Joomla es el segundo CMS más utilizado del mundo y como consecuencia de ello es una diana para el ataque de hackers y amigos de lo ajeno.
Aunque Joomla es un CMS muy seguro, nunca esta de más tomar algunas medidas extra para que lo sea aún más.
Las medidas que se proponen se basan en algunas pequeñas acciones por tu parte para que tu sitio Joomla sea lo más seguro posible.
Este tutorial está destinado a enseñarte sobre técnicas de seguridad básicas en Joomla y pasos prácticos que te ayudarán a minimizar riesgos. Veamos como:
Protege tu Joomla de las vulnerabilidades del software
Actualmente Joomla se encuentra en una fase muy madura de desarrollo habiendo alcanzado la versión 4 con lo que a día de hoy podemos decir e incluso asegurar que Joomla es uno de los CMS más seguros y estables del mundo.
Joomla esta desarrollado y mantenido por una comunidad mundial de voluntarios que hacen un excelente trabajo para que el software este actulizado y protegido ante cualquier vulneravilidad, además de tener a la comunidad y usuarios bien informados para que tengan sus sitios bien actualizados y con ello tener garantias de que sus sitios sean muy seguros.
El hecho de tener la ultima versión del CMS en todo momento es imprescindible para grarantizar aun más si cabe esta seguridad de la que hablamos.
Pero claro, la seguridad no siempre depende de Joomla, también pueden intervenir otros factores, como por ejemplo un hosting mal configurado, o con mala calidad de servicio así como versiones obsoletas de otras tecnologias como podría ser PHP.
Notificaciones de actualización en joomla
Asegurate que todas las extensiones como componentes, plugins y plantillas estén actualizadas a la última versión.
Esto es muy fácil en Joomla ya que una vez que ingresas en el backend o panel de control, el CMS te avisa con notificaciones de las actualizaciones y los posibles errores que puedas tener:
Comprobar actualizaciones en joomla manualmente
Para cerciorarte mejor sobre si tu web necesita actualizarse, desde el menú lateral izquierdo en el panel de control, entra en Sistema, luego ve al módulo actualizar y una vez allí podras entrar para comprobar manualmente si tienes actualizaciones tanto del mismo Joomla, como de las extensiones instaladas:
Forzar errores de sistema en joomla 4
Si eres un usuario avanzado y aun no lo conoces, también puedes forzar ver algunos errores.
Desde el menú lateral izquierdo en el panel de control, entra en Sistema, luego en Configuración global, ve a la pestaña Servidor y en la tercera opción tienes un desplegable donde puedes seleccionar el tipo de errores que se notifiquen. Esta opción por lo general no se utliza a menos que este fallando algo y no sepas de donde procede el error, o al menos yo lo uso para eso:
Es importante que cuando descubras el error, recuerdes volver a dejarlo como estaba, si no tus visitas podrán ver los posibles errores.
Extensiones abandonadas y extensiones vulnerables
En la página oficial de Joomla hay una sección donde puedes ver las extensiones vulnerables conocidas: Lista de extensiones vulnerables (VEL)
Una vez que entras en esta página, en la barra lateral derecha tienes las extensiones vulnerables y justo debajo tienes las extensiones que han tenido alguna vulnerabilidad en algún momento y que ya está resuelta.
Si en tu sitio tienes alguna extensión que se encuentre entre la lista de extensiones vulnerables y que no esté como resuelta, te rogamos encarecidamente que desinstales esa extensión y la cambies por otra que no tenga problemas, ya que te la estás jugando y puedes poner en riesgo tu sitio.
En el JED (Joomla Extensions Directory) tienes a tu disposición miles de extensiones para dotar de practicamente cualquier funcionalidad a tu sitio, y en el hipotetico caso de que no encuentres lo que buscas, no dudes en preguntar en el foro, en los comentarios que tienes al final de este artículo o en los diferentes sitios de soporte comunitario.
Antes de descargar una extensión en el JED, puedes hacer unas comprobaciones para cerciorarte que lo que descargas es lo mejor para ti a nivel de funcionalidad y seguridad:
- Mira las reseñas de otros usuarios y comprueba si es una extensión de calidad y si ofrece lo que buscas.
- Fíjate bien en la fecha de la última actualización. Las extensiones que llevan mucho tiempo sin actualizar normalmente es mejor no utilizarlas.
- Muchas extensiones tienen una demo para que puedas ver como funciona antes de proceder a su descarga e instalación.
- Pásate por la web del desarrollador para ver si existe más información acerca de la extensión que quieres.
- Si estas usando Joomla 4, asegurate que la extensión es válida para esta versión de Joomla.
¡Muy importante, antes de actualizar o instalar nada haz una copia de seguridad del sitio!
Antes de instalar o actualizar algo si te quedan dudas, te aconsejo que descargues una copia de seguridad de tu sitio y hagas una instalación en un sevidor local tipo Xampp, Mamp, Lampp o similar para comprobar que todo funciona como debería.
Sé meticuloso con los controles de acceso
Toma especial cuidado en los controles de acceso, tanto en el tipo de contraseñas como del sistema ACL
Una de las primeras partes por donde suelen intentar entrar los atacantes suele ser la zona de acceso de ususarios. Para evitar esto tienes que ser estricto en cuanto a las contraseñas permitidas y los niveles de permiso que aceptas.
Al obligar a tus usuarios a utilizar contraseñas sólidas y únicas en tu sitio web, restringir los privilegios disponibles para los usuarios a través de roles asignados, habilitar la autenticación de dos pasos o de múltiples factores y limitar las sesiones de usuario, puedes reducir significativamente el riesgo de que se te cuele alguien indeseable y te haga "pupa".
Configuración de las cuentas de usuario
Joomla viene de serie con un sistema de gestión de usuarios por niveles de acceso (roles) muy potente, por eso este CMS no tiene rival para crear Intranets y páginas web con áreas privadas, pero esto que es tan magnífico puede volverse en tu contra si no se configura correctamente. Hay que tener en cuenta que esto son las puesrtas de entrada al sistema y en esto hay que ser meticulosos y saber lo que se hace.
Para enseñarte a configurar esto sería necesario un curso completo, pero bueno, a grandes rasgos y sin volvernos locos, veamos un sencillo repaso:
Acceso al panel de control (Backend)
De forma predeterminada, Joomla permite que dos grupos de usuarios tengan privilegios de acceso al backend:
Administradores:
- Acceso a funciones de creación de contenido e información del sistema en el backend
- Acceso a la mayoría de las funciones de administración, pero no a las opciones globales
Superusuarios:
- Acceso a todas las funciones de administración con control total
Al comienzo de cualquier nueva instalación de Joomla, debes establecer el nombre de usuario y la contraseña del administrador. Asegúrate que el nombre de usuario no sea "demo", "admin", "administrador" o cosas similares.
Al cambiar el nombre de usuario por uno más adecuado, aumentas la dificultad para acceder a la cuenta. Aunque parezca obvio, ten en cuenta que los atacantes deben adivinar correctamente el nombre de usuario y la contraseña al mismo tiempo para poder obtener acceso y eso es un plus.
Si necesitas editar el nombre de usuario o crear un nuevo usuario, puedes seguir estos pasos:
- Inicia sesión en el Backend de tu Joomla.
- En el menú lateral izquierdo, selecciona Usuarios/Gestionar.
- En la lista que aparece tienes todos los usuarios que tienes en el sitio.
- En la parte de arriba está el botón que te ofrece la posibilidad de crear nuevos usuarios.
- Si lo que quieres es cambiar el nombre o algun otro parámetro de algún usuario, haz clic en el nombre de usuario que quieras editar y haz los cambios que necesites.
- Una vez hechos los cambios, ya puedes hacer clic en Guardar.
Funciones y principio de privilegio mínimo
El principio de privilegios mínimos se compone de dos reglas muy simples:
Utiliza el conjunto mínimo de privilegios en un sistema para realizar una acción.
Otorga privilegios solo durante el tiempo exacto en que una acción sea necesaria.
Además, Joomla incluye varios roles integrados para usuarios públicos, invitados, registrados, especiales y superusuarios. Estos roles especifican qué pueden y qué no pueden conseguir los usuarios o un usuario específico.
Es aconsejable que sigas estas recomendaciones de control de acceso para reducir los riesgos de seguridad:
- Crea nuevas cuentas de usuario con el nivel más bajo posible de permisos.
- También puedes otorgar permisos temporales y revocar ese acceso cuando ya no sean necesarios. Por ejemplo cuando das acceso a algún tipo de soporte.
- Elimina las cuentas de usuario que ya no se utilicen.
- Si las circunstancias lo permiten, asegúrate que la función de usuario predeterminada esté establecida en Public (público) o Guest (invitado)
- Asegúrate que el privilegio mínimo se aplique a todos los que no sean administradores.
Utiliza contraseñas lo más seguras posible.
Los atacantes suelen utilizar listas de contraseñas para forzar los sitios web. Es por eso por lo que siempre debes utilizar contraseñas sólidas y únicas para todas tus cuentas.
Mi recomendación para la configuración por defecto en las contraseñas para los accesos de Joomla, es la siguiente:
- Al menos un carácter de letra en mayúscula.
- Al menos un carácter de letra en minúscula.
- Al menos un carácter de número.
- Al menos un carácter especial de símbolo (@, #, $ ...).
- Al menos 10 caracteres, intentando evitar más de dos caracteres idénticos seguidos.
Como cambiar los parámetros para conseguir que los usuarios dejen contraseñas seguras:
- Una vez en el Backend de tu Joomla, en el menú principal de la izquierda, ve a Usuarios/Gestionar.
- Una vez dentro de la gestión de usuarios, en la parte de arrina a la derecha, haz clic en el botón Opciones.
- Busca la pestaña Opciones de contraseña y cambia los parámetros a tu gusto.
Para no olvidar tus contraseñas, una buena práctica es utilizar un gestor de contraseñas. Mi recomendación es que el gestor de contraseñas que utilices sea de código abierto.
Aquí te dejo algunos gratuitos y de código abierto :
Autenticación por factor múltiple
La autenticación por factor múltiple añade más nivel de protección para las cuentas. Esta función requiere que un usuario apruebe un inicio de sesión a través de una aplicación o de alguna otra acción y protege la cuenta en caso de que alguien pueda adivinar la contraseña.
En Joomla ya vienen de serie 5 plugins para este cometido. De los 5 me voy a centrar en 3 para que puedas elegir el que mejor se adapte a ti. Realmente con uno que eligas sería suficiente.
Lo primero es entrar en el Backend de tu Joomla y en el menú lateral principal accede a Sistema, una vez dentro ve al módulo Gestionar, en el listado que hay en este módulo y en la quinta posición accede a Plugins.
Una vez en la página de Plugins, escribe en el buscador: Autenticación y dale a la lupa de buscar.
Esto te mostrará un listado de plugins. Algo similar a esta imagen:
Vamos a hacer un repaso de los 3 que te digo y que he marcado en la imagen:
- Autenticación por factor múltiple - Código de verificación
- Autenticación por factor múltiple - Autenticación web
- Autenticación por factor múltiple - Código de autenticación por correo electrónico
Aunque su uso no requiere mucha dificultad, para ver como funciona cada uno de ellos lo mejor es abrir uno por uno y ver la descripción. Os voy a dejar aquí la descripción literal de cada uno de ellos y algún dato más para facilitar la elección:
- Autenticación por factor múltiple - Código de verificación:
La descripción literal que trae este plugin es:
"Autenticación por factor múltiple para los usuarios de su sitio mediante códigos de verificación de seis dígitos generados por una aplicación de autenticación (Google Authenticator, Authy, LastPass Authenticator, etc.), un administrador de contraseñas (1Password, BitWarden, Keeper, KeePassXC, Strongbox, etc.) o, en algunos casos, su navegador."
Como ves hay muchas opciones, pero para no enredar mucho esto y para hacerlo lo más sencillo posible, una buena opción puede ser utilizar la App de Google Authenticator.
Si te has decantado por este método, para empezar tienes que habilitar el plugin y después tienes que descargar e instalar Google Authenticator desde aquí en tu iPhone o tu Android y seguir los paso que te marca la aplicación.
- Autenticación por factor múltiple - Autenticación web:
La descripción literal que trae este plugin es:
"Utilice la autenticación web W3C (Webauthn) como método de autenticación por factor múltiple. Todos los navegadores modernos lo admiten. La mayoría de los navegadores ofrecen autenticación específica del dispositivo protegida por contraseña o datos biométricos (sensor de huellas dactilares, escaneo facial, ...)."
En el momento que se activa este plugin y entras logueado en el sitio, verás que te sale un aviso con las instruccciones para poder seguir los pasos y configurar este método de una forma sencilla.
- Autenticación por factor múltiple - Código de autenticación por correo electrónico:
La descripción literal que trae este plugin es:
"Use códigos de seguridad de seis dígitos por tiempo limitado que se le envíen por correo electrónico."
Este plugin además de habilitarlo como los anteriores, tiene un par de sencillas configuraciones. Dejo una imagen para que veas a lo que me refiero:
En la primera configuración nos dice si queremos activar Forzar habilitar. La ayuda contextual del plugin dice textualmente respecto a esto:
"¿Debo añadir automáticamente el Código de autenticación por correo electrónico como una opción para todos los usuarios? Útil para ofrecer una alternativa a los usuarios que han perdido el acceso a su autenticador principal y no han conservado una copia de los códigos de respaldo a expensas de cierto grado de control y seguridad."
Como ves la explicación es clara y entendible.
La segunda configuración Periodo de generación de código, es para indicar cada cuento tiempo quieres que se genere un nuevo código de autenticación. Dejarlo como está es lo recomendado. En este caso 2 minutos.
Extensiones de seguridad en Joomla
Si vas al JED (Joomla extensions directory) verás que existen muchas extensiones para controlar la seguridad en tu sitio Joomla, pero personalmente os voy recomendar y hablar de 2 principalmente que creo que son las mejores por funcionalidad y por soporte:
Ambas extensiones tienen versión gratuita con las limitaciones que conlleva y versión pro que obviamente son de pago y traen muchas más características.
Aunque no existe una solución 100% efectiva, ya que influyen muchos factores en la seguridad (Configuración de las extensiones, Hosting, etc), con estas 2 que te propongo puedes hacer muchas cosas para que Joomla sea un practicamente un bunker frente a los ataques.
Algunas cosas que puedes hacer son:
- Limitar intentos de inicio de sesión
- Cambiar la URL por defecto de acceso al panel de administración o Backend
- Restringir URLs
- Restringir IPs
- Crear listas negras (Blacklist)
- Protección de archivos incluido el .htaccess
- Firewall
Y un momtón de acciones más que te ayudarán a mantener tu sitio muy seguro.
Alojamiento web
Este tema da para mucho ya que existen muchos tipos de alojamientos, además cada empresa tiene sus políticas y formas de hacer las cosas.
Afortunadamnete, en los últimos años se ha evolucionado mucho en este aspecto ya que cada vez las empresas que contratan estos servicios se toman mucho más en serio los temas de seguridad, rendimiento, accesibilidad y usabilidad.
Existen varios entornos de alojamiento que se pueden utilizar para instalar tu Joomla. Yo os voy a hablar de 3 que considero los entornos más usados:
Entornos de alojamiento compartido:
Lo que conocemos normalmente como hosting. Esto significa que en el mismo servidor (ordenador) se alojan varios hosting y en cada hosting varias páginas web.
Para que se entienda, esto viene a ser como cuando en un ordenador hacemos varias particiones del disco duro. Pues las empresas de hosting hacen lo mismo, y en cada partición crean un hosting.
Al compartir la misma máquina y los mismos recursos entre los diferentes hostings alojados en ese servidor, es más barato. Lo malo de esto es que todos los hosting al compartir los mismos recursos el rendimiento se nota y también nos puede llevar a que si un sitio alojado en uno de los hosting es infectado o hackeado, el resto de hosting pueden verse afectados. Aunque tambien he de decir que hoy día existen métodos para que esto no pase. Si la empresa que alquila ese hostingt hace bien los deberes , esto no debería de pasar.
Entornos de servidor privado virtual (VPS):
Los VPS son la mezcla del servidor compartido y el servidor dedicado, tienen lo bueno de los dos entornos. Esto se consigue con la virtualización.
La virtualización crea entornos independientes dentro de la misma máquina con sus propios recursos y su propio espacio por lo que el problema de "contaminación" que encontrabamos en el hosting compartido desaparecen.
Para gestionar un servidor VPS hay que tener unos mínimos de conocimiento de estos sistemas, porque en el caso que no se administren bien, todo lo bueno que tienen se puede volver en nuestra contra.
La buena noticia es que hoy día se pueden contratar VPS administrados por las compañias.
Personalmente creo que en estos momentos lo mejor es alojar nuestras páginas web en VPS por varias razones:
- Precio
- Seguridad
- Recursos
- Acceso a toda la gestión
- Libertad de actuación
Servidores dedicados:
Un servidor dedicado es lo más. Aqui lo que contratamos realmente es la máquina completa y con ello todos sus recursos. Esto lo malo que tiene es que es caro, es el precio que hay que pagar por un servicio tan exclusivo.
Copias de seguridad (Backups)
Este es un apartado de los más importantes en cuanto a seguridad se refiere.
Hay que hacer copias de seguridad si o sí, al menos una diaria .
En mi caso, yo hago copias diarias de los sitios web a nivel de cada página web y del servidor. Este tipo de acciones son los que te pueden salvar de un desastre.
Un buen conjunto de copias de seguridad puede salvar tu sitio web o tu servidor cuando absolutamente todo lo demás salió mal. Si un atacante malintencionado decide que quiere borrar todos los archivos de tu sitio o corrompe los archivos, el daño se puede deshacer simplemente restaurando el sitio o el servidor a partir de las copias de seguridad.
La herramienta para hacer respaldos por excelencia en Joomla es Akeeba Backup. es la extensión más utilizada y con razón.
Igual que otras extensiones, Akeeba tiene una versión gratuita y otra Pro de pago. Es evidente que con la versión pro podemos hacer muchas más cosas que con la gratuita.
Veamos algunos requisitos clave para que nuestros respaldos sean un éxito:
1. Ubicación de las copias fuera del sitio y del servidor: Las copias de seguridad deben almacenarse fuera del sitio y del servidor donde este alojado el sitio web. Esto se hace normalmente en algun servicio en la nube tipo Google Drive o Dropbox. Las copias de seguridad almacenadas en el mismo servidor representan un riesgo de seguridad grave porque a menudo contienen software antiguo que puede tener vulnerabilidades. Debido a su ubicación de acceso público, cualquiera puede explotarlas para atacar el sitio web en vivo. Las copias de seguridad externas también ayudan a proteger contra fallos de hardware. Si el disco duro del servidor falla, puedes perder todos los datos: el sitio web y las copias de seguridad. Esto se puede conseguir con Akeeba pero solo con la versión pro.
2. Automátización de las copias: Los sistemas de copia de seguridad deben estar completamente automatizados para garantizar que las copias de seguridad se realicen de forma regular. Los seres humanos tendemos a estar ocupados y a veces esto nos puede hacer ser olvidadizos, por lo que automatizar este proceso es sin duda una buena idea. Si no te queda más remedio que utlizar una solución manual, asegúrate de programar una hora en tu agenda para realizar copias de seguridad con regularidad y no olvidarlo.
3. Redundante: La Segunda Ley de la Computación de Schofield establece que los datos no existen a menos que haya al menos dos copias de seguridad. Esto significa que la estrategia de respaldo debe incluir redundancia, es decir, hay que tener copias de seguridad de las copias de seguridad.
4. Probar para cerciorarse de que las copias funcionan: Asegúrate que el proceso de restauración realmente funciona. Puedes probar tus copias de seguridad en un servidor local o tener un dominio o subdominio específico para hacer estas pruebas.
Registro de acciones de los usuarios
Con Joomla puedes ver en todo momento las acciones que se toman en tu sitio web. Cuando entras en el Backend, en el panelo de inicio, hay un módulo llamado últimas acciones donde se registran los movimientos en el sitio y quien hace estos movimientos. Esto ayuda a encontrar posibles errores. Si necesitas aun más control, también puedes hacer que Joomla te avise mandándote llos movimientos del sitio a un correo electrónico.
El archivo .htaccess y el archivo web.config
El archivo .htaccess es específico para servidores que corren con Apache. Este archivo entre otras cosas evita el acceso a ciertos directorios y archivos.
Joomla se envía con un archivo .htaccess preconfigurado, pero para poder usarlo tienes que realizar una pequeña acción y es simplemente cambiar el nombre del archivo para dejarlo oculto. Cuando haces una instalación de Joomla, el archivo que se sirve se llama htaccess.txt. para usarlo, debes cambiarle el nombre por .htaccess (debes poner un punto delante y eliminar la extensión .txt), Después de hacer esto tienes que ir al backend /configuración global/ Sitio. Una vez en esa página haz scroll para abajo y en la sección de Configuración SEO encontraras una opción que te permite activar Usar la reescritura de URLs. Activa esta opción.
Si utilizas un servidor Nginx en vez de Apache, el archivo que tendrás que renombrar es web.config.txt y dejarlo en web.config .
Asegúrate de seguir el contenido htaccess recomendado por la seguridad de Joomla para proteger mejor tu sitio. Aunque ese archivo ya se genera con la instalación, en la web oficial de Joomla tienes el archivo original preconfigurado:
Descargar el archivo htaccess desde la página oficial de Joomla
Otras acciones que pueden ayudar
Proteger los archivos moviendo la ruta predeterminada conocida por todos.
Algunas rutas a carpetas y archivos se pueden mover de sitio para despistar a posibles atacantes. Aunque desgraciadamente hay algunas carpetas que son complicadas de cambiarles la ruta. Por ejemplo, actualmente no existe una manera fácil de mover los directorios /images y /media. Esto se debe a que miles de extensiones de terceros esperan encontrar estos directorios importantes en la ubicación actual.
- Eliminar archivos innecesarios de los que estés seguro que no sirven.
- Eliminar todas las plantillas de diseño que no utilices.
- Eliminar extensiones que no se usan.
"Como convertir tu Joomla en un sitio superseguro con unas pocas acciones" Compártelo en Twitter
Antes de terminar recordarte que en Saber Crear tenemos una página con enlaces hacia los sitios importantes de Joomla, tanto oficiales como de desarrolladores y de la comunidad.
Como ves hay nuchas acciones que puedes tomar para que tu sitio con Joomla sea seguro. Espero que este tutorial arroje algo de luz sobre este tema tan importante como es la seguridad.
Para ayudar a otras personas estaría genial que nos contases en los comentarios que métodos empleas tu para mantener tus sitios con Joomla seguros, los paso que has seguido y tu experiencia con ello.
Seguimos ;)
Este artículo está basado en parte en una tradución de otro artículo en Inglés. Gracias a Sucuri.net