Packet Filter firewall mais seguro do Mundo

Started by C00L3R, 11 de December , 2008, 11:59:06 AM

Previous topic - Next topic

0 Members and 1 Guest are viewing this topic.

C00L3R

Iniciando o artigo sobre PF venho explicar apenas algumas funçõoes deste maravilhoso firewall que foi desenvolvido por Daniel Hartmeier e agora é mantido e desenvolvido por Daniel e pelo resto do time do OpenBSD.

Com "PF" você pode desde fazer filtragem em pacotes como tambem tradução de pacotes com NAT Tambem pode fazer roteamento,liberar DMZ para Host filtrar pacotes mal formados ,ataques "DoS" entre outros como fingerprint,Tambem é possivel fazer limitação de banda com "PF"...

Entre tantas funções vo falar apenas de algumas outras podem ser vistas no link
http://www.openbsd.org/faq/pf/pt/index.html
Ou no Livro do Peter Haansteen o "THE Book of PF" ...

Primeiros passos com "PF" no OpenBSD

Primeiro passo deixe "pf=YES" no seu "rc.conf",e saiba qual o nome da sua interface de rede ex eth0,rl0,rum0...

Segundo passo o arquivo pf.conf ficara suas configurações do PF

    terceiro o comando "#pfctl -e" para ativar e "pfctl -d" para desativar se você modifico o "pf" e quer levantar de novo "#pfctl -ef /etc/pf.conf"



Isso ja é o basico para você brincar,Vo deixar aqui exemplos de "configs" com tudo comentado passo a passo..

Exemplo de "configs":

