Joomla presenta problemas de seguridad conocidos, que pueden evitarse siguiendo algunas recomendaciones.
Excepto cuando se trate de implementaciones realizadas por nuestro equipo, Innova 357 no se hace responsable por los problemas de seguridad originados por malas prácticas de instalación, configuración e instalación de gestores de contenido CMS.
En tal sentido el usuario es responsable de la seguridad, manejo de contraseñas, contenido y gestión de CMS y cualquier otro aplicativo que se instale.
Consideraciones generales
- Cambie sus passwords regularmente y no use siempre los mismos. Utilice una combinación aleatoria de letras, números, o símbolos y evite usar nombres o palabras que puedan ser encontradas en un diccionario. Nunca utilice los nombres de sus parientes, mascotas, etc.
- Hágase responsable personalmente de respaldar regularmente los archivos de su sitio y su base de datos. Innova 357no realiza copias de seguridad cuando no se ha contratado el soporte adicional.
Servidores de desarrollo
- Configure un servidor local de desarrollo, y realice allí todas las actualizaciones y pruebas. No las haga directamente en el servidor.
MySQL
- Asegurese de que la cuenta MySQL de Joomla! esta configurada con acceso limitado.
- Utilice una combinación aleatoria de letras, números, o símbolos y evite usar nombres o palabras que puedan ser encontradas en un diccionario. Nunca utilice los nombres de sus parientes, mascotas, etc.
- No use la misma clave de administrador del CMS.
Núcleo de Joomla! (Core)
- Siempre actualice a la ultima versión estable.
Validez de la Versión de Joomla! - Descargue Joomla! solo de sitios oficiales, sitios de confianza, tales como:
Joomla! Forge - Suscribase, o revise regularmente:
Anuncios Relacionados con la seguridad Joomla! - Si usted descubre un problema de seguridad en el core de Joomla!, por favor repórtelo lo antes posible:
Reportar Errores de Joomla! - Remueva todas las plantillas (templates) que no sean necesarias en su sitio.
Post: No ponga lógica de seguridad en archivos de plantillas (templates). - Edite globals.php para correr register_globals emulation off en Joomla! . Aunque la emulación Joomla! es mucho mas segura que la directiva PHP register_globals, es mejor no permitir para nada register_globals. Comenzando con PHP 6, esta ni siquiera será una opción, y es cuestión de tiempo.
- Una vez que su sitio esta configurado y es estable, Proteja contra escritura la mayor cantidad de archivos y directorios que pueda cambiando los permisos de directorios a 755, y los permisos de archivos a 644. Existe una característica de sitio --> Global Configuration (configuración global) --> que puede colocar los permisos de forma masiva por usted. Tenga en cuenta de que esta función masiva puede afectar el funcionamiento de los componentes, si lo hace pruebe el funcionamiento de los mismos. También tenga en cuenta de que es posible que no se puedan cambiar los permisos en todos los componentes o extensiones de 3eros.
Script automático para ajustar los permisos de directorios y archivos
Ajustes del Archivo de Configuración Global
Nota: Necesitara resetear los permisos si es que desea instalar extensiones mas tarde. Sea conciente de que en algunos servidores, la opción de (Anular la protección contra escritura al guardar) puede que no funcione, aunque el aviso del sistema diga que si, por eso tendrá que cambiar las opciones de la configuración dándole permisos de escritura manualmente a su configuration.php. (Eso es algo bueno!)
Extensiones (Componentes, Módulos, y Bots) de Joomla!
- Remueva todas las extensiones Joomla! que requieran register_globals ON.
- Descargue extensiones solo de sitios de confianza. La definición oficial de "sitio de confianza" es aquel sitio en el que USTED confía.
- Antes de instalar extensiones de 3eros (third party extensions), revise:
Post: Lista oficial de extensiones de 3eros vulnerables! - Tenga cuidado! Las extensiones de 3eros vienen en todos los sabores, tamaños y antigüedad. Aunque existen los estándares de código Joomla! (coding standards), la extensiones listadas en el sitio oficial de Joomla! no son revisadas para ver si cumplen dichos estándares. Prueba todas las extensiones en un sitio de desarrollo antes de instalarlas en un sitio "real" sitio en producción.
- Respalde su sitio y la base de datos del mismo antes de instalar nuevas extensiones.
- Revise regularmente:
Post: Cuestiones de seguridad de 3eros/No Joomla! - Remueva cualquier extensión no usada, y revise doblemente que los directorios y archivos relacionados hayan sido borrados. (Una contribución de joomaboom)
Reforzando Joomla!
Nota: Esta sección es para aquellos que buscan la mayor seguridad posible, por ejemplo para sitios de comercio. Algunos de estos items requieren más que la paranoia promedio... habilidad, control del servidor y buena voluntad para experimentar y aprender.
- Requerido: Contrate a un consultor profesional de seguridad Joomla! para que revise la configuración de su sitio.
- Requerido: No utilice un servidor compartido. Algunos expertos difieren en este item. El punto es, no importa como este configurado su servidor, asegurese de que usted sea la única organización con acceso.
- Requerido: Utilice un servidor SSL para todos los logins y funciones administrativas, y por supuesto para transacciones confidenciales con los clientes. Asegurese de tener un muy buen abogado si es que no quiere usar SSL.
- Requerido: Separe los servidores de desarrollo y producción (pruebas y sitio real), y desactive las funciones administrativas en la parte pública del sitio. Utilizar subdominios es una buena forma de hacer esto.
- Recomendado: Mueva archivos básicos que no requieran acceso de escritura por sobre la raíz web (Web root) y modifique las variables de ruta (path variables) o utilice Symlinks. Por ejemplo los archivos de configuración o el directorio de administración.
- Recomendado: Para evitar el acceso URL directo a las extensiones, edite la configuración Apache, .htaccess, o mueva directorios de las extensiones por sobre la raiz web, y modifique las variables de ruta.
- Opcional: Asegurese de que todos los directorios escribibles (images, galleries, caches, etc.) están por sobre la raíz web y modifique las variables de ruta. Revise los directorios de las extensiones en busca de sus propios directorios de descarga o con permisos de escritura.
- Opcional: Mueva todo el sitio Joomla! por sobre la raiz web excepto por aquellos archivos que requieran acceso http directo, tales como "/index.php", y modifique las variables de ruta. Alguien ha tratado de hacer esto alguna vez?
- Opcional: Para un mejor control de espacios de nombre dentro de PHP, utilice código OO en sus extensiones.
- Opcional: Bloquee accesos cruzados a la base de datos. Suerte con esta! Por favor postee buenas soluciones aquí.
- Opcional: Cree bases de datos y cuentas MySQL separadas para extensiones confidenciales.
- Opcional: Para el acceso a la base de datos principal para extensiones no del todo confiables (inicialmente casi todas), utilice una cuenta de MySQL separada con pocos privilegios.
- Opcional: Si no quiere anunciarle a los script kiddies cuales URLs necesitan protección del acceso directo, puede tratar de redirigirlos a una pagina de error 404. Esto les indicara que esa URL no es valida, mas que anunciarles que existe pero que necesita protección. (No olvide crear la página de error.) friesengeist apunta a eso, si un cracker usa alguna otra herramienta mas que un navegador para acceder a su sitio, el script ignorara el header(), corriendo, y ejecutando el resto del código. Si realmente quiere la redirección, debe añadir exit; después de header(). En el ejemplo a continuación, se utilizan ambos métodos. Esto es un exceso, pero tampoco va a romper nada.