Você está na página 1de 21

Snort

Servidores de Aplicação II

Uniararas
Servidores de Aplicação II

Intrusion Detection System – IDS

O que é um IDS?

IDS – é uma ferramenta utilizada para detectar e alertar o administrador sobre ataques e tentativas
de acesso indevidos na rede corporativa.

Esta ferramenta aplicada junto a um Firewall, proporciona o monitoramento do tráfego tanto de


entrada quanto de saída das informações na rede.

Esta ferramenta aplicada junto a um Firewall, proporciona o monitoramento do tráfego tanto de


entrada quanto de saída das informações na rede.

O que é o Snort ?

O SNORT é uma ferramenta NIDS desenvolvida por Martin Roesch open source bastante popular
por sua flexibilidade nas configurações de regras e constante atualização frente às novas
ferramentas de invasão .

Outro ponto forte desta ferramenta é o fato de ter o maior cadastro de assinaturas, ser leve,
pequeno, fazer escaneamento do micro e verificar anomalias dentro de toda a rede ao qual seu
computador pertence.

Por ser uma ferramenta peso leve, a utilização do Snort é indicada para monitorar redes TCP/IP
pequenas, onde pode detectar uma grande variedade do tráfego suspeito, assim como ataques
externos e então, fornece argumento para as decisões dos administradores.

O Snort monitora o tráfego de pacotes em redes IP, realizando análises em tempo real sobre
diversos protocolos (nível de rede e aplicação) e sobre o conteúdo (hexa e ASCII). Outro ponto
positivo desse software é o grande número de possibilidades de tratamento dos alertas gerados. O
subsistema de registro e alerta é selecionado em tempo de execução através de argumentos na
linha de comando, são três opções de registro e cinco de alerta.

O registro pode ser configurado para armazenar pacotes decodificados e legíveis em uma estrutura
de diretório baseada em IP, ou no formato binário do tcpdump em um único arquivo. Para um
incremento de desempenho, o registro pode ser desligado completamente, permanecendo os
alertas.

Já os alertas podem, ser enviados ao syslog, registrados num arquivo de texto puro em dois
formatos diferentes, ou ser enviados como mensagens WinPopup usando o smbclient.

Página 2
Servidores de Aplicação II

A ferramenta Snort mantém suas regras de descoberta de intrusão em duas listas denominadas
Chain Headers (Cabeçalho da Regra) e Chain Options (Cabeçalho de Opções). Chain Headers
contém os atributos comuns de uma regra, e Chain Options armazena os padrões de ataque que
serão pesquisados dentro dos pacotes capturados e as ações que serão tomadas caso um ataque
seja diagnosticado.

Instalação do pré-requisitos para a instalação do Snort.

Para o Snort funcionar gravando os seus logs em banco de dados precisamos instalar um
gerenciador de banco de dados, que no nosso caso será MYSQL.

Primeiramente temos que colocar repositórios válidos, nosso caso será utilizado da Unicamp,
conforme imagem abaixo:

Link do Repositório

deb http://debian.las.ic.unicamp.br/debian/ squeeze main contrib non-free

Página 3
Servidores de Aplicação II

Feita alteração, utilizar o comando apt-get update para atualizar o repositório.

Vamos instalar o MySQL:

Apt-get-install mysql-common mysql-client mysql-server

Configure a senha para a sua base e ok.

Página 4
Servidores de Aplicação II

Agora vamos instalar as outras ferramentas que vamos precisar para que a nossa interface de
gerenciamento do Snort funcione corretamente.

Apt-get install apache2 libapache2-mod-php5 php5

apt-get install php5-gd php5-mysql php-pear libnet1 libnet1-dev

apt-get install libpcap-dev libpcap0.8 libpcap0.8-dev libpcre3 expect gobjc libpcre3-dev

apt-get install flex bison libmysql++-dev php5-cgi

Depois de instalar o servidor MySQL, existe um script embutido que vem com ele que podemos
usar para proteger o MySQL servidor. Para isso faça o seguinte:

#mysql_secure_installation

Enter current password for root (enter for none): senha do root do banco
Change the root password? [Y/n] n
Remove anonymous users? [Y/n] y
Disallow root login remotely? [Y/n] y
Remove test database and access to it? [Y/n] y
Reload privilege tables now? [Y/n] y

Pronto, agora temos um servidor MySQL temos protegido.

Página 5
Servidores de Aplicação II

Para verificar se o servidor está funcionando corretamente pode usar o seguinte comando:

# netstat -ntlp | grep mysql

Instalação do Snort

# apt-get install snort-mysql snort-common snort-common-libraries snort-doc snort-rules-default

Responda as perguntas do Snort:

A primeira pode confirmar com o padrão que vier.


A segunda ele pergunta a respeito do escopo da rede.

A terceira se você quer configurar a base de dados, pode confirmar que sim.

Após instalar os pacotes do Snort ela não conseguirá finalizar a instalação dos pacotes pois a base de
dados do MySQL ainda não está configurada.

Precisamos finalizar a configuração do Snort com o MySQL para que a instalação seja finalizada.

Vamos primeiro descompactar o arquivo SQL para a criação das tabelas no MySQL que o Snort vai
precisar.

Página 6
Servidores de Aplicação II

# gunzip /usr/share/doc/snort-mysql/create_mysql.gz

Agora vamos preparar o MySQL e importar o arquivo SQL que irá criar as tabelas do Snort.

# mysql -u root –p

mysql> CREATE DATABASE snort;


mysql> GRANT ALL PRIVILEGES ON snort.* TO snort IDENTIFIED BY 'senha';
mysql> FLUSH PRIVILEGES;
mysql> use snort;
mysql> source /usr/share/doc/snort-mysql/create_mysql
mysql> quit

Agora remova o arquivo a seguir para que a instalação passo continuar.

# rm /etc/snort/db-pending-config

Feito isso agora vamos executar o aptitude novamente para que a instalação possa ser finalizada, pois
temos alguns pacotes que precisam ainda ser instalados.

# apt-get -f install

Pronto, já temos o Snort instalado, falta efetuarmos a configuração.

Arquivo de configuração snort.conf

vamos editar o nosso arquivo:

# vim /etc/snort/snort.conf

#/etc/snort/snort.conf
#Data:19/06/2012

Página 7
Servidores de Aplicação II
#Arquivo de configuração do Snort

#Uma rede ou uma lista de redes que identificaram a rede interna ou a DMZ que será monitorada
var HOME_NET [192.168.0.0/24,200.200.200.200/29]

#Especifica as redes externas. Será utilizada pela maioria das regras para determinar o atacante
#var EXTERNAL_NET any
var EXTERNAL_NET !$HOME_NET

#Especifica os servidores de DNS


var DNS_SERVERS $HOME_NET

#Especifica os servidores de SMTP servidores de Emails


var SMTP_SERVERS $HOME_NET

#Especifica os servidores WEB


var HTTP_SERVERS $HOME_NET

#Especifica a porta que o servidor WEB trabalha


var HTTP_PORTS 80 3000 3128 8080 9090

#Especifica as portas em que a execução remota de código deve ser monitorada


var SHELLCODE_PORTS !$HTTP_PORTS

#Especifica os servidores SQL


var SQL_SERVERS $HOME_NET

#Especifica os servidores ORACLE


var ORACLE_PORTS 1521

#Especifica os servidores de TELNET


var TELNET_SERVERS $HOME_NET

#Especifica os servidores de SNMP


var SNMP_SERVERS $HOME_NET

#Especifica os servidores AIM da AOL


var AIM_SERVERS
[64.12.24.0/23,64.12.28.0/23,64.12.161.0/24,64.12.163.0/24,64.12.200.0/24,205.188.3.0/24,205.18
8.5.0/24,205.188.7.0/24,205.188.9.0/24,205.188.153.0/24,205.188.179.0/24,205.188.248.0/24]

#Indica o caminho onde estarão as regras utilizadas pelo Snort


var RULE_PATH /etc/snort/rules

#Define que a biblioteca dinâmica de pré-processador deve ser carregada


dynamicpreprocessor directory /usr/lib/snort_dynamicpreprocessor/

#Define que a biblioteca dinâmica de engine de detecção deve ser carregada


dynamicengine /usr/lib/snort_dynamicengine/libsf_engine.so

#Preprocessadores são aplicações que fazem uma pré-analise e filtragem dos pacotes antes de enviar
os dados para o conjunto de regras

#Preprocessador de monitoramento de fluxo, detector de portscan


preprocessor flow: stats_interval 0 hash 2

#Preprocessor frag3 desfragmenta pacotes IP antes de envia-los para a analise do conjunto de regras
#O objetivo de desfragmentar os pacotes e impedir que o atacante possa usar técnicas de evasão
através da construção de pacotes com múltiplos fragmentos
#para realizar ataques que não possam ser detectados pelo IDS.
#max_frags método de gerenciamento de memória que define o numero máximo de fragmentos que
serão rastreados simultaneamente.
preprocessor frag3_global: max_frags 65536

#Policy define a política de fragmentação utilizada pelo sistema operacional

Página 8
Servidores de Aplicação II
#Os valores podem ser first,last,bsd,bsd-right e Linux
#detect_anomalies:detecta anomalias em fragmentos.
preprocessor frag3_engine: policy first detect_anomalies

#Stream5 efetua a reconstrução e o rastreamento de conexões TCP e UDP, além de monitorar pacotes
ICMP.
#permite ao Snort detectar ataques sem estado de conexão (stateless) e também gera alerta sobre
conexões forjadas
#max_tcp:define o numero máximo de sessões TCP simultâneas que podem ser rastreadas.
#track_tcp:ativa o rastreamento de sessões TCP
#track_dup:ativa o rastreamento de sessões UDP
#track_icmp:ativa o rastreamento de sessões ICMP
preprocessor stream5_global: max_tcp 8192, track_tcp yes, track_udp yes, track_icmp yes

#policy: define a política utilizada pelo sistema operacional-alvo.


#use_static_footprint_sizes:emula o ambiente do pré-processador stream4 para o processo de
remontagem do pacote.
preprocessor stream5_tcp: policy first, use_static_footprint_sizes
preprocessor stream5_udp: timeout 30, ignore_any_rules
preprocessor stream5_icmp: timeout 30

#Preprocesso http_inspect o seu principal objetivo e impedir que técnicas de evasão através do
protocolo HTTP surtam efeito
#ira operar tanto em requisições de clientes quanto em resposta de servidores
#iis_unicode_map:informa o arquivo de mapa de códigos do IIS, seguido do tipo de codificação de
caracteres 1252 corresponde ao padrão
#detect_anomalous_servers:habilita a detecção de tráfego http
preprocessor http_inspect: global iis_unicode_map unicode.map 1252 detect_anomalous_servers

#Preprocessor http_inspect_server:define o perfil do servidor WEB


#ports:Define em quais portas será realizada a decodificação de dados HTTP
#flow_depth:define a quantidade de dados que devem ser inspecionados em pacotes relacionados a
respostas de servidores algo entre 150-300
#directory:opcao que normaliza diretórios com referencias cruzadas
#ascci:permite a decodificação de códigos ASCII
#utf_8:permite a decodificai de códigos UTF8 habilite esta opção se estiver utilizando servidores
Apache
#bare_bytes:habilita a interpretação de codificação de Bare byte usado pelo IIS se tiver servidores IIS
pode habilitar
#double_decode:faz duas varreduras seguidas em uma URI, realizando o processo de decodificação em
ambas. especifica para IIS
#u_encode:emula o esquema %u usado pelo IIS, que tem o %u mais 4 caracteres que representam
um caracter ASCII
#multi_slash:normaliza múltiplas barras em uma linha. algo como eu/////////eu será normalizado para
eu/eu
#chunk_length:finalidade e detectar uma anomalia utilizada por vários exploits do Apache. também
alerta sobre tunelamento via HTTP.
#non_strict:assume que a URI esta entre o primeiro e o segundo espaço em branco. EX:GET
/index.html alallala\n como e o caso do apache
#iis_unicode:permite o mapeamento de codepoints Unicode. Esses codepoints são aceitos pelo IIS para
decodificação de requisições UTF9
#iis_backslash:converte contra-barras '\' em '/'. também uma emulação para o IIS
#iis_delimiter: trata o delimitador \n o IIS e o Apache suporta
#webroot:alerta quando uma referencia cruzada de diretório tenta transpassar o diretório raiz do
servidor HTTP.
#pode detectar um atacante tentando acessar arquivos ou diretórios fora do diretório onde residem as
paginas de um site
preprocessor http_inspect_server: server default \
ports { 80 3128 8080 3000 8080 9090 } \
flow_depth 200 \
directory no \
ascii no \
utf_8 no \
bare_byte yes \

