IPS com Snort Inline



Documentos relacionados
Principais características:

Configuração do Servidor Gateway Firewall e DHCP

Netfilter e Iptables

Configurando Interface de Rede. IPTABLES Firewall em Linux Kernel 2.4 em diante. Regras do Iptables. Iptables. Regras do Iptables. Comandos Principais

FIREWALL. Adão de Melo Neto

Firewalls - IPTables. Carlos Gustavo A. da Rocha. ASSR

SEGURANÇA INFORMÁTICA E DAS COMUNICAÇÕES - Ficha de Apoio Extra- CAPÍTULO 3. SEGURANÇA EM REDES E SISTEMAS

Prof. Marcos Monteiro.

Projeto de Ensino. iptables. Grupo de Estudos em Tecnologia de Redes e Processamento Paralelo. Prof. Luiz Antonio Unioeste

Firewall Iptables. Professor: João Paulo de Brito Gonçalves. Campus - Cachoeiro Curso Técnico de Informática

Introdução Modelo OSI Sistemas de firewall Bridge x roteamento Atuação de um IPS Funcionamento do Hogwash Instalação do Hogwash Configuração do

Aula 09 Firewall (Configuração) Prof. Roitier Campos Gonçalves

Levantamento de informação (Fingerprint)

Redes de Computadores. Laboratório de Interconexão de Redes e Serviços - 4º Período

Estrutura do Iptables

Instalação e Configuração Iptables ( Firewall)

Firewalls, um pouco sobre...

Segurança de Redes de Computadores

Aula 08. Firewall. Prof. Roitier Campos Gonçalves

Uso de Bridges Linux no Controle de Tráfego entre Sub Redes em Uma Mesma Rede Lógica

Índice. Manual De instalação ProjectNet Manager


Rede VPN UFBA Procedimento para configuração

Linux Network Servers

O que é uma firewall? É um router entre uma rede privada e uma rede pública que filtra o tráfego com base num conjunto de regras.

Verificador Slimterm TCP-IP

Professor Claudio Silva

Projeto e Instalação de Servidores Servidores Linux Aula 6 Firewall e Proxy

Administração de Sistemas Operacionais. Prof.: Marlon Marcon

Obs: Endereços de Rede. Firewall em Linux Kernel 2.4 em diante. Obs: Padrões em Intranet. Instalando Interface de Rede.

MSN-Proxy v0.7 no Debian 5 (Atualizado)

CURSO SUPERIOR DE TECNOLOGIA EM REDES DE COMPUTADORES LABORATÓRIO AULA 06 Disciplina: Administração de Serviços de Redes Aluno(a):

Compartilhamento da internet, firewall

2 A Avaliação de RMU 20/12/2012. Nome:

III WTR do POP-BA III Workshop de Tecnologias de Redes Ponto de Presença da RNP na Bahia Instrutor: Ibirisol Fontes Monitor: Jundaí Abdon.

Experiência 04: Comandos para testes e identificação do computador na rede.

Uso do iptables como ferramenta de firewall.

IPv4-Based ACL & configuração ACE no Switches ESW2-350G

Boot gráfico no Debian com BootSplash

BRUNO PEREIRA PONTES

Capítulo 4 TCP/IP FIREWALLS.

Configuração da recusa de técnicas de prevenção do serviço (série da Segurança) em switch empilhável do Sx500 Series

Como acessar as imagens via Navegador Safari

Arquitectura de Redes

1. Capturando uma transferência TCP em massa de seu computador para um computador servidor remoto

Administração de Sistemas Operacionais. Prof. Marlon Marcon

Instalação e Configuração do Servidor de DHCP

Instalando Apache Solr no Mac OSX

Acadêmicos: Diego Adriano Sieves Joel Schafer Paulo Luis Steinhauser Thiago Branco Meurer

SNORT. Sistema de Detecção de Intrusão de Rede. Amanda Argou Vilnei Neves REDES II

Trabalho 1 - Sistemas Operacionais Embarcados

Gerando um programa executável a partir de um módulo Python

STK - Setup da DR800 ETH na rede do cliente

Como acessar as imagens via Navegador Mozilla Firefox

Segurança de Redes. Firewall. Filipe Raulino

Configurações avançadas de rede

Como acessar as imagens via Navegador Internet Explorer

Como acessar as imagens via Navegador Google Chrome

Instalacao do Zabbix em Ambiente CentOS

comando parâmetro alternativo parâmetro REGRA função iptables -t tabela -N --new chain cria uma nova chain. iptables -t tabela -E --rename-chain

Erratas CCNA 5.0 (atualizado )

1 FIREWALL PARÂMETROS DE SEGURANÇA

Pratica de Arquitetura DMZ. Cisco ASA 5505

Curso de extensão em Administração de sistemas GNU/Linux: redes e serviços

Funcionalidades Básicas do IPv6

Troubleshooting em rede básica

Instalacao do Zabbix 2.x em Ambiente CentOS

IPTABLES. Helder Nunes

Iptables. Adailton Saraiva Sérgio Nery Simões

ADMINISTRAÇÃO DE REDES I LINUX. Firewall. Frederico Madeira LPIC 1, CCNA fred@madeira.eng.br

Laboratório Uso do Wireshark para examinar quadros Ethernet

PROGRAMAÇÃO ORIENTADA A OBJETOS. Aula 09a- Acessando os dados através JDBC

Começando com o AWS IoT

Prof. Marcelo Cunha Parte 6

INSTALAÇÃO PRINTERTUX. Tutorial

"Release Notes", caso contrário pode avançar clicando em "Next".

Trabalho 3 Firewalls

Unidade Curricular Segurança em Redes. Diego Dummer Vaz. THC-Hydra

Prefácio. Objetivo. Público alvo. Convenções utilizadas neste manual. Tabela 1. Convenções do manual

Aplicações de Rede DHCP

Dtec - Ubuntu Desktop 9.04 para Thin Clients Versão 1 APRESENTAÇÃO

Prevenção, Detecção e

PROJETO DE IMPLEMENTAÇÃO DE UM SERVIDOR FIREWALL LIVRE UTILIZANDO IPTABLES

PRÁTICA DE NAT/PROXY - LINUX 1. TOPOLOGIA DE REDE PARA TODOS OS CENÁRIOS DIFERENÇAS NO ROTEIRO EM RELAÇÃO A IMAGEM DO DVD

Sugestões para defesa contra ataques de força bruta para SSH Autor: Nelson Murilo

UTILIZANDO O FIREWALLD

Laboratório de Redes de Computadores INSTALANDO SERVIDOR APACHE NOS CENTOS 6.5

Prof. Samuel Henrique Bucke Brito

Gerenciamento de Redes Linux. Linux configuração de rede

Laboratório II Nossa rede ganhou um switch.

Firewall Iptables - Impasses

Cross-Site Scripting (XSS): Entendendo o conceito e seus tipos

Elaboração de Script de Firewall de Fácil administração

Trabalhando com redes no Linux - Debian

Laboratório Usando Wireshark para Examinar Quadros Ethernet

Redes de Computadores e Aplicações Camada de aplicação IGOR ALVES

INSTALACAO PRODUTOS DIGIVOICE NO ISSABEL PREPARAÇÃO DO SISTEMA

IDS - Implementando o SNORT Open Source

CCNA Exploration (Protocolos e Conceitos de Roteamento) Protocolo RIP

Transcrição:

Objetivo Descrever a implementação inline do Snort, que aliado ao IPTABLES, adiciona características de IPS ao Snort.

Os sistemas de detecção de intrusão, em sua maioria, são passivos, ou seja, eles detectam atividades maliciosas, porém a única atitude tomada é fazer o registro da tentativa. Já o IPS, alia a função da detecção da tentativa de intrusão com a possibilidade de fazer o bloqueio daquela atividade maliciosa.

Onde instalar o IPS?

Onde instalar o IPS?

Como funciona o Snort Inline O Snort inline recebe os pacotes do iptables, através da biblioteca libipq, ao invés de receber os pacotes via libpcap. O iptables envia os pacotes recebidos para o Snort e aguarda um retorno sobre o que deve ser feito. Caso nada seja detectado, o pacote volta para o seu fluxo normal via iptables. Quando alguma regra é disparada, estão o Snort pode devolver as seguintes ações ao iptables: drop informa ao iptables que o pacote deve ser descartado, e o Snort faz o registro da atividade. reject Informa ao iptables que o pacote deve ser descartado enviando um TCP Reset se o protocolo for TCP ou envia um ICMP port Unreachable se for o protocolo UDP, e o Snort faz o registro da atividade. sdrop Informa ao iptables que o pacote deve ser descartado e o Snort não vai fazer nenhum registro da atividade.

Implementando o Snort inline Verificando o tráfego para um servidor WEB específico: iptables -A FORWARD -p tcp --dport 80 -d 192.168.10.12/32 -j QUEUE

Linux em modo BRIDGE Uma das grandes vantagens de utilizar o Linux para criar um IPS, é a facilidade de criar uma bridge e interligar segmentos de rede sem ser notado. Dessa forma é possível, além de bloquear pacotes sendo invisível na rede, ainda podemos fazer filtro de pacotes, limitar banda, etc. No kernel 2.6 do debian, o suporte a bridge vem habilitado por padrão, bastando apenas instalar os utilitários de configuração. Para tal, execute: $ sudo aptitude install bridge-utils

