Sie sind auf Seite 1von 61

Firewalls em Sistemas BSD Unix

Alexandre Vasconcelos Administrador de Sistemas Unix SSP/GO

* Este documento pode ser redistribudo livremente de acordo com a licena BSD

Agenda

Introduo/Conceitos Opes disponveis Configuraes/Prtica

Introduo

Necessidade de Segurana De onde vem o problema? Preciso de proteo? Identificando o que deve ser protegido Em quem voc confia?

Conceitos

Modelos

Preventivo Reativo

Preventivo + Reativo

Onde esto os ativos Pontos de vulnerabilidade Segurana Fsica Poltica de Segurana Atualizao de Sistemas

Preventivo + Reativo

Treinamento Educao Backup Identificao de Ameaas

Poltica de Segurana

Contedo

Explicaes Linguagem simples Autoridade Responsabilidade de todos Problemas no relacionados a computadores

Tecnologias de Firewall

Filtragem de Pacotes Servios de Proxy NAT (Network Address Translation) VPN (Virtual Private Networks)

Arquiteturas de Firewall

Roteadores Bastion Hosts Subredes

Pago ou Feito em Casa?

Estratgias de Segurana

Menor Privilgio Defesa em Profundidade Segurana por Obscuridade

Opes Disponveis

Sistemas Operacionais

Firewalls

FreeBSD NetBSD OpenBSD IPFILTER IPFW PF

FreeBSD

Robusto Estvel Seguro Limpo

IPFILTER

Leve Estvel Portado para outros sistemas Unix Curva de aprendizado baixa

PF e OpenBSD
Prximo Evento..

Hardware

Qualquer Pentium? 32, 64, 128MB de RAM.. 4GB de HD 2 ou mais interfaces de rede Melhor hardware = Maior estabilidade Qualidade dos componentes

Instalando o FreeBSD

Instalao bsica, seguindo o roteiro: http://www.abdv.net/roteiro.html Atualizao do sistema Ajustes no /etc/rc.conf


sshd_flags=-4 syslogd_flags=-ss

Como particionar o disco?

Particionamento do disco

/ - 128MB Swap Por volta de 2 x a memria RAM /var 256MB /tmp 256MB /usr Restante do disco

Compilao do Kernel para suporte ao IPFILTER


Fontes em /usr/src/sys/i386/conf Arquivo de configurao padro: GENERIC Vamos criar nosso prprio arquivo:

cp GENERIC SERVER (nome da sua mquina) vi SERVER Localize a entrada ident GENERIC por ident SERVER

Compilao 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:

KERNCONF=SERVER

Compilao do Kernel para suporte ao IPFILTER

Compilando e instalando o kernel:


make buildkernel make installkernel make clean Espere 1 minuto, prximo slide por favor... shutdown -r now

IPFILTER

Configuraes no /etc/rc.conf

ipfilter_enable=YES ipfilter_flags= ipmon_enable=YES ipmon_flags=-Dsv ipnat_enable=YES dmesg | grep Filter

Verifique se o IPFILTER subiu:

IPFILTER

Mais configuraes 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 reduzir DoS)

IPFILTER

Outras opes de incializao do IPFILTER, IPNAT e IPMON:

/etc/defaults/rc.conf

Criando aquivos de logs separados para o IPFILTER


# touch /var/log/firewall_logs # chmod 600 /var/log/firewall_logs # vi /etc/syslog.conf, acrescente:

# vi /var/log/messages, acrescente:

security*.

/var/log/firewall_logs

Rotacione os logs, # vi /etc/newsyslog.conf, adicione a linha:

security.none

/var/log/firewall_logs

600 14 100 * J /var/log/ipmon.pid

Reinicialize o daemon syslogd

Conceitos bsicos para criar os arquivos de regras


Filtragem egressa (egress filtering) Interfaces: interna e externa Mltiplos critrios 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

/etc/ipf.rules

Nosso primeiro conjunto de regras:


pass in all block in all

/etc/ipf.rules

Controlando as regras com a palavra-chave quick (first match wins) block in quick all pass in all

/etc/ipf.rules

Filtragem bsica por endereo:


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

/etc/ipf.rules

Filtragem por interface Nossas Interfaces: xl0 (interna) e xl1 (externa)

pass in all block in quick on xl0 all

Interface + endereo IP

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

/etc/ipf.rules

Comportamento padro definido na compilao do kernel (block ou pass) Filtragem bi-direcional, palavrachave out

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

Ainda estamos stateless

/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

/etc/ipf.rules

Ao criar as regras, lembre-se, os pacotes entram (in) e saem (out) de cada interface Ainda temos mais alguns critrios para filtragem, at aqui filtramos por interface, por endereo e fizemos log.

/etc/ipf.rules

Filtragem por protocolo, palavrachave proto

block in log quick on xl0 proto icmp block in log quick on xl0 proto udp

/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 10.3.18.0/24 port = 514

/etc/ipf.rules
Conjunto completo de regras stateless

pass pass pass pass

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

/etc/ipf.rules

Permisso implcita - keep state


Conexes tm: incio, meio e fim Filtramos o incio Tabela de estados

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

