Quem, quando e de onde? As boas práticas de segurança indicam que você deve saber quem está acessando seu computador Linux. Nós mostramos como.
Índice
O arquivo wtmp
Linux e outros sistemas operacionais semelhantes ao Unix , como MacOS, são muito bons em registro. Em algum lugar nas entranhas do sistema, há um registro para quase tudo que você possa imaginar. O arquivo de log no qual estamos interessados é chamado wtmp
. O “w” pode significar “quando” ou “quem” – ninguém parece concordar. A parte “tmp” provavelmente significa “temporário”, mas também pode significar “carimbo de data / hora”.
O que sabemos é que wtmp
é um log que captura e registra todos os eventos de login e logout. A revisão dos dados no wtmp
log é uma etapa básica para adotar uma abordagem voltada para a segurança nas funções de administrador do sistema. Para um computador familiar típico, pode não ser tão crítico do ponto de vista da segurança, mas é interessante poder revisar o uso combinado do computador.
Ao contrário de muitos arquivos de log baseados em texto no Linux, wtmp
é um arquivo binário. Para acessar os dados dentro dele, precisamos usar uma ferramenta projetada para essa tarefa.
Essa ferramenta é o last
comando.
O último comando
O last
comando lê os dados do wtmp
log e os exibe em uma janela de terminal.
Se você digitar last
e pressionar Enter, todos os registros do arquivo de log serão exibidos .
último
Cada registro de wtmp
é exibido na janela do terminal.
Da esquerda para a direita, cada linha contém:
- O nome de usuário da pessoa que fez login.
- O terminal em que eles estavam conectados. Uma entrada de terminal
:0
significa que eles estavam logados no próprio computador Linux. - O endereço IP da máquina em que eles estavam conectados.
- A data e hora do login .
- A duração da sessão.
A última linha nos informa a data e hora da primeira sessão registrada no log.
Uma entrada de login para o usuário fictício ‘reboot’ é inserida no log toda vez que o computador é inicializado. O campo do terminal é substituído pela versão do kernel. A duração da sessão conectada para essas entradas representa o tempo de atividade do computador.
Mostrando um número específico de linhas
Usar o last
comando sozinho produz um despejo de todo o log, com a maior parte dele passando rapidamente pela janela do terminal. A parte que permanece visível são os dados mais antigos do registro. Provavelmente não é o que você queria ver.
Você pode dizer last
para fornecer um número específico de linhas de saída. Faça isso fornecendo o número de linhas que você gostaria na linha de comando. Observe o hífen. Para ver cinco linhas, você precisa digitar -5
e não 5
:
último -5
Isso fornece as primeiras cinco linhas do registro, que são os dados mais recentes.
Mostrando nomes de rede para usuários remotos
A opção -d
(Sistema de Nome de Domínio) informa last
para tentar resolver os endereços IP dos usuários remotos em um nome de máquina ou rede.
último -d
Nem sempre é possível last
converter o endereço IP em um nome de rede, mas o comando fará isso quando puder.
Escondendo endereços IP e nomes de rede
Se você não estiver interessado no endereço IP ou nome de rede, use a opção -R
(sem nome de host) para suprimir este campo.
Como isso oferece uma saída mais limpa sem contornos feios, essa opção foi usada em todos os exemplos a seguir. Se você estivesse usando last
para tentar identificar atividades incomuns ou suspeitas, não suprimiria esse campo.
Selecionando Registros por Data
Você pode usar a -s
opção (desde) para restringir a saída para mostrar apenas eventos de login que ocorreram desde uma data específica.
Se você quisesse apenas ver os eventos de login ocorridos a partir de 26 de maio de 2019, usaria o seguinte comando:
último -R -s 26/05/2019
A saída mostra registros com eventos de login que ocorreram a partir da hora 00:00 do dia especificado, até os registros mais recentes no arquivo de log.
Pesquisando até uma data de término
Você pode usar -t
(até) para especificar uma data de término. Isso permite que você selecione um conjunto de registros de login ocorridos entre duas datas de interesse.
Este comando pede last
para recuperar e exibir os registros de login de 00:00 (madrugada) do dia 26 até a hora 00:00 (madrugada) do dia 27. Isso restringe a lista para sessões de login que ocorreram apenas no dia 26.
Formatos de hora e data
Você pode usar horários e datas com as opções -s
e -t
.
Os diferentes formatos de hora que podem ser usados com as last
opções que usam datas e horas são (supostamente):
- AAAAMMDDhhmmss
- AAAA-MM-DD hh: mm: ss
- AAAA-MM-DD hh: mm – os segundos são definidos como 00
- AAAA-MM-DD – a hora está definida para 00:00:00
- hh: mm: ss – a data é definida para hoje
- hh: mm – a data será definida para hoje, segundos para 00
- agora
- ontem – a hora está definida para 00:00:00
- hoje – a hora está definida para 00:00:00
- amanhã – a hora está definida para 00:00:00
- + 5min
- -5 dias
Por que ‘supostamente’?
O segundo e o terceiro formatos da lista não funcionaram durante a pesquisa para este artigo. Esses comandos foram testados nas distribuições Ubuntu, Fedora e Manjaro. Estes são derivados das distribuições Debian, RedHat e Arch, respectivamente. Isso cobre todas as principais famílias de distribuição Linux.
last -R -s 2019-05-26 11:00 -t 2019-05-27 13:00
Como você pode ver, o comando não retornou nenhum registro.
Usar o primeiro formato de data e hora da lista com a mesma data e hora do comando anterior retorna os registros:
último -R -s 20190526110000 -t 20190527130000
Pesquisando por unidades relativas
Você também especifica períodos de tempo medidos em minutos ou dias, em relação à data e hora atuais. Aqui, estamos solicitando registros de dois dias atrás até um dia atrás.
last -R -s -2days -t -1days
Ontem, hoje e agora
Você pode usar yesterday
e tomorrow
como abreviatura para a data de ontem e a data de hoje.
último -R -s ontem -t hoje
Não que isso não inclua nenhum registro de hoje. Esse é o comportamento esperado. O comando pede registros da data de início até a data de término. Não inclui registros da data de término.
A now
opção é uma forma abreviada de “hoje na hora atual”. Para ver os eventos de login que ocorreram desde 00:00 (madrugada) até o momento em que você emite o comando, use este comando:
último -R -s hoje-agora
Isso mostrará todos os eventos de login até o momento, incluindo aqueles que ainda estão conectados.
A presente opção
A -p
opção (presente) permite que você descubra quem estava conectado em um determinado momento.
Não importa quando eles se conectaram ou desconectaram, mas se eles estavam conectados ao computador no momento que você especificar, eles serão incluídos na lista.
Se você especificar um horário sem data, last
pressupõe que você quer dizer “hoje”.
último -R -p 09:30
Pessoas que ainda estão logadas (obviamente) não têm um tempo de logout; eles são descritos como still logged in
. Se o computador não tiver sido reinicializado desde o momento em que você especificou, ele será listado como still running
.
Se você usar a now
abreviação com a -p
opção (presente), poderá descobrir quem está conectado no momento em que emitir o comando.
último -R -p agora
Esta é uma maneira um tanto prolixa de conseguir o que pode ser feito usando o who
comando .
O comando lastb
O lastb
comando merece menção. Ele lê os dados de um log chamado btmp
. Há um pouco mais de consenso sobre esse nome de log. O ‘b’ significa ruim, mas a parte ‘tmp’ ainda está sujeita a debate.
lastb
lista as tentativas de login ruins (com falha ). Aceita as mesmas opções que last
. Como foram tentativas de login malsucedidas, todas as entradas terão uma duração de 00:00.
Você deve usar sudo
com lastb
.
sudo lastb -R
A última palavra sobre o assunto
Saber quem está conectado ao seu computador Linux, quando e de onde é uma informação útil. Combinar isso com os detalhes de tentativas de login malsucedidas fornece as primeiras etapas na investigação de comportamentos suspeitos.