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.951 ]

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


Preparando o terreno



Com esse software podemos descobrir qual usuário efetuou alguma alteração no sistema e dessa forma corrigi-la de uma forma simples e rápida. Também podemos usá-la como auditoria caso tenha dúvida se alguém conseguiu acessar seu servidor querendo lhe prejudicar.

Caso alguém acesse seu servidor como root, pode apagar todos logs e você não saber nada do que aconteceu, o que não é possível se tiver usando ttyrec.

Tenho essa ferramenta em produção no CentOS, porém a mesma deve funcionar em outras versões de Linux, como Fedora , SUSE, Debian etc.

Na versão Debian é mais simples, apenas digite o comando "apt-get install ttyrec" e o software já estará instalado.

Todos os arquivos de configurações do ttyrec estão em /etc/ttyrec.

Abaixo seguem configurações para quem não tem os pacotes em seu repositório.

Acesse o site:
e baixe a última versão do software, que neste momento é ttyrec 1.0.8.

Vamos descompactá-lo no diretório /usr/src:

# tar -xzvf ttyrec-1.0.8.tar.gz -C /usr/src

Acesse o novo diretório:

# cd /usr/src/ttyrec-1.0.8

E vamos compilar:

# make CFLAGS=-DSVR4

O comando acima irá gerar 3 binários:
  • ttyrec = Responsável por gravar a saída do terminal do usuário em um arquivo para ser feito auditoria;
  • ttyplay = Comando usado para ver o que foi gravado pelo ttyrec se baseando no arquivo de saída;
  • ttytime = Arquivo de utilidade para mostrar o time de gravação do ttyrec, baseando-se no arquivo de saída.

Vamos copiar os três 3 binários para o diretório /usr/local/bin:

# cp ttyrec ttyplay ttytime /usr/local/bin

    Próxima página

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

Instalando o Cisco VPN Client no Linux

Tutorial Netcat

Terceirização de segurança gera dúvidas em profissionais de TI

Fazendo sua conexão remota por SSH mais segura

Instalando um firewall em ambientes gráficos leves

  
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