Como determino se minha caixa do Linux foi infiltrada?

11

Li recentemente um artigo sobre a análise de tentativas maliciosas de logon SSH. Isso me fez pensar: o nome de usuário SSH, as combinações de senhas na minha caixa Debian são incomuns? Eu tinha sido alvo de um ataque no dicionário de força bruta? Vamos dar uma olhada em /var/log/auth.log.0 :

Sep 23 07:42:04 SLUG sshd[8303]: Invalid user tyjuan from 210.168.200.190
Sep 23 07:42:09 SLUG sshd[8305]: Invalid user tykeedra from 210.168.200.190
Sep 23 07:42:14 SLUG sshd[8307]: Invalid user tykeem from 210.168.200.190
Sep 23 07:42:19 SLUG sshd[8309]: Invalid user tykeshia from 210.168.200.190
Sep 23 07:42:25 SLUG sshd[8311]: Invalid user tyla from 210.168.200.190
Sep 23 07:42:30 SLUG sshd[8313]: Invalid user tylan from 210.168.200.190
Sep 23 07:42:35 SLUG sshd[8315]: Invalid user tylar from 210.168.200.190
Sep 23 07:42:40 SLUG sshd[8317]: Invalid user tyler from 210.168.200.190
Sep 23 07:42:45 SLUG sshd[8319]: Invalid user tylerfrank from 210.168.200.190
Sep 23 07:42:50 SLUG sshd[8321]: Invalid user tyliah from 210.168.200.190
Sep 23 07:42:55 SLUG sshd[8323]: Invalid user tylor from 210.168.200.190

Então isso não parece bom. Agora que sei que fui alvo de um ataque e que algumas das combinações de meu nome de usuário e senha são fracas, gostaria de saber como posso ...

  • ... determinar se minha caixa do Linux foi infiltrada?
  • ... desfazer algum dano deixado pelos criminosos?
  • ... impedir que isso aconteça no futuro?

ATUALIZAR

Algum conselho para desfazer algum dano deixado pelos criminosos?

Jake McGraw
fonte
esse log não sugere que você foi comprometido. você tem mais informações além daquilo que a preocupa?
possível duplicata de Como lido com um servidor comprometido?
Dennis Nolte 31/07

Respostas:

15

Muitas pessoas parecem sugerir DenyHosts, mas eu tenho visto muito sucesso com o Fail2Ban em meus sistemas. Ele observa um número (configurável) de falhas e, em seguida, executa uma ação - nos meus servidores, essa ação é usar o iptables para descartar todo o tráfego do host. Após 10 falhas de login, eles são banidos e é o fim.

Eu uso isso em combinação com o Logcheck, para saber sempre o que está acontecendo nos meus servidores.

Se você tem alguma evidência de que alguém realmente invadiu seus sistemas (os logs que você postou não são evidência disso), sua única solução é fazer backup de todos os dados que você precisa manter, limpar a máquina, reinstalar e restaurar de backups. Caso contrário, não há como ter certeza.

Dan Udey
fonte
1
Eu uso logcheck e fail2ban também. Muito boa combinação.
Eu segundo o uso do fail2ban.
Malfist 18/09/09
Eu também mudei para Fail2ban de denyhosts porque os monitores Fail2ban mais serviços (e-mail, web, ftp, ...) e é mais configurável
Jure1873
10

Tentativas válidas de login também são registradas; portanto, se você vir uma tentativa de força bruta seguida de um sucesso, é uma boa indicação de que algo de ruim aconteceu.

Uso o DenyHosts para monitorar meus logs quanto a tráfego suspeito de SSH, e eu o configurei para fazer firewall automaticamente dos hosts em um determinado ponto.

Observe que existem várias outras maneiras pelas quais você deseja monitorar sua máquina para verificar se ela está comprometida, incluindo padrões de carga, atividade de login, detecção periódica de tráfego, monitoramento de processos em execução e portas abertas, além de garantir a integridade dos arquivos com uma ferramenta como tripwire.

