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

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

Sudo 1.8.12 - Parte I - Manual

Reforçando a segurança das conexões HTTPS no Apache

MSN-Proxy no Debian Etch

Encapsulando BIND 9 e Apache 2 para obter maior segurança

Mecanismo de firewall e seus conceitos

  
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