Observe a saída do last
comando e qualquer coisa com um endereço IP ou nome de host em vez de um espaço em branco apareceu na rede. Se sshd
é a única maneira de fazer isso neste sistema, então pronto.
Como alternativa (se esse é o Linux), você pode verificar /var/log/secure
(nas distros baseadas em RH) ou /var/log/auth.log
(nas distribuições baseadas no Debian) onde sshd
geralmente manterá o controle das conexões feitas, mesmo que não resultem em logins bem-sucedidos (que acessam utmp
/ wtmp
, que é o que last
irá ler). Exemplo:
Apr 3 16:21:01 xxxxxxvlp05 sshd[6266]: Connection closed by xxx.xxx.13.76
...
Apr 3 09:09:49 xxxxxxvlp05 sshd[26275]: Failed password for invalid user __super from xxx.xxx.13.76 port 45229 ssh2
O IIRC Solaris sshd
(que pode não ser necessariamente o OpenSSH sshd
) registrará essas informações no/var/adm/messages
EDITAR:
@derobert faz uma excelente observação. É importante lembrar que em qualquer sistema, se sua conta de superusuário estiver comprometida, todas as apostas serão desativadas, pois os arquivos de log como /var/log/wtmp
ou /var/adm/messages
podem ser modificados pelo invasor. Isso pode ser atenuado se você colocar os logs fora do servidor em um local seguro.
Por exemplo, em uma loja em que eu trabalhava, tínhamos uma máquina "Audit Vault" protegida para receber apenas os arquivos de log de auditoria dos vários servidores do data center. Eu recomendaria ter uma configuração semelhante no futuro (já que "eu tenho uma máquina de teste" parece que você está operando em uma loja grande)
Isso deve fornecer uma lista:
Em seguida, você pode usar
geoiplookup
ogeoip-bin
pacote para ir do nome do host ou endereço IP para o país.fonte
sed
habilidades não são esse deus. Para fazer algo mais complexo, use Python ou um analisador de log dedicado. Mas você pode tentar o seguinte:zgrep sshd /var/log/auth.log* -h |grep -F 'Failed password'
Bem, como esperado, e como @Joel Davis disse, todos os logs foram apagados, mas houve um arquivo que @Ramesh mencionou que tem algumas tentativas de acessar o usuário root, mas não conseguiu digitar a senha correta algumas vezes, depois desconecte-o muitas tentativas.
Eu corri um traceroute em três dos endereços e dois são da China e o outro é do Paquistão; estes são os IPs:
Mais informações sobre a botnet que foi injetada no servidor após ser comprometida:
Os hackers editam o crontab para executar 7 executáveis que, a cada x tempo, gastam toda a CPU, maximizam a saída da rede dos servidores e simplesmente morrem. Além disso, eles adicionam o leia-me ao crontab 100 vezes para ocultar as linhas adicionadas; assim, quando você o fizer,
crontab -l
você será spam pelo readme com linhas ocultas. Para contornar isso, eu useicrontab -l | grep -v '^#'
e aqui está a saída desse comando:Como você pode ver, todos os arquivos de log são limpos, é por isso que não consegui recuperar muitas informações.
Ele derrubou o servidor inteiro (todas as VMs), causando tempos limite nos sites e no proxmox. Aqui está um gráfico (os picos denotam DDoS ativamente e notam a saída da rede):
Como resultado, adicionarei todo o intervalo de endereços IP chineses a um firewall para bloquear todas as conexões (não tenho usuários chineses, por isso não me importo), também proibirei logins raiz remotos e utilizarei aplicativos longos e complexos. senhas. Também provavelmente mudarei a porta ssh e também utilizarei chaves ssh privadas.
fonte
A partir desta resposta, vejo as informações abaixo.
Falando sobre servidores SSH, darei soluções de linha de comando.
Rastrear logins e logins de usuários . Isso é fácil, o arquivo
/var/log/auth.log
deve ter essas informações.Rastrear a atividade desses usuários : se eles são um tanto inocentes, você pode verificar o arquivo
.bash_history
no diretório inicial. Você verá uma lista dos comandos que eles executaram. O problema é que eles podem excluir ou editar este arquivo.Impedir que os usuários excluam logs : os usuários não devem poder tocar
auth.log
. Para impedi-los de brincar,bash_history
você precisa fazer alguns truques.E se o usuário conseguir obter acesso root? : Você está ferrado. A menos que ele cometa um erro, ele será capaz de esconder todos os seus passos.
Além disso, a partir desta resposta, podemos ver o endereço IP de um cliente usando a
SSH_CLIENT
variávelTambém a partir desta resposta, vejo que o histórico do ssh pode ser armazenado nesses arquivos.
Além de
/var/log/lastlog
, há 3 arquivos/var/run
e/var/log
:utmp
,wtmp
ebtmp
, que detêm informações sobre logins atuais (e informações adicionais), histórico e logins falhos. Veja wiki para descrição detalhada. Você não pode editar os arquivos com editores normais, mas pode apagá-los.fonte
O comando mais simples para obter os últimos 10 usuários conectados à máquina é
last|head
.Para obter todos os usuários, basta usar o
last
comandofonte
Esta máquina foi comprometida. Isso significa que qualquer dado histórico ou atual não pode mais ser confiável.
Em suma, a resposta é não. Você não pode ter certeza de ter encontrado o endereço de origem de qualquer arquivo de log gravado nesta máquina.
Limpe e reinstale. E patch.
fonte
Para ver apenas tentativas bem-sucedidas de login com senha:
fonte
para debian, a pesquisa de teste tem uma redação ligeiramente diferente
fonte