No soy informático, sinó un usuario avanzado de Joomla que puede dar lecciones de seguridad web joomla, y he aprendido algunas para compartir.
Una vez aclarados estos puntos, paso a comentarles los puntos que deberan seguir para hacer mas seguro sun CMS JOOMLA!:
Tabla de Contenidos
- 1 1.- Permisos de las carpetas
- 2 2.- Acceso desde el front-end
- 3 3.- Configuración .htaccess para seguridad web joomla
- 4 4.- Módulos o Componentes joomla que no uses
- 5 5.- Templates
- 6 6.- Sistemas de seguridad de terceros
- 7 7.- Protege el acceso a backend
- 8 8.- Base de datos
- 9 9.- Index.html
- 10 10.- Configuration.php
- 11 11.- Robots.txt
- 12 12.- Uso descontrolado
- 13 13.- Crear un nuevo Super Admin
- 14 14.- Usuarios
- 15 15.- Administración y seguridad web joomla
- 16 16.- La configuración para la seguridad web Joomla
- 17 17.- La configuración de Componentes para seguridad web joomla
- 18 18.- Cosas evidentes sobre seguridad web joomla
- 19 19.- El servidor
- 20 20.- Herramientas online seguridad web joomla
- 21 21.- Antivirus para seguridad web joomla
- 22 22.- Compartir
- 23 23.- Despues de un Ataque o Hackeo
- 24 24.- Errores más frecuentes en seguridad web joomla
1.- Permisos de las carpetas
De todos es sabido no dejar las carpetas con permisos (CHMOD) que puedan dar entrada a ataques (por ejemplo un CHMOD 777). En este caso solo quiero concretar una cosa, y es el hecho de una vez modificado el permiso para que un componente pueda ejecutarse, probar luego a volver a los permisos seguros (por ejemplo un CHMOD 644).
En ocasiones muchos programas se ejecutan con permisos seguros aunque nos den aviso de que hay que ponerlos en 777. Es decir, tenemos que dedicar tiempo a repasar permisos, poner todos seguros y luego poco a poco si vemos que el programa no funciona ir probando con otros permisos. Ensayo y error amigos! Aviso: no os olvideis de la carpeta raiz (“httpdocs” o “public_html”). Ayuda sobre permisos y uso cliente FTP
2.- Acceso desde el front-end
Si no es estrictamente necesario no lo hagas. Si tienes tiempo, una web puede subsistir si tu subes los documentos y las imágenes de las Galerías o los componentes de descarga (por ejemplo galerías de imágenes y subida de documentos).
Evita habilitar la subida desde el frontend a usuarios registrados (y menos a usuarios públicos). Si lo haces, estás dejando una puerta abierta a código malicioso, y no lo digo que lo hagan tus usuarios, pero si ya hay un lugar en donde cualquier experimetado puede acceder. Y si decides dejar esa «puerta abierta» procura restringir concienzudamente el tipo de archivos que vas permitir subir.
Para imagenes, existe una técnica llamada Esteganografía – Saber Más.
3.- Configuración .htaccess para seguridad web joomla
htaccess es una potente herramienta (tienes miles de tutoriales en la red). Debes tener un .htaccess configurado con los parámetros que trae Joomla, y luego añadir los tuyos propios, por ejemplo para proteger accesos. Usa nuevamente Google para ver como utilizar este documento a nivel de seguridad. Te muestro texto básico que debes añadir al inicio del htaccess aparte de, como dije, lo que trae Joomla por defecto (en su .htaccess de ejemplo).
Algunas de las cosas imprescindibles en un htaccess son:
a) Para evitar que enlacen con tus archivos donde pone site.com debes poner su web, y tantas lineas como webs quieras dar acceso a tus archivos:
#Hotlink RewriteCond %{HTTP_REFERER} !^$ RewriteCond %{HTTP_REFERER} !^http(s)?://(www\.)?site.com [NC] RewriteCond %{HTTP_REFERER} !^http(s)?://(www\.)?otarweb.com [NC] .*\.(jpg|jpeg|png|gif|pdf|zip|rar|mov|mp3|doc|pdf|bmp|swf|flv|wmv)$ - [NC,F,L]
b)Para evitar ataques mediante ejecución de XML
## Deny access to extension xml files (uncomment out to activate) Order allow,deny Deny from all Satisfy all
Si esto te da problemas con XML de tu web que necesitan ejecutarse, puedes permitirlo mediante:
Allow from all Satisfy all
Muchos componentes admiten su propio htaccess (por ejemplo las Galerías de Imágenes y los gestores de descarga). Si es así, crea el htaccess para cada componente dentro de su carpeta. htaccess es todo un mundo, os recomiendo buscar y probar con él las diferentes opciones.
4.- Módulos o Componentes joomla que no uses
Todo aquello que no uses elimínalo, aunque lo tengas deshabilitado y no se puede ver en el frontend, un atacante experimentado puede comprobar si tienes un componente y aprovechar sus bugs aunque esté desactivado. Ten en tu servidor solo aquello que estés usando. Y además así ahorrarás espacio. Si no necesitas un componente imprescindiblemente, no lo uses. Cuantos más componentes y plugins, mas código y más posibilidades de que encuentren un lugar débil para atacar.
A tener MUY en cuenta…
Cuando desinstalas una extensión de tu joomla, en la inmensa de las ocasiones, los desarrolladores NO incluyen en su programación el ELIMINAR las tablas de tu base de datos creadas por esa extensión joomla o Plugins para WordPress.
Debes ELIMINAR esas tablas si no tienes intención de volver a utilizar dicha extensión joomla. En el caso de WordPress es más complicado eliminar tablas y datos de según que plugin desinstalado, ya que se sigue utilizando la tabla WP_POSTS y WP_POSTMETA en la mayoria de plugins creados por desarrolladores de plugins WordPress para la gestión de los datos.
5.- Templates
Elimina las plantillas que no uses. Es importante eliminar lo que no uses para la protección joomla.
6.- Sistemas de seguridad de terceros
Esas IPs además deben actualizarse y lo que es peor… A veces nos dan errores inesperados o restringen el sitio a gente «normal». Ya sabemos que eso de las IP asociadas a ciertos usuarios es muy relativo. Muchos además ejecutan en segundo plano scripts que pueden ralentizar e incluso bloquear el propio Joomla. O hacen consultas interminables a la Base de datos, provocando lo mismo que comentamos antes.
7.- Protege el acceso a backend
Por ejemplo mediante una contraseña en tu servidor. En este caso debes estar usando Plesk o CPanel (paneles de control de los servidores) y pones una contraseña para el acceso a esa carpeta, tudominio/administrator para joomla o tudominio.com/wp-admin para WordPress. Es un paso más que un intruso debe pasar. Ah! y no le pongas el mismo usuario y contraseña que tu acceso al backend. También puedes protegerlo mediante un .htpassword – Generador Online.
Captura prueba desde una web joomla cualquiera que he encontrado sin esfuerzos.
Otra opción es cambiar la url de acceso a la administración cambiando la misma con una sucesión de letras, números, caracteres o una frase que recuerde o cojunto de palabras. Existen extensiones joomla para ello, como AdminExile.
8.- Base de datos
No pongas el prefijo por defecto a la base de datos, que es jos_ en versiones joomla 1.5, cambiado a una opción que debes crear tu mismo a tu antojo, cámbialo cuando hagas la instalación. Relacionado con este punto, siempre que instales un componente que requiera instalar tablas nuevas o una base de datos, hazlo en Bases de Datos independientes si es posible. No uses la Base de Datos de Joomla para todo.
9.- Index.html
No dejes carpetas sin index.html en blanco para protección joomla y carpetas, así se evitará que se pueda acceder al listado de los archivos de una carpeta. Esto se puede controlar también desde el htaccess para evitar mostrar el listado de un directorio.
10.- Configuration.php
<?php require( dirname( __FILE__ ) . '/../mijoomla.conf' ); ?>
Muy atentos de no incluir espacios antes ni después de los tags php porque nos reportaría un error del tipo «headers already sent…». Este archivo no puede ser escrito para evitar ser sobreescrito por com_config. Si deseamos hacer modificaciones en el archivo de configuración real las realizamos a mano.
Si no lo vas a mover, una vez realizada la instalación de tu joomla, para una protección joomla optima, cambia los permisos CHMOD del archivo configuration.php a 444.
11.- Robots.txt
Mediante este archivo, limita la indexación de carpetas y archivos que consideres importantes, por ejemplo si tiene documentos que no quieres que Google indexe, o si tienes componentes que dan acceso al front-end. Ficheros y directorios importantes mejor que no se indexen. Joomla trae por defecto este archivo. Infórmate al respecto y adáptalo a tus necesidades.
12.- Uso descontrolado
Así evitaremos subidas o consultas automatizadas. Configura el antiflood para al menos 60 segundos. Lo mismo en el foro. Kunena (muy utilizado en Joomla) permite aplicar el antiflood para la publicación de mensjaes. Ponlo a 60 segundos. Conseguiras una protección joomla mas eficaz.
13.- Crear un nuevo Super Admin
Joomla asigna al admin el ID 62. Para cambiárselo, creamos un nuevo Super Administrador, y accediendo con el nuevo, al antiguio lo ponemos como Admin y luego ya podemos eliminarlo. Ahora tenemos nuestro Super Admin con otra ID. Si eres mañoso, esto también puedes hacerlo cambiando la ID con phpMyAdmin.
14.- Usuarios
Utiliza sistemas CAPTCHA en todas las secciones que puedas (sobre todo en el registro). No permitas participación pública, sinó siempre mediante registro. Revisa los usuarios registardos y observa que no aparecen repetidos o con nombres y correos sopechosos. Aquellos usuarios que aún no se han activado, elimínalos periódicamente.
15.- Administración y seguridad web joomla
Hay que evitar el acceso directa a la administración. Mediante contraseña en el servidor como digimos anteriormente, o también se puede cambiar el nombre de la carpeta “administrator”. Pero CUIDADO, esto requiere muchos cambios y puede ser complicado. Es una buena medida pero infórmate antes de aplicarla o dejarás el acceso al back-end inhabilitado.
16.- La configuración para la seguridad web Joomla
En las opciones de configuración de Joomla podemos hacer lo siguiente, siempre y cuando os sea posible:
Configuración Global > Sistema > Parámetros del Usuario: Activación de cuenta para Nuevos Usuarios > SI Parámetros para los Usuarios de la Portada > NO
Configuración Global > Sistema > Configuración Multimedia: Extensiones permitidas: Solo las imprescindibles> odt, csv, xcf, y muchas otras no sueles utilizarlas. ELIMINALAS.
Ruta del directorio de archivo & Ruta absoluta del directorio de imágenes> CAMBIALOS… pon nuevas rutas. Subidas restringidas > SI Tipos de MIME Permitidos > Igual que las extensiones permitidas. Habilitar la subida de Flash > NO
Configuración Global > Sistema > Parámetros de Depuración de errores: NO en las dos opciones
Configuración Global > Servidor > Configuración del Servidor: Ruta directorio Temporal > Cambiarla. Comprwsión GZIP > NO Informe de errores > NADA
Configuración Global > Servidor > Parámetros FTP: Habilitar FTP> NO
Cuando nos haga falta accedemos y lo habilitamos temporalmente.
17.- La configuración de Componentes para seguridad web joomla
Por ejemplo, las Galería de Imágenes y los gestores de descargas suelen crear una carpeta para almacenar los ficheros. Cambiar la ubicación de la misma. Usa componentes que estén bien integrados en Joomla. Vistiva Joomla Extensions y ahí verás aquellos que según su popularidad están más utilizados. Por ejemplo, si quieres un foro, Kunena se integra perfectamente.
18.- Cosas evidentes sobre seguridad web joomla
- Tener siempre actualizado Joomla y los componentes.
La inmensa mayoria de páginas, no solo de joomla, si no también de WordPress (Próximamente redactare un articulo sobre WordPress para explicar como protegerse de ataques, ya que es el CMS mas utilizado de largo y por tanto el mas deseado por los amigos de lo ajeno y dar razones de peso para que entiendan que no siempre es el mas indicado para su uso), si no de cualquier CMS (Gestor de contenidos) son hackeadas accediendo desde sus extensiones / plugins realizadas por terceros que hemos instalado en nuestro sistema.
- Utilizar contraseñas seguras con letras, números, mayúsculas y minúsculas. Guardarlas en lugar seguro y cambiarlas cada determinado tiempo.
- Instalar componentes de los lugares oficiales del desarrollador, o de lugares que os inspiren confianza (comprobar antes el soporte que ofrecen, como e sla web en donde ofrecen el componente…)
- Eliminar ficheros de instalación y ejemplos.
19.- El servidor
- Utilice las últimas versiones de PHP, MySQL (Hoy es aconsejable pasarse a MariaDB creado por Michael Widenius fundador de MySQL, en vez de MySQL y explicare el porque en otro articulo que estoy preparando )y en general todas los componentes de su servidor.
- Deshabilite el PING a su servidor.
- Si tienen instalados sistemas de Bases de Datos que no usa, por ejemplo PostreSQL etc… deshabilitelo. Todo lo que no use deshabilítelo.
- Configurar PHP correctamente. Debes tener tu Servidor configurado correctamente (si tienes acceso al archivo php.ini lo tienes fácil, pero htaccess también te permite configurar algunos parámetros):
- Deshabilitar register_globals
- Deshabilitar safe_mode
- 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.
RESUMEN:
register_globals = Off
display_errors = Off
log_errors = On
allow_url_fopen = Off
allow_url_include = Off
expose_php = Off
- Si es posible no use un servidor compartido. Si usa un servidor compartido, trate de ser malo y ver algo de otros usuarios. Si puedes ver por ejemplo las bases de datos de otros usuarios, pues a ti te está pasando lo mismo.
Las opciones économicas son los Clouds - En DNS Queries puedes ver las webs que comparten el servidor contigo, por si crees que alguna puede ser perjudicial.
- Logs: revisa los logs del servidor, puede que nos den pistas de si nos han intentado atacar.
- Utiliza el Firewall del servidor. Deja solo abiertos los puesrtos imprescindibles
20.- Herramientas online seguridad web joomla
Existen multitud de herramientas que analizan webs de manera gratuíta para averiguiar vulnerabilidades o si tienen virus. Puede que no sean muy fiables pero no está de más pasarle alguna a ver que resultados obtenemos para la protección joomla.
21.- Antivirus para seguridad web joomla
Un buen antivirus puedes pasárselo a los componentes joomla antes de instalarlo. Avast es una opción gratuita, que no es molesta y es actualizada regularmente en paneles Cpanel para seguridad web joomla y otros CMS que tengan instalados.
Si utilizas Cpanel puedes añadir a tu panel de control el antivirus ClamAV. Si no lo tienes activado, pidele a los administradores que te lo activen. Podras escanear tu sistema completo, incluido archivos joomla y correos electronicos.
22.- Compartir
Cualquier problema o idea que tengas sobre seguridad web joomla, debes compartirlo en la Comunidad Joomla. Es la mejor manera de evitar ataques y vulnerabilidades.
23.- Despues de un Ataque o Hackeo
NO TE FIES. Aunque localices los archivos implicados, haz una instalación limpia de Joomla. BORRA todo y vuelve a empezar, y vuelve a descargar todos los componentes joomla de sus sitios oficiales. Te ha pasado, ahora te va a llevar tiempo empezar de nuevo pero no hay alternativa ¿No querras que te vuelva a suceder verdad?.
Un post del Foro de solojoomla.com que te puede ayudar a empezar – Me han Hackeado y Borrado Todo
24.- Errores más frecuentes en seguridad web joomla
- No preocuparse de Joomla. Lo instalo, funciona y ya está.
- No dedicarle unos minutos cada día a revisar que todo funciona bien. Que los permisos son los correctos, etc…
- Confiar en cualquier componente. Lo buscamos, lo descargamos y lo instalamos.
- No tener el sitio web “limpio” no contribuye a la seguridad web joomla.
- No comprobar que un componente se ha desinstalado correctamente.
- Buscar la comodidad. Mejor hacerlo fácil, porque “nunca me va pasar a mi, no quiero complicarme”.
- No hacer copias de seguridad.
- Usar contraseñas repetidas en diferentes apartados o utilizar siempre el usuario «admin» para el Administrador.
Cualquier duda para aclaraciones, pueden preguntar en el foro de solojoomla o simplemenre rellena el siguiente formulario para que te ayudemos a solventar posibles problemas.