Gentoo Logo

1.  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.1: /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.

1.  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 1.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 1.1: /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 1.1: /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.

1.  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 1.1: Agendar chkrootkit como um cronjob

0 3 * * * /usr/sbin/chkrootkit

Atualizado 23 de novembro de 2005

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

Donate to support our development efforts.

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