Monitoramento de Acesso: Veja quem e quando acessaram seu servidor remotamente.

Nos dias atuais, há um aumento crescente na preocupação sobre a segurança relacionada à infraestrutura mantida na nuvem pelas organizações. Desta forma, procuram-se maneiras de manter um nível de confiabilidade e controle que permita a disponibilidade necessária aos serviços oferecidos. Hoje, iremos aprender como obter informações sobre acessos realizados ao servidor. Estaremos usando a distribuição linux ubuntu 18.04 LTS, podendo assim, algumas funcionalidades estarem indisponíveis ou ter seu acesso de maneira diferente.

Glossário de Termos.

Host ─ Qualquer computador, servidor cloud, máquina virtual em que se esteja trabalhando.

Terminal ─ Uma interface de linha de comando instalada nas distribuições unix.

$ Símbolo para indicar um terminal shell/bash. Não deve ser copiado junto aos comandos.

[identificador] ─ Valor opcional e que deve ser substituído pela sua própria informação

O comando last

Com o comando last, é possível obter ainda mais informações sobre os usuários ─ terminais usados, quando autenticaram, quando saíram, etc. ─ É utilizado o arquivo /var/log/wtmp, o qual é lido para exibir uma lista de todos os usuários que se autenticaram, desde que ele foi criado.

Para executar, basta que abra o terminal do seu host e digite: 

$ last [nome_de_usuario]

Caso se queira filtrar os registros por um usuário específico, é possível especifica-lo (sendo opcional) diminuindo assim o número de registros. Caso ainda haja dificuldade na leitura, devido a uma grande quantidade de acessos, é possível ainda paginar a consulta. Basta executar: 

$ last [nome_do_usuario] | less

A saída do comando deve ser similar a exibida a seguir:

Iremos nos preocupar apenas com algumas colunas. Na primeira coluna, podemos observar o nome de usuário que realizou o acesso, neste caso foi o usuário root.  Na quarta coluna a data de entrada e saída do sistema e por fim na quinta coluna, indicando a situação em que o terminal utilizado por aquele usuário se encontra.

 

Observando a quinta coluna, algumas situações possíveis considerando sua formatação são: Data – still logged in. Indica que o usuário acessou o host em determinada data/horário e o mesmo ainda se encontra ativo. Data – down (time). Indica que o usuário acessou o host em determinada data, e algum tempo depois, o host foi desligado ou reiniciado com o usuário ainda logado.  Data – crash (time). Indica que o usuário acessou o host em determinada data, e algum tempo depois, houve uma falha crítica, fazendo o host ser encerrado. Mostra que não foi desligado de maneira apropriada. Data – Data. Indica o horário de entrada e saída do usuário, indicando que não houve uma mudança de estado no servidor.

 

Utilizando da ferramenta grep é possível realizar alguns filtros que agilizem a busca por informações mais específicas. Por exemplo, caso queiram procurar quais foram os acessos do usuário root, no dia 19 de outubro, basta executarmos:

 

$ last root | grep -i “Oct 19”

Como pode-se observar, apenas os acessos feitos nessa data serão exibidos. O mesmo pode ser feito para algum dia da semana, como segunda ou sábado. É importante notar que, a forma em que a data está sendo exibida, vai depender do idioma do sistema operacional que está sendo executado. O padrão utilizado aqui é o americano, mas, você deve se atentar para, caso necessário realizar as devidas modificações na hora de executar os comandos.

 

O servidor também registra as ações de reinício de sistema, podendo recuperaadas utilizando o comando:

$ last -x reboot

Para casos em que o sistema foi desligado, usa-se:

$ last -x shutdown

Um último comando que é bastante útil é o lastlog. Ele mostra a última vez em que cada usuários auutenticou no sistema. assim como no last podemos fazer uma busca por um usuário em específico utilizando:

$ lastlog -u root

Entretanto, o lastlog possui uma funcionalidade que apenas o last não é capaz de fornecer com a mesma facilidade, que é obter lista de usuários que se autenticaram nos últimos x dias. Basta que executemos:

$ lastlog -t 10

E teremos a lista de usuários que entraram no sistema nos últimos 10 dias. Também é possível pedir a lista de pessoas que acessaram a mais de x dias. Basta trocar o parâmetro -t por -b:

$ lastlog -b 10

É importante preservar todos os registros de acesso, pois os mesmos dão indícios sobre possíveis culpados ou a inocência de alguém diante à algum incidente. Pois, se o mesmo não realizou nenhum acesso durante o período do problema, é improvável que o mesmo tenha alguma relação. Ainda assim, talvez queiramos limpar o histórico de registro ou em outro caso, realizar um backup. Basta que seja apagado ou copiado o arquivo  /var/log/wtmp e o procedimento estará feito. Em relação ao lastlog o procedimento é análogo, exceto pelo arquivo que se encontra na pasta /var/log/lastlog 

É digno de nota que, o arquivo que tem essas informações armazenadas, é um arquivo binário, logo, ele não é legível para humanos e não pode ser alterado diretamente, o que poderia ocasionar o corrompimento do mesmo.

Conclusão

Com ferramentas presentes na maioria dos servidores em nuvem, pudemos facilmente obter informações valiosas sobre o histórico de acesso de usuários que, em geral podem ser colaboradores de uma organização, ou prestadores de serviços externos.