18.03  
Inicio arrow Artigos arrow Atualizando as regras do snort automaticamente.
Principal
Inicio
Noticias
Artigos
Regras da Lista
Assinar a Lista
Histórico da Lista
PC-BSD: Artigos
PC-BSD: Notícias
Galeria de Imagens
Contador Usuários FUG
FUGs Estaduais
Downloads
Enquetes
FAQ
Resumo do Site
Links
Pesquisar
Contato
Sobre a FUG-BR
RSS / Twitter
-
DOC-BR (FUG BR)
Introdução
Projeto DOC-BR
Handbook
FAQ Oficial
-
+ Noticias
Alertas de Seguranca
Alertas em Ports
BSD em Geral
DaemonNews (Ingles)
MyFreeBSD
Todas Categorias
-
Login
Nome de Usuário

Senha

Lembrar login
Esqueceu sua senha?
Sem conta? Crie uma


Atualizando as regras do snort automaticamente. PDF Imprimir E-mail
Por Fernando Buzon Macedo   
17/11/2008

http://rfxnetworks.com/gfx/snort1sm.jpgFernando B. Macedo nos traz mais uma boa contribuição, tratando de um dos softwares da área de segurança mais utilizados no mundo, o Snort. Saiba um pouco mais como gerenciar este poderoso software.

O script basicamente funciona assim:

1. Baixa o arquivo a partir do site do snort utilizando o oinkcode, no meu caso aquele que se obtem gratuitamente fazendo o cadastro no site.

2. Verifica se você está utilizando o snort em modo inline ou não e caso esteja ele apaga a regra de firewall que faz o divert pra posteriormente parar o snort sem atrapalhar nada.

3. Renomeia a pasta 'rules' antiga pra 'rules.old' e atualiza uma nova pasta rules com o conteudo do arquivo baixado. Também substitui os arquivos antigos *.map, *.config, sid e generators, porém o snort.conf é mantido.

4. Muda a ação das regras, no meu caso ao invés de 'alert' uso 'drop'.

5. Comenta aquelas regras que vc decidir não utilizar, essa opção é bem útil, vou dar um exemplo:

Suponhamos que no meu 'snort.conf' eu também fiz um include para o conjunto de regras 'shellcode.rules', dentre essas regras temos uma chamada 'SHELLCODE x86 NOOP' que faz com que o acesso ao meu servidor pop3 não funcione portanto eu comentei apenas essa regra e quando atualizados os arquivos rules ela voltará descomentada causando problemas. Pra isso podemos utilizar um arquivo definido no macro 'ignore_rules', onde podemos colocar os nomes das regras que desejamos que sejam comentadas, uma por linha, nesse caso do exemplo colocaríamos nele apenas 'SHELLCODE x86 NOOP' e a linha dessa regra será comentada após a atualização.

6. Levanta novamente o snort e no caso de snort inline, verifica com sockstat se o serviço realmente está rodando pra poder re-aplicar o firewall e assim novamente aplicar a regra de divert, caso o snort não tenha rodado por algum motivo o firewall não é reaplicado e vc fica sem a regra de divert, ou seja, sem ids!

 

Segue o script:

Início========================================================

#!/bin/sh

versao="2.8"
oink="e7a7c29497d45dbf0040b6b790cceab9c112xxxx"
log="/var/log/snort/atsnort.log"
tmp="/tmp/snort"
rules="/usr/local/snort/rules"
etc="/usr/local/snort/etc"
acao="drop"
stop="killall -9 snort"
start="/usr/local/bin/snort -J 5700 -D -c /usr/local/snort/etc/snort.conf"
ignore_rules="/root/ignore_rules.txt"
inline="enable"
divert_rule="1"
start_firewall="/etc/ipfw.sh"
inline_port="5700"

###############################################################

hoje=`date | awk '{print $3"-"$2}'`
hora=`date | awk '{print $4}'`

echo "Inicio $hoje ( $hora )" >> $log
echo "" >> $log

cd $tmp
echo "Baixando arquivo snortrules-snapshot-$versao.tar.gz em $tmp." >> $log
fetch http://www.snort.org/pub-bin/oinkmaster.cgi/$oink/snortrules-snapshot-$versao.tar.gz

if [ -e $tmp/snortrules-snapshot-$versao.tar.gz ]; then

  echo "Arquivo snortrules-snapshot-$versao.tar.gz obito com sucesso." >> $log

  if test "$inline" = "enable"; then
    echo "Snort modo inline! Afinal, pra que ser o passivo quando se pode ser o ativo? rs" >> $log
    echo "Apagando regra de divert antes de parar o snort." >> $log
    ipfw delete $divert_rule >> $log
  fi

  echo "Parando o snort, descompactando e copiando os novos arquivos." >> $log
  $stop >> $log

  tar zxvf snortrules-snapshot-$versao.tar.gz > /dev/null
  mv -v $tmp/etc/*.config $etc >> $log
  mv -v $tmp/etc/*.map $etc >> $log
  mv -v $tmp/etc/sid $etc >> $log
  mv -v $tmp/etc/generators $etc >> $log

  rm -fr $rules.old
  mv -v $rules "$rules.old" >> $log
  mv -v $tmp/rules/ $rules >> $log

  echo "Aplicando acao para $acao." >> $log
  sed -i.bak "s/^alert /$acao /g" $rules/*
  rm $rules/*.bak

  if [ -e $ignore_rules ]; then

    echo "" >> $log
    echo "Comentando regras marcadas na ignore list." >> $log 
    qtd_ignore=`wc -l $ignore_rules | awk '{print $1}'`
    a='1'
    while [ $a -le $qtd_ignore ]; do

      ignore=`sed "$a,$a!d" $ignore_rules`
      sed -i.bak "/$ignore/s/^/# /g" $rules/*
      echo "Comentado regra $ignore" >> $log

    a=`expr $a + 1`
    done
    echo "" >> $log
    rm $rules/*.bak

  fi

  if test "$tmp" != ""; then
    echo "Apagando arquivos desnecessarios." >> $log
    rm -fr $tmp/*
  else
    echo 'Voce nao definiu o $tmp! Quer que eu te apague sua particao root inteira? rs' >> $log
  fi

  echo "Levantando novamente o snort." >> $log
  $start >> $log
  echo "" >> $log
  if test "$inline" = "enable"; then
    sleep 20
    snort=`sockstat -4l | grep :$inline_port`
      if test "$snort" != ""; then
    echo "Snort inline rodando, reaplicando o firewall..." >> $log
        echo "" >> $log
        $start_firewall >> $log
        echo "" >> $log
      else
        echo "" >> $log
    echo "Snort nao levantou e o firewall nao sera reaplicado, estamos sem IDS!!" >> $log
      fi
  fi

else

  echo "Nao foi possivel obter o arquivo snortrules-snapshot-$versao.tar.gz." > $log

fi

hoje=`date | awk '{print $3"-"$2}'`
hora=`date | awk '{print $4}'`

echo "Fim $hoje ( $hora )" >> $log
echo "" >> $log
echo "=================================================================================" >> $log
 

Fim===========================================================================

Grande abraço a todos!

Autor: Fernando Buzon Macedo

Comentários


Comente!*
Nome:
E-mail
Homepage
Título:
Comentário:

Código:* Code

Última Atualização ( 21/11/2008 )
 
< Anterior   Próximo >
FUG-BR - Espalhando BSD
Dicas Rápidas:

Para quem está cansado de instalar programs via linha de comando com o ports e compania, agoa exite o bpm - BSD Ports Manipulator

 






Wallpapers
Sua Opiniao
Online:
Nós temos 39 visitantes online


Devil Store - Sua loja BSD
FreeBSD Brasil LTDA

FUG-BR: Desde 1999, espalhando BSD pelo Brasil.