Utilizamos cookies propias y de terceros. [Más información sobre las cookies].
Política de cookies
Proyecto AjpdSoft

· Inicio
· Buscar
· Contactar
· Cookies
· Descargas
· Foros
· Historia
· Nosotros
· Temas
· Top 10
· Trucos
· Tutoriales
· Wiki

Joomla!: Medidas de seguridad en Joomla, proteger acceso a la administración
Seguridad Informática


Tutorial donde explicamos paso a paso cómo proteger el acceso a la administración de Joomla!. Utilizamos para ello dos métodos: mediante plugin gratuito Kareebu Secure y manualmente mediante el uso autenticación HTTP con .htaccess. Realizamos la securización de la administración de Joomla! en su versión 3 sobre un equipo con sistema operativo Linux.



 

Requisitos para proteger el acceso a la administración de Joomla!

Joomla!, acceso a la administración, permisos para crear ficheros

En primer lugar, en nuestro caso, usaremos la versión 3 de Joomla!, por lo que deberemos disponer de un hosting o sitio web con este CMS. En los siguientes tutoriales explicamos cómo instalar este CMS:

Joomla! puede instalarse sobre sistemas operativos Windows, Linux, Mac OS X, etc. en todos los casos creará la carpeta "administrator" para su administración (gestión de todo en entorno, parámetros de configuración, usuarios, permisos, artículos, categorías, plugins, módulos, componentes, plantillas, noticias, menús, ...). Dicha carpeta cuenta con los ficheros PHP necesarios para mostrar el módulo de administración de Joomla!:

Joomla!, acceso a la administración, permisos para crear ficheros

Al acceder a la administración de Joomla! se ejecutará el fichero "index.php" de la carpeta /administrator. Aquí puede consultarse un ejemplo del contenido de este fichero.

Si optamos por el primer método para securizar el acceso a la administración de Joomla! (método con plugin Kareebu Secure) necesitaremos disponer de un usuario y contraseña de Joomla! con permisos suficientes para instalar plugins.

Si optamos por el segundo método para securizar el acceso a la administración de Joomla! (método .htaccess) deberemos disponer de un usuario y contraseña con permisos suficientes en la carpeta "administrator" para crear ficheros, normalmente si nuestro sitio web está alojado en algún hosting externo lo realizaremos mediante algún cliente de FTP (como Filezilla Client), si tenemos alojado el servidor en nuestra organización o si tenemos acceso mediante SSH u otro método de conexión remota podremos crear los ficheros directamente en la carpeta "administrator", como indicamos aquí.

 

Por qué proteger la administración de Joomla!

La administración de Joomla! debe protegerse por seguridad, para impedir intentos de manipulación indebida de nuestro sitio web. Joomla! tiene muchas ventajas pero uno de sus inconvenientes es que es una aplicación muy difundida a nivel mundial y con código fuente libre, por lo que millones de sitios web lo usan y, por lo tanto, es un reclamo para hackers y sistemas automáticos de hacking. La administración de Joomla! se realiza desde la carpeta "administrator", por lo tanto en cualquier sitio web con Joomla! que no haya sido securizado, podremos acceder a la ventana de petición de login de la administración de Joomla! desde la URL:

www.nombresitioweb.com/administrator

Por ello, puesto que esto es conocido, es muy recomendable proteger el acceso a esta carpeta para impedir que, por ejemplo, se detecte alguna vulnerabilidad en la seguridad de la administración de Joomla! y cualquier atacante puediera acceder y eliminar o modificar datos de nuestro sitio web.

 

Copia de seguridad de Joomla!

Es muy recomendable hacer copia de seguridad de Joomla! si lo tenemos en producción antes de instalar cualquier plugin, módulo o componente, incluso cuando se quiere modificar algún parámetro o plantilla. Un plugin erróneo podría provocar que Joomla! deje de funcionar, por lo tanto antes de instalar plugin y de hacer cambios en nuestro sistema realizaremos una copia de seguridad.

Para hacer una copia de seguridad fiable de Joomla! seguiremos los siguientes pasos:

 

Proteger acceso administración de Joomla! con Kareebu Secure

