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: 23.007 ]

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

Cliente Linux no servidor LDAP

Soluções para Acesso Remoto Seguro com SSH

Segurança em Software de Código Aberto

Seu maior inimigo é você mesmo!

Segurança com Iptables

  
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

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts