Métodos Alternativos de Detecção do Linux para Detectar um Host Comprometido

2

Esta é uma reescrita do meu post anterior, pois não estava totalmente claro o que eu estava tentando alcançar. Espero que isso faça mais sentido:)

Em resumo, o que estou procurando são métodos alternativos para detectar se meu sistema está comprometido além do uso de ferramentas como o tripwire / OSSEC / samhain / rkhunter e apenas a verificação geral de integridade de arquivos e o monitoramento de logs. Eu estou deliberadamente tentando não ser muito específico com a minha pergunta, já que estou atrás de idéias em geral, para que eu possa implementá-las em minha própria máquina. Isso provavelmente será, mas não limitado a, um script que é executado em intervalos definidos (cronjob) e notifica o administrador se algo mudou e solicita que um administrador investigue mais por meio de (syslog / email?). Note que não estou necessariamente atrás do próprio código apenas uma visão geral de alto nível do que ele faz. Sinta-se à vontade para ser tão detalhado quanto quiser.

Pode ajudar se eu listar algumas coisas que faço atualmente para lhe dar uma ideia geral das ideias que eu procuro.

1) Gere um md5sum da saída do meu iptables em execução e compare-o com um hash bom conhecido. Se isso mudar, é seguro assumir que alguém adicionou / removeu uma entrada do iptables.

2) Eu tenho certos pontos de montagem que são somente de leitura (/ usr, / boot etc) porque eles não devem mudar com muita freqüência. Se uma partição mudar de somente leitura para gravável, quero ser notificado.

3) Monitore a saída do netstat apenas para serviços de escuta. Execute uma comparação de arquivos (diff) em um arquivo contendo valores bons conhecidos. Se algo foi adicionado, é possível que alguém tenha adicionado um novo serviço ao sistema. Possível backdoor?

Observe que o acima irá gerar falsos positivos se eu estiver fazendo a manutenção do sistema. No entanto, se estes mudarem quando eu não sou, eu os consideraria suspeitos e investigaria mais. Note que estes são apenas exemplos e possuem falhas como tudo, mas quanto mais obstáculos você tem, mais chances de alguém tropeçar são aumentados.

Obrigado antecipadamente.

    
por Gareth Williams 02.10.2009 / 02:27

8 respostas

2

Recomendo ver as ferramentas forenses de memória, como as listadas na ForensicsWiki . Por exemplo, você pode executar a verificação de integridade de processo e kernel com o produto forense de memória Linux do Segundo exame . Os verificadores de integridade de arquivos são ótimos para validar o estado não-volátil do sistema; A análise forense de memória permite que você valide o estado volátil para garantir que todo o código em execução no sistema em um determinado momento seja legítimo e não modificado.

    
por 20.04.2012 / 20:17
1

Talvez eu entenda mal sua pergunta. Parece que você precisa apenas de informações sobre o IDS / IPS do host unix, como samhain , snort ou OSSEC . Há wiki também. Ou você estava procurando por algo mais?

    
por 02.10.2009 / 07:18
1

Eu executo uma combinação de integrit (checagem de integridade binária), Tiger (IDS / auditor do sistema), logcheck e regras seriamente severas de IPtables (DENY tudo que posso, incluindo OUTPUT.) todas as configurações padrão no Debian funcionam muito bem, realizando tarefas em intervalos regulares e enviar por e-mail a saída para o root.

Eu também recomendo o Securing Debian Manual para uma boa visão geral do que você pode e deve fazer.

    
por 02.10.2009 / 10:37
0

Eu corro o nmap diariamente e salvo a saída no formato xml.
Algo como: nmap 192.168.0.0/24 -oX /tmp/nmap.output

Passar por todas as opções do nmap é esperar por aqui,
mas o link tem muitas informações.

Você pode então usar ndiff, a partir de pacotes nmap, para diferenciar a saída. de outro dia e obter uma lista de computadores que foram
adicionado, removido ou com novas portas abertas.

Configurando tudo isso no cron e uma lista é enviada após sua execução.

    
por 02.10.2009 / 09:12
0

O OSSEC pode fazer isso por você com seus recursos de auditoria de sistema. Voce já experimentou? Veja também o monitoramento sem agente dos comandos de saída ...

    
por 04.10.2009 / 02:17
0

verifica rootkit com rkhunter ou chkrootkit

    
por 04.10.2009 / 02:26
0

Você pode experimentar o Zabbix para serviços, monitoramento de logs, integridade de checksum de arquivos e muito mais. É muito fácil de instalar e configurar. Você pode precisar personalizá-lo para suas necessidades adicionando software de terceiros.

    
por 16.10.2009 / 16:41
0

Eu trabalho muito no projeto OSSEC e sei que isso pode resolver seus problemas. Não fora da caixa, mas com um pouco de sintonia vai funcionar.

Seção 1: Gerar um md5sum de tabelas ip

Sobre os novos recursos do OSSEC está relatando a diferença de saída de comando para fazer isso, basta adicionar o seguinte em seu etc / ossec.conf

<ossec_config> 
    <localfile> 
        <log_format>command</log_format>
        <command>iptables -L -n</command>
    </localfile>
</ossec_config>

Em seguida, crie uma regra local como a seguinte

<rule id="98989" level="10">
    <if_sid>530</if_sid>
    <match>ossec: output: iptables -L -n</match>
    <check_diff />
    <description>Change made to iptables</description>
</rule>

Mais detalhes podem ser encontrados link

Seção 2: tenha certos pontos de montagem que são somente de leitura

Atualmente, o rootcheck faz algumas verificações simples para isso, mas adicionar as suas próprias é fácil.

Primeiro, crie um arquivo de diretiva de verificação de raiz em etc/shared/ para este exemplo. Eu nomearei unix_mount_policy.txt com o seguinte conteúdo.

# This will make sure that the OS this file is used for pilicy is running redhat 
# and it should be changed for your environment 
[Policy - Check OS] [any required] [http://intranet.example.com/location/of/policy]
f:/etc/redhat-release -> r:^Red Hat Enterprise Linux \S+ release 5;
f:/etc/redhat-release -> r:^CentOS && r:release 5.2;

# First real rule
# This will alert if /usr does not have ro on the same line 
[Policy - Mounts read only] [any] [http://intranet.example.com/location/of/policy/readonly]
f:/etc/fstab ->  !r:^# && r:/usr && !r:ro

Seção 3: Monitora a saída do netstat apenas para serviços de escuta

rootcheck já preforma esta função, mas se você quiser ver se alguma coisa muda usando o loggin de saída comum da minha resposta na seção 1 deve ser muito simples de configurar.

    
por 16.09.2010 / 22:20