pf: O Filtro de Pacotes do OpenBSD

  • 384 views
Uploaded on

 

  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Be the first to comment
    Be the first to like this
No Downloads

Views

Total Views
384
On Slideshare
0
From Embeds
0
Number of Embeds
1

Actions

Shares
Downloads
0
Comments
0
Likes
0

Embeds 0

No embeds

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
    No notes for slide

Transcript

  • 1. PF: O Filtro de Pacotes do OpenBSD Workshop de Tecnologia em Comunicação de Dados – WTCD 2011 Segurança de Redes de Computadores usando PF: O Filtro de Pacotes do OpenBSD – Vinícius Zavam
  • 2. PF: O Filtro de Pacotes do OpenBSD• OpenBSD o Sobre o OpenBSD o Objetivos do Projeto• pf Básico o Listas, Macros e Tabelas o Filtragem de Pacotes o NAT (Tradução do Endereço de Rede) o Redirecionamento de Tráfego• pf Avançado o Âncoras o Enfileiramento e Priorização de Tráfego o Balanceamento de Carga o Marcação de Pacotes• Referências de Pesquisa Workshop de Tecnologia em Comunicação de Dados – WTCD 2011 Segurança de Redes de Computadores usando PF: O Filtro de Pacotes do OpenBSD – Vinícius Zavam
  • 3. PF: O Filtro de Pacotes do OpenBSD• Sobre o OpenBSD OpenBSD o Baseado no 4.4BSD o Códigos Fonte e Binário são Livres o Multiplataforma o Licenciamento do OpenBSD  Universidade da California (Berkeley)  Internet Systems Consortium (ISC) o Appliances Comerciais  Vantronix  Syscall Network Solutions  RTMX o Equipe de Colaboradores o Coordenado por Theo de Raadt Workshop de Tecnologia em Comunicação de Dados – WTCD 2011 Segurança de Redes de Computadores usando PF: O Filtro de Pacotes do OpenBSD – Vinícius Zavam
  • 4. PF: O Filtro de Pacotes do OpenBSD• Objetivos do Projeto OpenBSD o Promover a melhor plataforma de desenvolvimento possível o Seguir e implementar padrões  ANSI, POSIX, X/Open, … o Lançar uma versão aproximadamente a cada seis meses o Prover um bom sistema multiplataforma. o Qualquer um pode usar para QUALQUER FIM, sem restrições  Produtos Comerciais  Hardware/Software para OpenBSD  Máquinas com OpenBSD Pré-instalado o Não deixar problemas sérios sem solução o Tentar ser o sistema operacional #1 em segurança Workshop de Tecnologia em Comunicação de Dados – WTCD 2011 Segurança de Redes de Computadores usando PF: O Filtro de Pacotes do OpenBSD – Vinícius Zavam
  • 5. PF: O Filtro de Pacotes do OpenBSD• Listas, Macros e Tabelas pf Básico o Primeiros Passos  pfctl(8)  /etc/rc.conf.local  /etc/pf.conf o Listas  block out on fxp0 from { 192.168.0.1, 10.5.32.6 } to any  block out on fxp0 from 192.168.0.1 to any  block out on fxp0 from 10.5.32.6 to any  pass in on fxp0 from { 10.0.0.0/8, !10.1.2.3 }  pass in on fxp0 from 10.0.0.0/8  pass in on fxp0 from !10.1.2.3 o Múltiplas Listas  block out on fxp0 proto { tcp udp } from { 192.168.0.1, 10.5.32.6 } to any port { ssh telnet } Workshop de Tecnologia em Comunicação de Dados – WTCD 2011 Segurança de Redes de Computadores usando PF: O Filtro de Pacotes do OpenBSD – Vinícius Zavam
  • 6. PF: O Filtro de Pacotes do OpenBSD• Listas, Macros e Tabelas pf Básico o Macros  ext_if="fxp0“  block in on $ext_if from any to any o Macros Expandidas  friends = "{ 192.168.1.1, 10.0.2.5, 192.168.43.53 }"  host1 = "192.168.1.1"  host1 = "192.168.1.2"  all_hosts = "{" $host1 $host2 "}“ o Tabelas  table <goodguys> { 192.0.2.0/24 }  table <rfc1918> const { 192.168.0.0/16, 172.16.0.0/12, 10.0.0.0/8 }  table <spammers> persist file "/etc/pf/tables/spammers“  block in on fxp0 from { <rfc1918>, <spammers> } to any  pass in on fxp0 from <goodguys> to any Workshop de Tecnologia em Comunicação de Dados – WTCD 2011 Segurança de Redes de Computadores usando PF: O Filtro de Pacotes do OpenBSD – Vinícius Zavam
  • 7. PF: O Filtro de Pacotes do OpenBSD• Filtragem de Pacotes pf Básico o Sintaxe das Regras  ação [direção] [log] [quick] [on interface] [família] [proto protocolo] [from origem [port porta]] [to destino [port porta]] [flags sinalizador/máscara] [estado] o Exemplos  pass in on $ext_if proto tcp to $web_server port www  pass in on fxp0 proto tcp from any to any port ssh flags S/SA  pass in on $ext_if proto tcp from any to $web_server port www flags S/SA synproxy state o Impressões Digitais de Sistemas Operacionais  /etc/pf.os  pass in on $ext_if from any os OpenBSD  block in on $ext_if from any os "Windows 2000" Workshop de Tecnologia em Comunicação de Dados – WTCD 2011 Segurança de Redes de Computadores usando PF: O Filtro de Pacotes do OpenBSD – Vinícius Zavam
  • 8. PF: O Filtro de Pacotes do OpenBSD• NAT (Tradução do Endereço de Rede) pf Básico o RFC1918 o /etc/sysctl.conf  net.inet.ip.forwarding = 1  net.inet6.ip6.forwarding = 1 o Sintaxe das Regras  nat [pass] [log] on interface [família] from origem [port porta] to destino [port porta] -> endereço externo [grupo] [porta]• Redirecionamento de Tráfego o Exemplos  rdr on tl0 proto tcp from any to any port 80 -> 192.168.1.20  rdr on $ext_if proto tcp from any to $ext_if port 80 -> $server port 80  rdr on tl0 proto tcp from any to any port 5000:5500 -> 192.168.1.20 port 6000  rdr on tl0 proto tcp from any to any port 5000:5500 -> 192.168.1.20 port 7000:* Workshop de Tecnologia em Comunicação de Dados – WTCD 2011 Segurança de Redes de Computadores usando PF: O Filtro de Pacotes do OpenBSD – Vinícius Zavam
  • 9. PF: O Filtro de Pacotes do OpenBSD Workshop de Tecnologia em Comunicação de Dados – WTCD 2011 Segurança de Redes de Computadores usando PF: O Filtro de Pacotes do OpenBSD – Vinícius Zavam
  • 10. PF: O Filtro de Pacotes do OpenBSD• Âncoras pf Avançado o “loading”  anchor goodguys  load anchor goodguys:ssh from "/etc/anchor-goodguys-ssh" o pfctl(8) # echo "pass in proto tcp from 192.0.2.3 to any port 22" | pfctl -a goodguys -f -• pf.conf>> /etc/anchor-goodguys-www # cat o anchor "goodguys" { pass in proto tcp from 192.0.2.3 to any port 80 pass in proto tcp from 192.0.2.4 to any port to port 22 pass in proto tcp from 192.168.2.3 { 80 443 } #} pfctl -a goodguys -f /etc/anchor-goodguys-www Workshop de Tecnologia em Comunicação de Dados – WTCD 2011 Segurança de Redes de Computadores usando PF: O Filtro de Pacotes do OpenBSD – Vinícius Zavam
  • 11. PF: O Filtro de Pacotes do OpenBSD• Enfileiramento e Priorização pf Avançado o Schedulers (Escalonadores)  FIFO – First IN, First OUT  CBQ – Class Based Queueing  PRIQ – Priority Queueing o Detecção do Tráfego Enfileirado  RED – Random Early Detection o Notificações de Congestionamento  ECN – Explicit Congestion Notification  RFC 3168 o ALTQ – Alternate Queueing  OpenBSD 3.0  OpenBSD 3.3 & pf Workshop de Tecnologia em Comunicação de Dados – WTCD 2011 Segurança de Redes de Computadores usando PF: O Filtro de Pacotes do OpenBSD – Vinícius Zavam
  • 12. PF: O Filtro de Pacotes do OpenBSD• Enfileiramento e Priorização pf Avançado o Sintaxes  altq on interface escalonador bandwidth largura qlimit limite tbrsize tamanho queue { filas }  queue nome [on interface] bandwidth largura [priority prioridade] [qlimit limite] escalonador ( opções ) { filas } o Exemplo  altq on fxp0 cbq bandwidth 2Mb queue { std, ssh, ftp }  queue std bandwidth 50% cbq (default)  queue ssh bandwidth 25% { ssh_login, ssh_bulk }  queue ssh_login bandwidth 25% priority 4 cbq (ecn)  queue ssh_bulk bandwidth 75% cbq (ecn)  queue ftp bandwidth 500Kb priority 3 cbq (borrow red) Workshop de Tecnologia em Comunicação de Dados – WTCD 2011 Segurança de Redes de Computadores usando PF: O Filtro de Pacotes do OpenBSD – Vinícius Zavam
  • 13. PF: O Filtro de Pacotes do OpenBSD• Balanceamento de Carga pf Avançado o Entrada  web_servers = "{ 10.0.0.10, 10.0.0.11, 10.0.0.13 }"  rdr on $ext_if proto tcp from any to any port 80 -> $web_servers round-robin sticky-address o Saída  lan_net = "192.168.0.0/24“  int_if = "dc0”  ext_if1 = "fxp0”  ext_if2 = "fxp1“  ext_gw1 = "68.146.224.1“  ext_gw2 = "142.59.76.1“  pass in on $int_if route-to { ($ext_if1 $ext_gw1), ($ext_if2 $ext_gw2) } round-robin from $lan_net to any keep state Workshop de Tecnologia em Comunicação de Dados – WTCD 2011 Segurança de Redes de Computadores usando PF: O Filtro de Pacotes do OpenBSD – Vinícius Zavam
  • 14. PF: O Filtro de Pacotes do OpenBSD• Marcação de Pacotes pf Avançado o Atribuição de Etiquetas  pass in on fxp0 all tag [etiqueta]  pass in on $int_if all tag $int_tag_name keep state o Exemplo  pass in on $int_if tag INT_NET  pass in quick on $int_if proto tcp to port 80 tag INT_NET_HTTP  pass in quick on $int_if from 192.168.1.5 Workshop de Tecnologia em Comunicação de Dados – WTCD 2011 Segurança de Redes de Computadores usando PF: O Filtro de Pacotes do OpenBSD – Vinícius Zavam
  • 15. PF: O Filtro de Pacotes do OpenBSD• Marcação de Pacotes pf Avançado o Verificação de Etiquetas  pass out on $ext_if tagged INT_NET  pass out on $ext_if ! tagged WIFI_NET o Marcação de Quadros Ethernet # ifconfig bridge0 rule pass in on fxp0 src 00:DE:AD:BE:EF:00 tag USER1 in on fxp0 tagged USER1  pass Workshop de Tecnologia em Comunicação de Dados – WTCD 2011 Segurança de Redes de Computadores usando PF: O Filtro de Pacotes do OpenBSD – Vinícius Zavam
  • 16. PF: O Filtro de Pacotes do OpenBSD • OpenBSD.org Referências de Pesquisa o http://www.openbsd.org/faq/index.html o http://www.openbsd.org/faq/pf/index.html o http://www.openbsd.org/papers • The Book of PF, 2nd Edition o http://nostarch.com/pf2.htm • Undeadly (OpenBSD Journal) o http://www.undeadly.org • Google o http://www.google.com/bsdAlgumas das imagens utilizadas nesta apresentação foram copiadas do exemplar em formato PDF do livro “The Book of PF”, escrito por Peter Hansteen;O diagrama de exemplo para CARP e pfsync foi copiado do paper “Introduction to PF”, de Ryan McBride, disponível no sítio oficial do projeto OpenBSD. Workshop de Tecnologia em Comunicação de Dados – WTCD 2011 Segurança de Redes de Computadores usando PF: O Filtro de Pacotes do OpenBSD – Vinícius Zavam
  • 17. PF: O Filtro de Pacotes do OpenBSD Workshop de Tecnologia em Comunicação de Dados – WTCD 2011 Segurança de Redes de Computadores usando PF: O Filtro de Pacotes do OpenBSD – Vinícius Zavam