Snort avançado: Projetando um perímetro seguro

Neste artigo veremos algumas características avançadas do sistema de detecção de invasão Snort e também como utilizar a criatividade para elaborar firewalls integrados com o IDS. Vamos montar uma central de análise utilizando Snort Snarf. Leitura recomendada para administradores e afins.

[ Hits: 176.385 ]

Por: Anderson L Tamborim em 06/01/2005 | Blog: http://y2h4ck.wordpress.com


Projeto de perímetro seguro



Quando vemos o termo perímetro, o que vem a mente?
Lembramos daqueles filmes de guerra, onde sempre o general dá ordens do tipo:

_ Soldado, monitorar o perímetro!

Então daí tiramos intuitivamente que perímetro é uma área protegida. Será que dizer que um "perímetro seguro" estaria sendo redundante?

Vai depender do seu conhecimento como Administrador de Rede/Sistema para me responder isso. Se você conseguir montar uma estrutura de perímetro bem definida e bem balanceada, com certeza você estará sendo redundante e em segurança da informação redundância é tudo!

Vamos analisar um pequeno projeto de perímetro que iremos utilizar em nosso artigo:


Bom, iremos nos basear nessa estrutura de topologia de rede para criar um sistema de Firewall/IDS que possa prover segurança, estabilidade, escalabilidade e integridade aos nossos dados.

Página anterior     Próxima página

Páginas do artigo
   1. Prólogo
   2. Introdução: Sistemas de detecção de invasão
   3. Tabela simbólica
   4. Projeto de perímetro seguro
   5. Instalação e configuração
   6. Adaptando o IDS ao nosso projeto
   7. IDS Center: Criando uma central de alertas unificados
   8. Proof of Concept: Projeto sob fogo
   9. Conclusão
   10. Apêndice
Outros artigos deste autor

Jails em SSH: Montando sistema de Shell Seguro

Carnivore e Altivore: Os predadores do FBI

Security Hacks: Linux & BSD

Seguraça extrema com LIDS

SECtool - Análise Local para Linux

Leitura recomendada

Wireshark - Artigo

Como fazer: chroot SSH (SSH mais seguro)

Armitage: a nova interface gráfica do Metasploit

5 comandos que ninguém nunca deve executar no Linux

Configurando proxy no shell

  
Comentários
[1] Comentário enviado por fabio em 06/01/2005 - 04:16h

Momento do samba carioca:

"Sobre o artigo, dizer o quê...
O Anderson Tamborim, caprichou pra valê!

I ô lê lê... onde há segurança
a gente nunca perde a esperança

E diz!

REFRÃO..."

Meus parabéns!

[2] Comentário enviado por naoexistemais em 06/01/2005 - 04:24h

Caro Anderson,

Mais um artigo de qualidade e mantendo a qualidade do VOL, por isso digo para o zangado o VOL é o melhor e sempre será.

Parabéns,

[3] Comentário enviado por sUxSyS em 06/01/2005 - 06:53h

Meu po... muito bom teu artigo!
Como sempre muito profissional... meus parabens!!!

flws

[4] Comentário enviado por dudu_away em 06/01/2005 - 11:06h

Ae anderson.. naum precisava nem comentar né? haushahs

Tah perfeito como sempre! Continue assim kra....

Parabéns!

[]'s
Eduardo

[5] Comentário enviado por jeffestanislau em 06/01/2005 - 12:46h

Anderson,

Realmente está ótimo!!! Parabéns por seu trabalho!!!

PS: Ainda bem que o fábio não depende de samba para sobreviver!!!
hehehe

[]´s

[6] Comentário enviado por peregrino em 06/01/2005 - 13:53h

opa cara esse é mais um artigo daqueles que dispensa comentarios muito bommesmo continue assim fazendo varios artigos e tutorias para acomunidade

queria falar aqui que vc poderia fazer um tutorial sobre iptables+pom com regras avançadas e tambem algum falando sobre teste de fogo para testar o servidor se esta vuneravel

falow

[7] Comentário enviado por y2h4ck em 06/01/2005 - 14:00h

Obrigado a todos pelos comentarios e por terem apreciado meu artigo.
Peregrino gostei da Ideia ... e posso futuramente escrever um artigo sobre testes de penetração. :)

Abraços a todos.

Anderson Luiz Tamborim ( Spawn y2h4ck )

[8] Comentário enviado por fcc em 06/01/2005 - 16:26h

Ae man...mandou ver novamente....Jogou duro no IDS Parabens....continue sempre divugando seus artigos...eles sao o maximo!

Valeu!

[9] Comentário enviado por dexter_sbo em 07/01/2005 - 09:20h

Ae spawn mando muito bem como sempre seu artigo fico muito ótimo fico muito 10 memo meus parabéns

By __d3xt3r__

[10] Comentário enviado por removido em 07/01/2005 - 11:44h

EXCELENTE!!!!
E muito inspirado também o samba do fábio... ;-)

[11] Comentário enviado por davidsonpaulo em 08/01/2005 - 15:34h

Aê Fábio! Como sambista tu é um ótimo administrador de portal. Ahahahah!

Aê Anderson! Detonou hein! Parabéns meu velho, e continue evoluindo!

Abraços!

[12] Comentário enviado por peregrino em 01/02/2005 - 14:27h

opa so queria informar que o link do download do Snort Snarf ta errado e o endereço certo é esse qui http://www.snort.org/dl/contrib/data_analysis/snortsnarf/

falow

[13] Comentário enviado por mariux em 24/03/2005 - 18:05h

por gostei pra caramba muito legal o artigo. me ajudou muito!!

[14] Comentário enviado por montaro em 25/04/2005 - 04:14h

muito bom o artigo...eu me interesso bastante pela area de seguranca e ate penso em trabalhar nesse ramo, mais eh tanta coisa pra aprender que nao sei por onde comecar... ja montando um ids , um honeypot aki no lnx ja eh um comeco ... abracos..

[15] Comentário enviado por jgama em 23/07/2006 - 16:25h

Já faz mas de um ano que foi eleborado este tutorial, só agora que tive o prazer de ler, realmente muito bem elaborado.

Só como sou inexperiente no Linux, posso dizer assim, e tentei colocar o snort para Rodar num Servidor com Mandriva 2006, usando este Tutorial, só que aqui esta dando erro justamente no arquivo de regras abaixo, será que tenho que criar o arquivo com o conteudo igualzinho descrito abaixo?

# regras.conf
# ----------------------------------------------------------
# Anderson Luiz Tamborim ( security*NOSPAM*tionline.com.br )
# ----------------------------------------------------------
# Regras para IDS baseado em Plano
# Regras Alert

alert tcp any any <> [192.168.10.0/24,192.168.11.0/24]
alert udp any any <> [192.168.10.0/24,192.168.11.0/24]
alert ip any any <> [192.168.10.0/24,192.168.11.0/24]

#Isso iria gerar um alerta para qualquer tráfego entre essas duas redes, #assim nossa primeira política de alertas está feita, agora teremos que #fazer as regras para liberar as portas que serão válidas aos usuários:

pass tcp 192.168.10.0/24 any -> 192.168.11.1 25
pass tcp 192.168.10.0/24 any -> 192.168.11.1 80
pass tcp 192.168.10.0/24 any -> 192.168.11.1 110
pass tcp 192.168.10.0/24 any -> 192.168.11.1 143
pass tcp 192.168.10.0/24 any -> 192.168.11.1 21
pass tcp 192.168.10.0/24 any -> 192.168.11.1 137:139

# Agora pacotes UDP
pass udp 192.168.0.0/24 any -> 192.168.11.1 137:139
pass udp 192.168.0.0/24 any -> 192.168.11.1 21

# Pacotes IP
# Não utilizaremos pacotes IP, pois não estamos
# utilizando nenhum serviço como VPN ou sistema de
# autenticação como Kerberos


Pois aparece messagem de erro quando starto snort, dizendo que tem erro no include /etc/snort/rules/regras.conf (8) algo assim.

Tentei deica as linhas conforme abaixo mas não deu certo.

abaixo, será que tenho que criar o arquivo com o conteudo igualzinho descrito abaixo?

# regras.conf
# ----------------------------------------------------------
# Anderson Luiz Tamborim ( security*NOSPAM*tionline.com.br )
# ----------------------------------------------------------
# Regras para IDS baseado em Plano
# Regras Alert

alert tcp any any [192.168.0.0/24,192.168.1.0/24]
alert udp any any [192.168.0.0/24,192.168.1.0/24]
alert ip any any [192.168.0.0/24,192.168.1.0/24]

pass tcp 192.168.0.0/24 any 192.168.1.0 25
pass tcp 192.168.0.0/24 any 192.168.1.0 80
pass tcp 192.168.0.0/24 any 192.168.1.0 110
pass tcp 192.168.0.0/24 any 192.168.1.0 143
pass tcp 192.168.0.0/24 any 192.168.1.0 21
pass tcp 192.168.0.0/24 any 192.168.1.0 137:139

# Agora pacotes UDP
pass udp 192.168.0.0/24 any 192.168.1.0 137:139
pass udp 192.168.0.0/24 any 192.168.1.0 21

Alguém poderia ajudar-me a tirar esta dúvida

[16] Comentário enviado por removido em 17/10/2009 - 09:27h

Legal, SNORT Avançado.

[17] Comentário enviado por removido em 17/10/2009 - 22:42h

Snort, Porquinho Ninja.

[18] Comentário enviado por rhock em 06/12/2011 - 15:41h

Estou com um problema na hora de executar o comando " snortsnarf.pl --rulesfile /etc/snort/snort.conf -rulesdir /etc/snort -d /www/htdocs/snarf /var/log/snort/alert "


da o seguinte erro: " snortsnarf.pl: command not found "

Alguem pode me ajudar.

Obrigado.

[19] Comentário enviado por rhock em 06/12/2011 - 16:56h

Erro na execução:



