ttyrec - Ferramenta para auditoria de sistemas Linux

Bom dia pessoal, neste artigo vamos aprender o uso da ferramenta ttyrec, que nos possibilita gravar as atividades
realizadas pelo usuários.

[ Hits: 20.785 ]

Por: thiago ferreira coimbra da silva em 29/09/2011 | Blog: http://www.thiago-coimbra.blogspot.com/


Teste e script de automação



Agora o melhor da história, verificar se o software funciona conforme nossas configurações.

Como root, abra algum terminal em seu servidor .

Obs.: Acho interessante testar o software primeiro numa máquina virtual, e funcionando sem problemas, aí sim instalar no sistema em produção.

# ttyrec -u arquivoteste.rec

Após esse comando parece que não aconteceu nada. Porém após isso, dentro do diretório de uso atual irá aparecer um arquivo chamado arquivoteste.rec e o ttyrec já estará gravando tudo que for feito no terminal.

Execute outros comandos em seu servidor, com por exemplo history, df, fdisk -l, iptables -nL etc.

Depois disso você deve digitar exit para sair do ttyrec.

Vamos verificar o que foi gravado:

# ttyplay arquivoteste.rec

Outra opção é acompanhar a saída deste arquivo com:

# tail -f arquivoteste.rec

Se tudo ocorreu bem com o processo acima, vamos automatizar deixando um script que faça o ttyrec gravar todos os terminais dos usuários que se conectarem em teu sistema.

Crie o diretório /root/audit/ttyrec com permissão 777 para que todos os usuários possam escrever dentro dele.

# mkdir /root/audit/ttyrec
# chmod 777 /root/audit/ttyrec


Para garantia que não ocorra problema dentro do seu arquivo /etc/profile, faça uma cópia do mesmo:

# cp /etc/profile /root/profile.bkp

Após isso edite o mesmo com o seu editor preferido, no meu caso usei o vim, adicionando o conteúdo abaixo após a última linha do arquivo:

# vim /etc/profile

if arquivoteste `id -u` != 0 
then 
	TTYFORMAT="/root/audit/ttyrec/${LOGNAME}-${HOSTNAME}-`date +%H-%M--%d-%m-%Y`.rec"
	ttyrec -u $TTYFORMAT
fi

Chegamos no final desse artigo, agora toda vez que algum usuário fizer algum acesso em seu servidor, o histórico será armazenado num arquivo dentro de /root/audit/ttyrec, com as gravações com hora e data.

Espero que esteja bem explicado, pois é minha primeira contribuição aqui no VOL.

Boa sorte a todos!

Página anterior    

Páginas do artigo
   1. Preparando o terreno
   2. Teste e script de automação
Outros artigos deste autor
Nenhum artigo encontrado.
Leitura recomendada

Servidor de log no Debian com Syslog-ng

Explorando celulares Android via Web com airbase-ng

Trilhas de Certificação em Segurança da Informação - Qual caminho seguir?

VPN em Linux com OpenVPN

Metasploit Framework

  
Comentários
[1] Comentário enviado por batista em 29/09/2011 - 15:43h

Otimo artigo. Fiz a instalaçao num Ubuntu 10.10 e funcionou bem.
O software e simples porem eficiente.

[2] Comentário enviado por removido em 29/09/2011 - 17:52h

Ótima ferramenta !

[3] Comentário enviado por cruzeirense em 30/09/2011 - 10:09h

Bom artigo,

Só uma dúvida, se o cara se logar como root ele consegue desinstalar esse programa e apagar os logs dele?

[4] Comentário enviado por y2h4ck em 30/09/2011 - 10:09h

Excelente artigo, parabéns.
Apenas a caráter de informação, recomendo apenas modificar a pasta
onde os arquivos serão salvos, apenas para evitar que uma sub-pasta
do usuário root esteja como 777.


Existem opções de ACL setadas diretamente no filesystem que permitem
setar permissões avançadas como APPEND, para determinados grupos de
usuários.