Página 9
Servidores de Aplicação II
double_decode no \
u_encode yes \
multi_slash yes \
chunk_length 500000 \
non_strict \
iis_unicode no \
iis_backslash yes \
iis_delimiter yes \
webroot yes

#Preprocessor rpc_decode: criado para agregar múltiplos registros do protocolo rpc que estejam
fragmentados em um único registro.
#Os números determinam as portas do serviço rpc elas tem que estar separadas por espaço
#Alert_fragments:habilita a geração de alertas quando forem encontrados registros RPC fragmentados
preprocessor rpc_decode: 111 32771 alert_fragments

#bo: tenta detectar tráfego de rede gerado pelo exploit back Orifice.
# utilizando por atacantes para realizar a administração remote de equipamentos Windows
preprocessor bo: noalert { general server } drop { snort_attack }

#ftp_telnet:provê a inspeção de conexões FTP e TELNET. ele pode decodificar uma conexão, identificar
comandos FTP e sequências
#de escape usadas pelo protocolo TELNET
#encrypted_traffic:habilita a detecção e geração de alertas quando for encontrado tráfego encriptado
em canais de comando telnet e ftp.
#inspection_type:indica se o modo de inspeção será stateful(default) ou stateless
#stateful: faz a analise por conexão, assim e capaz de remontar as cadeias TCP desses protocolos
#stateless: faz a analise pacote a pacote, neste caso, não remonta as cadeias.
preprocessor ftp_telnet: global encrypted_traffic yes inspection_type stateful

#configuracoes especificas do protocolo telnet


#normalize:habilita a normalização de tráfego Telnet através da eliminação de sequências de escape.
#ayt_attack_thresh: gera alertas quando o numero informado de comandos de telnet consecutivos do
tipo ayt(Are You There) e ultrapassado.
#so se aplica quando o modo de operação for stateful
#detect_anomalies:habilita a detecção de anomalias no protocolo telnet.
preprocessor ftp_telnet_protocol: telnet normalize ayt_attack_thresh 200 detect_anomalies

#preprocessor ftp_telnet_protocol lado servidor:


#ports: define em quais portas deve haver o monitoramento para decodificação de tráfego ftp
#def_max_param_len:define o valor padrão para o tamanho máximo de um comando ftp, usado para
detectar overflow
#alt_max_param_len:define o tamanho máximo, em bytes para o comando ftp especificado.
#cmd_validity:especifica o formato valido para parâmetros de determinado comando.
#telnet_cmds: habilita a detecção e geração de alertas quando sequências de escape do protocolo
telnet forem localizadas em um canal de comando ftp.
#data_chan:define que outros pre-processadores e regras irão ignorar conexões que contiverem canais
de dados ftp.
preprocessor ftp_telnet_protocol: ftp server default ports { 20 21 } def_max_param_len 100
alt_max_param_len 200 { CWD } cmd_validity MODE < char ASBCZ > cmd_validity MDTM < [ date
nnnnnnnnnnnnnn[.n[n[n]]] ] string > chk_str_fmt { USER PASS RNFR RNTO SITE MKD } telnet_cmds
yes data_chan

#preprocessor ftp_telnet_protocol lado cliente:


#max_resp_len:define o tamanho máximo de uma resposta para um comando de FTP aceito. usado
para detectar overflow.
#bounce:faz com que sejam verificados ataques do tipo FTP bounce nos comandos especificados.
#telnet_cmds:habilita a detecção e geração de alertas quando sequências de escape do protocolo
telnet forem localizadas em um canal de comandos FTP.
preprocessor ftp_telnet_protocol: ftp client default max_resp_len 256 bounce yes telnet_cmds yes

#preprocessor smtp: decodifica um buffer de dados a procura de comandos e respostas SMTP.

Página 10
Servidores de Aplicação II
#ele consegue marcar os comandos, o cabeçalho de dados e o corpo da mensagem e, ainda, as
sessões TLS. Pode atuar stateful ou stateless
#ports: especifica quais portas serão verificadas a procura de dados smtp.
#inspection_type:informa o modo de operação (stateful ou stateless)
#normalize:habilita a normalização. ira pesquisar comandos que sejam seguidos de mais de um espaço
em branco ou uma tabulação.
#(parâmetros de normalize:all:verifica todos os comandos,none:desabilita a normalização para todos
os comandos,
#cmds:verifica apenas os comandos listados na opção normalize_cmds)
#max_header_line_len:gera alertas quando uma linha de comando STMP for maior que o valor
especificado, o default e 1024 bytes
#normalize_cmds:normaliza os comandos contidos na lista. o default e {RCPT VRFY EXPN}
#alt_max_command_line_len:sobrescreve o valor de max_command_line_len para os comandos
especificados
preprocessor smtp: ports { 25 } inspection_type stateful normalize cmds normalize_cmds { EXPN VRFY
RCPT } max_header_line_len 1024 alt_max_command_line_len 260 { MAIL }
alt_max_command_line_len 300 { RCPT } alt_max_command_line_len 500 { HELP HELO ETRN }
alt_max_command_line_len 255 { EXPN VRFY }

#preprocessor sfportscan:detecta varreduras de portas em hosts na rede protegida.


#pode detectar praticamente todos os tipos de varreduras realizados pelo nmap ou outro portscanner.
#proto:define os protocolos que serão monitorados pelo pré-processador. opções validas
tcp,udp,igmp,ip_proto e all
#memcap:define a quantidade de memória, em kilobytes, disponível para a operacao deste pré-
processor
#sense_level:define o nivel de sensibilidade do pré-processador. os níveis disponíveis
são:low,medium,high.
preprocessor sfportscan: proto { all } memcap { 10000000 } sense_level { low }

#preprocessor dcerpc:detecta e decodifica tráfego SMB e DCE/RPC.


#autodetect:ira ignorar a configuração de portas e examinara qualquer pacote a procura de tráfego
SMB ou DCE/RCP.
#max_frag_size:define o tamanho máximo, em bytes, de um fragmento para remontado. o default e
3000
#memcap:define a quantidade de memória, em kilobytes, disponível para a operação deste pré-
processor
preprocessor dcerpc: autodetect max_frag_size 3000 memcap 100000

#preprocessor ssh: tenta detectar alguns exploits usados em ataques contra o protocolo SSH.
#server_ports:especifica quais portas serão monitoradas por este preprocessador
#max_client_bytes:define a quantidade máxima de bytes aceitos, dentro do limite de pacotes
estipulados pela opção max_encrypted_packets
#max_encrypted_packets:especifica o numero de pacotes sem resposta que serão aceitos antes de
gerar alertas sobre ataques tipo bobbles ou crc32.
preprocessor ssh: server_ports { 22 3000 } max_client_bytes 19600 max_encrypted_packets 20

#preprocessor dns: detecta respostas de requisições feitas a servidores DNS a procura de exploits.
#ports:esta opção especifica as portas que serão inspecionadas pelo pré-processador.
#enable_rdata_overflow:verifica ataques de sobrecarga no cliente de DNS realizados pelo exploit
RData TXT Overflow.
#gera alertas quando forem encontrados registros que se tornaram obsoletos segundo a RFC1035
preprocessor dns: ports { 53 } enable_rdata_overflow enable_obsolete_types

#Gera arquivo de log no formato utilizado pela libpcap que e o mesmo formato utilizado por outras
aplicações como tcpdump e wireshark.
output log_tcpdump: tcpdump.log

#Envia os dados do Snort para o banco de dados.


output database: log, mysql,user=snort password=d0ug220903..h0j3 dbname=snort host=localhost

#Contem as informações que serão incluídas para especificar os níveis de risco definidos nas regras.
include classification.config

Página 11
Servidores de Aplicação II

#define URL's a serem utilizadas com as referencias encontradas nas regras para obtenção de
informações mais detalhadas sobre um determinado ataque
include reference.config