/etc/ipf.rules

Stateful UDP

Como se o UDP no orientado conexo? 60s na tabela de estados Servio de DNS Mesma idia

Stateful ICMP

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

/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 Exceo: 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

/etc/ipf.rules

Respondendo a um pacote bloqueado

Com TCP RST (Reset). Nossa palavrachave: 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

Ateno! Apenas para TCP, por isso precisamos da segunda regra block para descartar os pacotes UDP e ICMP connection refused ao invs de connection timed out

/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

/etc/ipf.rules

Problema, a regra anterior retorna o endereo 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

Cuidado com as respostas: flood

NAT e Proxies

Falta de endereamento Reescrevendo o endereo de sada


map xl1 10.3.18.0/24 -> 200.100.1.10/32

Para endereos dinmicos:


map tun0 10.3.18.0/24 -> 0/32 1 pra 1 map xl1 10.3.18.9/32 -> 200.100.1.11/32

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

NAT

Oferecendo servios atrs do firewall atravs 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

Filtrando servios redirecionados com rdr

No basta criar o redirect, precisamos criar as regras para permitir a entrada

em /etc/ipnat.rules: em /etc/ipf.rules:

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

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

* O NAT ocorre antes da filtragem..

Algumas mgicas do NAT

Proxies de Aplicao

Controle de sesses 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

Carregando e Manipulando as regras

O utilitrio ipf:

-F<i,o,a> Flush (i, input; o, output; a, all) -f <nome do arquivo> -V verso do IPFILTER -l mostra as entradas da tabela NAT -C apaga as entradas NAT carregadas, exceto as que esto ativas -F apaga as entradas NAT carregadas -f <nome do arquivo>

O utilitrio ipnat:

Monitorando e Depurando

O utilitrio ipfstat:

Sem flags mostra informaes interessantes, estatsticas -i lista as regras de input -o lista as regras de output -h hit count -n nmero da regra -s dump da tabela de estados

Monitorando e Depurando

O utilitrio 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, equivale a -o NSI

Conjunto completo de regras

Checklist:

Quais as minhas interfaces de rede O que pretendo bloquear/liberar? Pretendo fazer mudanas nas regras com frequncia? Qual a carga que este equipamento suporta? Tenho muitos usurios?

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 state

Mais segurana

Voc quer mais segurana?


Edite seu /etc/fstab (mas faa um backup antes cp /etc/fstab /etc/fstab.bkp) Todos as suas parties (exceto a de swap e /dev/acd0) devem estar rw READ/WRITE

Mais Segurana

Modifique para o seguinte:


/ /tmp ufs /usr /usr/home /usr/local /var

ufs rw,nosuid rw,noexec,nosuid,nodev ufs ro ufs rw,noexec,nosuid ufs ro,nosuid ufs rw,noexec,nosuid

1 2 2 2 2 2

1 2 2 2 2 2

Observe que o layout das parties diferente ao sugerido no incio deste material, mas isso no impede que faamos uma configurao restritiva

Exerccios Prticos

Obtenha os seguintes dados da sua mquina:


Nome da interface de rede Endereo IP Portas no estado listening (abertas)

Exerccios Prticos

Crie um conjunto de regras que satisfaa as seguintes condies:


Permita a sada do trfego nas interfaces locais (incluindo a de loopback) Permita a entrada de trfego SSH apenas para as mquinas sua esquerda e sua direita (quando aplicvel) Bloqueie o trfego para os demais Ips da mesma classe de endereos da sua Bloqueie o trfego para as redes de classes privadas (10.0.0.0/8)

Exerccios Prticos

Aps o tempo limite de criao de regras tente conectar-se qualquer mquina da rede via SSH, caso obtenha sucesso anote o endereo IP. Obtenha informaes (IP) a partir dos logs ou em tempo real das mquinas que esto tentando conectar-se sua, caso voc detecte falhas tente corrigilas em tempo real.

Exerccios Prticos

Instale o scanner de segurana NMAP atravs do comando:

# pkg_install -r nmap

Digite nmap -h, leia com ateno as opes e faa as seguintes operaes nos endereos IP da sua rede:

Tente descobrir a verso dos programas em execuo na mquina remota Faa um scan do tipo Ping Faa scan de TCP connect(), TCP SYN Faa scan de portas UDP

Exerccios Prticos

Utilizando os utilitrios do IPFILTER colha os seguintes dados estatsticos do seu firewall:


Input packets Output packes A verso do IPFILTER

Exerccios Prticos

Sugesto:

Use vrios terminais para agilizar suas operaes de scan e monitoramento Antes de tentar conectar-se outras mquinas certifique-se de que a sua est bem protegida Se estiver em dificuldades no trabalhe sozinho, procure ajuda

Isto foi s o incio, agora por sua conta..


Configurar um firewall leva tempo, preciso fazer muitos testes para ter certeza de que tudo est como planejado. Lembre-se, segurana um processo contnuo, no um produto.
Voc encontra esta apresentao e outros artigos atualizados em: http://www.abdv.net alex.vasconcelos@gmail.com

Das könnte Ihnen auch gefallen