Fuente: http://www.nosolocodigo.com/10-errores-de-seguridad-que-debes-evitar-en-joomla

La seguridad es un aspecto muy importante a la hora de mantener un sitio web. ¿De que sirve gastar tu tiempo y dinero en algo, si cualquiera te lo puede tirar por tierra en cualquier momento? Nunca se está los suficientemente seguro, aunque si no eres un maniático de la seguridad seguramente te bastará con unos cuantos consejos que hará la vida más difícil a los scriptkiddies que merodean la red buscando alguien a quien fastidiar. Por lo tanto, si te estimas mínimamente tu trabajo, una vez hayas instalado Joomla es conveniente que lleves a cabo unas cuantas comprobaciones de seguridad.

Joomla es un CMS open source, con sus ventajas y sus inconvenientes. El hecho de que hayan muchos ojos mirando nuestro código no siempre es bueno desde el punto de vista de la seguridad. Además, muchas de las extensiones que instalamos las damos por seguras cuando realmente no sabemos si sus desarrolladores han usado técnicas de programación seguras.

En RSJoomla han elaborado una lista de los errores de seguridad más comunes que la gente suele cometer cuando instala Joomla. Los he traducido y puesto aquí ya que pienso que pueden resultar de utilidad para mucha gente. Ahí van:

  1. NO usar siempre la última versión de Joomla

    Los desarrolladores de Jooma lanzan periódicamente nuevas versiones con mejoras de seguridad y correcciones de bugs que se van detectando por la comunidad, por lo tanto es imprescindible estar siempre actualizado a la última versión, ya que si no lo haces, todo el mundo sabrá que fallos de seguridad tiene tu código y serás un blanco fácil. Otro punto importante es tener una buena política de creación de backpus por si algún día tienes un imprevisto, poder restaurarlo todo. Existen extensiones que facilitan la tarea de realiza backups.

  2. NO revisar los permisos de los directorios de Joomla después de instalarlo

    Los directorios que tenga una máscara de permisos mayor de 755 pueden comprometer la seguridad de tu sistema Joomla, dejando una puerta abierta a atacantes que podrán leer o escribir sobre los ficheros de instalación de Joomla, o incluso subir sus propios ficheros. Imagínate que pasaría si alguien lee el fichero configuration.php de tu Joomla…

  3. NO revisar los permisos de los ficheros

    Recomendado usar una máscara de permisos de 644 o más restrictiva. De lo contrario se le están poniendo las cosas demasiado difíciles a los atacantes.

  4. Permitir las subidas de ficheros descontrolada (foros, comentarios, gestion de descargas…)

    Los hackers pueden (y lo harán) utilizar estas aplicaciones para subir scripts maliciosos a tu sitio. Debes permitir el menor número de extensiones posibles y NUNCA, bajo ningún concepto, permitir subir ficheros ejecutables (.php, .php3, .php4, .php5, .phtml). Puedes utilizar RSFirewall! que automáticamente bloquea subidas de ficheros peligrosas y también puede escanear tu sitio en busca de scripts maliciosos o cosas sospechosas en tu sitio.

  5. Dejar los ficheros y directorios importantes accesibles por cualquiera en el directorio público

    Debes proteger ficheros y directorios especialmente sensibles como el fichero configuration.php, el directorio tmp de Joomla, o el directorio log de Joomla. La mejor manera es moverlos a a un sitio no público, es decir, fuera del document root del servidor web. Para cambiar el directorio log hay que dirigirse a Administrator » Site » Global Configuration » System » Path to Log. Para cambiar el directorio tmp hay que dirigirse a Administrator » Site » Global Configuration » Server » Path to Temp-folder. Para cambiar la ruta del fichero configuration.php hay que modificar los ficheros /includes/defines.php/administrator/includes/defines.php, en concreto las constantes:

    define( ‘JPATH_CONFIGURATION’, JPATH_ROOT );

    Si por ejemplo quieres mover el fichero a una carpeta con nombre “seguro” situada en un nivel superior, deberías de hacer lo siguiente:

    define( ‘JPATH_CONFIGURATION’, JPATH_ROOT.DS.’..’.DS.’seguro’ );

  6. NO tener PHP configurado correctamente

    Estas son algunas configuraciones que debes tener en tu servidor para que no se comprometa su seguridad. (Estas configuraciones pueden ser aplicadas editando solamente el fichero php.ini)

    • Deshabilitar register_globals. Desconfiar de las extensiones de Joomla que te pidan habilitar esta opción. Dejando la opción register_globals=ON la seguridad de Joomla se puede ver comprometida. A partir de PHP 4.2.0 esta opción se puso a OFF por defecto, y en PHP 6.0.0 será borrada por completo.
    • Deshabilitar safe_mode, se recomienda deshabilitar esta opción por que causa más problemas que soluciones. En PHP 6.0.0 será eliminada esta opción.
    • Comprobar allow_url_fopen, lo mejor es que no se permita abrir ficheros remotos a un script.
    • Comprobar allow_url_include, esta opción permite incluir ficheros php remotos, y ser ejecutados, en un script. Lo mejor es inhabilitarla.
    • Utilizar disable_functions para deshabilitar algunas funciones que pudieran dejar tu sitio vulnerable. Algunas de estas funciones son: system, shell_exec, exec, phpinfo, etc.
    • Utilizar open_basedir para definir las rutas desde donde PHP tiene permiso para acceder a ficheros mediante funciones como fopen() o gzopen(). Si algún fichero esta fuera de las rutas incluidas en open_basdir, PHP no permitirá abrirlos.

    Se recomienda usar las siguientes configuraciones de PHP:

    • register_globals = OFF
    • safe_mode =OFF
    • allow_url_fopen =OFF
    • allow_url_include = OFF
    • disable_functions = system, shell_exec, exec, phpinfo… (Puedes encontrar más funciones en este enlace)
    • open_basedir=/tu/ruta/a/joomla
  7. Utilizar el usuario “admin”

    Cuando se instala Joomla, este viene con un usuario con nombre “admin” creado por defecto. En su momento salió una vulnerabilidad que utilizaba este usuario para atacar el sistema, y aunque fue corregida, es aconsejable cambiar el nombre del usuario para evitar posibles futuras vulnerabilidades y para evitar posibles ataques de fuerza bruta para averiguar la contraseña del usuario admin. Utilizar el usuario “admin” con una contraseña débil, es una forma de facilitar la faena a los atacantes de nuestro sitio.

  8. Utilizar contraseñas débiles para usuarios del Back-End

    Utiliza contraseñas difíciles de averiguar, no uses palabras comunes, ya que si usas una palabra común, seguramente se podrá obtener mediante un ataque de fuerza bruta. No utilices la misma contraseña para todas tus cuentas. Un buen consejo puede ser utilizar mnemotecnias para recordar fácilmente tus claves. Por ejemplo, para la contraseña “hmlPynee8″ se podría usar la frase, “hola me llamo Pedro y nací en el 82″.

  9. NO utilizar un buen antivirus en tu ordenador

    Tanto en el servidor como desde el que accedes al panel de gestión. Sin un buen software antivirus, tu servidor puede ser víctima de un ataque al servidor FTP, SSH, etc… Tu ordenador personal desde el que accedes al panel de control de Joomla puede ser víctima de un ataque de phishing si no estás protegido debidamente.

  10. Asumir que tu sitio está bien protegido si no se ven signos de ataques

    Lo mejor es estar siempre atento y no confiarse nunca, ya que el día menos pensado puedes ser atacado y quedarte sin tu web. Así que ya sabes, nunca te confies y permanece alerta.

  11. Permitir el listado de directorios

    Este es mío, jejeje. Permitir que alguien liste los directorios de tu sitios es un fallo de seguridad, ya que estas ofreciendo información importante al atacante. Una forma sencilla de evitarlo es incluir un fichero con nombre index.html, con contenido en blanco, en cada directorio, de esta forma se le mostrará este fichero al atacante cuando acceda al directorio, en lugar de obtener el listado completo de ficheros.