Como verificar se um servidor Linux está limpo de rootkits / backdoors / botnets etc.?

9

Caso um servidor Linux tenha sido exposto à Internet com uma política de segurança extremamente baixa (r / w pastas anônimas do Samba, servidor de banco de dados Firebird com senha de administrador padrão, sem firewall etc.) por uma semana, então como garantir que o sistema esteja não comprometido sem formatação e reinstalação completas, acessando-o apenas remotamente via SSH?

Ivan
fonte

Respostas:

7

Normalmente, eu sugeriria uma verificação local com uma ferramenta como chkrootkit, mas se a única maneira de executar a verificação for remotamente, recomendo que você experimente o Rootkit Hunter .

O Rookit Hunter verifica rootkits e outras atividades executando testes como os seguintes (consulte Informações do projeto para obter mais detalhes):

  • Comparação de hash MD5
  • Procure arquivos padrão usados ​​pelos rootkits
  • Permissões de arquivo incorretas para binários
  • Procure cadeias suspeitas nos módulos LKM e KLD
  • Procure por arquivos ocultos

Quero acrescentar que, como já foi dito, a única maneira de garantir que não haja violação do seu serviço é reconstruí-lo. Essas ferramentas funcionam bem, mas não garantem 100% o sucesso.

runlevelsix
fonte
2

O OSSEC verifica rootkits e detecta atividades suspeitas.

chmeee
fonte
2

Eu sei que esta resposta não é o que você quer ouvir, mas aqui vamos nós de qualquer maneira. Existem algumas ferramentas que podem verificar o sistema. A melhor maneira de garantir que o sistema esteja limpo é limpar o servidor e reconstruir. Eu faria o seguinte:

  • Remova o computador da internet
  • Dados de backup e informações de configuração para remover dispositivos
  • Formatar armazenamento
  • Reinstalar a Base / Configuração padrão / Atualizações
  • Reconfigurar o servidor usando dados antigos como referência
  • Restaurar dados do usuário

Aqui estão alguns recursos que eu começaria a ler se ainda não o fez.

[texto do link] [1] texto do link texto do link texto do link

[1]: http://www.sans.org/reading_room/whitepapers/linux/linux-rootkits-beginners-prevention-removal_901 "Linux Rootkits Iniciantes"

JJ01
fonte
2

Também não é a resposta que você deseja, mas se houver a possibilidade de um sistema ter sido enraizado, pode ser muito difícil ter 100% de certeza de que o sistema está limpo. Os rootkits foram projetados para serem difíceis de detectar. Se você executar os vários verificadores raiz e o check-out estiver limpo, "provavelmente" o seu sistema estará limpo.

Se a segurança é uma preocupação, eu consideraria reconstruí-la como o pôster acima dito anteriormente ou restaurá-la a partir de bons backups.

USACASD
fonte
1

Você realmente precisa ser proativo aqui. Não existe uma maneira confiável de detectar rootkits nas máquinas; portanto, é necessário impedir que eles cheguem lá em primeiro lugar e encontrar maneiras de detectá-los na entrada (por exemplo, via tripwire e interfaces bloqueadas).

Se você acha que uma máquina foi explorada de alguma forma, você realmente precisa reinstalar - não há maneira garantida de limpá-la antes de uma reinstalação. De longe a opção mais segura.

Adam Gibbins
fonte
1

RKhunter, Tripwire, etc, são ótimos, mas realmente só beneficiam se eles foram instalados antes do incidente - isso ocorre porque eles são ótimos para detectar se os arquivos principais foram alterados. Se você instalar o RKHunter agora e executá-lo, ele detectará a inclusão de muitos rootkits, mas não detectará nenhuma backdoors que um invasor abriu no sistema operacional ou nos aplicativos que você usa.

Por exemplo, você pode entrar furtivamente em um computador, criar um novo usuário, conceder permissões de SSH e sudo e depois limpar, deixando uma configuração de aparência legítima no lugar e sem rootkits - depois volte mais tarde e faça o seu mal.

A melhor coisa a fazer é analisar quais portas têm serviços ouvindo-as, depois analisar a configuração de todos esses serviços e garantir que todos sejam legítimos. Em seguida, observe a configuração do firewall e bloqueie as portas desnecessárias, tanto na entrada quanto na saída. Em seguida, instale o RKHunter, etc, para ver se algum script-kiddie deixou cair um kit raiz lá de maneira confusa.

Para ser franco, provavelmente é menos trabalhoso fazer o que JJ sugeriu e reconstruir do que garantir que o computador não seja comprometido. São os dados que são valiosos, não o sistema operacional e a configuração (além das horas de trabalho na configuração).

Você nunca terá certeza de que não foi quebrado por alguém mais inteligente que você.

dunxd
fonte
0

O primeiro passo deve ser realmente o rkhunter / chkrootkit, no entanto, também tive sorte no passado com os recursos incorporados a determinados gerenciadores de pacotes, por exemplo, 'rpmverify', que percorrerá todos os pacotes do seu sistema e verificará se os MD5Sums dos arquivos incluídos não diferem dos arquivos no disco.

Os binários principais realmente devem ter MD5s idênticos aos especificados nos bancos de dados RPM ou DPKG; portanto, se forem diferentes, você saberá que algo está acontecendo.

JamesHannah
fonte
-1

A maneira mais eficaz de determinar se o seu sistema em execução está comprometido é usar o Second Look . Ele verificará o kernel e todo o software em execução na memória para garantir que eles sejam consistentes com o que o fornecedor de distribuição enviou. Essa é uma abordagem muito melhor do que rkhunter, chkrootkit etc., que procura artefatos de infecções conhecidas específicas . O Second Look não faz suposições sobre a integridade do sistema operacional; portanto, você não precisa usá-lo ou instalá-lo antes de um incidente.

(Aviso: sou o desenvolvedor principal do Second Look.)

Andrew Tappert
fonte