perl snortsnarf.pl --rulesfile /etc/snort/snort.conf --rulesdir /etc/snort -d /var/www/snort /var/log/snort/alert
Parentheses missing around "my" list at /etc/perl/Time/ParseDate.pm line 108.
Parentheses missing around "my" list at /etc/perl/Time/ParseDate.pm line 109.
Useless use of a variable in void context at /etc/perl/Time/ParseDate.pm line 108.
Useless use of a variable in void context at /etc/perl/Time/ParseDate.pm line 108.
Useless use of a variable in void context at /etc/perl/Time/ParseDate.pm line 109.
Useless use of a variable in void context at /etc/perl/Time/ParseDate.pm line 109.
Using an array as a reference is deprecated at /etc/perl/HTMLMemStorage.pm line 290.
Using an array as a reference is deprecated at /etc/perl/HTMLAnomMemStorage.pm line 266.
Unknown option --rulesfile
Unknown option --rulesdir
Subroutine julian_day redefined at /etc/perl/Time/JulianDay.pm line 46.
Subroutine day_of_week redefined at /etc/perl/Time/JulianDay.pm line 82.
Subroutine inverse_julian_day redefined at /etc/perl/Time/JulianDay.pm line 96.
Subroutine jd_seconds redefined at /etc/perl/Time/JulianDay.pm line 127.
Subroutine jd_timelocal redefined at /etc/perl/Time/JulianDay.pm line 135.
Subroutine jd_timegm redefined at /etc/perl/Time/JulianDay.pm line 145.
unknown alert format for line: var HOME_NET any
; skipping
unknown alert format for line: var EXTERNAL_NET any
; skipping
unknown alert format for line: var DNS_SERVERS [xxxxxxx]
; skipping
unknown alert format for line: var SMTP_SERVERS [xxxxxxx]
; skipping
unknown alert format for line: var HTTP_SERVERS $HOME_NET
; skipping
unknown alert format for line: var SQL_SERVERS $HOME_NET
; skipping
unknown alert format for line: var TELNET_SERVERS $HOME_NET
; skipping
unknown alert format for line: var FTP_SERVERS $HOME_NET
; skipping
unknown alert format for line: var SNMP_SERVERS $HOME_NET
; skipping
unknown alert format for line: portvar HTTP_PORTS 80
; skipping
unknown alert format for line: portvar SHELLCODE_PORTS !80
; skipping
unknown alert format for line: portvar ORACLE_PORTS 1521
; skipping
unknown alert format for line: portvar FTP_PORTS 21
; skipping
unknown alert format for line: var RULE_PATH /etc/snort/rules
; skipping
unknown alert format for line: var PREPROC_RULE_PATH /etc/snort/preproc_rules
; skipping
unknown alert format for line: dynamicpreprocessor directory /usr/lib/snort_dynamicpreprocessor/
; skipping
unknown alert format for line: dynamicengine /usr/lib/snort_dynamicengine/libsf_engine.so
; skipping
unknown alert format for line: preprocessor frag3_global: max_frags 65536
; skipping
unknown alert format for line: preprocessor frag3_engine: policy first detect_anomalies overlap_limit 10
; skipping
unknown alert format for line: preprocessor stream5_global: max_tcp 8192, track_tcp yes, \
; skipping
unknown alert format for line: track_udp no
; skipping
unknown alert format for line: preprocessor stream5_tcp: policy first
; skipping
unknown alert format for line: preprocessor rpc_decode: 111 32771
; skipping
unknown alert format for line: preprocessor bo
; skipping
unknown alert format for line: preprocessor ftp_telnet: global \
; skipping
unknown alert format for line: encrypted_traffic yes \
; skipping
unknown alert format for line: inspection_type stateful
; skipping
unknown alert format for line: preprocessor ftp_telnet_protocol: telnet \
; skipping
unknown alert format for line: normalize \
; skipping
unknown alert format for line: ayt_attack_thresh 200
; skipping
unknown alert format for line: preprocessor ftp_telnet_protocol: ftp server default \
; skipping
unknown alert format for line: def_max_param_len 100 \
; skipping
unknown alert format for line: alt_max_param_len 200 { CWD } \
; skipping
unknown alert format for line: cmd_validity MODE < char ASBCZ > \
; skipping
unknown alert format for line: cmd_validity MDTM < [ date nnnnnnnnnnnnnn[.n[n[n]]] ] string > \
; skipping
unknown alert format for line: chk_str_fmt { USER PASS RNFR RNTO SITE MKD } \
; skipping
unknown alert format for line: telnet_cmds yes \
; skipping
unknown alert format for line: data_chan
; skipping
unknown alert format for line: preprocessor ftp_telnet_protocol: ftp client default \
; skipping
unknown alert format for line: max_resp_len 256 \
; skipping
unknown alert format for line: bounce yes \
; skipping
unknown alert format for line: telnet_cmds yes
; skipping
unknown alert format for line: preprocessor smtp: \
; skipping
unknown alert format for line: inspection_type stateful \
; skipping
unknown alert format for line: normalize cmds \
; skipping
unknown alert format for line: normalize_cmds { EXPN VRFY RCPT } \
; skipping
unknown alert format for line: alt_max_command_line_len 260 { MAIL } \
; skipping
unknown alert format for line: alt_max_command_line_len 300 { RCPT } \
; skipping
unknown alert format for line: alt_max_command_line_len 500 { HELP HELO ETRN } \
; skipping
unknown alert format for line: alt_max_command_line_len 255 { EXPN VRFY }
; skipping
unknown alert format for line: preprocessor sfportscan: proto { all } scan_type { all } memcap { 1000000 } sense_level { medium } logfile { sfPortscan.log }
; skipping
unknown alert format for line: preprocessor ssh: server_ports { 22 } \
; skipping
unknown alert format for line: max_client_bytes 19600 \
; skipping
unknown alert format for line: max_encrypted_packets 20 \
; skipping
unknown alert format for line: enable_respoverflow enable_ssh1crc32 \
; skipping
unknown alert format for line: enable_srvoverflow enable_protomismatch
; skipping
unknown alert format for line: preprocessor dcerpc2
; skipping
unknown alert format for line: preprocessor dcerpc2_server: default
; skipping
unknown alert format for line: preprocessor dns: \
; skipping
unknown alert format for line: ports { 53 } \
; skipping
unknown alert format for line: enable_rdata_overflow
; skipping
unknown alert format for line: preprocessor ssl: noinspect_encrypted, trustservers
; skipping
unknown alert format for line: output log_tcpdump: tcpdump.log
; skipping
unknown alert format for line: include classification.config
; skipping
unknown alert format for line: include reference.config
; skipping
unknown alert format for line: include $RULE_PATH/local.rules
; skipping
unknown alert format for line: include $RULE_PATH/scan.rules
; skipping
Undefined subroutine &MemTimeBase::jd_timelocal called at /etc/perl/MemTimeBase.pm line 38, <inputfile003> line 6.


Alguem sabe ?


Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts