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.