[5] Comentário enviado por thiagocoimbra23 em 30/09/2011 - 10:32h

Cruzeirense, bom dia.
`
Sim, porém é super importante não deixar acesso externo via ssh para usuário root, pois o mesmo pode acessar e fazer o que quiser dentro do seu servidor. deixe acesso a outro usuário sem permissões totais do sistema. após isso, você pode trocar de usuário para root com o comando su.

qualquer dúvida estamos a disposição.

Muito obrigado!

[6] Comentário enviado por verovan em 04/10/2011 - 11:23h

Parabéns pelo artigo, muito interessante e bem explicativo.

Tive problemas para deixar automático no OpenSuse, coloquei o script acima no /etc/profile, porém quando o usuário loga ele dá o erro "arquivoteste: command not found" faltou alguma coisa?

[7] Comentário enviado por thiagocoimbra23 em 04/10/2011 - 11:38h

Verovan, boa tarde!

Vamos fazer o seguinte, dentro de /var crie duas pasta chamadas /audit/ttyrec

de permissão total com o comando chmod -R 777 /var/audit/ttyrec e dentro do script altere também conforme abaixo

if arquivoteste `id -u` != 0 then TTYFORMAT="/var/audit/ttyrec/${LOGNAME}-${HOSTNAME}-`date +%H-%M--%d-%m-%Y`.rec" ttyrec -u $TTYFORMAT fi

teste novamente e me responda seu funcionou.

boa sorte.









[8] Comentário enviado por verovan em 04/10/2011 - 11:56h

Fiz assim, mas continua informando que o arquivo "arquivoteste" não existe quando faço logon, preciso criar ele em algum lugar especifico?


[9] Comentário enviado por thiagocoimbra23 em 04/10/2011 - 12:00h

por gentileza post aqui seu arquivo /etc/profile para mim analisar e verificar se está correto.

por gentileza digite o comando ls -l /var/audit/ttyrec e post aqui o resultado.

aguardo contato...


Muito obrigado

[10] Comentário enviado por verovan em 04/10/2011 - 12:26h

Esse é o final do /etc/profile

....

#
# An X session
#
case "$-" in
*i*)
if test "$TERM" = "xterm" -a -O "$tty" -a -z "${SSH_TTY}" ; then
echo "Directory: $PWD"
# Last but not least
date
fi
esac

if arquivoteste `id -u` != 0
then TTYFORMAT="/var/audit/ttyrec/${LOGNAME}-${HOSTNAME}-`date +%H-%M--%d-%m-%Y`.rec" ttyrec -u $TTYFORMAT
fi

#
# End of /etc/profile
#



Aqui a saida do ls -l /var/audit/ttyrec


ls -l /var/audit/ttyrec/
total 0



[11] Comentário enviado por thiagocoimbra23 em 05/10/2011 - 13:19h

verovan, boa tarde!

conforme o artigo acima acesso o diretório cd /var/audit/ttyrec

dentro desse diretório digite o comando ttyrec -u arquivoteste.rec e verifique se foi criado o arquivoteste.rec dentro desse diretório.

por gentileza faça o comando logado como root.

Aguardo um retorno assim que possível

Muito Obrigado.


[12] Comentário enviado por verovan em 05/10/2011 - 13:48h

ok, vou fazer e já dou um retorno. O programa está funcionando normalmente, quando faço os comandos manualmente ele grava tudo e depois consigo ver, porém nessa ultima parte onde colocou os script para que ficasse automatico é que tem o problema, não entendi essa primeira linha do script "if arquivoteste `id -u` != 0".

Não sei se seria algo particular no Suse, pois num post anterior alguem colocou que no Ubuntu funcionou

[13] Comentário enviado por renatux-chaves em 05/10/2011 - 14:18h

Boa tarde!
Ótimo artigo, porém estou com o mesmo problema do amigo verovan. Estou usando red hat e quando logo aparece a seguinte mensagem " -bash: audit.rec: command not found ". Já fiz como pedido a cima, mas continua o mesmo erro.

[14] Comentário enviado por thiagocoimbra23 em 05/10/2011 - 14:22h

renatux, favor post o conteudo do seu arquivo cat /etc/profile e depois com o comando ls -l dentro de /root/audit/ttyrec

e vamos analisar o que pode estar acontecendo, aproveitando e resolvo os dois casos. muito obrigado

[15] Comentário enviado por renatux-chaves em 05/10/2011 - 14:58h

Fala thiagocoimbra23, obrigado pela atenção!

segue abaixo o meu /etc/profile. Porém no script eu fiz algumas alterações, como por exemplo o nome do arquivo que estava arquivoteste.rec eu mudei para audit.rec e o diretório que estava em /root/audit/ttyrec eu mudei para /var/audit/ttyrec.

saída do ls -l :
total 60
-rw-rw-rw- 1 root root 56748 Out 5 14:26 audit.rec

arquivo /etc/profile

# /etc/profile

# System wide environment and startup programs, for login setup
# Functions and aliases go in /etc/bashrc

pathmunge () {
if ! echo $PATH | /bin/egrep -q "(^|:)$1($|:)" ; then
if [ "$2" = "after" ] ; then
PATH=$PATH:$1
else
PATH=$1:$PATH
fi
fi
}

# Path manipulation
if [ `id -u` = 0 ]; then
pathmunge /sbin
pathmunge /usr/sbin
pathmunge /usr/local/sbin
fi

pathmunge /usr/X11R6/bin after

unset pathmunge

# No core files by default
ulimit -S -c 0 > /dev/null 2>&1

USER="`id -un`"
LOGNAME=$USER
MAIL="/var/spool/mail/$USER"

HOSTNAME=`/bin/hostname`
HISTSIZE=1000

if [ -z "$INPUTRC" -a ! -f "$HOME/.inputrc" ]; then
INPUTRC=/etc/inputrc
fi

export PATH USER LOGNAME MAIL HOSTNAME HISTSIZE INPUTRC

for i in /etc/profile.d/*.sh ; do
if [ -r "$i" ]; then
. $i
fi
done

unset i

##########################################################

if audit.rec `id -u` != 0
then
TTYFORMAT="/var/audit/ttyrec/${LOGNAME}-${HOSTNAME}-`date +%H-%M--%d-%m-%Y`.rec"
ttyrec -u $TTYFORMAT
fi

[16] Comentário enviado por verovan em 05/10/2011 - 15:16h

Vou colocar passo a passo que fiz. Primeiro meu arquivo /etc/profile está com o script assim " if arquivoteste.rec `id -u` != 0
then TTYFORMAT="/var/audit/ttyrec/${LOGNAME}-${HOSTNAME}-`date +%H-%M--%d-%m-%Y`.rec" ttyrec -u $TTYFORMAT
fi"

Depois acessei o diretório /var/audit/ttyrec e fiz o comando

ttyrec -u arquivoteste.rec

ele gerou o arquivo no /var/audit/ttyrec/arquivoteste.rec

Porém quando faço um novo logon com o root, ele aparece o erro logo no logon

arquivoteste.rec: command not found


e assim não grava os comandos dessa nova sessão que abri.

[17] Comentário enviado por leonardo goretti em 23/11/2011 - 14:13h

Pessoal, fiz o ttyrec funcionar facil facil pelo /etc/profile.....segue script leva e rapido

1 forma if [ `id -u` -ne 0 ];


then
TTYFORMAT="/audit/ttyrec/${LOGNAME}-${HOSTNAME}-`date
+%H-%M--%d-%m-%Y`.rec"
ttyrec -u $TTYFORMAT
fi

Mas ficaria mais rápido se fosse assim:

((`id -u`)) && {

TTYFORMAT="/audit/ttyrec/${LOGNAME}-${HOSTNAME}-`date
+%H-%M--%d-%m-%Y`.rec"
ttyrec -u $TTYFORMAT
}


Testem...grato


Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner
Linux banner
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts