• Nenhum resultado encontrado

Firewalls em Sistemas BSD Unix

N/A
N/A
Protected

Academic year: 2021

Share "Firewalls em Sistemas BSD Unix"

Copied!
61
0
0

Texto

(1)

Firewalls em Sistemas BSD

Unix

Alexandre Vasconcelos Administrador de Sistemas Unix SSP/GO

(2)

Agenda

Introdução/Conceitos

Opções disponíveis

(3)

Introdução

Necessidade de Segurança

De onde vem o problema?

Preciso de proteção?

Identificando o que deve ser

protegido

(4)

Conceitos

Modelos

 Preventivo  Reativo

(5)

Preventivo + Reativo

Onde estão os ativos

Pontos de vulnerabilidade

Segurança Física

Política de Segurança

(6)

Preventivo + Reativo

Treinamento

Educação

Backup

(7)

Política de Segurança

Conteúdo

 Explicações  Linguagem simples  Autoridade  Responsabilidade de todos

 Problemas não relacionados a

(8)

Tecnologias de Firewall

Filtragem de Pacotes

Serviços de Proxy

NAT (Network Address Translation)

VPN (Virtual Private Networks)

(9)

Arquiteturas de Firewall

Roteadores

Bastion Hosts

Subredes

(10)
(11)

Estratégias de Segurança

Menor Privilégio

Defesa em Profundidade

(12)

Opções Disponíveis

Sistemas Operacionais

 FreeBSD  NetBSD  OpenBSD 

Firewalls

 IPFILTER  IPFW  PF

(13)

FreeBSD

Robusto

Estável

Seguro

Limpo

(14)

IPFILTER

Leve

Estável

Portado para outros sistemas Unix

Curva de aprendizado baixa

(15)

PF e OpenBSD

(16)

Hardware

Qualquer Pentium?

32, 64, 128MB de RAM..

4GB de HD

2 ou mais interfaces de rede

Melhor hardware = Maior

estabilidade

(17)

Instalando o FreeBSD

Instalação básica, seguindo o roteiro:

http://www.abdv.net/roteiro.html

Atualização do sistema

Ajustes no /etc/rc.conf

 sshd_flags=“-4”

(18)

Como particionar o disco?

Particionamento do disco

 / - 128MB

 Swap – Por volta de 2 x a memória RAM  /var – 256MB

 /tmp – 256MB

(19)

Compilação do Kernel para

suporte ao IPFILTER

Fontes em /usr/src/sys/i386/conf

Arquivo de configuração padrão:

GENERIC

Vamos criar nosso próprio arquivo:

 cp GENERIC SERVER (nome da sua

máquina)

 vi SERVER

 Localize a entrada ident GENERIC por

(20)

Compilação do Kernel para

suporte ao IPFILTER

 Localize a entrada “options INET6” e,

logo abaixo, insira:

 options IPFILTER

 options IPFILTER_LOG

 Edite o arquivo /etc/make.conf e adicione

a linha:

(21)

Compilação do Kernel para

suporte ao IPFILTER

Compilando e instalando o kernel:

 make buildkernel  make installkernel  make clean

Espere 1 minuto, próximo slide por

favor...

(22)

IPFILTER

Configurações no /etc/rc.conf

 ipfilter_enable=“YES”  ipfilter_flags=“”  ipmon_enable=“YES”  ipmon_flags=“-Dsv”  ipnat_enable=“YES”

Verifique se o IPFILTER “subiu”:

(23)

IPFILTER

Mais configurações em /etc/rc.conf

para trabalhar com o IPFILTER:

 gateway_enable=“yes”  ifconfig_lo0=“127.0.0.1”

 network_interfaces=“xl0 xl1 lo0”  icmp_drop_redirects=“YES” (para

(24)

IPFILTER

Outras opções de incialização do

IPFILTER, IPNAT e IPMON:

(25)

Criando aquivos de logs

separados para o IPFILTER

 # touch /var/log/firewall_logs  # chmod 600 /var/log/firewall_logs  # vi /etc/syslog.conf, acrescente:  security*. /var/log/firewall_logs  # vi /var/log/messages, acrescente:  security.none

 Rotacione os logs, # vi /etc/newsyslog.conf,

adicione a linha:

 /var/log/firewall_logs 600 14 100 * J /var/log/ipmon.pid  Reinicialize o daemon syslogd

(26)

Conceitos básicos para criar

os arquivos de regras

 Filtragem egressa (egress filtering)  Interfaces: interna e externa

 Múltiplos critérios de filtragem  in/out, block/pass, proto

 A palavra-chave “quick”  Leitura das regras:

 Top – down

 First match wins (using “quick”)

 Arquivo de regras do IPFILTER: /etc/ipf.rules  Arquivo de regras do IPNAT: /etc/ipnat.rules

(27)

/etc/ipf.rules

Nosso primeiro conjunto de regras:

pass in all block in all

(28)

/etc/ipf.rules

Controlando as regras com a

palavra-chave “quick” (first match

wins)

block in quick all

pass in all

(29)

/etc/ipf.rules

Filtragem básica por endereço:

block in quick from 10.3.18.20/32 to any pass in all

(30)

/etc/ipf.rules

 Filtragem por interface

 Nossas Interfaces: xl0 (interna) e xl1

(externa) pass in all

block in quick on xl0 all

 Interface + endereço IP

block in quick on xl0 from 10.3.18.20/32 to any pass in all

(31)

/etc/ipf.rules

Comportamento padrão definido na

compilação do kernel (block ou pass)

Filtragem bi-direcional,

palavra-chave out

pass out quick on xl1 from 10.3.18.4/32 to any block out quick on xl1 from any to any

(32)

/etc/ipf.rules

Registrando o que acontece com a

palavra-chave “log”

pass out quick on xl1 from 10.3.18.0/24 to any block in log quick on xl1 from any to any

(33)

/etc/ipf.rules

Ao criar as regras, lembre-se, os

pacotes entram (in) e saem (out) de

cada interface

Ainda temos mais alguns critérios

para filtragem, até aqui filtramos por

interface, por endereço e fizemos

(34)

/etc/ipf.rules

Filtragem por protocolo,

palavra-chave “proto”

block in log quick on xl0 proto icmp

block in log quick on xl0 proto udp

(35)

/etc/ipf.rules

Portas TCP e UDP, a palavra-chave

“port”

 block in quick on xl0 proto tcp from any to

10.3.18.30/24 port = 25

 block in quick on xl0 proto udp from any to

(36)

/etc/ipf.rules

Conjunto completo de regras

“stateless”

pass in on xl0 from 10.3.18.0/24 to any pass out on xl0 from 10.3.18.0/24 to any pass in on xl1 from 10.3.18.0/24 to any pass out xl1 from 10.3.18.0/24 to any

(37)

/etc/ipf.rules

Permissão implícita - “keep state”

 Conexões têm: início, meio e fim  Filtramos o início

 Tabela de estados

pass out quick on xl0 proto tcp from any to any keep state (agora sim, estamos “stateful”)

(38)

/etc/ipf.rules

Stateful UDP

 Como se o UDP não é orientado à

conexão?

 60s na tabela de estados  Serviço de DNS

Stateful ICMP

 Mesma idéia

pass out quick on xl1 proto icmp from any to any icmp-type 8 keep state

(39)

/etc/ipf.rules

Detectando scan FIN

 Palavra-chave “flags”

 pass in quick on xl1 proto tcp from any to

10.3.18.6/32 port = 22 flags S keep state

 Exceção: pacotes fragmentados

 Para resolver usamos “keep frags”

pass in quick on xl1 proto tcp from any to 10.3.18.6/32 port = 22 flags S keep state keep frags

(40)

/etc/ipf.rules

Respondendo a um pacote bloqueado

 Com TCP – RST (Reset). Nossa

palavra-chave: “return-rst”

 block return-rst in log on xl1 proto tcp from any

to 10.3.18.6/32 port = 22

 block in log quick on xl1

 Atenção! Apenas para TCP, por isso

precisamos da segunda regra block para descartar os pacotes UDP e ICMP

 “connection refused” ao invés de

(41)

/etc/ipf.rules

Respondendo pacotes UDP

bloqueados

 Use as mensagens ICMP (return-icmp)

block return-icmp(port-unr) in log quick on xl1 proto udp from any to 10.3.18.6/32 port = 111

(42)

/etc/ipf.rules

Problema, a regra anterior retorna o

endereço IP do firewall! Para evitar

isso usamos a seguinte sintaxe:

block return-rst-as-dest(port-unr) in log on xl1 proto udp from any to 10.3.18.6/32 port = 111

(43)

NAT e Proxies

Falta de endereçamento

Reescrevendo o endereço de saída

 map xl1 10.3.18.0/24 -> 200.100.1.10/32

Para endereços dinâmicos:

 map tun0 10.3.18.0/24 -> 0/32  1 pra 1

(44)

NAT

Policy NAT

map tun0 from 10.3.18.0/24 ! to 200.1.2.0/24 -> 200.100.1.2/32

map tun0 from 10.3.18.1/32 port = 5555 to 199.2.6.1/32 -> 200.100.1.3/32

(45)

NAT

Oferecendo serviços atrás do firewall

através de redirect (rdr)

rdr xl1 200.1.2.3/32 port 80 -> 10.3.18.5 port = 80 tcp rdr xl1 200.1.2.3/32 port 22 -> 10.3.18.7 port = 22 tcp

(46)

Filtrando serviços

redirecionados com rdr

Não basta criar o redirect, precisamos

criar as regras para permitir a entrada

 em /etc/ipnat.rules:

rdr xl1 200.1.2.3/32 port = 80 -> 10.3.18.5 port = 80 tcp

 em /etc/ipf.rules:

pass in quick on xl1 proto tcp from any to 10.3.18.5/32 port = 80 flags S keep state

(47)

Algumas “mágicas” do NAT

Proxies de Aplicação

 Controle de sessões FTP

 map xl0 10.3.18.0/24 -> 200.100.1.3/32 proxy port

ftp ftp/tcp

Balanceamento de carga

Palavra-chave “round-robin”

rdr xl1 200.100.1.3/32 port 80 -> 10.3.18.6, 10.3.18.7 port 80 tcp round-robin

(48)

Carregando e Manipulando as

regras

O utilitário ipf:

 -F<i,o,a> Flush (i, input; o, output; a, all)  -f <nome do arquivo>

 -V versão do IPFILTER

O utilitário ipnat:

 -l mostra as entradas da tabela NAT

 -C apaga as entradas NAT carregadas,

exceto as que estão ativas

 -F apaga as entradas NAT carregadas  -f <nome do arquivo>

(49)

Monitorando e Depurando

O utilitário ipfstat:

 Sem flags – mostra informações

interessantes, estatísticas

 -i lista as regras de input  -o lista as regras de output  -h hit count

 -n número da regra

(50)

Monitorando e Depurando

O utilitário ipmon

 Mostra o que está acontecendo em

tempo real

 -o especifica qual dos logs ler (N – NAT, S

– state log, I – normal IPFilter)

 -a lê todos os logs ao mesmo tempo,

(51)

Conjunto completo de regras

Checklist:

 Quais as minhas interfaces de rede  O que pretendo bloquear/liberar?

 Pretendo fazer mudanças nas regras com

frequência?

 Qual a carga que este equipamento

suporta?

(52)

Conjunto de regras “stateful”

pass in quick on xl0 from 10.3.18.0/24 to any keep state pass out quick on xl1 from 10.3.18.0/24 to any keep

(53)

Mais segurança

Você quer mais segurança?

 Edite seu /etc/fstab (mas faça um backup

antes – cp /etc/fstab /etc/fstab.bkp)

 Todos as suas partições (exceto a de

swap e /dev/acd0) devem estar rw – READ/WRITE

(54)

Mais Segurança

Modifique para o seguinte:

 / ufs rw,nosuid 1 1  /tmp ufs rw,noexec,nosuid,nodev 2 2

 /usr ufs ro 2 2

 /usr/home ufs rw,noexec,nosuid 2 2  /usr/local ufs ro,nosuid 2 2  /var ufs rw,noexec,nosuid 2 2

Observe que o layout das partições é

diferente ao sugerido no início deste

material, mas isso não impede que

façamos uma configuração restritiva

(55)

Exercícios Práticos

Obtenha os seguintes dados da sua

máquina:

 Nome da interface de rede  Endereço IP

(56)

Exercícios Práticos

Crie um conjunto de regras que

satisfaça as seguintes condições:

 Permita a saída do tráfego nas interfaces

locais (incluindo a de loopback)

 Permita a entrada de tráfego SSH apenas

para as máquinas à sua esquerda e à sua direita (quando aplicável)

 Bloqueie o tráfego para os demais Ips da

mesma classe de endereços da sua

 Bloqueie o tráfego para as redes de

(57)

Exercícios Práticos

Após o tempo limite de criação de

regras tente conectar-se à qualquer

máquina da rede via SSH, caso

obtenha sucesso anote o endereço IP.

Obtenha informações (IP) a partir dos

logs ou em tempo real das máquinas

que estão tentando conectar-se à sua,

caso você detecte falhas tente

corrigi-las em tempo real.

(58)

Exercícios Práticos

Instale o scanner de segurança NMAP

através do comando:

 # pkg_install -r nmap

Digite nmap -h, leia com atenção as

opções e faça as seguintes operações

nos endereços IP da sua rede:

 Tente descobrir a versão dos programas

em execução na máquina remota

 Faça um scan do tipo Ping

 Faça scan de TCP connect(), TCP SYN  Faça scan de portas UDP

(59)

Exercícios Práticos

Utilizando os utilitários do IPFILTER

colha os seguintes dados estatísticos

do seu firewall:

 Input packets  Output packes

(60)

Exercícios Práticos

Sugestão:

 Use vários terminais para agilizar suas

operações de scan e monitoramento

 Antes de tentar conectar-se à outras

máquinas certifique-se de que a sua está bem protegida

 Se estiver em dificuldades não trabalhe

(61)

Isto foi só o início, agora é por

sua conta..

Configurar um firewall leva tempo, é

preciso fazer muitos testes para ter

certeza de que tudo está como

planejado. Lembre-se, segurança é um

processo contínuo, não um produto.

Você encontra esta apresentação e outros artigos atualizados em:

http://www.abdv.net alex.vasconcelos@gmail.com

Referências

Documentos relacionados

O crescimento do ILG no período pode ser explicado pelo aumento de 15% do Ativo Total da empresa e pela diminuição de 27% da soma do Passivo Circulante e o Exigível a

O local de armazenamento deve conter bacia de contenção para reter o produto, em caso de vazamento.. Mantenha os recipientes bem fechados e

Na data de realização da prova, os candidatos deverão se apresentar, no mínimo, com antecedência de 30 (trinta) minutos do horário determinado para o início das mesmas,

A) I, II e IV, apenas. Acerca da operação de firewalls de rede, assinale a alternativa INCORRETA. B) Alguns firewalls são capazes de identificar o conteúdo dos pacotes

Este trabalho teve como objetivo clonar os diferentes fragmentos de DNA de CvMNPV gerados pela ação da endonuclease HindIII, para posteriormente construir uma biblioteca genômica que

No terceiro capítulo, “necropolítica” – conhecido pelo leitor devido à publicação do ensaio em livro no Brasil pela n-1 edições, em 2018 –, a discussão em torno

• Grande tráfego de pacotes ICMP ECHO REQUEST é enviado para IP Broadcast da Rede com o endereço origem o da vítima. • Cada host da rede recebe a requisição ICMP e responde

Sistema de pacotes ou framework para instalação de softwares no NetBSD ou em outros sistemas UNIX-Like. Conta em media com uma base de