Para proteger el acceso a la administración de Joomla! mediante Kareebu Secure, descargaremos el paquete desde la web oficial (requiere registro gratuito), accederemos a la URL:

http://www.kareebu.com/downloads

Pulsaremos en Download kareebu Secure, descargaremos el fichero "kSecure.zip":

Proteger acceso administración de Joomla! con Kareebu Secure

Tras la descarga accederemos a la administración de Joomla! para instalar el plugin:

Proteger acceso administración de Joomla! con Kareebu Secure

Pulsaremos en el menú "Extensiones" - "Gestor de extensiones":

Proteger acceso administración de Joomla! con Kareebu Secure

Pulsaremos en "Examinar" para seleccionar el fichero .zip de Kareebu Secure:

Proteger acceso administración de Joomla! con Kareebu Secure

Seleccionaremos el fichero kSecure.zip descargado anteriormente:

Proteger acceso administración de Joomla! con Kareebu Secure

Pulsaremos en "Subir e instalar":

Proteger acceso administración de Joomla! con Kareebu Secure

Si la instalación es correcta mostrará el mensaje "Instalar plugin se ha realizado correctamente":

Proteger acceso administración de Joomla! con Kareebu Secure

El texto que mostrará la instalación de kareebu Secure será:

Once enabled, kareebu Secure will protect your /administrator folder with a password. How to access your website with kSecure enabled: HTTP Authentication: You will be greeted with a standard Apache authentication window. You will need to enter your password in the "Password" field. You can either leave the "Username" field empty or fill anything because it is not verified. Compatibility: You will need to type your URL as http://www.yourwebsite.com/administrator?yourpassword — "yourpassword" will need to be replaced with your actual password that you have setup in kareebu Secure.

Proteger acceso administración de Joomla! con Kareebu Secure

Tras la instalación deberemos configurarlo y activarlo, para ello pulsaremos en el menú "Extensiones" - "Gestor de plugins":

Proteger acceso administración de Joomla! con Kareebu Secure

Buscaremos el plugin Kereebu Secure, pulsaremos sobre él para editarlo y activarlo:

Proteger acceso administración de Joomla! con Kareebu Secure

En la pestaña "Opciones básicas" del plugin marcaremos "Enable" a "Sí", en "Password" introduciremos la contraseña que luego utilizaremos para el acceso a la administración de Joomla!, dejaremos "Mode" a "Compatibility":

Proteger acceso administración de Joomla! con Kareebu Secure

En la pestaña "Detalles" marcaremos en "Estado" la opción "Habilitado", pulsaremos en "Guardar" y en "Guardar y cerrar":

Proteger acceso administración de Joomla! con Kareebu Secure

A partir de ahora, si introducimos la URL:

http://nombre_sitio/administrator

Nos redireccionará a la página inicial del sitio:

Proteger acceso administración de Joomla! con Kareebu Secure

Para acceder a la administración de Joomla! a partir de ahora deberemos introducir la URL:

http://nombre_sitio/administrator/?contraseña

(donde "nombre_sitio" será el nombre del sitio web o la IP del servidor con Joomla! y "contraseña" será la contraseña establecida en el paso anterior)

De esta forma ya nos solicitará usuario y contraseña para el acceso a la administración de Joomla!:

Proteger acceso administración de Joomla! con Kareebu Secure

Kareebu Secure también permite el método HTTP Authentication, para ello accederemos a "Extensiones" - "Gestor de plugins":

Proteger acceso administración de Joomla! con Kareebu Secure

Buscaremos el plugin y accederemos a su administración pulsando sobre el enlace:

Proteger acceso administración de Joomla! con Kareebu Secure

Desde la pestaña "Opciones básicas" pulsaremos en "HTTP Authentication", luego pulsaremos en "Guardar" y en "Guardar y cerrar":

Proteger acceso administración de Joomla! con Kareebu Secure

Con la autenticación de HTTP de Apache activada, ahora al acceder a la URL:

http://nombre_sitio/administrator

Nos solicitará una ventana para introducir usuario y contraseña, dejaremos en blanco el usuario e introduciremos la contraseña establecida en la administración de Kareebu Secure:

Proteger acceso administración de Joomla! con Kareebu Secure

Tras introducir la contraseña nos mostrará la ventana de inicio de sesión de Joomla!:

Proteger acceso administración de Joomla! con Kareebu Secure

 

Proteger acceso a la administración de Joomla! con usuario y contraseña mediante .htaccess

Si podemos hacerlo, lo mejor y más fiable es proteger el acceso a la administración de Joomla! mediante autenticación HTTP de Apache usando .htaccess, si podemos hacerlo manualmente siempre será más fiable que el método anterior donde usamos un componente de terceros que, además, para el método HTTP Authentication no establece usuario ni filtrado por IP.

Para proteger la carpeta "administrator" de Joomla! mediante autenticación HTTP de Apache algunos hosting (proveedores de alojamiento) cuentan con un panel de control desde donde podremos proteger carpetas, mediante usuario y contraseña y mediante filtro de IP (incluso algunos mediante geolocalización):

Proteger acceso a la administración de Joomla! con usuario y contraseña mediante .htaccess

Si queremos establecer este nivel de protección de la carpeta "administrator" de Joomla! manualmente seguiremos los siguientes pasos:

En primer lugar, si queremos establecer además de protección con usuario y contraseña filtro por IP (sólo permitir determinadas IPs o rango de IPs), deberemos saber qué IP pública nos ha asignado nuestro ISP (proveedor de servicios de Internet), pues será la IP que tendremos que filtrar en el fichero .htaccess. Para obtener esta IP podremos acceder, por ejemplo, a la URL:

ip.php

Proteger acceso a la administración de Joomla! con usuario y contraseña mediante .htaccess

Si queremos acceso sólo desde equipos de la red local LAN estableceremos en el fichero .htaccess las IPs locales como indicamos a continuación.

Desde un equipo cliente o desde el propio equipo con Linux o Windows (si tenemos acceso a él) crearemos un fichero con el nombre .htaccess y con el contenido:

#Proteccion carpeta por usuario
AuthUserFile /administrator/.htpasswd
AuthName "Acceso administración Joomla!"
AuthType Basic
Require valid-user

#Proteccion por IP
Order deny,allow
deny from all
allow from 37.14.252.22
´

Proteger acceso a la administración de Joomla! con usuario y contraseña mediante .htaccess

Explicamos los parámetros añadidos al fichero .htaccess:

  • AuthUserFile: con este parámetro indicamos donde se encuentra el fichero donde crearemos los usuarios y sus contraseñas, en nuestro caso en la carpeta /administrator y en el fichero .htpasswd.
  • AuthName: texto que se mostrará al usuario en la ventana de petición de usuario y contraseña.
  • AutType: podremos elegir entre Basic y Digest, con "Basic" la contraseña se guardará en texto plano, con encriptación básica de Unix. Si elegimos "Digest" la encriptación será más segura usando MD5, aunque no todos los navegadores la soportan.
  • Require: con este parámetro indicaremos qué usuarios o qué grupos de usuarios autentificados podrán tener acceso a la carpeta "administrator", en nuestro caso estableceremos el valor "valid-user" indicando que todos los usuarios autentificados podrán acceder.
  • Para el filtro por IP, si decidimos activarlo, especificaremos en primer lugar el orden de las reglas con "order deny,allow", a continuación estableceremos una regla que lo deniegue todo con "deny from all" y estableceremos la última regla indicando la IP que sí permitiremos con "allow from IP".

