Auditoria no samba

27 06 2008

As vezes precisamos saber quem apagou/renomeou/moveu tal arquivo e uma forma de saber isso é habilitando o módulo de auditoria do samba. Na seção [global] do /etc/samba/smb.conf adicione o seguinte:

vfs object = audit

Em seguida é preciso reiniciar o samba:

/etc/init.d/samba restart

Pronto, agora podemos verificar tudo que esta ocorrendo, os logs são gravados em /var/log/messages:

Jun 27 17:10:16 localhost smbd_audit[29426]: connect to service PUBLICA by user rafael
Jun 27 17:10:17 localhost smbd_audit[29426]: open teste.txt (fd 28 )
Jun 27 17:10:17 localhost smbd_audit[29426]: close fd 28
Jun 27 17:10:27 localhost smbd_audit[29417]: opendir .
Jun 27 17:10:27 localhost last message repeated 3 times
Jun 27 17:10:27 localhost smbd_audit[29417]: rename ./teste.txt -> ./teste2.txt
Jun 27 17:10:32 localhost smbd_audit[29417]: unlink ./teste2.txt

Para ficar melhor de buscarmos e não poluir o /var/log/messages, podemos configurar o syslog para por os logs em /var/log/samba/audit.log. Abra o /etc/samba/smb/conf novamente e adicione logo abaixo da linha que adicionamos acima:

audit:facility = LOCAL1
audit:priority = NOTICE

Ficando:

# Auditoria
vfs objects = audit
audit:facility = LOCAL1
audit:priority = NOTICE

E para concluir vamos configurar uma “facility” personalizada no syslog que pode ser da local0 até a local7, no caso eu utilizei a local1 (audit:facility = LOCAL1) e “level/priority” igual a notice (audit:priority = NOTICE) . A adicione (no começo ou final, tanto faz) o seguinte ao /etc/syslog.conf:

# Logs para auditoria do samba
local1.notice                   /var/log/samba/audit.log

Reinicie o syslog e o samba:

/etc/init.d/sysklogd restart
/etc/init.d/samba restart

Verificando se deu tudo certo:

# tail -f /var/log/samba/audit.log
Jun 27 17:22:46 localhost smbd_audit[29574]: connect to service PUBLICA by user rafael
Jun 27 17:22:46 localhost smbd_audit[29574]: opendir ./
Jun 27 17:37:01 localhost smbd_audit[29574]: opendir teste2
Jun 27 17:37:01 localhost smbd_audit[29574]: rmdir teste2

Tudo beleza! 😉





Forçando reboot e shutdown

22 06 2008

As vezes nos encontramos em situações onde é preciso reiniciar o S.O após algum problema e na maioria das vezes não temos acesso físico a máquina. Para melhorar a situação os comandos shutdown, halt e reboot não funcionam nem pedindo pelo amor de Deus… ehehehe. Semana passada eu me encontrei nesta situação após um problema com o sistema de arquivos, depois de tentar de tudo, só me restou forçar um reboot usando sysreq.

O que é sysreq?

É um conjunto de teclas “mágicas” que quando você pressionar o kernel irá responder imediatamente.

Habilitando o sysreq

O kernel deve ser compilado com a opção CONFIG_MAGIC_SYSRQ ativada (a maioria das distribuições vem com esta opção ativada). Para habitarmos com todas as funcionalidades digite:

echo 1 > /proc/sys/kernel/sysrq

Veja a tabela de opções (em inglês):

0 – disable sysrq completely
1 – enable all functions of sysrq
2 – enable control of console logging level
4 – enable control of keyboard (SAK, unraw)
8 – enable debugging dumps of processes etc.
16 – enable sync command
32 – enable remount read-only
64 – enable signalling of processes (term, kill, oom-kill)
128 – allow reboot/poweroff
256 – allow nicing of all RT tasks

Forçando um shutdown/reboot

Depois de habilitado para usarmos é simples, pressione Alt + Sys Rq + “tecla de comando” ou defindo a “tecla de comando” no arquivo /proc/sysrq-trigger.

Forçando shutdown:

echo o > /proc/sysrq-trigger

Forçando reboot:

echo b > /proc/sysrq-trigger

Este comando irá rebootar o sistema imediatamente sem sincronizar ou desmontar o disco.

Tabela de comandos (em inglês):

’b’ Will immediately reboot the system without syncing or unmounting your disks.
’c’ Will perform a kexec reboot in order to take a crashdump.
’d’ Shows all locks that are held.
’e’ Send a SIGTERM to all processes, except for init.
’f’ Will call oom_kill to kill a memory hog process.
’g’ Used by kgdb on ppc and sh platforms.
’h’ Will display help (actually any other key than those listed here will display help. but ’h’ is easy to remember : )
’i’ Send a SIGKILL to all processes, except for init.
’k’ Secure Access Key (SAK) Kills all programs on the current virtual console. NOTE: See important comments below in SAK section.
’m’ Will dump current memory info to your console.
’n’ Used to make RT tasks nice able
’o’ Will shut your system off (if configured and supported).
’p’ Will dump the current registers and flags to your console.
’q’ Will dump a list of all running timers.
’r’ Turns off keyboard raw mode and sets it to XLATE.
’s’ Will attempt to sync all mounted filesystems.
’t’ Will dump a list of current tasks and their information to your console.
’u’ Will attempt to remount all mounted filesystems read only.
’v’ Dumps Voyager SMP processor info to your console.
’w’ Dumps tasks that are in uninterruptable (blocked) state.
’x’ Used by xmon interface on ppc/powerpc platforms.
’0’ ’9’ Sets the console log level, controlling which kernel messages will be printed to your console. (’0’, for example would make it so that only emergency messages like PANICs or OOPSes would make it to your console.)

Referência
SysReq Doc