O ttyrec é um pacote livre utilizado para gravar tudo que for feito no terminal como se fosse um arquivo de vídeo.
Objetivo
Explicar a instalação e o funcionamento do ttyrec para uso corporativo ou pessoal, fazendo com que tudo que for digitado no teclado seja capturado e enviado por e-mail, mantendo um histórico de cada usuário.
Ferramentas
Neste projeto iremos utilizar uma máquina virtual Debian 6 Squeeze com acesso a Internet. Caso tenha dificuldade de configurar uma máquina virtual, acesso o tutorial de criação de máquinas virtuais aqui no Mundo TI Brasil.
Configurando
Primeiro de tudo teremos que fazer login como superusuário (root) no Shell. Por questões de compatibilidade com este tutorial, recomendo executar os 2 comandos seguintes antes de realizar a instalação do pacote ttyrec.
# apt-get update
# apt-get upgrade
Após executar os 2 comando informados acima, execute o seguinte comando:
# apt-get install ttyrec
A figura a baixo exibe como proceder. Observe que toda instalação e configuração serão feitas como root.
Agora iremos realizar um teste para saber se esta tudo funcionando. Neste teste iremos apenas executar os comandos df, ls -l e pwd, seguido do comando clear.
Para fazer com que o ttyrec funcione, execute:
# ttyrec
Após digitar o comando acima e pressionar <enter>. O comando acima funciona como start. A partir daí tudo que for digitado será gravado.
Digite os seguintes comandos:
# ls -l
# pwd
# df
#clear
Para finalizar a gravação, execute o seguinte comando:
# exit
Ao executar o comando acima, note que nada mudou exceto que foi criado um arquivo na posição atual onde você se encontra chamado de:ttyrecord. Este arquivo contém todos os comandos digitados acima.
O comando exit executado no final funciona como stop por padrão ele cria o arquivo com as permissões de leitura para todos, sendo que somente o dono do arquivo possui permissão de gravação.
Agora iremos rodar a gravação. Para realizar esta etapa, execute o seguinte comando:
# ttyplay ttyrecord
Depois de alguns instantes, você veria tudo que foi feito.
Agora preste atenção na imagem a seguir. Realizei um teste onde irei criar arquivos e adicionar algum conteúdo dentro deles.
Analisando o 1º quadro, criei uma diretório chamado erick e um arquivo chamado martinez.
No 2º quadro, iniciamos a gravação e executamos alguns comandos e ao final foi executado o comando exit.
No 3º quadro, foi inicializado a gravação. Note que em momento algum, ele sobrescreve o arquivo original ou exibe uma mensagem de que já existe um arquivo com o nome.
O exemplo acima serviu para mostrar que não existe problema em executar o comando ttyplay.
Opções do comando ttyrec
Podemos utilizar algumas opções do comando, tais como:
-a
Anexar a saída para o arquivo ou ttyrecord, ao invés de substituí-lo.
-u
Com esta opção, ttyrec chama automaticamente uudecode e salva sua saída quando os dados uuencoded aparecer na sessão. Ele permitirá que você transfira arquivos de host remoto. Você pode chamar ttyrec com esta opção, acesse o host remoto e invocar uuencode com ele para o arquivo que você deseja transferir.
-e comando
Especificar um comando a ser monitorado. Por exemplo, podemos informar que queremos gravar somente a execução do comando rm.
Exemplo:
# ttyrec -e rm
-n
Mostram na tela todos os comandos executados. Não há interatividade, apenas mostra tudo que foi feito.
Exemplo:
# ttyplay -n ttyrecord
-s
Determinar a velocidade de reprodução do ttyrecord. Por padrão ele utiliza o valor 1, variando de 1 (mais lento) até 10 (rápido).
Exemplo:
# ttyplay -s2 ttyrecord
Se desejarmos manipular a velocidade de reprodução, poderemos utilizar as seguintes letras:
- S à Diminui a velocidade de reprodução.
- F à Aumenta a velocidade de reprodução.
Criando um histórico de acesso
Após o entendimento do ttyrec e ttyplay, vamos criar um diretório e dentro dele irá conter os arquivos de gravação, para mantermos um histórico de ações de cada usuário.
Como padrão de extensão irei utilizar o final .tty nos arquivos criados, assim saberemos que os arquivos de log dele, por exemplo: erick-08:50-09-05-2013.tty.
Para criar um histórico de acesso, execute as seguintes linhas:
Primeiro, iremos criar o diretório ttyrec dentro de /var/log/
# mkdir -m 777 /var/log/ttyrec
Agora iremos editar o arquivo /etc/profile, o qual será responsável por chamar o ttyrec, independente do usuário que for logar no sistema.
# vim /etc/profile
Entre em modo de edição (aperte a letra i do teclado) e na última linha do arquivo adicione as seguintes linhas da imagem 4 e salve as alterações (Aperte uma vez o ESC do teclado e em seguida ).
Estamos definindo nas linhas acima que quando o usuário log no sistema seja iniciado a gravação do que ele fizer e claro estou utilizando o comando date com as opções %H,%M,%d,%m%Y para criar um log de data.
Ao final, teremos um arquivo contendo o nome do usuário, a hora e minuto em que ele iniciou e a data. A imagem 5 mostra como irá ficar o formato do arquivo.
Toda vez que o usuário logar, será criado um novo arquivo de gravação. A imagem 6 mostra que o usuário root realizou logon no mesmo dia, mas em hora diferente e que o usuário erick também fez login no sistema.
Lembrando que para reproduzir a gravação, basta executar o comando ttyplay seguido do arquivo que deseja ver.
Agora a parte boa. Caso não estejamos na empresa, como teremos acesso a esses arquivos? Via SSH? Via FTP? Mas pare e pense, teremos que efetuar login para ter acesso a esses arquivos, então porque não configuramos para que de tempo em tempo ele envie um relatório para o nosso e-mail.
A próxima etapa deste tutorial será para configurar o crontab (Agendador de tarefas do Linux), para que seja enviado um e-mail ao final do dia com os logs de acesso de todos os usuários. Para isso acesse o seguinte link, onde irá explicar como você deve fazer para configurar o e-mail:
www.mundotibrasil.com.br/solucao-para-envio-de-email-de-forma-simples
www.mundotibrasil.com.br/solucao-para-envio-de-email-de-forma-simples
Sendo que iremos realizar algumas alterações do tipo:
Adicionar as seguintes linhas dentro do arquivo de configuração do ssmtp (/etc/ssmtp/ssmtp.conf):
AuthUser=seuemail@gmail.com
AuthPass=suasenha
AuthPass=suasenha
Conforme imagem 7.
Teremos que instalar o mpack (pacote adicional para que possamos enviar anexo) Caso não esteja instalado, execute a seguinte linha para quer você possa instalar.
# apt-get install mpack
Após a instalação vamos realizar um teste de envio de e-mail com anexo, logo execute os seguintes comandos:
# echo “Funcionou o anexo” > teste.txt
# mpack -s “Teste de envio de email” -a teste.txt martinezlinux@gmail.com
Claro que coloque seu e-mail. A opção -a serve para informar que será adicionado um anexo e o -s é o Assunto do e-mail.
Caso não funcione, verifique novamente todos os passos.
Criando um script para automatizar o envio das gravações
Nesta parte do tutorial, você irá criar um script e agendar no cron para que sejam enviados todos os dias as gravações. Claro que você pode configurar o envio de acordo com sua necessidade, como por exemplo: semana, mensal, trimestral, etc.
Primeiro, criar um arquivo dentro de /root/script/.
# mkdir /root/script
# vim /root/script/envgrav.sh
# chmod +x /root/script/envgrav.sh
Segundo, dentro do script terá que conter as seguintes linhas:
Na imagem 8, foram criados 4 variáveis, onde:
- NOME à O nome que terá o arquivo após ser compactado.
- LOG à Localização de onde estão os registros gravados.
- EMAIL à Endereço de e-mail que irá receber as gravações.
- ASS à Campo referente ao assunto.
Visão geral:
Após definir as variáveis, iremos compactar utilizando o comando tar depois disso será enviado o e-mail com o arquivo em anexo e em seguida deletar este arquivo compactado e os logs já cadastrados.
Caso deseje manter os históricos, basta comentar as linhas do rm.
Agora para automatizar isso tudo que fizemos, iremos utilizar o agendamento do Linux.
Primeiro, vamos editar o crontab:
# vim /etc/crontab
Dentro do arquivo, você irá definir a hora que será executada o script envgrav.sh, seguindo a seguinte lógica:
Minuto – Hora – Dia do Mês – Mês – Dia da semana – usuário – localização do script
Quando tiver *, significa que será feito sempre.
No exemplo acima, esta definido que as 23:59 de todos os dias referente a todos os meses durante as sextas feiras será executo o script.
Após realizar a edição salve o documento e por segurança reinicie o cron.
Execute o seguinte comando:
# service cron restart
Pronto, agora só ficar aguardando os logs.