Monitoring Alfresco: Nagios/Icinga, Hyperic, AuditSurf… JMX rocks!

Si tenemos Alfresco en producción (versión Enterprise), posiblemente queramos tener la aplicación controlada de la mejor forma posible y sobre todo que ese control nos aporte una visión real de lo que está pasando en el servidor y en la aplicación. Una monitorización efectiva nos permite controlar los problemas con el servicio, atisbar problemas futuros de rendimiento, detectar cuellos de botella, anomalías, etc.

Basic RGBnagios hypericauditsurf

La necesidad estaba ahí, necesitamos una solución de monitorización potente para Alfresco. Las versiones 3.X de Alfresco Enterprise permite ver y modificar muchos propiedades de la aplicación en tiempo real, por ejemplo:

  • Cambiar el nivel de log
  • Activar o desactivar FTP, CIFS o NFS
  • Poner el repositorio en solo lectura.
  • Poner el servidor en mono-usuario.
  • Limitar el número máximo de usurios o evitar accesos adicionales.
  • Ver número de sesiones y tickets de usuarios.
  • Ver número de sesiones y tickets no válidos.
  • Y muchos parámetros más.

Todo esto es gracias al soporte de JSR-160 vía JMX.

Vamos a ver qué opciones existen y cómo podemos implementarlas. Haremos un repaso a Hyperic, AuditSurf, cómo conectar a Alfresco con Jconsole y por último cómo implementar este tipo de monitorización con Nagios o Icinga (nuevo fork de Nagios).

ACTUALIZACION: No olvides ver este y este post. A partir de este artículo hice el módulo de Nagios para Alfresco.

Read More

10 consejos básicos de seguridad en Alfresco

¡¡Actualizado el punto 5!!

Si estás empezando a usar Alfresco, en cuanto a seguridad y protección, es recomendable que tengas en cuenta los siguientes consejos básicos:

1. No uses la contraseña de administrador por defecto (admin/admin), debe ser lo primero que cambies al acceder por primera vez a Alfresco. Incluso puedes crear un usuario super administrador diferente a admin. A partir de la versión 3.1 puedes añadir tantos administradores como quieras en el grupo ALFRESCO_ADMINISTRATORS (vía Alfresco Explorer).

2. No uses el usuario y contraseña de base de datos por defecto. Como sabes, se usa usuario alfresco, contraseña alfresco y base de datos alfresco, para tenerlo en local está bien, pero no lo uses en un servidor, la salud de tu Alfresco depende de ello.

3. Nunca ejecutes Alfresco con un super usuario (root). Crea un usuario específico para levantar la aplicación. También recuerda que al repositorio físico (alf_data), índices y a la base de datos sólo debe acceder el usuario que levante la aplicación alfresco o el usuario que conecta a la base de datos, restringe acceso a cualquier otro usuario para evitar inconsistencias en BBDD y/o repositorio.

4. Usa un firewall como IPtables en la máquina donde está instalado Alfresco para hacer portforward de los puertos inferiores al 1024.

5. Usa un Apache y ProxyPass para proteger tu servidor de aplicaciones, no expongas tu servidor de aplicaciones. Esta configuración de Apache te puede servir de ejemplo, yo uso un fichero llamado alfresco.conf en /etc/httpd/conf.d/ (RedHat, CentOS y derivados):

ProxyPreserveHost On
ProxyPass /alfresco http://127.0.0.1:8080/alfresco
ProxyPassReverse /alfresco http://127.0.0.1:8080/alfresco

ProxyPass /share http://127.0.0.1:8080/share
ProxyPassReverse /share http://127.0.0.1:8080/share

ProxyPass /mobile http://127.0.0.1:8080/mobile
ProxyPassReverse /mobile http://127.0.0.1:8080/mobile

ProxyPass /studio http://127.0.0.1:8080/studio
ProxyPassReverse /studio http://127.0.0.1:8080/studio

También podríamos configurarlo con mod_proxy_ajp en lugar de mod_proxy, para más info sobre las virtudes de mod_proxy_ajp leer este artículo.

RewriteEngine on
RewriteRule ^/alfresco(.*) ajp://127.0.0.1:8009/alfresco$1 [P,L]
RewriteRule ^/share(.*) ajp://127.0.0.1:8009/share$1 [P,L]
RewriteRule ^/mobile(.*) ajp://127.0.0.1:8009/mobile$1 [P,L]

Recuerda activar en el server.xml del tomcat la siguiente línea y reiniciar Alfresco:

<Connector port=”8009″ enableLookups=”false” protocol=”AJP/1.3″ redirectPort=”8443″ />

6. Revisa los logs de Apache y del servidor de aplicaciones continuamente (en Apache el access_log y el error_log así como sus variantes SSL). En cuanto a Alfresco, recuerda que existe el log4j.properties y te permite investigar cualquier evento que ocurra en Alfresco.

7. Protege los accesos y autenticaciones con SSL. Esto se consigue, por ejemplo, instalando el módulo de Apache mod_ssl, de esa forma las conexiones serán seguras (independientemente si se accede desde Internet o Intranet). Además también aseguras las conexiones vía Webdav. Recuerda que accediendo por FTP las contraseñas viajan en claro.

8. Cuidado con los permisos y roles heredados en Alfresco, pueden ser un problema. Recuerda que en Alfresco el protagonista es el contenido, es en él donde hay que aplicar los permisos.

9. Aprovecha el encadenamiento (chaining) que soporta Alfresco en la autenticación y deja siempre para el final la autenticación con la BBDD local, sobre todo si no puedes acceder al LDAP de turno y quieres usar el usuario admin.

10. Realiza backup del repositorio y la base de datos todos los días, ya sea en frío (parando Alfresco) o en caliente, haciendo backup de la base de datos e inmediatamente del repositorio (en este orden). También puedes usar la aplicación de copia de seguridad de Intecna (ver repositorio de software libre de la Junta de Andalucía).

Seguro que se puede ampliar esta lista, ¿que consejos recomiendas tu?