ttyrec - Gravando sessões do terminal Linux

Publicado por Clediomir Silva em 30/04/2015

[ Hits: 7.293 ]

 


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

Recuperando um PDC morto rodando Samba 4 no Debian 7

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

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

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

Leitura recomendada

Unixsarplot - Agentless performance monitoring tool

Como gravar videoaula no Open Broadcaster software

Arduino no Slackware 14.1

Instalando o aMSN 0.95-1 no SuSE 10.1

Ambiente gráfico LXQt no Ubuntu

  

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.

[5] Comentário enviado por Minions em 07/08/2021 - 12:58h

Bom dia,

Aparece isso 'Cannot open display "default display" ' para ttyrec

Sabe qual o problema?

Obrigado



Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts