[ << ]
[ < ]
[ 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 |
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 ./
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
include classification.config
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 ]
[ > ]
[ >> ]
O conteúdo deste documento está licenciado pela licença Creative Commons -
Attribution / Share Alike.
|
|