No soy informático, sinó un usuario “amateur” de Joomla, que a lo largo de los años, he aprendido ciertas lecciones a aplicar, y me gustaría compartirlas.
Una vez aclarados estos puntos, paso a comentarles los puntos que deberan seguir para hacer mas seguro sun CMS JOOMLA!:
Tabla de Contenidos
- 1.- Permisos de las carpetas
- 2.- Acceso desde el front-end
- 3.- Configuración htaccess
- 4.- Modulos o componentes que no uses
- 5.- Templates
- 6.- Sistemas de seguridad de terceros
- 6.- Protege el acceso a backend
- 7.- Base de datos
- 8.- Index.php
- 9.- configuration.php
- 10.- robots.txt
- 11.- Uso descontrolado
- 12.- Crear un nuevo Super Admin
- 13.- Usuarios
- 14.- Administración
- 15.- La configuración de Joomla
- 16.- La configuración de Componentes
- 17.- Cosas evidentes
- 18.- El servidor
- 19.- Herramientas online
- 20.- Antivirus
- 21.- Compartir
- 22.- Despues de un ataque o Hackeo
- 23.- Errores más frecuentes
- ¡ Pide Presupuesto GRATIS ! – Rellenar el formulario solo te llevara 30″ segundos.
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.
3.- Configuración htaccess
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. 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.- Modulos o componentes 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.
5.- Templates
Elimina las plantillas que no uses.
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.
6.- Protege el acceso a backend
7.- Base de datos
No pongas el prefijo por defecto a la base de datos (que es jos_) 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.
8.- Index.php
No dejes carpetas sin index.php, 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.
9.- 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.
10.- 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.
11.- Uso descontrolado
12.- Crear un nuevo Super Admin
Joomla asigna al admin el ID 42. 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.
13.- 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.
14.- Administración
Hay que evitar el acceso 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. Ver comentario del usuario Yurima para tener una idea de lo que hay que hacer.
15.- La configuración de 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 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.
16.- La configuración de Componentes
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.
17.- Cosas evidentes
- Tener siempre actualizado Joomla y los componentes.
- 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.
18.- El servidor
- Utilice lasultimas versiones de PHP, MySQL y en general todos los componentes de su servidor.
- Deshabilite el PING a su servidor.
- Si teien 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, trat 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.
- En http://www.cuwhois.com 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
19.- Herramientas online
Existen multitud de herramientas que analizan webs de manera gartuí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.
20.- Antivirus
Un buen antivirus puedes pasárselo a los componentes antes de instalarlo. Avast es una opción gratuita, que no es molesta y es actualizada regularmente.
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.
21.- Compartir
Cualquier problema o idea que tengas, debes compartirlo en la Comunidad Joomla. Es la mejor manera de evitar ataques y vulnerabilidades.
22.- 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 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?
23.- Errores más frecuentes
- 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 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 psoibles problemas.
Archivo configuration
Muy buenas reseñas, sobre todo lo del archivo configuration.php y como esconderlo. Gracias.
A tener en cuenta
Un texto que todo usuario de joomla deberia pegarse como favorito, sea nuevo o con carrera en este mundillo, entre los cuales me incluyo, que por mucho que uno crea saber, no es suficiente y esta realmente bien que alguien te lo recuerde y todos deberiamos tomar nota. Pequeno74, llevas tiempo sin publicar, pero con esto estas perdonado 😆 Gracias por el recordatiorio.
Espero que lo publiques
Parece mentira que haya pasado tanto tiempo y hayan aprendido la lección. Igualmente, para no relatizar el servidor no es bueno que todo el directorio de comp se encuentre con .htaccess , lo demás muy bueno, igualmente la carpeta administrator la pondría fuera del espacio público. Creo que hay tres cosas que deben fundamentar este trabajo, que es en el caso de cpanel o plesk tener la web admin con contraseña, segundo el configuration.php cambiado y tercero la carpeta administrator fuera del espacio público. Una cosa que se omitio la BD del joomla, que tenga key. Otra cosa, importante revisar el ftp de joomla no dar señales de vida. Por lo demás, esta claro, el articulo..
Por?
¿Y porque no iba a hacerlo? 😉
[quote name=”yiruma”]Parece mentira que haya pasado tanto tiempo y hayan aprendido la lección. Igualmente, para no relatizar el servidor no es bueno que todo el directorio de comp se encuentre con .htaccess , lo demás muy bueno, igualmente la carpeta administrator la pondría fuera del espacio público. Creo que hay tres cosas que deben fundamentar este trabajo, que es en el caso de cpanel o plesk tener la web admin con contraseña, segundo el configuration.php cambiado y tercero la carpeta administrator fuera del espacio público. Una cosa que se omitio la BD del joomla, que tenga key. Otra cosa, importante revisar el ftp de joomla no dar señales de vida. Por lo demás, esta claro, el articulo..[/quote]
Considerando el pasado
Hay varias maneras de proteger a tales archivos sensibles de acceso público, pero la mayoría de ellos no son tan factibles. A continuación vamos a dar instrucciones paso a paso sobre cómo lograr esto.
Paso 1: Mover configuration.php a un directorio seguro fuera del espacio público.
Paso 2: para eso habrá que modificar el archivo /includes/defines.php and /administrator/includes/defines.php, más precisamente, esta constante: define (‘JPATH_CONFIGURATION, JPATH_ROOT);
Si, por ejemplo, que desea mover el archivo a un nivel y en una carpeta denominada “ensayo” la constante se verá así:
define ( ‘JPATH_CONFIGURATION’, JPATH_ROOT.DS.’..’.DS.’ensayo’ );
Paso 3: Asegúrese de que el configuration.php no se puede escribir en todos, por lo que no puede ser anulado por com_config.
Paso 4: Si necesita cambiar la configuración, hacerlo de forma manual en el configuration.php reubicados.
seguridad joomla
amigos, si alguien me puede ayudar en este asunto: tengo mi sitio web, pero ultimamente he notado que muchos miembros se me estan dando de alta con unos correos falsos de un sitio que proporciona correos por 10 minutos. la pagina es (www.nepwk.com = sitio de correos temporales). de esa forma cuando esa web te da un correo por ese tiempo al usuario le llega la activacion de mi sitio. pregunto: Existe una forma que no salgan mas la activaciones desde mi sitio a esa web de correos temporales??. espero que alguien me pueda orientar, ya lo he escrito en varios foros de otros sitios, pero no me dan solucion. saludos.
pd, no se si he escrito esta preocupacion en el foro correcto
HTACCESS
Leete este contenido > [url]http://solojoomla.com/utilizar-el-archivo-htaccess-en-joomla.html[/url] Te ayudara a frenar el uso de este tipo de emails.
[quote name=”gafita”]amigos, si alguien me puede ayudar en este asunto: tengo mi sitio web, pero ultimamente he notado que muchos miembros se me estan dando de alta con unos correos falsos de un sitio que proporciona correos por 10 minutos. la pagina es (www.nepwk.com = sitio de correos temporales). de esa forma cuando esa web te da un correo por ese tiempo al usuario le llega la activacion de mi sitio. pregunto: Existe una forma que no salgan mas la activaciones desde mi sitio a esa web de correos temporales??. espero que alguien me pueda orientar, ya lo he escrito en varios foros de otros sitios, pero no me dan solucion. saludos.
pd, no se si he escrito esta preocupacion en el foro correcto[/quote]