#Definição do conjunto de regras incluído com o Snort ira gerar alertas de atividades suspeitas
encontradas em pacotes que estiverem
#trafegando entre as redes monitoradas
include $RULE_PATH/local.rules
include $RULE_PATH/bad-traffic.rules
include $RULE_PATH/exploit.rules
include $RULE_PATH/community-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/rpc.rules
include $RULE_PATH/rservices.rules
include $RULE_PATH/dos.rules
include $RULE_PATH/community-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-client.rules
include $RULE_PATH/web-php.rules
include $RULE_PATH/community-sql-injection.rules
include $RULE_PATH/community-web-client.rules
include $RULE_PATH/community-web-dos.rules
include $RULE_PATH/community-web-iis.rules
include $RULE_PATH/community-web-misc.rules
include $RULE_PATH/community-web-php.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/oracle.rules
include $RULE_PATH/community-oracle.rules
include $RULE_PATH/mysql.rules
include $RULE_PATH/snmp.rules
include $RULE_PATH/community-ftp.rules
include $RULE_PATH/smtp.rules
include $RULE_PATH/community-smtp.rules
include $RULE_PATH/imap.rules
include $RULE_PATH/community-imap.rules
include $RULE_PATH/pop2.rules
include $RULE_PATH/pop3.rules

include $RULE_PATH/nntp.rules
include $RULE_PATH/community-nntp.rules
include $RULE_PATH/community-sip.rules
include $RULE_PATH/other-ids.rules

include $RULE_PATH/web-attacks.rules
include $RULE_PATH/backdoor.rules
include $RULE_PATH/community-bot.rules
include $RULE_PATH/community-virus.rules

Página 12
Servidores de Aplicação II

include $RULE_PATH/experimental.rules
include threshold.conf

Instalação e configuração do Basic Analysis and Security Engine (BASE)

Agora vamos instalar uma ferramenta que vai nos auxiliar no monitoramento dos alertas do Snort.

Vamos entrar no diretório root do Apache e vamos baixar os arquivos necessários.

# cd /var/WWW

# wget -c http://ufpr.dl.sourceforge.net/project/secureideas/BASE/base-1.4.5/base-1.4.5.tar.gz

# wget -c http://ufpr.dl.sourceforge.net/project/adodb/adodb-php5-only/adodb-510-for-
php5/adodb510.tgz

Agora vamos descompactar o BASE:

# tar -xzvpf base-1.4.5.tar.gz

Página 13
Servidores de Aplicação II

Vamos renomear o diretório do base para Snort para ficar mais fácil:

# mv base-1.4.5 snort

Ajustar as permissões:

# chown -R root:www-data snort/


# chmod -R g+w snort/

Agora vamos descompactar o Adodb:

# tar -xzvpf adodb510.tgz

Vamos ajustar as permissões:

Página 14
Servidores de Aplicação II
# chown -R root:root adodb5

Pronto, já temos os pacotes que precisamos, mas antes precisamos instalar as dependências de
algumas extensões para o PHP.

Vamos lá então.

# pear upgrade PEAR


# pear install Mail Mail_Mime Image_Color Log Numbers_Roman
# pear install channel://pear.php.net/Numbers_Words-0.16.1
# pear install Image_Graph-alpha

Pronto, já temos um ambiente com o que precisamos.

Agora vamos acessar pelo navegador o nosso BASE.

http://ip_servidor/snort

Na tela principal de configuração, se não aparecer nem um erro a respeito de permissões vai ter um
link "Continue", clique nele para continuarmos a nossa configuração.

Na próxima tela escolha o idioma e informe o caminho para o diretório Adodb: /var/www/adodb5

Página 15
Servidores de Aplicação II

Na próxima tela temos que informar os dados da nossa base MySQL que configuramos nos pré-
requisitos.

Como estamos utilizando o MySQL deixamos a primeira opção como está, as outras opções podem
seguir o modelo abaixo.

Em Database Name: snort

Em Database Host: localhost

Database Port Leave blank for default!: 3306

Database User Name: snort

Database Password: senha que foi definida para o usuário snort "senha"

Agora pode clicar no botão continue no final da tela.

Na próxima tela informar os dados de usuário:

Página 16
Servidores de Aplicação II

Na próxima clique no botão Create BASE AG.

