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.textEspero 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 objectsIndicamos que use el módulo full_audit
- full_audit:successEspecifica 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)
- full_audit:failureIndica qué acciones se deben de escribir a auditoría en caso de que fallen.
- full_audit:facilityfull_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:priorityAl igual que nos permite indicar la facility, también se permite indicar la prioridad. Para nosotros INFO.
- full_audit:prefixIndica 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