Se você fizer apenas uma, monitorar a carga do sistema é uma maneira muito eficaz de detectar comprometimentos, porque a maioria das máquinas quando comprometidas é usada para fazer coisas como enviar grandes quantidades de spam ou receber muito tráfego. Talvez não seja útil se você é um alvo de alto valor e as pessoas podem estar tentando invadir você especificamente por outras razões além de transformar seu host em um zumbi, mas valioso mesmo assim. Além disso, é necessária uma carga de monitoramento para criação de perfil e para descobrir quando você precisa investir em mais hardware ou software melhor.

Você também deve fazer uma análise abrangente do log, olhando para auth.log e outros por coisas inesperadas. A análise do arquivo de log é um mercado competitivo e o problema ainda não está resolvido, mas existem ferramentas gratuitas, como o logwatch, que podem ser configuradas para enviar resumos diariamente.

Segurança através de camadas!

Daniel Papasian
fonte
1
Obviamente, o invasor pode ter modificado os logs para remover evidências de sua intrusão, portanto, a falta de evidências nos logs não significa necessariamente que está tudo bem.
Isso é verdade. Falta de evidência é basicamente nunca evidência de nenhum compromisso, no meu livro. O log em um servidor remoto pode aumentar a confiabilidade dos logs. Eu uso os túneis syslog-ng e ssh para esse fim.
Eu também estava vendo um número ridículo de tentativas de hackear meu servidor ... Instalei o DenyHosts e ele já havia adicionado alguns IPs após apenas 10 minutos. Obrigado!
Aaron Brown
4

Esqueça Tripwire, é muito caro. Use o AIDE. É grátis e fácil de configurar (embora demore um pouco para decidir quais diretórios temporários excluir e configurar).

você o executa, ele cria um banco de dados de todos os arquivos. Execute-o novamente e ele informará quais arquivos foram alterados.

Outra coisa a fazer é instalar o CSF, que possui um bloqueador do tipo negar host, pois as pessoas falham repetidamente no login, adicionando-as às suas regras de firewall. Você também pode exigir que os logins SSH tenham uma chave pública também, os kiddies de script podem tentar quantos logins quiserem.

gbjbaanb
fonte
Existe uma versão de código aberto (e gratuita) do Tripwire. Veja tripwire.org
Dan Andreatta
4
"* ... determine if my Linux box has been infiltrated?"
  • procure sinais de processos estranhos. Eu normalmente uso as ferramentas que acompanham o chkrootkit ( http://www.chkrootkit.org )
  • Faça um scan de ports com o nmap de uma máquina diferente. Se sua caixa foi comprometida, é provável que o atacante tenha instalado um backdoor

"* ... desfazer algum dano deixado pelos autores?"

esqueça, se houve um ataque, o melhor conselho é reinstalá-lo do zero (certifique-se de plug-in de qualquer falha na nova instalação). É muito fácil não notar um processo de backdoor ou furtivo; é melhor reinstalar.

"* ... impedir que isso aconteça no futuro?"

  • atualizações de segurança

  • firewall apertado

  • senhas fortes

  • desativar serviços desnecessários


fonte
3

dê uma olhada em ferramentas como logcheck , portsentry e tripwire . é muito comum para tentativas aleatórias de SSH de dicionário, então eu não ficaria muito preocupado com isso. você pode querer alterar a porta para ofuscação aleatória, mas ainda verá tentativas aleatórias de tempos em tempos, é a vida ter uma máquina na internet.


fonte
3

Uma coisa que uso nos meus servidores para ajudar a evitar esses ataques é o DenyHosts . DenyHosts impedirá que um usuário mal-intencionado tente entrar. Desde a instalação, meus arquivos de log tiveram muito menos entradas de tentativa de login.

Craig
fonte
3

É uma boa prática usar pares de chaves Pública / Privada como autenticação extra; Dessa forma, um usuário não pode fazer login através do SSH sem a chave certa; o que seria bem impossível de adivinhar para um forçador bruto. Um bom artigo sobre isso pode ser encontrado aqui .

Somente isso com uma senha seria bastante sólido para autenticação SSH; Mas existem mais vulnerabilidades! Cuidado com todos os aplicativos que usam uma porta aberta; Se eles contêm um bug, os exploradores podem ultrapassar o seu sistema. Um bom exemplo foi um bot de spam instalado em nosso servidor devido a um erro no software webstats que estávamos usando no momento.


fonte
2

Fail2ban é um analisador de log de acesso em tempo real. Ele pode ser configurado para bloquear qualquer IP com várias tentativas falhas de logon. Isso evita ataques de dicionário sem precisar mover a porta ssh. O chkrootkit e o rootkithunter são bons utilitários para verificar invasões. Se a invasão tiver sido bem-sucedida, a melhor prática é copiar dados (e apenas dados, não executáveis), limpe e reinstale, porque é realmente difícil ter 100% de certeza de que o sistema está limpo.


fonte
2

Não há nada aqui para sugerir que sua caixa foi comprometida. Mesmo que suas senhas sejam muito fracas, é extremamente improvável que um ataque de dicionário que faça apenas uma tentativa de login em cada nome de usuário.

Mas, se você souber que suas senhas são fracas, fortaleça-as! Eu pessoalmente gosto do pwgen (que é empacotado pelo Debian). Em cada execução, gera um grande número de candidatos a senhas fortes, mas relativamente pronunciadas que (pelo menos para mim) são fáceis de lembrar, como yodieCh1, Tai2daci ou Chohcah9.

No entanto, se houver outras evidências para mostrar que seu sistema foi comprometido ... Nuke orbit. É a única maneira de ter certeza.

Dados não executáveis ​​provavelmente são recuperáveis, mas qualquer coisa com conteúdo executável (isso inclui itens como documentos do MS Office e alguns arquivos de configuração) precisa ser executada, a menos que você esteja disposto e seja capaz de examiná-los manualmente para garantir que não ocorram ' não se tornou hostil ou para aceitar a possibilidade de ser hostil e danificar seu sistema ou fornecer uma via para um futuro comprometimento se você o mantiver por perto.

Dave Sherohman
fonte
2

Uma pequena proteção adicional que eu gosto é de classificar o limite de conexões ssh recebidas para diminuir a velocidade de ataques de dicionário ou similares. Não espere que isso proteja você sozinho, mas use-o além das sugestões das outras respostas, incluindo a desativação da autenticação por senha.

Usando iptables:

$ iptables        -A INPUT      -p tcp --dport 22 -m state --state ESTABLISHED,RELATED -j ACCEPT
$ iptables        -A INPUT      -p tcp --dport 22 -m state --state NEW -m limit --limit 3/min --limit-burst 3 -j ACCEPT
$ iptables        -A INPUT      -p tcp --dport 22 -j DROP
Sherbang
fonte
2

Há alguns conselhos ruins sobre esse segmento, como:

  • usando uma porta não padrão para ssh (errado!)
  • usando alguma ferramenta de segurança de terceiros (adicionando uma dependência / complexidade desnecessária)
  • configurando seu firewall para bloquear ou colocar na lista de permissões (dor de cabeça na manutenção)

Basta ajustar o seu /etc/ssh/sshd_configpara melhorar a segurança:

  • PermitRootLogin no
  • Configure AllowUsers apenas para os usuários no sistema que possuem contas ssh
  • Considere usar apenas chaves físicas com 'PasswordAuthentication no'

Se você é caixa foi infiltrado. Reconstrua a caixa.

Hendry
fonte
(-1) Às vezes, é necessário configurar regras no firewall ou usar um sistema de prevenção de intrusões. Chamar isso de maus conselhos, sem qualquer discussão adicional sobre por que não é uma boa ideia, não ajuda muito.
Zoredache
1

Isso acontece o tempo todo com o ssh ativado. Mova-o para uma porta alta.

Existe um programa chamado "Tripwire", excelente para detecção de intrusões, mas bastante difícil de instalar. Se nada mais, você deve ler os documentos deles para entender os problemas.

Bill K
fonte
1

Você precisa instalar a detecção de intrusão antes de conectar a máquina à Internet.

E é uma boa idéia colocar as conexões SSH na lista de permissões de IP apenas para garantir que o mundo inteiro não consiga nem tentar coisas assim.

Eric Z Beard
fonte
Eu também adicionaria aos usuários da lista branca permissão para efetuar login via SSH, além de desativar a autenticação baseada em senha, se possível.
1

Como posso determinar se minha caixa do Linux foi infiltrada?

Inicialize a mídia somente leitura (livecd) e compare os arquivos com o backup ou com a mídia original.

Basta procurar um comportamento estranho. Claro que isso é mais fácil se você dedicar um tempo antes de um hack para ter uma boa noção do que é "normal".

Os erros que você postou não indicam um comprometimento. Só que alguém está tentando.

Como posso desfazer qualquer dano deixado pelos autores?

Reinstale e restaure a partir de um backup antes do comprometimento do sistema.

Vejo:

Como posso impedir que isso aconteça no futuro?

Vejo:

Zoredache
fonte
0

O Psad, juntamente com o Shorewall, é uma boa maneira de complementar as regras do iptables.

Eu também uso o Fail2ban para rastrear meus logins ssh

Sharjeel
fonte
0

use rkhunter ou chkrootkit ou ambos; digitalize sua caixa de fora para ver quais portas estão abertas

de qualquer forma, se tudo que você tem é usuário inválido, não há necessidade de se preocupar :)