Ele vai criar a configuração e vai aparecer do lado esquerdo da tela o status, conforme imagem abaixo:

Página 17
Servidores de Aplicação II
Se não aparaceu nenhum erro é só clicar no link Now continue to step 5... no final da página.

Se não houve erro na instalação irá aparecer a seguinte tela:

Instalando e configurando o Guardian

Vamos baixar e configura-lo.

# cd /etc/snort
# wget -c http://www.chaotic.org/guardian/guardian-1.7.tar.gz

Página 18
Servidores de Aplicação II

Vamos descompactar o nosso arquivo:

# tar -xzvf guardian-1.7.tar.gz

# cd guardian-1.7

Agora vamos copiar os arquivos para o /usr/local/bin. Pode notar que quando estamos copiando os
arquivos já estamos mudando o nome deles, isso é preciso pois no arquivo guardian.pl, que é o arquivo
que executa as ações do Guardian, ele chama os arquivo de bloqueio e desbloqueio por
guardian_block.sh e guardian_unblock.sh.

# cp scripts/iptables_block.sh /usr/local/bin/guardian_block.sh
# cp scripts/iptables_unblock.sh /usr/local/bin/guardian_unblock.sh

Agora vamos copiar o arquivo de configuração do Guardian para o diretório do Snort.

Página 19
Servidores de Aplicação II
E vamos criar um link simbólico do guardian.conf para o /etc, que é aonde que o guardian.pl vai
procurar o arquivo.

# ln -s /etc/snort/guardian.conf /etc/guardian.conf

Vamos copiar o arquivo de gerenciamento do Guardian para o /usr/local/bin:

# cp guardian.pl /usr/local/bin/

Configurar as permissões dos nossos arquivos:

# chown root:root /usr/local/bin/guardian* Configuração do Guardian:

# vim /etc/snort/guardian.conf

#Definir o endereço IP que será visto pela internet


HostIpAddr 200.200.200.200

#Definir a interface de rede que fica para a internet


Interface eth0

#Informar o ultimo octeto do endereço do Gateway


HostGatewayByte 1

#Arquivo de log
#LogFile /var/log/guardian.log
LogFile /var/log/snort/guardian.log

#Arquivo aonde estão sendo gerados os alertas do Snort


#AlertFile /var/adm/secure
AlertFile /var/log/snort/alert

#Lista de endereços de ip que serão ignorados pelo guardian


IgnoreFile /etc/guardian.ignore

#Lista de endereços de ip que serão monitorados pelo guardian


#TargetFile /etc/guardian.target
TargetFile /etc/snort/guardian.target

#tempo em segundos para deixar um endereço ip bloqueado


TimeLimit 86400

Agora vamos criar os arquivos adicionais, necessários para o Guardian funcionar corretamente.

Neste arquivo devem ser definidos os endereços IPs das máquinas que devem ser ignoradas.

# touch /etc/snort/guardian.ignore

Criar e cadastrar os endereços IPs que devem ser monitorados.

vim /etc/snort/guardian.target

200.200.200.200

Também precisamos criar o arquivo de log do Guardian.

# touch /var/log/snort/guardian.log

Página 20
Servidores de Aplicação II
Agora só precisamos de um arquivo de inicialização para gerenciar o Guardian.

# vim /etc/init.d/guardian.sh

#!/bin/sh

start()
{
export PATH=$PATH:/usr/local/bin
/usr/local/bin/guardian.pl -c /etc/snort/guardian.conf
}

stop()
{
ps aux | grep 'guardian.pl *-c' 2>&1 > /dev/null
if [ $? -eq 0 ];
then
kill `ps aux | grep 'guardian.pl *-c' | awk '{print $2}'`
else
echo "Guardian is not running ....."
fi
}

status()
{
ps aux | grep 'guardian.pl *-c' 2>&1 > /dev/null
if [ $? -eq 0 ];
then
echo "Guardian is Running ....."
else
echo "Guardian is not Running ...."
fi
}

case "$1" in
start)
start
;;
stop)
stop
;;
restart)
stop
start
;;
status)
status;;
*)
echo $"Usage: $0 {start|stop|restart|status}"
esac

Página 21

Você também pode gostar