Usando o Iptables com BRIDGE Para criar uma bridge com linux, utilizamos o utilitário brctl. Através deste utilitário, criamos uma interface de bridge e adicionamos a esta, as interfaces reais que recebem as conexões dos segmentos. Ou seja, se vamos interligar dois segmentos, devemos ter uma placa de rede ligada a cada segmento, e devemos informar a nossa bridge que ela deve utilizar tais interfaces. Criando a Bridge $ sudo brctl addbr br0 $sudo brctl addif br0 eth0 $sudo brctl addif br0 eth1 Para podermos acessar a nossa bridge remotamente, precisamos adicionar um endereço IP. Se não quisermos acessar a bridge remotamente, esse passo é desnecessário. $sudo /sbin/ifconfig br0 10.10.10.1 netmask 255.255.255.0 broadcast 10.10.10.255 Os pacotes que passam pela bridge são de repasse, então devemos aplicar as regras na chain FORWARD do iptables. $sudo iptables A FORWARD s 200.167.89.5/32 p tcp --dport 80 j REJECT

Instalando o Snort É preciso baixar alguns pacotes para poder compilar o Snort no Debian: $sudo apt-get install snort-rules-default libnet0-dev iptables-dev libpcre3-dev libdnet-dev libmysqlclient15-dev build-essentials

Compilando com suporte ao modo inline Precisamos baixar o código fonte do Snort e habilitar o modo inline em sua compilação. Habilitaremos também, o suporte a bando de dados MySQL. $wget http://www.snort.org/dl/current/snort-2.8.1.tar.gz $tar zxf snort-2.8.0.1.tar.gz $ cd snort-2.8.0.1 $./configure --enable-inline --with-mysql --with-libipq-libraries=/usr/lib/ --with-libipqincludes=/usr/include/libipq $make $sudo make install $sudo cp etc/snort.conf /etc/snort/snort.conf $sudo cp etc/unicod.map /etc/snort/

Configurando o Snort Para configurar o Snort, precisamos alterar seu arquivo de configuração: /etc/snort/ snort.conf As mudanças básicas são para as variáveis: HOME_NET Que deve conter os IPs da rede que devem ser auditados pelo Snort. EXTERNAL_NET Que normalmente é configurado para qualquer ip. RULE_PATH Que deve conter o caminho para as regras do Snort.

Configuraçôes para o modo inline Quando estamos utilizando a opção reject em uma regra para o Snort inline, temos duas coisas para levar em consideração: Se for utilizar RAW sockets para enviar o RESET da conexão, é necessário que a interface de rede possua um endereço IP. Caso contrário, o reset nunca vai ser enviado. É possível enviar resets através da interface física quando usando o iptables. O Snort pega o nome da interface através da ip_queue e utiliza essa interface para enviar o reset. Nesse caso, não é necessário um endereço IP carregado na interface da bridge, permanecendo invisível, uma vez que utilizaremos o config layer2resets. Essa configuração pode receber um MAC address que podemos utilizar como sendo a origem do reset, ou, caso não informado, o Snort vai utilizar o MAC da interface da bridge. config layer2resets:00:0c:29:5b:41:5a

Opções para o pre-processador stream4: Inline_state (sem argumentos) Essa opção faz com que o Snort descarte o pacote se ele não estiver associado a nenhuma conexão tcp existente ou não seja um pacote válido de início de conexão tcp. midstream_drop_alerts (sem argumentos) Por padrão, o Snort já vem preparado para não gerar alertas criados por ferramentas tipo snot/stick. Se ativada essa opção e não ativas a opção acima, o Snort vai gerar o alerta de cada pacote de ataques utilizados por essas ferramentas.

Salvando registros em bando de dados Vamos utilizar o MySQL para fazer log dos alertas. Para tal, é necessário criar a base de dados no MySQL: $sudo mysqladmin create snort $sudo mysql snort < schemas/create_mysql A configuração no snort.conf é simples: Output database: log, mysql, user=root password=dbname=snort host=localhost

Regras do Snort O Snort possui uma linguagem para criação de regras bastante flexível e muito rica em possibilidades. O domínio de sua semântica são extremamente importantes. Uma regra pode ter apenas uma linha, especificando um simples objetos ou possuir várias linhas para se alcançar um melhor requinte e conseguir especificar o objetivo com mais exatidão. Obs.: Quando uma regra precisa ter mais de uma linha, utiliza-se a barra invertida \ ao final de cada linha para indicar que a linha abaixo faz parte da mesma linha.

