Meu servidor linux foi hackeado. Como descubro como e quando foi feito?

11

Eu tenho um servidor doméstico executando uma distribuição ubuntu de desktop. Encontrei isso no meu crontab

* * * * * /home/username/ /.access.log/y2kupdate >/dev/null 2>&1

e ao procurar nesse diretório (o espaço após o nome de usuário / é um nome de diretório), encontrei muitos scripts que obviamente estão fazendo algo que não deveriam.

Antes de limpar o computador e reinstalar as coisas, gostaria de descobrir o que causou a violação de segurança e quando foi feito. Então eu não abro o mesmo buraco novamente.

Quais arquivos de log devo procurar? Os únicos servidores que eu conheço que estão executando no computador são sshd e lighttpd.

O que devo fazer para detectar se coisas assim acontecem novamente?

Jonatan Kallus
fonte
@ Pessoa que votou na mudança para SU: Como você acha que a perícia de vírus / hackers se relaciona mais com o superusuário do que com a falha do servidor?
Chris S
3
Fico feliz em saber que o plano é limpar o computador e reinstalar as coisas. Isso é absolutamente a coisa certa a se fazer, não importa o que você encontre, porque sempre há uma boa chance de haver algo pior que você não encontrou.
precisa saber é o seguinte
Sim, você realmente deve votar para mudar para o IT Security ( security.stackexchange.com ), não SU ou Serverfault!
Rory Alsop

Respostas:

4

Primeiro, verifique se o computador está desconectado de qualquer rede.
Segundo, certifique-se de obter dados importantes das unidades antes de inicializar o sistema operacional invadido novamente.

Comece verificando os carimbos de hora nos arquivos em questão. Muitas vezes eles são precisos.
Faça referência cruzada com os registros httpd e auth, se não tiverem sido limpos. Se um outro foi apagado, você pode apostar que esse foi o meio de entrada. Se ainda estiverem intactos, você poderá obter mais informações sobre como eles entraram no log.

Se todos estiverem limpos, você está completamente ferrado. Provavelmente levaria mais tempo para descobrir o que aconteceu do que vale a pena.

Você mencionou que esses dois serviços estavam em execução. Havia um bom firewall para impedir que todo o resto fosse acessado? Você permitiu o SSH na porta 22; seu login é razoavelmente fácil de adivinhar; você permitiu logins de senha; você teve algum tipo de limitação de taxa real para logins de senha? Você possui algum software adicional instalado com o lighttpd; perl; php; cgi; um CMS ou similar? Você estava executando a versão atualizada de todo o software; você assina notificações de segurança para todo o software executado e avalia cuidadosamente todas as notificações para ver se elas se aplicam ao software que você executa / expõe ao público?

Chris S
fonte
A instalação era um Ubuntu Desktop Edition 10.x padrão, nada em particular foi feito por segurança. Eu assumi que havia um firewall bom o suficiente por padrão. Isso não está correto? Eu permiti o login de senha na porta 22, mas a senha era uma sequência aleatória de 8 caracteres. Deve ser bom o suficiente?
Jonatan Kallus
Eu acredito que o firewall padrão é "Wide Open - No Firewall". A menos que você o configure com cuidado, ele não está fazendo nada.
Chris S
A questão é quais serviços você executava mais do que qual firewall. A menos que o firewall esteja configurado para configurar IPs específicos para acesso, o melhor firewall é não executar serviços desnecessários em primeiro lugar. E qual foi a sua configuração de rede? Aberto à Internet? Dentro de uma rede privada? Você não tinha um firewall no ponto em que sua rede interna entrou na Internet ou seu servidor estava em uma DMZ?
Bart Silverstrim
O servidor foi conectado diretamente à internet. Eu também o usei como roteador. Se o firewall padrão é aberta, então eu acho que tenho explicação suficiente para como isso poderia acontecer ..
Jonatan Kallus
4

Esse é um tipo de tópico em si; você pode pesquisar no google forensics linux para obter mais informações. Basicamente, você teria que criar uma imagem de suas unidades para análise offline primeiro, depois limpar o computador e instalar a partir do slate limpo.

E lembre-se de todos os acessórios. Qualquer pessoa que usasse o computador poderia ter suas senhas comprometidas. Altere as senhas, mantenha-as off-line etc. até chegar em uma "sala limpa" (VM isolada).

Caso contrário, é muita verificação de logs (que podem ser falsificados) e verificação de aplicativos (scripts php? Bancos de dados? Atualizado para as correções mais recentes? Outros usuários que fornecem senhas?)

Não há literalmente uma maneira fácil de responder à sua pergunta, pois você precisará fazer um trabalho forense no servidor e verificar se há falhas. Você pode usar algumas ferramentas automatizadas, mas lembre-se de que, se o invasor tiver privs do Root, você não poderá mais confiar nos binários do sistema nem nos logs.

Quanto a ataques futuros, dependendo de quão seguro você queira torná-lo, você pode começar redirecionando seus logs para um sistema que é usado apenas para salvar os logs do sistema. Nenhum outro acesso, para reduzir a pegada de ataque.

Você também executaria um software de soma de verificação em seu sistema, como o Tripwire, para verificar a integridade de seus arquivos.

E, é claro, mantenha-se atualizado com as atualizações e execute o software de verificação que verifica se há rootkits.

Mais uma vez, a segurança não é uma coisa que muda muito. Também pode ser uma especialidade em si mesma. A segurança em camadas pode ser tão rígida quanto a verificação de hosts / IPs que não pertencem à sua rede, criptografar todo o acesso ao sistema, enviar logs diários de alterações encontradas no sistema para você e configurar um honeypot na sua rede para procurar atividade estranha (por que meu servidor está tentando se conectar à porta 25 no computador honeypot?)

Em primeiro lugar, se você deseja verificar a atividade, obtenha a imagem do disco e reinstale o software do servidor. Do princípio. Os binários do servidor não podem mais ser confiáveis.

EDIT - algumas outras coisas que me ocorrem desde que você está executando o SSH - instalam denyhosts. Ele pode ser configurado para que ataques automatizados contra seu sistema no SSHD sejam bloqueados após um número X de tentativas. Ele também pode ser configurado para atualizar de outros servidores denyhost em uma "nuvem" para compartilhar IPs bloqueados e ajudar a minimizar ataques automatizados. Você também pode mover a porta em que está ouvindo; muitas pessoas apontam que é apenas segurança através da obscuridade, mas, dado o número de bots digitalizados, isso reduz significativamente as tentativas aleatórias de invadir.

Bart Silverstrim
fonte
Obrigado! Você realmente respondeu metade da pergunta cada, gostaria de poder marcar as duas como a resposta aceita.
Jonatan Kallus 04/12/2010