quaie
fonte
0

Algo muito diferente: tente usar o Google no endereço IP! Um hacker que se chama STARTURK da Turquia pode ter tentado invadir seu site.

Embora pareça um ataque de força bruta no seu sistema, pode ser que esse hacker tenha feito uma tentativa e agora esteja em outro site.

Wim ten Brink
fonte
0

Como muitos observaram, o Tripwire / AIDE é a melhor maneira de procurar alterações no sistema. Infelizmente, a vaca está fora do estábulo nessa, já que precisa ser configurada em um sistema conhecido.

Uma coisa que pode ajudá-lo, pelo menos, a começar é usar o banco de dados do RPM para verificar os md5sums de seus arquivos. A essência básica é esta:

rpm -qa | xargs rpm -V

Isso não é perfeito por vários motivos. Primeiro, seu banco de dados RPM local teoricamente poderia ter sido alterado. Em segundo lugar, a maioria das distros usa pré-ligação e o RPM não tem conhecimento de pré-ligação. Os MD5s podem parecer ter sido alterados a partir desse processo, o que é legítimo.

O melhor conselho é este: se você não tem certeza se foi comprometido, é hora de uma reconstrução.

pboin
fonte
0

Para evitar futuros problemas de segurança, você pode dar uma olhada no OSSEC , eu o uso para fazer verificações de integridade de arquivos e monitorar logs em nossos servidores, é muito completo e fácil de configurar. Ele pode enviar notificações por e-mail, você pode verificar alertas via linha de comando ou uma interface da web ...

http://www.ossec.net/

extraído do site:

"O OSSEC é um sistema de detecção de intrusão baseado em host de código aberto. Ele realiza análise de logs, verificação de integridade de arquivos, monitoramento de políticas, detecção de rootkit, alerta em tempo real e resposta ativa".

  • análise de log Ele pode verificar o arquivo de logs em seus servidores e alertá-lo através de regras (existem muitas predefinidas e você pode adicionar as suas)

  • integridade do arquivo tripwire / assessor como a funcionalidade, para que você veja se algum arquivo foi modificado no seu servidor

  • monitoramento de política: verifique algumas regras de segurança "Melhores práticas"

  • detecção de rootkit: rkhunter, chkrootkit como funcionalidade

  • alerta em tempo real e resposta ativa: você pode configurar o ossec para reagir automaticamente aos alertas (eu não uso isso, mas você pode usá-lo para bloquear o acesso ssh aos hosts, fazendo muitas tentativas de conexão com falha)

Produto realmente bom e é muito ativo

Para endurecer sua caixa, você também pode usar lynis ou bastille

Guillaume
fonte