sexta-feira, 2 de março de 2012

Entendendo básico do snort.conf - Serie Snortando (Parte 3)

O snort.conf é o principal e praticamente o único arquivo de configuração do snort. Nele configuramos variáveis, diretivas, decoders, preprocessadores, plugins de saida entre outras coisas.

É de suma importancia saber o que esta fazendo quando se edita o snort.conf para não modificar algo erroneamente e comprometer todo o funcionamento do mesmo. Lembre-se que modificar erronenamente não propriamente quer dizer que o snort não iniciara e sim não carregara partes importantes.

No arquivo snort.conf existe até um passo a passo de onde e o que modificar (está em inglês e usarei traduzido pra pt_BR) :

Original no snort.conf

###################################################
# This file contains a sample snort configuration. 
# You should take the following steps to create your own custom configuration:
#
#  1) Set the network variables.
#  2) Configure the decoder
#  3) Configure the base detection engine
#  4) Configure dynamic loaded libraries
#  5) Configure preprocessors
#  6) Configure output plugins
#  7) Customize your rule set
#  8) Customize preprocessor and decoder rule set
#  9) Customize shared object rule set
###################################################
  
Então vamos por partes:

1-) Configure suas variáveis
2-) Configure o decoder
3-) Configure o engine de detecção
4-) Configure as bibliotecas dinamicas
5-) Configure os pre-processadores
6-) Configure os plugins de saida
7-) Customize suas regras
8-) Customize seu preprocessador e decoder
9-) Customize as Shared Object Rules

Muitas opções aqui terão mais sentido no final da serie no qual farei outro post dai mais completo e com dicas mas nesse post inicial focarei no passo 1 - Configure suas variáveise abordarei sobre a diretiva config .

Existem 3 tipos de variáveis:

- var
- portvar
- ipvar

Alguns exemplos:

var RULES_PATH /etc/snort/rules/
portvar MY_PORTS [22,80,1024:2000]
portvar SSH [22]
ipvar REDE_INTERNA [192.168.200.0/24,192.168.100.1]

Essas variaveis são utilizadas em regras, preprocessadores não fazem o uso das mesmas. Exemplo básico :

alert tcp any any -> $REDE_INTERNA $MY_PORTS (flags:S; msg:"Pacote com SYN";)

Alem de declarar os IPs ou CIDR na variável voce pode adicionar uma negação. Vamos pensar que voce quer monitorar todas as maquinas da rede 10.0.0.0/24 porém não a maquina 10.0.0.10 que é um scanner na rede.

ipvar MINHA_VARIAVEL [10.0.0.0/24,![10.0.0.10]]

A utilizacão da variável será igual a uma variavel simples .

Variaveis de porta (port) também podem usar a negação bem como  um port range

portvar TESTE [!80]
portvar RANGE_SERVIDORES [3000:4000]

Na variavel RANGE_SERVIDORES ele vai monitorar portas 3000 até a 4000 .

A diretiva config não entrarei em detalhes aqui mas elas são bem importantes para voce ajustar suas configurações. Voce pode chamar o parametro via linha de comando quando for iniciar o snort bem como utiliza-las no snort.conf . No total temos mais de 60 diretivas que podem ser configuradas , abaxio alguns exemplos retirados do manual em pdf do snort. Um config bem importante de entender e adicionarei na lista de posts, talvez até o próximo é o config detection no qual voce pode melhorar muito consumo de memoria por exemplo.



Outro parametro no snort.conf que utilizamos bastante é o include no qual resumidamente falando voce podera incluir config de forma simples num arquivo diferente do snort.conf . Alguns includes presentes por padrão :

include classification.config
include reference.config

Não se esqueça que quando atualizar seu engine sempre temos um novo snort.conf padrão que voce deve adicioná-lo e modifica-lo com as suas configurações pois muitas vezes são pre-processadores novos, variáveis que são utilizadas pelo VRT na criação de regras.

Caso queira acompanhar os arquivos de configurações mais atuais sugiro acompanhar http://www.snort.org/vrt/snort-conf-configurations/ .

É mandatorio saber utilizar e modificar o snort.conf por isso sempre leia ele, a documentação, configurações que possue pois isso certamente aumentara a qualidade do seu sensor instalado.

Desculpe do atraso mas infelizmente trabalho primeiro =)

Happy Snorting!

Rodrigo "Sp0oKeR" Montoro

3 comentários:

Fernandes Macedo disse...

devo dizer que estudei bastantes IDS, à algum tempo atrás....e com esta séries está me fazendo relembrar bastante coisas e aprender outras.

parabéns

Diego Cananéa disse...

Excelente material! Estou começando a implantar um Snort in-line aqui no trabalho e vou fazer meu TCC em cima disso. Parabéns!

fernando disse...

Olá, acompanho o blog a um tempo, e queria ver se você consegue me dar uma idéia sobre esse tipo de ataque, como posso realizar esse tipo de bloqueio, pois são de diversos IPs.
Obrigado
[Fri Mar 16 09:05:57 2012] [error] [client 96.47.224.58] ModSecurity: Access denied with code 403 (phase 2). Operator EQ matched 0 at REQUEST_HEADERS. [file "/etc/apache2/modsecurity/crs/base_rules/modsecurity_crs_21_protocol_anomalies.conf"] [line "46"] [id "960015"] [rev "2.1.2"] [msg "Request Missing an Accept Header"] [severity "CRITICAL"] [tag "PROTOCOL_VIOLATION/MISSING_HEADER_ACCEPT"] [tag "WASCTC/WASC-21"] [tag "OWASP_TOP_10/A7"] [tag "PCI/6.5.10"] [hostname "server.mydomain.com.br"] [uri "/ticket/86042"] [unique_id "T2MspQoBAR8AADB6@rcAAAAE"]