Gentoo Logo

[ << ] [ < ] [ Início ] [ > ] [ >> ]


13. Detecção de instrusão

Conteúdo:

13.a. AIDE (Advanced Intrusion Detection Environment)

AIDE é um sistema de detecção de intrusão baseada em hosts (HIDS), uma alternativa gratuita para o Tripwire (se você já conhece o Tripwire, você não deverá ter dificuldades para aprender o arquivo de configuração do AIDE). HIDS são usados para detectar mudanças em arquivos de configuração de sistema e binários importantes, geralmente fazendo um hash criptográfico singular para os arquivos a serem verificados e guardando-os em um lugar seguro. Com freqüência (como uma vez por dia), o hash "conhecido" guardado é comparado com o gerado pela cópia atual de cada arquivo, para determinar se o arquivo mudou. HIDS são uma grande maneira de detectar mudanças não permitidas a seu sistema, mas dão um pouco de trabalho para implementar adequadamente e tirar proveito.

O arquivo de configuração é baseado em expressões regulares (regex), macros e regras para arquivos e diretórios. Nós temos as seguintes macros:

Macro Descrição Sintaxe
ifdef Se definido @@ifdef "nome"
ifndef Se não definido @@ifndef "nome"
define Definir uma variável @@define "nome" "valor"
undef Cancelar uma variável @@undef "nome"
ifhost se "hostname" @@ifhost "hostname"
ifnhost se não "hostname" @@ifnhost "hostname"
endif Endif deve ser usado depois de qualquer uma das macros acima fora define e undef @@endif

Estas macros tornam-se úteis se você tem mais de uma máquina rodando Gentoo e quer usar AIDE em todas elas. Mas nem todas máquinas rodam os mesmos serviços ou têm os mesmos usuários.

A seguir temos conjuntos de opções para verificar arquivos e diretórios. Eles são uma combinação de permissões, propriedades de arquivo e hashes criptográficos (isto é, checksums).

Opção Descrição
p permissões
i inode
n número de links
u usuário
g grupo
s tamanho
b contagem de bloco
m mtime
a atime
c ctime
S verificar tamanho crescente
md5 checksum de md5
sha1 checksum de sha1
rmd160 checksum de rmd160
tiger checksum de tiger
R p+i+n+u+g+s+m+c+md5
L p+i+n+u+g
E Grupo vazio
> Arquivo de registro crescente p+u+g+i+n+S

E se o AIDE for compilado com suporte a mhash ele suporta algumas funções a mais:

Opção Descrição
haval checksum de haval
gost checksum de gost
crc32 checksum de crc32

Agora crie suas próprias regras com base nas opções acima combinando-as da seguinte maneira:

Listagem de código 1.1: Criando conjunto de regras para o AIDE

All=R+a+sha1+rmd160
Norm=s+n+b+md5+sha1+rmd160

A última coisa de que precisamos para criar nosso arquivo de configuração é ver como adicionar uma regra a um arquivo ou diretório. Para entrar com uma regra, combine o nome de arquivo ou diretório e a regra. O AIDE irá adicionar todos arquivos recursivamente a menos que você especifique uma regra alternativa.

Opção Descrição
! Não adicionar este arquivo ou diretório.
= Adicionar este diretório, mas não recursivamente.

Então vamos ver um exemplo completo:

Listagem de código 1.2: /etc/aide/aide.conf

@@ifndef TOPDIR 
@@define TOPDIR /
@@endif

@@ifndef AIDEDIR 
@@define AIDEDIR /etc/aide
@@endif

@@ifhost smbserv
@@define smbactive
@@endif

# O local do banco de dados a ser lida.
database=file:@@{AIDEDIR}/aide.db

# O local do banco de dados a ser gravado.
database_out=file:aide.db.new

verbose=20
report_url=stdout

# Definição de regras
All=R+a+sha1+rmd160
Norm=s+n+b+md5+sha1+rmd160

@@{TOPDIR} Norm
!@@{TOPDIR}etc/aide
!@@{TOPDIR}dev
!@@{TOPDIR}proc
!@@{TOPDIR}root
!@@{TOPDIR}tmp
!@@{TOPDIR}var/log
!@@{TOPDIR}var/run
!@@{TOPDIR}usr/portage
@@ifdef smbactive
!@@{TOPDIR}etc/smb/private/secrets.tdb
@@endif
=@@{TOPDIR}home Norm