Código: Selecionar tudo
    # Exemplo de config uso de VPN e controle de banda feita por cooler
       
        #Config by Cooler for VPN conections...
        #Primeira mente as macros
        #show de bola macros nas configs
        if_ppp="tun0″
        if_int="tun2″
        if_vpn="tun1″
        ip_Juquinha="195.56.55.204″
        ip_otario="192.168.2.1″
        tcp_outdeny="{25}"#tabelas ips da rede etc...
        table persist { 10.1.0.0/16, 10.2.0.0/16, 10.3.0.0/16, 127.0.0.1/8,$
        table persist { 10.1.0.0/16, 10.3.0.0/16, 192.168.2.1/32 }#opcoes de config
        set block-policy return
        set debug none
        set limit frags 4096
        set state-policy floating

        # scrub filtra pacotes mal formados etc...
        scrub in on $if_ppp all fragment reassemble
        scrub in on $if_int all no-df
        scrub on $if_ppp all random-id

        #esta parte 'e para dar limite na banda em servicos...
        altq on $if_ppp hfsc bandwidth 170Kb queue { std, ssh, http, ack, vpn, stdack}
        queue std bandwidth 16% priority 0 hfsc (default realtime 32Kb upperlimit 170Kb)
        queue ssh bandwidth 16% priority 5 hfsc (realtime 32Kb upperlimit 160Kb )
        queue http bandwidth 16% priority 2 hfsc (realtime 16Kb upperlimit 160Kb )
        queue stdack bandwidth 16% priority 5 hfsc ( realtime 8Kb upperlimit 160Kb)
        queue vpn bandwidth 16% priority 6 hfsc ( realtime 16Kb upperlimit 170Kb)
        queue ack bandwidth 16% priority 7 hfsc ( realtime 8Kb upperlimit 160Kb)

        # configurac~ao do NAT
        nat on $if_ppp from {10.1.0.0/16, 127.0.0.1, $ip_otario} to 0.0.0.0/0 -> ($if_ppp:0)

        # Da uma redirecionada no tr'afego de pacotes
        rdr on $if_int proto tcp from any to any port 21 -> 127.0.0.1 port 8021
        rdr on $if_ppp inet proto {tcp,udp} to port 60050 -> 10.1.0.1 port 60050
        rdr on $if_ppp inet proto {tcp,udp} to port 60150 -> 10.1.0.1 port 60150
        rdr pass on {$if_int, $if_vpn, lo0 } inet proto tcp from any to 10.1.0.254 port 80 -> $ip_otario port 80
        #rdr on $if_ppp inet proto udp to port 6881 -> 10.1.0.1 port 6881
        rdr pass on $if_ppp proto tcp to port 8010 -> 10.1.0.1 port 8010

        # filtra tudo da macro exp e loga
        block in log on $if_ppp all

        #Comunicac~ao com o Host
        pass in quick on lo0
        pass out quick on lo0

        pass out on $if_ppp from any to any queue (std, stdack)

        # Abilita VPN
        pass in quick on $if_ppp proto udp from $ip_Juquinha port 5000
        pass out quick on $if_ppp proto udp to $ip_Juquinha port 5000 keep state queue (vpn)

        #bloqueio d ealgumas flags
        pass out quick on $if_ppp proto tcp from any to port 22 flags S/SA keep state queue (ssh, ack)
        pass out quick on $if_ppp proto tcp from any to port {80,443} flags S/SA keep state queue (http,
        ack)

        # configurando o trafego
        pass out quick on $if_ppp flags S/SA keep state
        pass out quick on $if_ppp proto udp keep state
        pass out quick on $if_ppp proto {icmp,igmp} keep state

        # Abilita o proxy do FTP
        pass in quick on $if_ppp inet proto tcp from any to ($if_ppp:0) user proxy keep state

        #Abilita torrent
        #pass in quick on $if_ppp proto tcp to port 50100:51000 keep state #depende da porta..
        pass in quick on $if_ppp proto {udp,tcp} to port 60050
        pass in quick on $if_ppp proto {udp,tcp} to port 60150
        pass out quick on $if_ppp proto tcp from port 60150 to any keep state queue(std, stdack)

        # bloqueia algumas conex~oes
        block out quick on $if_ppp proto tcp from port $tcp_outdeny to any



    # PF como gateway
        #Outro exemplo este foi retirado do livro do "Peter Haansteen"
        #Bem vamos imaginar que o PF esta num gateway ligado num swith
        # E o swith manda para uma rede de cliente e mais tres servidores
        # 1 server de email outro de wb e outro de dominio
        # vamos ver como fica... explicacao by "Cooler"#primeiro as macros
        ext_if = "rl0″
        int_if = "rl1″
        localnet = $int_if:network
        webserver = "192.0.2.227″
        webports = "{http,https}"
        emailserver = "192.0.2.225″
        email = "{smtp, pop3, imap, imaps, pop3s }"
        nameservers = "{ 192.0.2.221, 192.0.2.223 }"
        client_out = "{ssh , domain , pop3, auth, nntp ,http, https, cvserver, 2628, 5999, 8000, 8080 }"
        udp_services = "{domain, ntp}"
        icmp_types = "{ echoreq, unreach }"#Ufa agora bloquiando tudo
        block all
        #regras de filtragem liberando algumas coisas e kicando outras
        pass quick inet proto { tcp, udp} from $localnet to any port $udp_services
        pass log inet proto icmp all icmp-type $icmp_types
        pass inet proto tcp from $localnet to any port $client_out
        pass inet proto { tcp, udp } from any to $nameservers port domain
        pass proto tcp from any to $webserver port $webports synproxy state
        pass log proto tct from any to $emailserver port $email synproxy state
        pass log proto tcp from $emailserver to any port smtp synproxy state

        #comentario a parte
        #
        #Rapadura he doce mais nao he mole xD
        #Uns tempos atras meu amigo "Tigo" me chamo para fazer um servico semelhante no rio de janeiro
        #diferenca he que podia ter um controle de banda e DMZ liberada para alguns servers alem de
        #bloqueio de ataques "DoS","fingerprint","spoofing","poison de dns" etc...
        #entre outros como o de libera WEBserver servicos do tipo 80,53... etc.. soh o cache ia tira 1200 :)
        #mas acabo nao virando o responsavel em "TI" da empresa provavelmente pego
        # Um router vagabundo da Cisco ou estes firewalls toscos com linux...
        #Resumindo a empresa saiu perdendo....


Logs do PF

Bem sempre que você da um comando "log" o pf armazena a informação do bloqueio ou filtragem do mesmo no arquivo "/var/log/pflog" você pode velo facilmente com o comando "cat /var/log/pflog | tail"

EX:block log (all) all #ou seja vai bloquia tudo e tudo que for bloquiado vai ser logado

Para ver os logs em tempo real pode e usar com tcpdump ex:

Código: Selecionar tudo
        sudo tcpdump -n -ttt -r /var/log/pflog




"OS" com firewalls com PF

É possivel encontrar "distros" que ja vem com "pf" e para servir de router,firewall... Exemplo disso é o ComixWall que roda em background o OpenBSD 4.2 com PF ele conta com uma interface web bom para iniciantes,Outra opção é o Pfsense que tambem conta com interface grafica via web porem é feito com "freebsd"..

Onde encontrar comixwall.org/ http://www.pfsense.com/

Conclusão

Terminando o artigo até que pegueno por falar de uma ferramenta que aborda muitas funções Bem cada dia o "PF" esta ocupando mais espaço do mundo do software livre,Crackers cada ves mais exploram falhas em sistemas fazendo usuarios do penguin,janelinha,maça mudarem para o baiacu ou outro bsd.