O básico das regras As regras do Snort são divididas em duas seções lógicas: RULE HEADER e RULE OPTIONS. A sessão RULE HEADER contém informações referentes a rule action (ação da regra), protocolo, endereços IPs de origem e destino e suas respectivas máscaras e portas. A sessão RULE OPTIONS contém mensagens de alerta e informações informando a(s) porta(s) do pacote que deve(m) ser inspecionada(s) se a rule action deve ser executada. alert tcp any any -> 192.168.1.0/24 111 (content: 00 01 86 51 ;msg: mountd access ;) É necessário que todos os elementos de uma regra sejam verdade para que a rule action seja executada. Quando colocados juntos, todos os elementos de uma regra formam um AND lógico. Ao mesmo tempo, todas as regras do Snort, na biblioteca de regras do Snort, formam um OR lógico.

Regras para o Snort inline Basicamente, a única mudança para implementar uma regra para o Snort inline, é mudar o tipo da ação. Como mostrado abaixo: drop tcp any any -> any 80 (classtype:attempted-user;msg: Port 80 connection initiated ;sid:15001)

Implementando o Snort inline Especificações de Alvos (TARGET's) Após examinar um pacote, é necessário indicar um destino para o mesmo, caso seja ativada alguma das regras. Isto é chamado de regra de alvo (rule's target). Os dois alvos mais comumente utilizados em um filtro de pacotes são o DROP (para barrar o pacote) e o ACCEPT (para aceitá-lo). Se uma regra é ativada e o alvo é um destes dois, nenhuma regra mais é consultada.

Implementando o Snort inline Existem 2 alvos padrão especiais: RETURN e QUEUE; QUEUE é um alvo especial, que enfileira (QUEUE) o pacote para um "userspace processing". Para implementar isto, 2 componentes adicionais são requeridos: Uma "queue handler", que trabalhe conjuntamente com o atual mecanismo de passagem de pacotes entre o kernel e o o "userspace" ; e Uma aplicação "userspace" para receber, (possivelmente manipular), e emitir um veredicto sobre o pacote. O modelo de "queue handler" para IPv4 iptables é o módulo ip_queue, que é distribuído com o kernel e marcado como experimental em algumas distribuições. O status do ip_queue pode ser checado via: /proc/net/ip_queue

Implementando o Snort inline O valor padrão para o comprimento máximo do queue é 1024. Sempre que este limite for ultrapassado, novos pacotes serão barrados após o comprimento da queue atingir o seu limite. Alguns protocolos como o TCP interpreta a barragem de pacotes como congestionamento, e aguardará a queue retornar. Outras vezes, ele pode experimentar determinar um comprimento máximo ideal da queue para uma próxima situação se o valor padrão form muito pequeno.

Implementando o Snort inline O Snort em modo inline deve ser executado em conjunto com o IPTABLES. No caso, quando rodamos o Snort em modo inline, ele vai esperar pelos pacotes encaminhados pelo IPTABLES, e portanto é necessário criar uma regra de IPTABLES para que encaminhe os pacotes QUEUE para o snort poder processar. IPTABLES A FORWARD j QUEUE IPTABLES A FORWARD p tcp - -dport 23 j REJECT IPTABLES A FORWARD j REJECT

Implementando o Snort inline Verificando o tráfego para um servidor WEB específico: iptables -A FORWARD -p tcp --dport 80 -d 192.168.10.12/32 -j QUEUE

Inicializando o snort inline É preciso informar ao Snort na inicialização que ele deve escutar os pacotes pelo IPTABLES e não pela libpcap. Isso é feito passando a opção: -Q na linha de comando. Exemplo de inicialização do Snort em modo inline: #snort Qvc /etc/snort/snort.conf l /var/log/snort

Atacando o Snort Nada melhor para testar o Snort do que utilizar uma ferramenta de varredura por vulnerabilidades. No caso, podemos utilizar o nikto para detectar vulnerabilidades em um servidor WEB que esteja protegido pelo Snort. #nikto h 192.168.10.12

BASE Utilizaremos o BASE (Basic Analisys and Security Engine) como ferramenta de análise para os alertas gerados pelo snort. O BASE atualmente é o melhor analisador de base snort e seu projeto é baseado no ACID (Analysis Console for Intrusion Databases).

Instalação e configuração do acidbase Podemos baixar o base do site oficial http://secureideas.sourceforge.net/ ou via repositório. $sudo aptitude install acidbase $cd /var/www $sudo ln s /usr/share/acidbase Após a instalação, aponte o browser para o endereço do seu servidor: http://x.y.z.k/acidbase/setup/ Será exibido a tela de setup do BASE.