No exemplo acima nós especificamos algumas macros onde o topdir começa e onde o diretório do AIDE está. O AIDE verifica o arquivo /etc/aide/aide.db para verificar a integridade de arquivo. Mas quando estiver atualizando ou criando um novo arquivo, ele grava a informação em /etc/aide/aide.db.new. Isto é feito para que ele não sobre-escreva o arquivo db antigo automaticamente. A opção report_URL ainda não está implementada, mas a intenção do autor era poder enviar e-mail ou talvez até executar scripts.

A ebuild do AIDE agora vem com um arquivo de configuração padrão que funciona, um script de ajuda e um script de crontab. O script de ajuda faz algumas tarefas para você e oferece uma interface que um pouco mais amigável a scripts. Para ver todas opções disponíveis, experimente aideinit --help. Para começar, tudo que precisa ser feito é aideinit -i e o script de crontab deve detectar o banco de dados e enviar correio devidamente todo dia. Nós recomendamos que você revise o arquivo /etc/aide/aide.conf e certifique-se que a configuração reflete precisamente o que está em sua máquina.

Nota: Dependendo da sua CPU, velocidade de acesso a disco, e opções use que você tem nos arquivos, isto pode levar um tempo.

Nota: Lembre-se de configurar um alias para que você receber o correio do root. Senão, você nunca saberá quando o AIDE der notícias.

Há um risco inerente em gravar os arquivos db localmente, já que o indivíduo malicioso irá (se souberem que o AIDE está instalado) quase certamente tentar alterar o arquivo db, atualizar o arquivo db ou modificar /usr/bin/aide. Portanto, você deve criar um CD ou outra mídia e colocar uma cópia do arquivo .db e binário do AIDE.

Pode-se encontrar mais informações na página de projeto do AIDE.

13.b. Snort

Snort é um sistema de detecção de intrusão de rede (NIDS). Para instalar e configurá-lo, use os seguintes exemplos.

Listagem de código 2.1: /etc/conf.d/snort

PIDFILE=/var/run/snort_eth0.pid
MODE="full"
NETWORK="10.0.0.0/24"
LOGDIR="/var/log/snort"
CONF=/etc/snort/snort.conf
SNORT_OPTS="-D -s -u snort -dev -l $LOGDIR -h $NETWORK -c $CONF"

Listagem de código 2.2: /etc/snort/snort.conf

(Passo 1)
var HOME_NET 10.0.0.0/24
var EXTERNAL_NET any
var SMTP $HOME_NET
var HTTP_SERVERS $HOME_NET
var SQL_SERVERS $HOME_NET
var DNS_SERVERS [10.0.0.2/32,212.242.40.51/32]
var RULE_PATH ./

(Passo 2)
preprocessor frag2
preprocessor stream4: detect_scans detect_state_problems detect_scans disable_evasion_alerts
preprocessor stream4_reassemble: ports all
preprocessor http_decode: 80 8080 unicode iis_alt_unicode double_encode iis_flip_slash full_whitespace
preprocessor rpc_decode: 111 32771
preprocessor bo: -nobrute
preprocessor telnet_decode

(Passo 3)
include classification.config

(Passo 4)
include $RULE_PATH/bad-traffic.rules
include $RULE_PATH/exploit.rules
include $RULE_PATH/scan.rules
include $RULE_PATH/finger.rules
include $RULE_PATH/ftp.rules
include $RULE_PATH/telnet.rules
include $RULE_PATH/smtp.rules
include $RULE_PATH/rpc.rules
include $RULE_PATH/rservices.rules
include $RULE_PATH/dos.rules
include $RULE_PATH/ddos.rules
include $RULE_PATH/dns.rules
include $RULE_PATH/tftp.rules
include $RULE_PATH/web-cgi.rules
include $RULE_PATH/web-coldfusion.rules
include $RULE_PATH/web-iis.rules
include $RULE_PATH/web-frontpage.rules
include $RULE_PATH/web-misc.rules
include $RULE_PATH/web-attacks.rules
include $RULE_PATH/sql.rules
include $RULE_PATH/x11.rules
include $RULE_PATH/icmp.rules
include $RULE_PATH/netbios.rules
include $RULE_PATH/misc.rules
include $RULE_PATH/attack-responses.rules
include $RULE_PATH/backdoor.rules
include $RULE_PATH/shellcode.rules
include $RULE_PATH/policy.rules
include $RULE_PATH/porn.rules
include $RULE_PATH/info.rules
include $RULE_PATH/icmp-info.rules
include $RULE_PATH/virus.rules
# include $RULE_PATH/experimental.rules
include $RULE_PATH/local.rules

