Si tenemos un servidor de archivos donde se manejan datos personales, con la entrada en vigor del RGPD (la nueva LOPD), es obligatorio mantener un registro de actividad de los usuarios: debemos saber cuando y quien accede a cada archivo y qué hace con él.
Para esto podemos añadir a Samba el módulo full_audit. Esto es un VFS (Stackable VFS Modules), que son módulos que añaden funcionalidades extra a Samba desde la versión 3, como este full_audit, que nos permite registrar toda la actividad de los usuarios Samba.
Vamos a ver como activarlo:
Creamos el fichero /etc/samba/audit.conf con este contenido:
vfs objects = full_audit
full_audit:prefix = %u|%I|%m|%S
full_audit:success = mkdir rename unlink rmdir pwrite pread connect disconnect
full_audit:failure = mkdir rename unlink rmdir pwrite pread connect disconnect
full_audit:facility = local5
full_audit:priority = INFO
- vfs objects: Indicamos a samba que queremos cargar el módulo full_audit.
- full_audit:prefix: Indicamos las variables que se almacenarán en el log. En este caso serán el nombre de usuario, IP, nombre del equipo, nombre de la carpeta compartida a la que accede.
- full_audit:success: Indicamos a samba qué tipo de operaciones registraremos cuando se hayan realizado correctamente. En este caso:
- mkdir: Registra creación de carpetas
- rename: Registra renombrado de archivos
- unlink: Registra borrado de archivos
- rmdir: Registra borrado de directorios
- pwrite: Registra la creación de archivos
- pread: Registra la apertura de archivos
- connect: Registro de conexiones
- disconnect: Registro de desconexiones
- full_audit:failure: Indicamos a samba qué tipo de operaciones registraremos cuando se produzcan errores. Indicamos los mismos valores que en caso de éxito, así registrará, por ejemplo, cuando un usuario sin permisos intente acceder o borrar un archivo cuando no tenga permisos para ello.
- full_audit:facility = LOCAL5: Le indicamos a Samba que queremos enviar los registros al syslog utilizando el facility LOCAL5 (ver más adelante configuración de archivos de registro).
- full_audit:priority = INFO: Aquí indicamos el tipo de gravedad con el que se registraran los mensajes en los log. Pueden ser notice, info, debug, warning, alert...
Ahora configuraremos samba para que cargue este fichero añadiendo en /etc/samba/smb.conf esta línea:
include = /etc/samba/audit.conf
Podemos añadirla en la sección [global] para que registre las actividades de todas las comparticiones, o bajo otra sección concreta que hayamos creado para registrar solo las actividades de esa sección.
Comprobamos que el smb.conf está correctamente configurado y cargando la nueva configuración con el comando testparm.
Reiniciamos samba
systemctl restart smbd nmbd
Ahora podemos comprobar que en /var/log/syslog se registran las actividades realizadas en las carpetas compartidas así:
May 2 12:14:37 sambaserver smbd_audit: usuario|192.168.0.201|workstation1|datos|pwrite|ok|qwer.txt
May 2 12:14:51 sambaserver smbd_audit: usuario|192.168.0.201|workstation1|datos|mkdir|ok|Nueva carpeta
May 2 12:14:56 sambaserver smbd_audit: usuario|192.168.0.201|workstation1|datos|rename|ok|Nueva carpeta|Nueva carpeta1
May 2 12:15:04 sambaserver smbd_audit: usuario|192.168.0.201|workstation1|datos|rename|ok|Nuevo documento de texto.txt|archivo2.txt
May 2 12:15:11 sambaserver smbd_audit: usuario|192.168.0.201|workstation1|datos|unlink|ok|asdf.txt
May 2 12:15:11 sambaserver smbd_audit: usuario|192.168.0.201|workstation1|datos|unlink|ok|qwer.txt
May 2 12:15:11 sambaserver smbd_audit: usuario|192.168.0.201|workstation1|datos|unlink|ok|poiu.txt
Configurar ficheros de registro
Ya tenemos funcionando el registro de actividad, pero se guarda todo en syslog, junto con otra mucha información del sistema. Para realizar una auditoría resultaría mucha más cómodo tener separada la información de samba. Podemos hacerlo gracias a la opción full_audit:facility = LOCAL5 que configuramos antes:
vim /etc/rsyslog.d/50-default.conf
Añadir esta línea al principio del fichero (antes del *.*):
local5.* /var/log/samba/audit.log
& ~
La primera línea indica al syslog que todos los registros originados desde el facility LOCAL5 se almacenen en /var/log/samba/audit.log, además de en syslog. La segunda línea evita que se guarden en syslog.
Reiniciamos rsyslog y samba:
systemctl restart rsyslog smbd
Comprobar que en /var/log/syslog no hay errores y que no se está guardando nada.
Si no se ha creado el archivo /var/log/samba/audit.log o no se está actualizando, comprobar que tiene los mismos permisos que /var/log/syslog (en nuestro caso es usuario syslog grupo adm).
Y así tendremos el registro de actividad de usuarios en samba en un fichero de log separado para facilitar la auditoría. Este fichero puede crecer mucho, por lo que conviene configurar logrotate para separarlo por días, comprimirlo y eliminar los antiguos.
Probado con éxito en Ubuntu 16.04, 18.04 y 20.04.
Más información: Samba
acg dice
hola. actualiza el post. full audit samba 4 en ubuntu 20.04 ya no muestra los registros deseados de mkdir rename unlink rmdir pwrite pread connect disconnect sino otro montón de basura inútil y tampoco netbios
sysadmin dice
muchas gracias por el conocimiento, funciona perfectamente.
Eraldo dice
hola amigo consulta, /var/log/samba/audit.log se debe de crear solo? no me esta funcionando
Igor García dice
Prueba a crearlo manualmente, con el mismo propietario, grupo y permisos que el resto de logs de samba.
Si no, comprueba si se está registrando los cambios de samba en /var/log/syslog. Si es así, vuelve a comprobar la segunda parte del tutorial.
Eraldo dice
muchas gracias por el apoyo, me funciono