¿Cómo saber si mi sitio en Joomla corre peligro de intrusión?
Es muy común ver alimentada la falsa creencia de que “para poder armarse una web, basta con Instalar Joomla! y listos”.
Si bien Joomla! ha sido ideado para dar facilidades a un amplio abanico de usuarios, incluyendo a aquellos con un bajo o nulo nivel de conocimientos sobre programación de webs, esto no quiere decir en absoluto que, mantener la seguridad en nuestros sitios, se rija por esa misma ventaja.
Luego, si bien puede ser cierto que para “armarse una web” con Joomla! basta con saber instalarlo y efectivamente te habrás “armado una web”; pero, una cosa son las facilidades de uso, flexibilidad y extensibilidad que aporta Joomla! y otra cosa muy distinta es mantener la seguridad de nuestros sitios dentro de unos niveles aceptables.
Sugerencias
Revisa cada pregunta que se presentan a continuación:
¿Qué versión de Joomla! estás usando?
¿Qué extensiones de terceros tienes instaladas?
¿Qué versión de Apache/MySQL/PHP estás usando?
¿Qué tipo de hospedaje tienes contratado?
¿Qué medidas de seguridad estás aplicando actualmente?
¿Qué versión de Joomla! estás usando?
Un nivel aceptable de seguridad, consiste en usar las últimas versiones estables de cada una de las aplicaciones que conforman nuestra web, y, el CMS Joomla! no es una excepción.
Si bien Joomla! es un CMS bastante seguro de por sí, el cual se ocupa de evitar intrusiones no deseadas a través de su código, o, que en cuanto detecta una vulnerabilidad, a más alto o bajo nivel, se apresura a reparala a la mayor brevedad posible.. hay que tener siempre en cuenta que, las correcciones de seguridad, a más alto o bajo nivel, se aplican sobre las siguientes liberaciones del CMS, por lo tanto y por ejemplo, si en Joomla! 1.0.8, se detectaron fallas de seguridad a niveles críticos, éstas, no se corrigieron en dicha versión, sino más bien a partir de sus venideras liberaciones.
Luego, si en cada una de las liberaciones del CMS Joomla! se corrigen, entre otras cosas, fallas de seguridad a más alto o bajo nivel, el usar liberaciones anteriores de ese mismo CMS conlleva un riesgo de seguridad “mayor al aceptable”, por el simple motivo de que, en esa última liberación estable, no se sabe de fallas de seguridad (lo cual no quiere decir que no existan o que no se detecten en un futuro cercano o lejano, como se puede observar a lo largo del camino de cualquier proyecto de estas mismas características, los cuales, deben ajustarse y bloquear con éxito y dinamismo las nuevas o persistentes fallas de seguridad que permitieran intrusiones no deseadas a través de su código)
¿Qué extensiones de terceros tienes instaladas?
Si el proyecto Joomla! se encarga de asegurar su código para evitar intrusiones no deseadas a través del mismo, tanto para lo que es el núcleo de la aplicación, como para las extensiones que entran nativamente junto con la instalación del CMS.. existen gran cantidad de extensiones programadas por terceros (a instalar posteriormente al CMS) que no están bajo el control de calidad o seguridad del proyecto Joomla!, sino de los respectivos autores de cada una de dichas extensiones.
Si bien a efectos de actualización a las últimas versiones estables de las extensiones que estemos manejando, nos encontramos ante un mismo criterio a aplicar que en el punto anterior y por un mismo motivo, cabe recalcar que, al contrario de lo que pueda suceder con el CMS actualmente, las extensiones, bajo un aspecto de seguridad, pueden haber sido pobremente programadas por sus respectivos autores, o, carecer de soporte o actualización en ese sentido.
Es complicado, para el ojo de alguien que no es programador experto, saber distinguir entre la variedad de gustos y colores con el que nos llegan las extensiones (contemplándolo desde un aspecto de “programación segura”)
Cuando una extensión programada por terceros deja constancia, de un modo similar al que se aplica por parte de los autores del CMS Joomla!, de que se están aplicando políticas de seguridad, orientadas a frustrar intentos de intrusión conocidos a través de su código, o, de actualizarse a la mayor brevedad posible en caso de detectarse nuevas fallas de seguridad, nos encontraríamos, otra vez, dentro de unas condiciones o nivel de seguridad aceptable.
En el caso opuesto, nos encontraríamos, con esa extensión de terceros en particular, en condiciones de seguridad desfavorables, y por lo tanto, dentro de un nivel de seguridad muy poco aceptable.
Si bien se facilitan “listados de extensiones vulnerables” esto no significa que, “las demás extensiones que no aparezcan en ese listado sean seguras, contemplándolo desde su código y frente a las posibilidades de intrusión maliciosa conocidas a través del mismo”.
Toma esos listados como un medio de uso común para estar informados y seguir informando, entre todos, sobre las extensiones que permiten intrusiones maliciosas a través de su código y así obtener listados cada vez más completos (tal vez, una extensión que aparezca en esa lista, solo sea vulnerable en un punto anterior de su desarrollo y posteriormente a la versión indicada en esa lista, solucionaron el problema de seguridad por su parte -o no-).
El usar solo extensiones de reconocido prestigio y estables, con soporte y actualización en el tema de seguridad, te limitará en gran medida la extensibilidad de tu proyecto; pero, te mantendrá dentro de un nivel de seguridad aceptable.
Ojo! “Reconocido prestigio” no es sinónimo de “extensiones de pago” (estas últimas, están sometidas, como la primeras, a aplicárseles un mismo criterio); además, los “nuevos proyectos que salgan y que a extensiones se refiera”, normalmente, no empezarán por sacar “versiones estables de su software”, sino mas bien y según la maduración de su código, empezarán por versiones, “alfa”, luego “beta”, luego “RC” y luego “Estables”
¿Qué versión de Apache/MySQL/PHP estás usando?
Tanto Apache, como MySQL, como PHP, dentro de lo que estamos manejando, entran dentro de la categoría de “aplicaciones de reconocido prestigio” con soporte y actualización de seguridad en sus últimas versiones estables; sin embargo, todas ellas y en algún momento puntual de sus respectivos proyectos, pueden haber atravesado períodos vulnerables a más alto o bajo nivel.
Si estamos usando versiones de algunas de estas aplicaciones, que sin lugar a dudas cumplirán a partir de un determinado número de versión, con los requisitos mínimos necesarios para que funcione Joomla!; pero, con vulnerabilidades conocidas, sin corregir y/o sin soporte oficial, estaremos frente a niveles poco aceptables de seguridad. Por lo tanto, lo recomentado también para movernos dentro de un nivel aceptable de seguridad, es usar o estar actualizado a últimas versiones estables.
Y esto mismo, es extensible al resto de aplicaciones, “no Joomla!”, como bien pueda ser el sistema operativo, las aplicaciones de correo, FTP, software del hadware externo al PC, etc, etc… si todo esto no entra dentro de tu “zona de control”, obviamente, es quien te sirve el hospedaje quien debe encargarse, pero ojo, que los hay que desde sus servicios contratados, tienen la capacidad de poder interactuar con este tipo de cosas y actualizarlas o recibir avisos de actualizaciónes de seguridad recomendadas para las aplicaciones “no Joomla!” que está manejando.. luego, el punto a tener en cuenta, está ahí.. si tú tienes ese tipo de parámetros configurables y no te aplicas, no esperes a que se encargue el que te sirve el hospedaje por tí sin que tú se lo solicites, tal vez, a cambio de un pago. Es decir, si tú lo puedes configurar apropiadamente para lo que estás manejando o interactuar, es cosa tuya el encargarte hasta el punto en que lo tengas permitido, salvo que explicitamente hayas contratado, dentro de ese servicio, “el que otros lleven por ti la actualización de aplicaciones u otras tareas que te correspondan a ti, por quedar dentro de tu zona de control”
¿Qué tipo de hospedaje tienes contratado?
Servidores compartidos, servidores virtuales, servidores dedicados, son de los distintos tipos de hospedaje más comunes con los que nos podemos encontrar, y, todos ellos, pueden estar usando distribuciones y compilaciones distintas del servidor u otras aplicaciones a utilizar.
Lo que hay por ver, no está tanto en quién nos venda o revenda un servicio; ni sobre que tipo, porque ciertamante, un nivel aceptable de seguridad, se podría alcanzar con cualquiera de los tres tipos, a base de “optimizar al máximo la seguridad, por medio de las configuraciones y compilaciones más apropiadas para lo que se pretende servir”. El kit de la cuestión está más sobre la actualización, compilación y configuración de todo el entorno, lo cual, si que te puede impedir optimizar la seguridad dentro de niveles aceptables.
Es decir, tanto se puede recomendar a alguien huir de un servidor compartido, como de otro virtual, como de un tercero del tipo dedicado, cuando se cumple con ciertos inconvenientes.
Si, adaptándote a lo que estamos manejando, topas con profesionales que hagan sus deberes por su parte o zona de control, lo normal, no será tener problemas de seguridad a causa de ellos, de otro modo, periódicamente, notarás los efectos negativos, viendo vulnerado tu sitio o bien a través suyo o de otros alojados en la misma máquina donde estás tú (si se diera el caso).
El que excepcionalmente se den problemas de seguridad y se resuelvan a la mayor brevedad posible, no significa obligadamente que se esté ante una falta de profesionalidad o negligencia por parte de quién nos sirve el hospedaje.. son cosas que pueden pasar y que de hecho pasan. El tema, es que si el asentamiento no es seguro, las seguridad no podrá ser aceptable en ninguno de ellos.
¿Qué medidas de seguridad estás aplicando actualmente?
¿Usas contraseñas robustas?
Se entiende por contraseña robusta aquella con más de ocho dígitos, formada por letras, números y signos permitidos, sin sentido alguno.
El cambiar las contraseñas robustas periódicamente; así como no usar las mismas contraseñas para lo que son niveles de acceso distintos, es muy recomendable también.
¿Tienes un respaldo completo de tu sitio?
Disponer de un respaldo de los datos de tu base de datos, y, de los archivos y carpetas que comforman tu espacio web, como mínimo, de la última semana, te ayudará, en caso de intrusión, como mínimo, a no perder todo tu trabajo y el que otros hayan aportado a tu sitio.. desde la última semana.
Si utilizas discos duros de replica, o trabajas con réplicas de la DB, se pueden minimizar las pérdidas de información sensiblemente, pero ojo, las répilicas infectadas de poco sirven si no se sanean previo a su reutilización.
Disponer de respaldo por backup tradicional y de respaldo por réplica, ayudan a subsanar la mayoría de los inconvenientes, y, el no disponer de ninguno de ellos, pueden provocar situaciones irreversibles en cuanto a lo que se refiere a recuperar la información.
¿Con qué permisos CHMOD tienes los archivos y carpetas de tu espacio web?
Estar trabajando con permisos CHMOD superiores a 755 para las carpetas y 644 para los archivos nos pone dentro de un margen poco aceptable de seguridad. No excedas del modelo CHMOD 755/644 y entrarás dentro de un margen aceptable de seguridad.
¿Protección extra?
Sobre la protección extra, solo comentar que se ocupa de limitar los posibles daños, pero no actuando directamente sobre la raíz del problema.. que en la mayoría de las ocasiones, la raíz del problema, estará en software vulnerable o un asentamiento incorrecto.
Algunos ejemplos de protección extra, son las normas anti-exploit o anti-inyecciones SQL, las cuales, cuando detectan algun “patrón malicioso” dentro de un acceso URL, lo bloquean.
Y así, normalmente, la mayoría de aplicaciones, como bien pueda ser Apache, disponen de algún tipo de utilidad, del tipo mod_security, mod_evasive, mod_rewrite que, de estar bien configuradas, frustrarán muchos de los intentos de intrusión no deseados sin apenas arrojar falsos positivos.
Luego, contra las carencias de seguridad en el código, la protección extra, que es más apaño que solución, puede salvarnos en muchas ocasiones.
El disponer de este tipo de protección para lo que son las aplicaciones que conforman todo nuestro entorno, nunca está de más y el revisar todo log de acceso o error a nuestro alcance.