Listagem de código 2.3: /etc/snort/classification.config

config classification: not-suspicious,Not Suspicious Traffic,3
config classification: unknown,Unknown Traffic,3
config classification: bad-unknown,Potentially Bad Traffic, 2
config classification: attempted-recon,Attempted Information Leak,2
config classification: successful-recon-limited,Information Leak,2
config classification: successful-recon-largescale,Large Scale Information Leak,2
config classification: attempted-dos,Attempted Denial of Service,2
config classification: successful-dos,Denial of Service,2
config classification: attempted-user,Attempted User Privilege Gain,1
config classification: unsuccessful-user,Unsuccessful User Privilege Gain,1
config classification: successful-user,Successful User Privilege Gain,1
config classification: attempted-admin,Attempted Administrator Privilege Gain,1
config classification: successful-admin,Successful Administrator Privilege Gain,1

# NOVAS CLASSIFICAÇÕES
config classification: rpc-portmap-decode,Decode of an RPC Query,2
config classification: shellcode-detect,Executable code was detected,1
config classification: string-detect,A suspicious string was detected,3
config classification: suspicious-filename-detect,A suspicious filename was detected,2
config classification: suspicious-login,An attempted login using a suspicious username was detected,2
config classification: system-call-detect,A system call was detected,2
config classification: tcp-connection,A TCP connection was detected,4
config classification: trojan-activity,A Network Trojan was detected, 1
config classification: unusual-client-port-connection,A client was using an unusual port,2
config classification: network-scan,Detection of a Network Scan,3
config classification: denial-of-service,Detection of a Denial of Service Attack,2
config classification: non-standard-protocol,Detection of a non-standard protocol or event,2
config classification: protocol-command-decode,Generic Protocol Command Decode,3
config classification: web-application-activity,access to a potentially vulnerable web application,2
config classification: web-application-attack,Web Application Attack,1
config classification: misc-activity,Misc activity,3
config classification: misc-attack,Misc Attack,2
config classification: icmp-event,Generic ICMP event,3
config classification: kickass-porn,SCORE! Get the lotion!,1

Mais informações no website do Snort.

13.c. Detectando malware com o chkrootkit

HIDS como o AIDE são um bom jeito de detectar mudanças em seu sistema, mas nunca faz mal ter outra linha de defesa. O chkrootkit é um utilitário que varre arquivos de sistema comuns procurando a presença de rootkits--software desenhado para esconder as ações de um invasor e permitir a ele manter seu acesso--e escaneia seu sistema por traços prováveis de gravadores de teclas e outros "malware". Enquanto o chkrootkit (e alternativas como o rkhunter) são ferramentas úteis, tanto para a manutenção de sistema quanto para rastrear um intruso depois que um ataque aconteceu, eles não podem garantir que seu sistema está seguro.

O melhor jeito de usar o chkrootkit para detectar uma invasão é rodá-lo rotineiramente como cron. Para iniciar, faça emerge app-admin/chkrootkit. O chkrootkit pode ser rodado da linha de comando com o comando de mesmo nome, ou do cron com uma entrada parecida com o seguinte:

Listagem de código 3.1: Agendar chkrootkit como um cronjob

0 3 * * * /usr/sbin/chkrootkit

[ << ] [ < ] [ Início ] [ > ] [ >> ]


Imprimir

View all

Atualizado 23 de novembro de 2005

A versão original deste documento foi atualizada em 19 de julho de 2010

Resumo: Detecte intrusos.

Kim Nielsen
Autor

John P. Davis
Editor

Eric R. Stockbridge
Editor

Carl Anderson
Editor

Jorge Paulo
Editor

Sven Vermeulen
Editor

Benny Chuang
Editor

Sune Jeppesen
Editor

Tiemo Kieft
Editor

Zack Gilburd
Editor

Dan Margolis
Editor

Marcelo Góes
Tradutor

Donate to support our development efforts.

Copyright 2001-2013 Gentoo Foundation, Inc. Questions, Comments? Contact us.