Elementos de seguridad en Joomla

por | Oct 15, 2009 | Seguridad Joomla!

security_release En este artículo os mostramos las medidas que se pueden tomar con Joomla, para aumentar el nivel de seguridad del mismo. Hay que partir de la base que Joomla es seguro, siempre que se realice un buen mantenimiento a nivel de actualizaciones y se tomen ciertas medidas de precaución, tanto a nivel de servidor como del propio Joomla.

Fundamentalmente hay 3 aspectos que deben contemplarse cuando hablamos de seguridad Joomla:

  • La configuración del servidor donde está alojado nuestro Joomla.
  • Las medidas tomadas desde la administración del Joomla por parte del administrador, tanto a nivel de configuraciones como extensiones de seguridad.
  • Extensiones de terceros, hay que tener en cuenta su seguridad y mantenerlas actualizadas.

Respecto a los puntos 1 y 2, estas son las recomendaciones que hace rliskey, moderador del foro de joomla.org:

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.

  • Si usted esta usando un servicio compartido de hosting en su proveedor, asegurese de que ningún otro usuario en el servidor pueda ver o acceder a los archivos de su sitio, por ejemplo a través de cuentas shell, cpanels, etc.

  • Nunca dependa de los backups de otro. Hágase responsable personalmente de respaldar regularmente los archivos de su sitio y su base de datos.

  • Utilice un sistema de Prevención/Detección de intrusos para bloquear/alertar sobre solicitudes HTTP maliciosas.
    Ejemplo de búsqueda en Google (Intrusión+Prevención)



HTTP Server (Apache)

  • PHP, MySQL y muchos otros componentes base fueron originalmente diseñados para, y generalmente funcionan mejor en, servidores Apache. Evite usar otros servidores si es posible.
  • Utilice archivos .htaccess para bloquear intentos de exploits
  • Regularmente revise los registros de acceso en busca de actividad sospechosa. No confie en sumarios y graficas. Revise los “raw logs” (registros en crudo) para detalles mas reales.
  • Configure los filtros de Apache mod_security y mod_rewrite para que bloqueen ataques PHP.


MySQL

  • En un servidor compartido, si usted puede ver los nombres de las bases de datos de otros usuarios, entonces puede estar bastante seguro de que ellos ven las suyas. Si ellos pueden ver las bases de datos que usted posea, ellos están innecesariamente un paso más cerca de entrar. Un buen ISP limitara estrictamente el acceso de cada usuario a sus propias bases de datos.


PHP

  • Antes que nada PHP 4 ya no es mantenido activamente, actualice su código PHP a PHP 5.
  • Aplique todos los parches necesarios para PHP y para aplicaciones basadas en PHP.
  • Se recomienda un frecuente escaneo dónde un gran número de aplicaciones PHP están en uso.
  • Utilice herramientas como Paros Proxy para realizar pruebas automáticas de SQL Injection en contra de sus aplicaciones PHP.
  • Siga el principio de “Least Privilege” (El menor privilegio) para correr PHP usando herramientas como PHPsuExec, php_suexec o suPHP desde suPHP.


php.ini


  • Estudie la lista oficial de directivas php.ini en www.php.net.
  • Configure register_globals OFF. Esta directiva determina si registrar o no las variables EGPCS (Environment, GET, POST, Cookie, Server) como variables globales.
  • Use disable_functions para desactivar peligrosas funciones PHP que no son necesarias para su sitio.
  • Desactive allow_url_fopen. Esta opción activa las URL-aware fopen wrappers que permite el acceso a los objetos URL como archivos. Los wrappers (envolturas) son proveidos para el acceso de archivos remotos usando el ftp o el protocolo http, algunas extensiones como zlib son capaces de registrar wrappers adicionales. Nota: Esto solo puede ser configurado en php.ini por motivos de seguridad.
  • Ajuste la directiva magic_gpc_quotes como sea necesario para su sitio. Debería estar en off para usar software bien escrito, y para los pobremente escritos scripts PHP 3 y PHP 4 . magic_gpc_quotes configura el estado magic_quotes state para operaciones GPC (Get/Post/Cookie). Cuando magic_quotes esta on, todas las ‘ (single-quote/comillas-simples), ” (double quote/comillas dobles), \ (backslash-barra invertida) y NUL’s son evitadas con una barra invertida \ automáticamente.
  • Modo Seguro: safe_mode (debería estar activado y configurado correctamente)
  • open_basedir (debería estar activado y configurado correctamente). Limite los archivos que pueden ser abiertos por PHP a el arbol de directorios especificado, incluyendo el archivo mismo. Esta directiva no es afectada si el Safe Mode esta On u Off. La restriccion especificada con open_basedir es en realidad un prefijo, no un nombre de directorio. Esto significa que “open_basedir = /dir/incl” también permite el acceso “/dir/include” y “/dir/incls” si es que existen. Cuando quiere restringir el acceso solamente al directorio especificado, cierre con una barra /.


Aquí hay directivas de ejemplo para las sugerencias anteriores:

register_globals = 0
disable_functions = show_source, system, shell_exec, passthru, exec, phpinfo, popen, proc_open
allow_url_fopen = 0
magic_gpc_quotes = 0
safe_mode = 1
open_basedir = /dir/incl/

Núcleo de Joomla! (Core)


  • Siempre actualice a la ultima versión estable.
  • Descargue Joomla! solo de sitios oficiales, sitios de confianza
  • Suscribase, o revise regularmente anuncios Relacionados con la seguridad Joomla!
  • Remueva todas las plantillas (templates) que no sean necesarias en su sitio.
  • 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 que es posible que no se puedan cambiar los permisos en todos los componentes o extensiones.



Extensiones (Componentes, Módulos, y plugins) de Joomla!

  • No utilice 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.
  • Haga una copia de seguridad de su sitio y de la base de datos MySql, antes de instalar nuevas extensiones.
  • Desinstale cualquier extensión no usada, y revise doblemente que los directorios y archivos relacionados hayan sido borrados.


Texto original: “Joomla Administrator’s Security Checklist
Traducido por: Equipo de Traducción y Documentación de Joomla!Spanish.

 

 

 

3. Respecto a la instalación de componentes que eleven el nivel de seguridad de Joomla, en Webempresa estamos usando los siguientes:

SecureJoomla: http://www.securelive.net/index.php?option=com_content&view=article&id=187&Itemid=235

jSecure Authentication. Para poner una barrera de seguridad adicional a nuestro sitio, este plugin modifica la ruta de acceso a la administración. Se trata de añadir una clave personal a nuestra ruta del administrador, ya que debido a que la ruta de acceso a la administración de Joomla es siempre la misma: (http://www.misitio.com/administrator), cualquiera que haya logrado obtener nuestro usuario o contraseña puede acceder a nuestro Joomla.

 

Páginas de lectura interesante en materia de seguridad Joomla:

Antes de instalar extensiones, revisa la lista oficial de extensiones vulnerables a nivel de seguridad en la siguiente lista: http://docs.joomla.org/Vulnerable_Extensions_List

Otro artículo interesante sobre seguridad Joomla: http://www.ijoobi.com/Blog/Secure-website/How-safe-are-your-websites.html