Deberemos crear también el fichero .htpasswd que contendrá el nombre de los usuarios y su contraseña, con el formato: nombre_usuario:contraseña (la contraseña irá encriptada en formato Unix puesto que hemos elegido "Basic" en "AutType":

Proteger acceso a la administración de Joomla! con usuario y contraseña mediante .htaccess

Guardaremos ambos ficheros (.htaccess y .htpasswd) y los subiremos a la carpeta /administrator de Joomla! (si los hemos creado en un equipo cliente lo podremos subir al servidor con cualquier cliente de FTP, si los hemos creado directamente en el servidor con Joomla! guardaremos los ficheros y ya tendremos activada la seguridad HTTP):

Proteger acceso a la administración de Joomla! con usuario y contraseña mediante .htaccess

A partir de ahora, cuando introduzcamos la URL de acceso a la administración de Joomla! con

http://nombre_sitio/administrator

Nos solicitará usuario y contraseña:

Proteger acceso a la administración de Joomla! con usuario y contraseña mediante .htaccess

 

Observaciones, otros métodos para mejorar la seguridad de Joomla!

Mejorar las seguridad de Joomla! es siempre recomendable dado que cualquier sitio web, por definición, es vulnerable, pero los sitios web dinámicos (con uso de PHP, ASP, JSP y bases de datos) suelen ser bastante más vulnerables, máxime teniendo en cuenta que, por ejemplo Joomla! tiene el código fuente PHP disponible para cualquier usuario, por lo que cualquier atacante puede estudiar el código y buscar fallos de seguridad.

Además, en el caso de Joomla! y otros CMS, cuando se instala un plugin, un módulo, un componente o incluso una plantilla puede ser peligroso pues no sabremos con certeza si es fiable, tanto en sus intenciones como en la eficiencia del código.

En el siguiente tutorial mostramos algunos consejos para hacer Joomla! un poco más seguro:

Para el caso de proteger el acceso a la administración de Joomla!, como hemos explicado en este tutorial, existen varios plugin que nos permiten mejorar la seguridad, como el que hemos mostrado aquí, pero recomendamos usar el método de autenticación HTTP de Apache mediante el fichero .htaccess.

Los métodos de protección del acceso a la administración de Joomla! explicados en este tutorial son son los únicos ni, tal vez, los más eficaces. Existen otras opciones como modificar el nombre de la carpeta "administrator" de Joomla! aunque esto nos supondrá tener que modifcar los ficheros PHP del core de Joomla! y puede ser un trabajo muy engorroso y, además, puede generar futuros errores en la instalación de componentes. También existen otros plugin como jSecure, AdminExile, Administrator Lock, etc. para proteger el acceso a la administración de Joomla!.

 

Anexo

  • Contenido fichero "index.php" de la carpeta "administrator" de Joomla:

<?php

if (version_compare(PHP_VERSION, '5.3.1', '<'))
{
	die('Your host needs to use PHP 5.3.1 or higher to run this version of Joomla!');
}

/**
 * Constant that is checked in included files to prevent direct access.
 * define() is used in the installation folder rather than "const" to not error for PHP 5.2 and lower
 */
define('_JEXEC', 1);

if (file_exists(__DIR__ . '/defines.php'))
{
	include_once __DIR__ . '/defines.php';
}

if (!defined('_JDEFINES'))
{
	define('JPATH_BASE', __DIR__);
	require_once JPATH_BASE.'/includes/defines.php';
}

require_once JPATH_BASE.'/includes/framework.php';
require_once JPATH_BASE.'/includes/helper.php';
require_once JPATH_BASE.'/includes/toolbar.php';

// Mark afterLoad in the profiler.
JDEBUG ? $_PROFILER->mark('afterLoad') : null;

// Instantiate the application.
$app = JFactory::getApplication('administrator');

// Initialise the application.
$app->initialise(
	array('language' => $app->getUserState('application.lang'))
);

// Mark afterIntialise in the profiler.
JDEBUG ? $_PROFILER->mark('afterInitialise') : null;

// Route the application.
$app->route();

// Mark afterRoute in the profiler.
JDEBUG ? $_PROFILER->mark('afterRoute') : null;

// Dispatch the application.
$app->dispatch();

// Mark afterDispatch in the profiler.
JDEBUG ? $_PROFILER->mark('afterDispatch') : null;

// Render the application.
$app->render();

// Mark afterRender in the profiler.
JDEBUG ? $_PROFILER->mark('afterRender') : null;

// Return the response.
echo $app;

Artículos relacionados

 

Créditos

Artículo realizado íntegramente por Alonsojpd miembro fundador del Proyecto AjpdSoft.

Artículo en inglés.


Anuncios


Enviado el Domingo, 16 junio a las 22:10:38 por ajpdsoft
Visita nuestro nuevo sitio web con programas y contenidos actualizados: Proyecto A