Independientemente del tipo de web que tengas, seguro que la seguridad es una de tus principales preocupaciones. Los CMS de código abierto (como Joomla!, WordPress o Drupal) reciben ataques todos los días: robo de contraseñas y datos confidenciales, eliminación de información importante, modificaciones en la web…
Son cambios que pueden costarte un buen disgusto, tiempo y esfuerzo para conseguir solucionarlos y además, importantes pérdidas económicas. Por estos motivos, debes hacer todo lo que esté en tu mano para asegurarte de que tu web esté a salvo.
Aquí te muestro algunas recomendaciones para ayudarte a mejorar la seguridad de tu instalación de Joomla!, así como algunas de las mejores extensiones de seguridad para tu aplicación web.
Consejos de seguridad para Joomla!
Hazte a la idea de una cosa: no existe un CMS 100% seguro. Para mantener tu instalación de Joomla! a salvo, sin embargo, hay muchas medidas que puedes tomar para ponérselo difícil a cualquier usuario malintencionado que quiera poner en peligro tu proyecto.
1. Utiliza la versión más reciente de Joomla!
Para garantizar la seguridad de tu Joomla!, es muy importante que la actualices tu aplicación a la última versión en cuanto esta esté preparada. Al fin y al cabo, los desarrolladores de Joomla! se esfuerzan por parchear las vulnerabilidades para impedir que los hackers puedan infectar tu web, robarte información confidencial o dañar tu sitio de alguna manera.
Mantén Joomla! siempre actualizado a la última versión para una web mucho más segura.
Comprueba de vez en cuando si hay alguna actualización disponible para solucionar vulnerabilidades de seguridad y asegúrate de completarla. En el mismo orden de cosas, es importante que vayas actualizando las extensiones que utilizas y que garantices que sean seguras antes de instalarlas.
2. Utiliza un nombre de usuario y contraseña seguros
No utilices el nombre de usuario admin predeterminado: cámbialo por uno más seguro y escoge también una contraseña que no sea fácil de adivinar. Deberá contener más de 8 caracteres e incluir mayúsculas, minúsculas, cifras y caracteres especiales.
3. Protege el archivo de configuración de tu Joomla!
Protege el archivo configuration.php, que se encuentra en el directorio raíz de tu hosting, para impedir que se puede editar (algunas versiones de Joomla! ya lo protegen por defecto).
Puedes hacerlo fácilmente, marcando la opción “Make unwriteable after saving” en la configuración de Joomla!. También te recomiendo que lo abras y añadas en el archivo .htaccess:
<FilesMatch “configuration.php”>
Order allow,deny
Deny from all
</FilesMatch>
Nota: si utilizas la versión de Apache 2.4, deberás añadir las siguientes líneas de código:
<FilesMatch “configuration.php”>
Require all denied
</FilesMatch>
4. Borra las plantillas y extensiones que no utilizas
Mantén tu instalación limpia: aunque pruebes varias plantillas o extensiones, te recomiendo que las elimines cuando hayas decidido cuáles no vas a utilizar.
Lo mismo ocurre con las plantillas que vienen instaladas en Joomla! por defecto. Es importante hacerlo así porque, si en algún momento se detecta una vulnerabilidad en una de ellas, los hackers intentarán explotarla para ganar acceso y dañar tu instalación.
5. Cambia los permisos de los archivos
Es mejor que restrinjas los permisos de los archivos más importantes para impedir que se puedan editar o modificar. Aquí te dejo alguna sugerencia:
- Deja los permisos de /index.php en 644
- Deja los permisos de /configuration.php en 640
- Deja los permisos de /templates/*tuplantilla*/index.php en 644
- Deja los permisos de la carpeta /templates/*tuplantilla*/ en 755
Además, puedes proteger ciertos archivos añadiendo el siguiente código en el fichero .htaccess: Protege el fichero .htaccess
<Files .htaccess>
order allow,deny
deny from all
</Files>
Nota: si trabajas con la versión de Apache 2.4, añade lo siguiente:
<Files .htaccess>
Require all denied
</Files>
Dentro del directorio images, evita que se ejecuten scripts
<FilesMatch “.(phtml|php|php3|php4|php5|php6|phps|cgi|exe|pl|py|asp|aspx|shtml|shtm|fcgi|fpl|jsp|htm|html|wml|cgi|cgi|sh)$”>
Order Allow,Deny
Deny from all
</FilesMatch>
Nota: en la versión de Apache 2.4, añade las siguientes líneas de código:
<FilesMatch “.(phtml|php|php3|php4|php5|php6|phps|cgi|exe|pl|py|asp|aspx|shtml|shtm|fcgi|fpl|jsp|htm|html|wml|cgi|cgi|sh)$”>
Require all denied
</FilesMatch>
</pre>
Oculta la estructura de directorios
<pre>
Options All -Indexes
6. Deshabilita el registro de usuarios
A menos que tu web sea una comunidad en la que el registro de usuarios sea una opción necesaria, por motivos de seguridad es mejor que lo deshabilites para que no sea posible. Así, los bots que rastrean la red en busca de agujeros de seguridad no serán capaces de crear usuarios en tu portal.
7. Cambia el prefijo de la base de datos
Si modificas el prefijo de la base de datos por uno aleatorio o personalizado, evitarás que los hackers puedan tratar de adivinar el nombre de las tablas: prefijo_tabla.
8. Elimina las referencias a Joomla! del código fuente
Con esto conseguirás que sea más difícil saber la versión de Joomla! que estás utilizando, lo que resultará en un mayor nivel de seguridad para tu proyecto. Esto es un buen ejemplo de una medida de seguridad “por ocultación”. No cuesta mucho esfuerzo y, aunque no es una medida de seguridad auténtica (ya que no resuelve ningún fallo), puede servirte de ayuda.
9. Incluye un CAPTCHA en cada formulario
No te interesa que sea un robot (un programa informático) el que rellene tus formularios para enviarte spam.
Para impedir que pueda hacerlo, tendrás que utilizar un CAPTCHA: así los usuarios deberán introducir manualmente las cifras o letras que se mostrarán aleatoriamente en una imagen distorsionada, que una máquina no sería capaz de leer.
Extensiones de seguridad para Joomla!
El uso de una extensión de seguridad puede ayudarte a detener inyecciones de SQL o ataques de fuerza bruta. En el directorio de extensiones de Joomla! encontrarás numerosos recursos, algunos gratuitos y otros de pago, para ayudarte a mejorar la seguridad de tu web. A continuación, te muestro algunas de las mejores extensiones de seguridad para Joomla gratuitas.
Brute Force Stop
Esta extensión te ayudará a combatir ataques de fuerza bruta. Sirve para bloquear de forma automática al visitante o al bot que está realizando el ataque. Puedes configurar un límite de intentos fallidos y, una vez se alcance, la extensión bloquea al usuario que está intentando loguearse.
También podrás conocer la IP que utilizó el atacante para intentar registrarse, ya que esos registros quedan guardados en la opción Failed Logins. Gracias a esta IP, podrás saber si estás bloqueando a un usuario legítimo. Si es así, puedes meterla en una lista blanca para que no vuelva a ocurrir.
Akeeba Backup
Se trata de un componente de código abierto que sirve para crear una copia de seguridad completa de tu web en solo un clic. También puedes automatizar la creación de los backups, para no tener que acordarte de realizarlos de forma periódica. Así, en caso necesario, puedes utilizarlos para restaurar tu sitio a su estado correcto fácilmente.
AdminExile
Otra forma de proteger tu sitio de Joomla contra los ataques de fuerza bruta es ocultar la URL de inicio de sesión. Con el plugin AdminExile podrás modificar la URL de modo que no sea tudominio/administrator, sino que sea necesaria una clave para acceder correctamente.
También podrás configurar la extensión para que te envíe un enlace de inicio de sesión en caso de que olvides la clave. Además, podrás restringir o permitir el inicio de sesión utilizando listas blancas y negras para las direcciones IP que tú quieras. Recibirás una notificación si recibes un ataque de fuerza bruta y se bloqueará la IP del atacante tras recibir un número de intentos fallidos de inicio de sesión (un número que configurarás tú mismo).
Admin Tools
Esta extensión te ayuda, en general, con todas las tareas de administración de tu instalación de Joomla!.
También te ayuda a mejorar el nivel de seguridad de tu web, ya que te informa de las actualizaciones que debes aplicar realiza mantenimientos para protegerte contra ataques y optimiza tu sitio web. También te ayuda con los permisos de archivos y directorios, las redirecciones personalizadas y la creación de un archivo .htaccess seguro, entre otras cosas.
Marco’s SQL Injection
Esta extensión sirve para proteger tu web contra inyecciones SQL y ataques de inclusión de archivos locales. Como administrador, si se detecta una de estas amenazas se bloqueará el ataque y recibirás una notificación automática.
Puedes configurar fácilmente el plugin para añadir direcciones IP, errores y componentes que no tengan que pasar el examen del filtro de seguridad. También puedes definir el número de intentos de inicio de sesión fallidos que deben tener lugar antes de que se bloquee esa dirección IP.
Hay extensiones gratuitas de Joomla que te pueden ayudar a mejorar la seguridad de tu web de forma muy sencilla. Todas las que te he descrito más arriba dan muy buenos resultados, pero no debes incluirlas en tu web todas a la vez. Selecciona solamente aquéllas que te ofrezcan lo que estás buscando, en función de tus necesidades.