ttyrec - Gravando sessões do terminal Linux

Publicado por Clediomir Silva em 30/04/2015

[ Hits: 4.697 ]

 


ttyrec - Gravando sessões do terminal Linux



O ttyrec é um software que permite gravar tudo que for feito no terminal do Linux.

Com ele é possível gravar a saída TTY de um programa em modo de texto, juntamente com a data e hora e, em seguida, exibi-lo como se fosse um vídeo. É muito útil para realizar auditorias em servidores Linux.

Este breve tutorial tem como objetivo demonstrar a instalação e a utilização do software em um ambiente rodando Debian 7, mas nada impede de ser instalado em outras distribuições.

Mais informações podem ser encontradas em:

Procedimentos

Primeiramente, faça o login no servidor e como root rode os seguintes comandos:

# apt-get update
# apt-get install ttyrec

Feito isso o software já estará instalado e pronto para uso. Veja algumas das opções que podem ser utilizadas para gravar:

A opção "-a" permite anexar a saída para o arquivo ou ttyrecord, ao invés de substituí-lo.

Exemplo:

# ttyrec -a arquivo.rec

A opção "-u" chama automaticamente uudecode e salva sua saída quando os dados uuencoded aparecerem na sessão. Ele permitirá que você transfira arquivos de hosts remotos. Você pode chamar o ttyrec com esta opção, acessar o host remoto e invocar uuencode com ele para o arquivo que você deseja transferir.

Exemplo:

# ttyrec -u arquivo.rec

A opção "-e" é utilizada para que você possa monitorar a saída de um comando. Pode-se gravar apenas a execução do comando find.

Exemplo:

# ttyrec -e find

Para reproduzir as gravações utilizaremos o ttyplay. A opção "-n" mostra na tela a saída de todos os comandos que foram executados, parecidos com o comando history.

Exemplo:

# ttyplay -n arquivo.rec

A opção "-s" determina a velocidade de reprodução. Varia de 1 (velocidade normal) a 10 (rápido).

Exemplo:

# ttyplay -s 5 arquivo.rec

No comando acima o vídeo será reproduzido 5 vezes mais rápido que o normal.

Obs.: as opções citadas acima foram retiradas do manual do ttyrec, para mais acesse no seu terminal:

man ttyrec

Script

Criando um script para gravar todas as sessões do terminal, assim que um usuário logar no servidor

Primeiro iremos criar o diretório onde ficarão os arquivos do ttyrec. Eu, por exemplo, costumo usar o caminho /sis-bkp/audit/ttyrec, porém você pode modificar da forma que achar necessário.

# mkdir -m 777 -p /sis-bkp/audit/ttyrec

O comando acima cria todos os diretórios (opção "-p") e ainda seta a permissão 777 para o diretório ttyrec (opção "-m 777") para que todos os usuários do sistema consigam escrever no mesmo.

Para finalizar, precisaremos editar o arquivo /etc/profile, que será responsável por chamar o utilitário ttyrec para gravar as sessões de quaisquer usuários que se conectarem no servidor.

Primeiro, faça um backup do arquivo original para restaurar caso haja problemas:

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

Depois, com um editor de sua preferência, eu utilizei o Vim:

# vim /etc/profile

No final do arquivo, salte uma linha e inclua:

# Gravar sessões do terminal
if [ `id -u` ];
then
LOG="/sis-bkp/audit/ttyrec/log-${LOGNAME}-"`date +%d-%m-%Y_%H:%M`".rec"
ttyrec -u $LOG
fi
# Fim gravar sessões do terminal

Salve o arquivo e estará pronto. Toda vez que um usuário logar no sistema, será gerado um arquivo com extensão ".rec" dentro de /sis-bkp/audit/ttyrec com o seguinte formato "log-usuário-data_hora.rec".

Obs.: caso o seu servidor permita acesso via SSH para o usuário root, remova para que não haja confusão de quem logou no mesmo. Deixe apenas que usuários comuns possam logar via SSH, pois assim o log será gerado com o nome do usuário.

Outras dicas deste autor

Resetar senha de root perdida no MySQL no CentOS e Red Hat

Recuperando um PDC morto rodando Samba 4 no Debian 7

Bordas das janelas sumindo quando se habilita o compiz-fusion no Linux?

Ferramenta SetupTool no CentOS Linux - Instalação e configuração

Leitura recomendada

Linux App Store: um novo jeito de instalar programas para Linux

Instalando o Adobe Reader em Português no Kurumin

Instalando o Mercury (Fedora Core 5)

Mixxx - Faça mixagens profissionais ou apenas brinque de DJ

Steam no Linux (Debian)

  

Comentários
[1] Comentário enviado por llJllNllRll em 20/07/2015 - 22:40h


Olá Clediomir, primeiramente parabéns pelo ótimo artigo, sua dica ficou muito bem explicada e intuitiva.

Porém nos meus testes me ocorreram alguns problemas e eu gostaria de saber se você conhece a resposta?

No meu exemplo consegui ver o terminal em tempo real com o comando #tail -f <caminho do arquivo>, e depois que o usuário deslogou eu consegui visualizar todo o conteúdo do arquivo com o comando #cat. Porém nos dois exemplos que eu sitei os comandos do usuário remoto apareceram como caracteres inválidos aqui pra mim, como se a maioria das letras fossem substituídas por esses caracteres inválidos.

Já viu isso por ai? Sabe dar alguma dica de como resolver?

Desde já obrigado.

[2] Comentário enviado por clediomir em 21/07/2015 - 21:24h

Olá, primeiramente agradeço por ter gostado da dica. Em relação ao problema que você informou confesso que é novidade pra mim pois nunca vi ele acontecer em nenhum dos servidores que implementei.
Quando você usa o ttyplay os caracteres ainda assim aparecem inválidos?


[1] Comentário enviado por llJllNllRll em 20/07/2015 - 22:40h


Olá Clediomir, primeiramente parabéns pelo ótimo artigo, sua dica ficou muito bem explicada e intuitiva.

Porém nos meus testes me ocorreram alguns problemas e eu gostaria de saber se você conhece a resposta?

No meu exemplo consegui ver o terminal em tempo real com o comando #tail -f &lt;caminho do arquivo&gt;, e depois que o usuário deslogou eu consegui visualizar todo o conteúdo do arquivo com o comando #cat. Porém nos dois exemplos que eu sitei os comandos do usuário remoto apareceram como caracteres inválidos aqui pra mim, como se a maioria das letras fossem substituídas por esses caracteres inválidos.

Já viu isso por ai? Sabe dar alguma dica de como resolver?

Desde já obrigado.



[3] Comentário enviado por gustavodc em 31/03/2016 - 08:47h

Olá,
Quando o usuário digita CTRL + D a gravação é interrompida e ele continua utilizando o shell, tens alguma solução pra isso?
Obrigado!

[4] Comentário enviado por clediomir em 31/03/2016 - 11:42h


[3] Comentário enviado por gustavodc em 31/03/2016 - 08:47h

Olá,
Quando o usuário digita CTRL + D a gravação é interrompida e ele continua utilizando o shell, tens alguma solução pra isso?
Obrigado!


Sim, basta você adicionar set -o ignoreeof no arquivo .bashrc do usuário. Espero ter ajudado.



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