Por normal general, tarde o temprano, al trabajar sobre unidades de red y ficheros compartidos, la pregunta ¿quién ha borrado el fichero ...? llega al administrador de sistemas. Es en este momento cuando un samba mal configurado o con unas opciones de auditoría malas puede complicarte la vida.
Por suerte, samba nativamente ofrece dicha posibilidad, y únicamente para usarlo hay que emplear el módulo full_audit que viene incluido ya en las últimas versiones de samba. La forma en la que yo lo implementé creo que es la más sencilla y fácil de gestionar, y permite más modularidad. Para ello, comenzamos creando el fichero /etc/samba/audit.conf con el siguiente contenido,
vfs objects = full_audit
full_audit:prefix = %u|%I|%m|%S
full_audit:success = mkdir rename unlink rmdir pwrite
full_audit:failure = none
full_audit:facility = local0
full_audit:priority = INFO
Con el fichero creado, únicamente debemos de incluir este método de auditoría en aquellas carpetas compartidas que deseemos. Para hacerlo, nada más sencillo que en el fichero /etc/samba/samba.conf, añadir la siguiente línea las unidades que deseemos,
[UNIDAD DE RED]
include = /etc/samba/audit.conf
path = /srv/data
read only = no
...
Tras ello, y antes de reiniciar el servicio, podemos comprobar con testparm que el fichero de configuración es válido. Si todo está correcto, entonces ya podemos reiniciar el servicio.
shell> testparm
shell> service smbd restart
shell> service nmbd restart
Desde este momento, aparecerán líneas en syslog indicando la actividad de los usuarios en el sistema.
shell> tail -f /var/log/syslog
mail|192.168.0.20|304j|user|pwrite|ok|data/file.text
fran|192.168.0.14|71aj|user|pwrite|ok|data/file.text
fran|192.168.0.14|712j|user|pwrite|ok|data/file.text
mail|192.168.0.20|304j|user|pwrite|ok|data/file.text
javier|192.168.0.25|304j|user|pwrite|ok|javier/file.text
javier|192.168.0.25|304j|user|pwrite|ok|javier/file.text
javier|192.168.0.25|304j|user|pwrite|ok|javier/file.text
Espero que os sea de utilidad. En esta salida, buscar un evento, como veis es muy sencillo.
Nota:
Significado de las líneas del fichero de auditoría:
- vfs objects
Indicamos que use el módulo full_audit
- full_audit:success
Especifica las acciones en las cuales realizar la escritura de auditoría.
- mkdir: Creación de directorios
- rename: Cambio de nombres
- unlink: Borrado de ficheros
- rmdir: Borrado de directorios
- pwrite: Nuevos ficheros (creados o subidos)
Aquí puedes encontrar toda la lista de opciones soportadas.
- full_audit:failure
Indica qué acciones se deben de escribir a auditoría en caso de que fallen.
- full_audit:facility
full_audit envía todo a syslog, pero permite configurarlo por si nos interesa separar o poder filtrar dichas acciones. En este caso, hemos optado por poner la
facility local0, ya que suele ser de las no usadas en el sistema.
- full_audit:priority
Al igual que nos permite indicar la
facility, también se permite indicar la
prioridad. Para nosotros INFO.
- full_audit:prefix
Indica cómo queremos escribir la línea de log, para hacerla más legible. A continuación os deja la tabla de las variables soportadas por full_audit.
Variable | Definition |
Variables de cliente |
%a | Arquitectura del cliente |
%I | Dirección IP del cliente |
%m | Nombre NetBIOS del cliente |
%M | Nombre DNS del cliente |
Variables de usuario |
%u | Nombre de usuario |
%U | Nombre de usuario que el cliente solicita |
%H | Directorio ~ de %u |
%g | Grupo primario de %u |
%G | Grupo primario de %U |
Variables de compartido |
%S | Nombre del compartido |
%P | Directorio del compartido |
%p | Punto de montaje del compartido |
Variables del servidor |
%d | ID del proceso del servidor |
%h | Nombre DNS del servidor |
%L | Nombre NetBIOS del servidor |
%N | Directorio raís del servidor |
%v | Versión de samba |
Miscellaneous variables |
%R | Nivel de protocolo SMB negociado |
%T | Fecha |
var | Valor de una variable de entorno var |
Leer más