En este artículo describimos los pasos principales que pueden ayudarle a hacer más seguro su sitio web construido con Joomla y evitar que sea hackeado. Por supuesto, no podemos garantizar que su sitio será 100% seguro después de seguir estos pasos, ya que incluso los sitios más seguros (como Facebook) pueden ser hackeados. No obstante, le aconsejamos seguir las recomendaciones de este artículo para estar en el lado seguro.
¡Nota! Recomendamos encarecidamente revisar también las recomendaciones generales de seguridad, ya que no se mencionarán en este artículo. Son aplicables a todos los sitios, independientemente del CMS utilizado. Este artículo describe recomendaciones específicamente para la seguridad del CMS Joomla.
¿Cómo asegurar un sitio construido con Joomla?
1. Actualizaciones
No olvide actualizar su CMS de forma regular. Las versiones más recientes son más seguras, ya que las vulnerabilidades detectadas previamente suelen corregirse.
2. Módulos de seguridad
La mayoría de los siguientes pasos pueden ejecutarse automáticamente mediante módulos de seguridad. Sin embargo, estos módulos suelen ser de pago. Aun así, incluyen multitud de funciones, como notificaciones por correo electrónico sobre intentos de acceso no autorizados. Los módulos de seguridad de Joomla más populares son RSFirewall! y Admin Tools.
3. .htaccess
Lo más probable es que el archivo htaccess.txt se cree automáticamente. Debe renombrarlo a .htaccess y configurarlo correctamente para proteger su sitio web. Puede encontrar las directrices en la base de conocimientos del proveedor de hosting.
4. Restricción de IP para el acceso al login
Restringa el acceso al área de administración por dirección IP. Para bloquear todas las direcciones IP excepto una, debe añadir el siguiente texto al archivo .htaccess:
order deny,allow
allow from xxx.xx.xxx.xx
deny from all
xxx.xx.xxx.xx debe reemplazarse por la dirección IP que utiliza para iniciar sesión en el panel de administración (o por la que no debería estar restringida).
A partir de entonces, solo los usuarios que inicien sesión desde la IP indicada tendrán acceso a la carpeta administrator.
5. Extensiones de terceros
No descargue extensiones de terceros sospechosas. Recomendamos descargarlas únicamente del sitio web oficial, porque Joomla en sí es un CMS bastante seguro; sin embargo, los atacantes pueden obtener acceso a su sitio a través de extensiones o módulos. Por ejemplo, instala un módulo de discusión. El atacante puede insertar código malicioso en lugar de un comentario o un archivo adjunto y obtener acceso a los datos de su sitio. En caso de que ya haya instalado extensiones de terceros, le recomendamos eliminarlas.
6. Permisos de archivos
Configure los siguientes valores de permisos: 755 para carpetas y 644 para todos los archivos, excepto configuration.php. Este último debe tener 444 como valor de permiso.
7. Nombre de usuario del superadministrador
No utilice ‘admin’ como nombre de usuario del Superadministrador. Cree un usuario con un nombre complejo y no obvio.
8. Habilitar SEF
Habilitar enlaces SEF (Search Engine Friendly, amigables para motores de búsqueda) no es una forma muy efectiva de proteger su sitio, pero vale la pena intentarlo.
9. Configuración de PHP
Deshabilite las siguientes configuraciones de PHP: register_globals, safe_mode, allow_url_fopen y allow_url_include. Además, habilite las funciones disable_functions y open_basedir. Si no es posible editar las configuraciones mencionadas desde el panel de control de hosting, contacte con el equipo de soporte del proveedor de hosting para verificar si pueden habilitar/deshabilitar estas directivas.
10. FTP
Elimine todos los datos de FTP. Para hacerlo, haga clic en Sistema, seleccione Configuración global y haga clic en la pestaña Servidor.
11. Duración de la sesión
Asegúrese de que el valor de duración de la sesión sea de 10-15 minutos. Puede cambiar la configuración de sesión en el menú Sistema seleccionando Configuración global. Una vez allí, seleccione la pestaña Sistema.
12. Mover el archivo de configuración
Si es posible, es mejor mover el archivo configuration.php fuera de la carpeta pública (normalmente, public_html). Para hacerlo, siga los pasos a continuación:
a) Copie el archivo configuration.php y pégelo en cualquier otra carpeta fuera de public_html (por ejemplo, en una carpeta un nivel por encima en la jerarquía de archivos).
b) Ubique los archivos /includes/defines.php y /administrator/includes/defines.php y luego encuentre la línea que contienen.
define( 'JPATH_CONFIGURATION', JPATH_ROOT );
c) En esta línea debe indicar la nueva ubicación del archivo configuration.php. Por ejemplo, si mueve el archivo de public_html a la carpeta llamada ‘test’ que está un nivel por encima de public_html, la línea debería verse así:
define( 'JPATH_CONFIGURATION', JPATH_ROOT.DS.'..'.DS.'test' );
d) Mueva el archivo configuration.php a la nueva carpeta y elimínelo de la antigua.
e) Tenga en cuenta que ya no podrá cambiar la configuración del sistema a través del panel de administración de Joomla. A partir de ahora deberá editar el archivo configuration.php directamente.
13. Registros y archivos temporales
Recomendamos mover también los archivos temporales (tmp) y de registro (logs) fuera de la carpeta public_html. Para ello, busque las siguientes líneas en el archivo configuration.php (hemos reemplazado la ruta real por letras):
var $log_path = '/home/xxxx/yyyyyy/zzzz/logs/';
var $tmp_path = '/home/xxxx/yyyyyy/zzzz/tmp/';
Una vez localizadas, edite las rutas existentes (indique la ruta del nuevo directorio) y luego copie los archivos temporales y de registro a la nueva carpeta.
14. Prefijo de la base de datos
Cambie el prefijo predeterminado de la base de datos. Aquí puede encontrar las instrucciones detalladas. Si no está muy familiarizado con los principios de funcionamiento de las bases de datos, es mejor no hacer cambios por su cuenta (los módulos de seguridad descritos en el punto 2 serían una mejor opción). Este método puede proteger parcialmente su sitio de inyecciones SQL; por ejemplo, puede impedir que el atacante acceda a las credenciales de inicio de sesión del panel de administración (desde la tabla jos_users). No obstante, para estar completamente protegido contra inyecciones SQL recomendamos usar módulos de seguridad (punto 2).
15. Copias de seguridad
Para estar seguro, se recomienda hacer copias de seguridad todos los días. Si no tiene la posibilidad de hacerlas con tanta frecuencia, al menos haga una copia de seguridad de su sitio antes de cambiar cualquier configuración o instalar un nuevo plugin o módulo.
16. Análisis de virus
Analice sus sitios en busca de virus al menos una vez cada dos semanas y, especialmente, después de instalar un nuevo plugin o módulo.
17. Certificados SSL
Hay muchas empresas que ofrecen certificados SSL como Comodo, Symantec o Let’s Encrypt. Este último suele ser ofrecido por las compañías de hosting de forma gratuita. Para habilitar un certificado SSL, es necesario editar la configuración correspondiente en el panel de control del hosting y en el archivo configuration.php de la siguiente manera:
Ubique la directiva live_site e introduzca
$live_site = ‘https//yourdomain.tld’;
Asegúrese de que NO haya una barra después del dominio.
Establezca el valor de force_ssl en ‘2’. Esto significa que tanto el sitio web como su panel de administración serán accesibles solo a través del protocolo https.
Si tiene cualquier sugerencia relacionada con la seguridad de sitios web en Joomla, no dude en dejarlas en la sección de comentarios y con gusto las añadiremos al artículo. Asimismo, tenga en cuenta que la implementación de cualquiera de las medidas de seguridad mencionadas puede influir en el rendimiento de su sitio web. Así que asegúrese de haber hecho una copia de seguridad de su sitio antes de realizar cualquier cambio.
