Explorar E-books
Categorias
Explorar Audiolivros
Categorias
Explorar Revistas
Categorias
Explorar Documentos
Categorias
Servidores de Aplicação II
Uniararas
Servidores de Aplicação II
O que é um IDS?
IDS – é uma ferramenta utilizada para detectar e alertar o administrador sobre ataques e tentativas
de acesso indevidos na rede corporativa.
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.
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
Página 3
Servidores de Aplicação II
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.
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
Página 5
Servidores de Aplicação II
Para verificar se o servidor está funcionando corretamente pode usar o seguinte comando:
Instalação do Snort
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
# 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
# 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
#Preprocessadores são aplicações que fazem uma pré-analise e filtragem dos pacotes antes de enviar
os dados para o conjunto de regras
#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
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
#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
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
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 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
#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
Agora vamos instalar uma ferramenta que vai nos auxiliar no monitoramento dos alertas do Snort.
# 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
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:
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.
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.
Database Password: senha que foi definida para o usuário snort "senha"
Página 16
Servidores de Aplicação II
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.
# cd /etc/snort
# wget -c http://www.chaotic.org/guardian/guardian-1.7.tar.gz
Página 18
Servidores de Aplicação II
# 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
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
# cp guardian.pl /usr/local/bin/
# vim /etc/snort/guardian.conf
#Arquivo de log
#LogFile /var/log/guardian.log
LogFile /var/log/snort/guardian.log
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
vim /etc/snort/guardian.target
200.200.200.200
# 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