Detecção de Intrusos no Sistema
(Por Pedro Ortale Neto) – Percebendo a falta de documentos relativos a Detecção de Intrusos em Portugues, escrevi este artigo (O primeiro de uma série), tratando da teoria básica sobre IDS e o uso de uma ferramenta para deteccao e check de integridade de arquivos, o tripwire, assim como detecção em Rede, usando o Snort. Em breve estarei publicando novo artigo, só que aprofundado ao IDS em rede, utilizando como base o SNORT & PortSentry.
INTRUSION DETECTION SYSTEMs
———————————————-
Pedro Ortale Neto < ortale@unsecurity.com.br >
Unsecurity Systems
http://www.unsecurity.com.br
A internet hoje é um veículo imenso para disseminação do comércio,
quebra de barreiras entre povos e nações e ao mesmo tempo, um meio
de acesso de grande valia na mão de vândalos virtuais.
Existe uma necessidade muito grande para que o mercado que circula
por meio da Internet funcione e seja confiável: Segurança. Existem
inúmeras ferramentas para que o grau de segurança seja um pouco
mais elevado, porém, o único sistema realmente seguro é aquele que
não está conectado a nenhuma rede. Sendo assim, uma solução
obrigatória para qualquer rede que circula dados de missão crítica
é um Sistema IDS, Intrusion Detection System.
Existem pelo menos dois tipos de IDS:
* Deteção de Invasão em Host
* Deteção de Invasão em Rede
DETECÇÃO DE INVASÃO EM HOST
—————————
É importante realçar que um sistema de detecção de invasão eficaz não
é aquele que simplesmente registra dados em um sistema que está
sofrendo ataque, mas sim aquele que ao perceber qualquer anormalidade
na rede inicia uma série de procedimentos que possam impedir o ataque
ou minimizar as perdas.
O sistema de deteção de invasão em host é geralmente útil para
detectar ataques já consagrados e localizar aquivos modificados com a
intenção de abrir portas para futuro uso do host, seja como ponte
de ataque para outras redes, capturar os dados da rede interna ou
simplesmente alterar aquivos vitais do host.
A primeira ferramenta que usaremos de exemplo é o TripWare, da
Tripwire (R) Security Systems, Inc.
INSTALANDO O TRIPWARE
———————
Faça o download do Tripwire em: http://www.tripwire.com/downloads/
Crie um diretório e mova o arquivo .tar.gz para dentro
# mkdir tripwire
# cp Tripwire_221_for_Linux_x86.tar.gz tripwire
Descompresse o arquivo e em seguida execute a instalação
# tar zxpvf Tripwire_221_for_Linux_x86.tar.gz
#./install.sh
Leia e aceite a licença de uso (é preciso rolar até o fim e digitar
accept). Em seguida, a instalação iniciará após confirmação dos
diretórios de destino.
O TripWare baseia-se em guardar informações sobre estrutura dos
arquivos em seus sistema, sendo assim, para garantir a integridade do
índice de verificação dos arquivos, são usadas duas frases, uma para
a chave do SITE e outra para LOCAL, respectivamente.
Escolha a Frase, lembrando que quanto mais diversos caracteres você
colocar, mais difícil de descriptografar esse arquivo será, impedindo
o cracker de modificar seu sistema e alterar também os indices do IDS.
Após você digitar as frases, o Tripwire cria uma política padrão e
para acessá-la, você deve digitar novamente as frases.
Inicie o tripwire para criar um banco de dados primário
#cd /usr/TSS/bin
#./tripwire –init
Em seguida, digite sua senha/frase de acesso LOCAL. Alguns erros de
aquivos não encontrados poderão surgir, mas é uma etapa normal. Os
erros serão corrigidos nos procedimentos descritos logo mais abaixo.
Antes de atualizar o banco de dados de arquivos, primeiramente,
procure por todos os arquivos setuid/setgid e grave a lista em um
arquivo de log. Estes arquivos fornecem privilégios especiais ao
usuário que esta executando o mesmo, sendo assim esses arquivos podem
ser usado paraaccessar partes restritas do sistema.
# find / -type f -perm +6000 -ls >> setgiduid.log
É bom monitorar arquivos que possuem permissão de gravação configurada
para todos usuários e arquivos que nao possuem dono ou grupo. Grave a
lista em um arquivo de log
# find / -perm -2 ! -type l -ls >> todosrwx.log
# find / -nouser -o -nogroup >> sem.log
A partir de agora, você tem uma lista de arquivos potênciais em relação
a segurança, o próximo passo é adicioná-los no arquivo de políticas
# joe /usr/TSS/policy/twpol.txt (Use o editor de texto de sua preferência)
Procure por:
setuid/setgid root programs
(rulename = “setuid/setgid”, severity = $(SIG_HI))
{
Apague todas as linhas entre os dois colchetes ( { & } ) e adicione toda a
lista dos arquivos setgid/uid, respeitando a seguinte sintaxe:
/caminho/do/arquivo -> $(SEC_SUID);
Exemplo:
{
/usr/X11R6/bin/Xwrapper -> $(SEC_SUID);
/usr/X11R6/bin/xterm -> $(SEC_SUID);
/usr/X11R6/bin/xhextris -> $(SEC_SUID);
/usr/X11R6/bin/kterm -> $(SEC_SUID);
/usr/X11R6/bin/XConsole -> $(SEC_SUID);
}
Configure todas as partes do arquivo de configuração conforme seu sistema,
assim como arquivos de shells, configurações, segurança e diretórios de
arquivos temporários.
Atualize o arquivo de políticas e em seguida Entre com a sua password/frase
do Site, em seguida atualize o banco de dados de arquivos do tripwire:
# ./twadmin -m p ../policy/twpol.txt
# ./tripwire –init
Para verificar a Integridade dos arquivos, simplesmente digite:
# ./tripwire –check
Todas as modificações nos arquivos configurados são informadas.
Recomendo que os arquivos de configuração sejam gravados em uma mídia não
regravável, assim como um cd-rom, sendo assim jamais os dados do índice
poderão ser alterados.
Para maiores informações sobre o uso do tripwire, consulte a documentação.
DETECÇÃO DE INVASÃO EM REDE
—————————
Detecção de invasão em redes não é uma tarefa fácil, depende de muita
análise, às vezes a nível de protocolo e muito conhecimento técnico,
mas não é por isso que o administrador deve se desencorajar, pelo
contrário, faça experiências, experimente produtos e simule ataques
para maior compreensão dos dados obtidos por programas dessa classe.
Utilizaremos dois softwares para detecção de intrusão (Ou tentativa
de intrusão), PortSentry, da Psionic e o Snort.
INSTALAÇÃO E USO DO PORTSENTRY
——————————
Faça o download de http://www.psionic.com/tools/portsentry-1.0.tar.gz,
descompresse, compile e instale a distribuição:
# tar zxpvf portsentry-1.0.tar.gz
# cd portsentry-1.0
# ./configure
# make
# make install
O Portsentry será instalado no diretório /usr/local/psionic/portsentry
Basicamente, o portsentry opera em quatro modos (Plataforma Linux)
- Simples Detecção de Portas TCP
# ./portsentry -tcp
- Simples Detecção de Portas UDP
# ./portsentry -udp
- Detecção de Stealth Portscan TCP
# ./portsentry stcp
- Detecção de Stealth Portscan UDP
# ./portsentry sudp
Para maiores informações sobre configuração/instalação do portsentry,
leia o texto de Renato Murilo Langona:
http://www.linuxsecurity.com.br/renato/antiscan.html
INSTALAÇÃO E USO DO SNORT
————————-
Antes de iniciar a instalação do software, precisamos planejar como
o Snort será instalado, respondendo algumas questões simples:
A máquina é dedicada?
A máquina possui uma ou mais placas de rede?
Qual o Sistema Operacional?
O modo mais simples de instalar o Snort é uma máquina dedicada, com uma
placa de rede e Linux, porém, o recomendado é uma máquina dedicada com
duas placas de rede, então vamos la…
Quando se trata de duas placas de redes no Snort, uma é usada em modo
Promíscuo, ou seja, agindo com um sniffer e outra como porta para
administraçào remota (Via outra máquina na rede interna).
Sendo assim, teremos o seguinte diagrama:
[ADMINISTRATIVO]——–[SNORT]—–INTERNET
| |
[COMP 1] [DMZ]
|
[COMP 2]
Após escolhermos esse modelo de implantação, iniciaremos a instalação
Puxe e instale o pacote para RedHat em:
http://www.linuxsecurity.com/programs/snort-1.6.2.2-1.i386.rpm
# rpm -i snort-1.6.2.2-1.i386.rpm
Após instalar via RPM, é nescessário configurar algumas definições no
arquivo /etc/snort/rules.base
Será algo parecido com:
var INTERNAL 192.168.1.0/24
var EXTERNAL 63.87.101.0/24
var DNSSERVERS 63.87.101.90/32 63.87.101.92/32
Substitua usando os dados de sua rede, lembre-se de adicionar os hosts
confiáveis no arquivo rules.base respeitando o formato abaixo:
preprocessor portscan-ignorehosts: 63.87.101.90/32 63.87.101.92/32
Adicione no arqivo /etc/passwd:
snort:x:201:201:Snort:/etc/snort:/bin/false
e no arquivo /etc/group
snort:x:201:
Teste a configuração pelo comando abaixo;
# snort -d -l /var/log/snort -c /etc/snort/rules.base
Irá resultar em algo parecido com:
Initializing Network Interface…
User level filter, protocol ALL, raw packet socket
Decoding Ethernet on interface eth0
Initializing Preprocessors!
————————————————-
Keyword | Preprocessor @
————————————————-
http_decode : 0×8053070
minfrag : 0×8053290
portscan : 0x8053ce0
portscan-ignorehosts: 0×8054340
————————————————-
Initializing Plug-ins!
————————————————-
Keyword | Plugin Registered @
————————————————-
content : 0×8052050
offset : 0×8052080
depth : 0x80520f0
nocase : 0×8052160
flags : 0×8052710
itype : 0x80528f0
icode : 0x8052a00
ttl : 0x8052b10
id : 0x8052bf0
ack : 0x8052cd0
seq : 0x8052dc0
dsize : 0x8052ec0
ipopts : 0×8054420
rpc : 0×8054670
icmp_id : 0×8054830
icmp_seq : 0×8054930
session : 0×8055300
————————————————-
Initializating Output Plugins!
————————————————-
Keyword | Output @
————————————————-
alert_syslog : 0x8054a20
log_tcpdump : 0x8054ff0
————————————————-
+++++++++++++++++++++++++++++++++++++++++++++++++++
Initializing rule chains…
255 Snort rules read…
255 Option Chains linked into 140 Chain Headers
+++++++++++++++++++++++++++++++++++++++++++++++++++
Performing Rule List Integrity Tests…
—————————————
Alert TCP Chains : OK
Alert UDP Chains : OK
Alert ICMP Chains : OK
Log TCP Chains : Empty list…
Log UDP Chains : Empty list…
Log ICMP Chains : Empty list…
Pass TCP Chains : Empty list…
Pass UDP Chains : Empty list…
Pass ICMP Chains : Empty list…
—————————————
-*> Snort! <*-
Version 1.6
By Martin Roesch (roesch@clark.net, www.clark.net/~roesch)
Pressione Control + C para cancelar
A partir de agora você pode usar o Daemon pelo comando:
# /usr/sbin/snort -s -d -D -i eth0 -l /var/log/snort
-c /etc/snort/rules.base
ou
#./etc/rc.d/init.d/snortd start
Exemplificando um portscan: (Onde Hacker é o host de quem ataca)
[HACKER]#nmap -p 25,53 -sX -P0 -D 1.2.3.4,5.6.7.8 192.168.200.189
Starting nmap V. 2.54BETA1 by fyodor@insecure.org (www.insecure.org/nmap/)
Interesting ports on smtp.mydomain.com (192.168.200.189):
Port State Service
25/tcp open smtp
53/tcp open domain
Nmap run completed — 1 IP address (1 host up) scanned in 19 seconds
No host do snort (/var/log/snort/portscan.log)
Jun 18 15:57:52 krypton snort[9131]: spp_portscan: PORTSCAN DETECTED from
1.2.3.4
Jun 18 15:57:52 krypton snort[9131]: spp_portscan: PORTSCAN DETECTED from
5.6.7.8
Jun 18 15:57:58 krypton snort[9131]: spp_portscan: portscan status from
192.168.1.100: 2 connections across 1 hosts: TCP(2), UDP(0) STEALTH
Jun 18 15:57:58 krypton snort[9131]: spp_portscan: portscan status from
1.2.3.4: 2 connections across 1 hosts: TCP(2), UDP(0) STEALTH
Jun 18 15:57:58 krypton snort[9131]: spp_portscan: portscan status from
5.6.7.8: 2 connections across 1 hosts: TCP(2), UDP(0) STEALTH
CONCLUSAO
———
Este artigo foi apenas uma demonstração sobre os dois tipos de
sistemas IDS, o de Host e o de Network, exemplificando o emprego
de 3 aplicações de excelência (Tripwire, PortSentry & Snort).
Estas ferramentas ajudam o administrador a posicionar-se diante
a ataques que muitas vezes não sabem que siquer ocorrem. Este
é o primeiro de uma série de artigos exclusivos para a o site
Linuxsecurity Brasil sobre a área de Detecção de Intrusão, em
breve os principais utilitários em IDS serão comentados. Até lá.
Fonte: http://www.linuxsecurity.com.br/
Nenhum Post Relacionado.
Artigos parecidos fornecidos por Yet Another Related Posts Plugin.



