+ Responder ao Tópico



  1. #1
    MarceloRibeiro
    Visitante

    Padrão Sequencia Firewall

    Pessoal,

    Algumas pessoas, dizem que o certo é negar todas as porta e liberar só o que realmente utiliza-se, mas como faço isso?

    Exemplo:

    iptables -A INPUT -j DROP

    iptables -A INPUT.... ACCEPT

    Obs.: Bom, pelo que andei lendo, se eu fizer isso a segunda regra não será acionada, pois a primeira já está bloqueando tudo, não é mesmo??? ou estou com o conceito errado...

    Valeu Galera!!!

    Marcelo Ribeiro

  2. #2
    slice
    Visitante

    Padrão iptables

    o iptables lê as regras na sequência em que elas são adicionadas, portanto se vc bloquear um determinado pacote, porta ou qualquer coisa logo no começo, ele não seguirá adiante, sendo assim ele não passará pela regra seguinte dá pra sacar?

    Portanto libere primeiro e 'somente' as portas que vc realmente usa e depois tranque o resto.


    Qualquer coisa grita aê!



    Slice

  3. #3
    dispatcher
    Visitante

    Padrão Sequencia Firewall

    Marcelo , seu raciocinio esta correto. Esse negocio de negar todas as portas primeiro e liberar o que for necessario depois pode ser feito com a definiçao do policiamento padrao ( opçao -P ). Por exemplo:
    iptables -t filter -P INPUT DROP
    Com isso o policiamento padrão de INPUT é DROP (policy DROP), o que significa que qualquer pacote que não seja aceito pela regra do chain, será negado.
    Policiamentos RESTRITIVOS (DROP) são usados em conjunto com regras permissivas no chain correspondente (as regras sao para liberar e o que sobrar é bloqueado pelo policiamento padrão).

  4. #4

    Padrão Re: Sequencia Firewall

    Citação Postado originalmente por MarceloRibeiro
    iptables -A INPUT -j DROP

    iptables -A INPUT.... ACCEPT
    eh por ae, pra ficar + facil de visualizar suponha q vc quer liberar ssh e http e fechar todo o resto faca assim:

    iptables -A INPUT -p tcp --dport 22 --syn -j ACCEPT
    iptables -A INPUT -p tcp --dport 80 --syn -j ACCEPT
    iptables -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
    iptables -P INPUT DROP

    com isso vc soh libera ssh,http e deixa o trafego de conexoes existentes continuarem a entrar

  5. #5
    MarceloRibeiro
    Visitante

    Padrão Sequencia Firewall

    Galera, mais uma vez agradeço a todos que me deram uma força, ok?

    Aproveitando, alguém poderia me dizer onde posso encontrar um modelo de firewall? ou exemplo????

    Valeu...

    Marcelo Ribeiro

  6. #6
    guardian_metal
    Visitante

    Padrão Sequencia Firewall


  7. #7

    Padrão Sequencia Firewall

    iptables.under-linux.org

  8. #8
    MarceloRibeiro
    Visitante

    Padrão Sequencia Firewall

    Pessoal,

    Mais uma vez OBRIGADO!!! por toda ajuda, ok?

    Bom, venho aqui pedir p/ que todos colaborem, coloquei o script de Firewall abaixo, para podermos deixalo o mais seguro possível, que conheçe bem de firewall e poder ajudar, com certeza estará contribuindo e muito com a comunidade, depois que todos comentarem, vou passar a limpo e publicar aqui mesma na sessão de "proxy/nat/firewall", ok?

    Abração!!!

    Aí vai... o script....

    Firewall rápido e seguro com iptables
    Enviado em Terça, 13 de julho 2004 as 11:45:12
    Neste artigo mostrarei um script de firewall utilizando iptables com regras que julgo necessárias para a segurança da sua rede, além de opções de NATs, proxy transparente, logs, etc...


    A configuração do meu servidor é a seguinte:

    - Ambiente testado:
    - Distro: Fedora Core 2

    - A máquina possui 2 interfaces de rede:
    - Intranet: eth1 – 10.0.0.0/24
    - ADSL: eth0 – 192.168.200.1/24 – GW: 192.168.200.254

    Neste exemplo todo o tráfego da minha rede sai para a Internet através do gateway (roteador) 192.168.200.254, passando antes pelo meu firewall. Abaixo segue o script detalhado e comentado. Provavelmente você só precisará alterar o conteúdo das variáveis IF_EXTERNA e IF_INTERNA, correspondente às interfaces do seu firewall, e mais no final do script as regras que tratam de possíveis NATs, proxy transparente e etc... Estas regras estão comentadas:

    #!/bin/sh

    # Variaveis
    # -------------------------------------------------------
    iptables=/sbin/iptables
    IF_EXTERNA=eth0
    IF_INTERNA=eth1


    # Ativa modulos
    # -------------------------------------------------------
    /sbin/modprobe iptable_nat
    /sbin/modprobe ip_conntrack
    /sbin/modprobe ip_conntrack_ftp
    /sbin/modprobe ip_nat_ftp
    /sbin/modprobe ipt_LOG
    /sbin/modprobe ipt_REJECT
    /sbin/modprobe ipt_MASQUERADE


    # Ativa roteamento no kernel
    # -------------------------------------------------------
    echo "1" > /proc/sys/net/ipv4/ip_forward


    # Protecao contra IP spoofing
    # -------------------------------------------------------
    echo "1" > /proc/sys/net/ipv4/conf/all/rp_filter


    # Zera regras
    # -------------------------------------------------------
    $iptables -F
    $iptables -X
    $iptables -F -t nat
    $iptables -X -t nat
    $iptables -F -t mangle
    $iptables -X -t mangle


    # Determina a politica padrao
    # -------------------------------------------------------
    $iptables -P INPUT DROP
    $iptables -P OUTPUT DROP
    $iptables -P FORWARD DROP


    #########################################################
    # Tabela FILTER
    #########################################################


    # Dropa pacotes TCP indesejaveis
    # -------------------------------------------------------
    $iptables -A FORWARD -p tcp ! --syn -m state --state NEW -j LOG --log-level 6 --log-prefix "FIREWALL: NEW sem syn: "
    $iptables -A FORWARD -p tcp ! --syn -m state --state NEW -j DROP


    # Dropa pacotes mal formados
    # -------------------------------------------------------
    $iptables -A INPUT -i $IF_EXTERNA -m unclean -j LOG --log-level 6 --log-prefix "FIREWALL: pacote mal formado: "
    $iptables -A INPUT -i $IF_EXTERNA -m unclean -j DROP


    # Aceita os pacotes que realmente devem entrar
    # -------------------------------------------------------
    $iptables -A INPUT -i ! $IF_EXTERNA -j ACCEPT
    $iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
    $iptables -A OUTPUT -m state --state ESTABLISHED,RELATED,NEW -j ACCEPT
    $iptables -A FORWARD -m state --state ESTABLISHED,RELATED,NEW -j ACCEPT


    # Protecao contra trinoo
    # -------------------------------------------------------
    $iptables -N TRINOO
    $iptables -A TRINOO -m limit --limit 15/m -j LOG --log-level 6 --log-prefix "FIREWALL: trinoo: "
    $iptables -A TRINOO -j DROP
    $iptables -A INPUT -p TCP -i $IF_EXTERNA --dport 27444 -j TRINOO
    $iptables -A INPUT -p TCP -i $IF_EXTERNA --dport 27665 -j TRINOO
    $iptables -A INPUT -p TCP -i $IF_EXTERNA --dport 31335 -j TRINOO
    $iptables -A INPUT -p TCP -i $IF_EXTERNA --dport 34555 -j TRINOO
    $iptables -A INPUT -p TCP -i $IF_EXTERNA --dport 35555 -j TRINOO


    # Protecao contra tronjans
    # -------------------------------------------------------
    $iptables -N TROJAN
    $iptables -A TROJAN -m limit --limit 15/m -j LOG --log-level 6 --log-prefix "FIREWALL: trojan: "
    $iptables -A TROJAN -j DROP
    $iptables -A INPUT -p TCP -i $IF_EXTERNA --dport 666 -j TROJAN
    $iptables -A INPUT -p TCP -i $IF_EXTERNA --dport 666 -j TROJAN
    $iptables -A INPUT -p TCP -i $IF_EXTERNA --dport 4000 -j TROJAN
    $iptables -A INPUT -p TCP -i $IF_EXTERNA --dport 6000 -j TROJAN
    $iptables -A INPUT -p TCP -i $IF_EXTERNA --dport 6006 -j TROJAN
    $iptables -A INPUT -p TCP -i $IF_EXTERNA --dport 16660 -j TROJAN


    # Protecao contra worms
    # -------------------------------------------------------
    $iptables -A FORWARD -p tcp --dport 135 -i $IF_INTERNA -j REJECT


    # Protecao contra syn-flood
    # -------------------------------------------------------
    $iptables -A FORWARD -p tcp --syn -m limit --limit 2/s -j ACCEPT


    # Protecao contra ping da morte
    # -------------------------------------------------------
    $iptables -A FORWARD -p icmp --icmp-type echo-request -m limit --limit 1/s -j ACCEPT


    # Protecao contra port scanners
    # -------------------------------------------------------
    $iptables -N SCANNER
    $iptables -A SCANNER -m limit --limit 15/m -j LOG --log-level 6 --log-prefix "FIREWALL: port scanner: "
    $iptables -A SCANNER -j DROP
    $iptables -A INPUT -p tcp --tcp-flags ALL FIN,URG,PSH -i $IF_EXTERNA -j SCANNER
    $iptables -A INPUT -p tcp --tcp-flags ALL NONE -i $IF_EXTERNA -j SCANNER
    $iptables -A INPUT -p tcp --tcp-flags ALL ALL -i $IF_EXTERNA -j SCANNER
    $iptables -A INPUT -p tcp --tcp-flags ALL FIN,SYN -i $IF_EXTERNA -j SCANNER
    $iptables -A INPUT -p tcp --tcp-flags ALL SYN,RST,ACK,FIN,URG -i $IF_EXTERNA -j SCANNER
    $iptables -A INPUT -p tcp --tcp-flags SYN,RST SYN,RST -i $IF_EXTERNA -j SCANNER
    $iptables -A INPUT -p tcp --tcp-flags SYN,FIN SYN,FIN -i $IF_EXTERNA -j SCANNER


    # Loga tentativa de acesso a determinadas portas
    # -------------------------------------------------------
    $iptables -A INPUT -p tcp --dport 21 -i $IF_EXTERNA -j LOG --log-level 6 --log-prefix "FIREWALL: ftp: "
    $iptables -A INPUT -p tcp --dport 23 -i $IF_EXTERNA -j LOG --log-level 6 --log-prefix "FIREWALL: telnet: "
    $iptables -A INPUT -p tcp --dport 25 -i $IF_EXTERNA -j LOG --log-level 6 --log-prefix "FIREWALL: smtp: "
    $iptables -A INPUT -p tcp --dport 80 -i $IF_EXTERNA -j LOG --log-level 6 --log-prefix "FIREWALL: http: "
    $iptables -A INPUT -p tcp --dport 110 -i $IF_EXTERNA -j LOG --log-level 6 --log-prefix "FIREWALL: pop3: "
    $iptables -A INPUT -p udp --dport 111 -i $IF_EXTERNA -j LOG --log-level 6 --log-prefix "FIREWALL: rpc: "
    $iptables -A INPUT -p tcp --dport 113 -i $IF_EXTERNA -j LOG --log-level 6 --log-prefix "FIREWALL: identd: "
    $iptables -A INPUT -p tcp --dport 137:139 -i $IF_EXTERNA -j LOG --log-level 6 --log-prefix "FIREWALL: samba: "
    $iptables -A INPUT -p udp --dport 137:139 -i $IF_EXTERNA -j LOG --log-level 6 --log-prefix "FIREWALL: samba: "
    $iptables -A INPUT -p tcp --dport 161:162 -i $IF_EXTERNA -j LOG --log-level 6 --log-prefix "FIREWALL: snmp: "
    $iptables -A INPUT -p tcp --dport 6667:6668 -i $IF_EXTERNA -j LOG --log-level 6 --log-prefix "FIREWALL: irc: "
    $iptables -A INPUT -p tcp --dport 3128 -i $IF_EXTERNA -j LOG --log-level 6 --log-prefix "FIREWALL: squid: "


    # Libera acesso externo a determinadas portas
    # -------------------------------------------------------
    $iptables -A INPUT -p tcp --dport 22 -i $IF_EXTERNA -j ACCEPT


    # Libera acesso de smtp para fora apenas para o IP XXX.XXX.XXX.XXX
    # -------------------------------------------------------
    #$iptables -A FORWARD -p tcp -d ! XXX.XXX.XXX.XXX --dport 25 -j LOG --log-level 6 --log-prefix "FIREWALL: SMTP proibido: "
    #$iptables -A FORWARD -p tcp -d ! XXX.XXX.XXX.XXX --dport 25 -j REJECT


    #########################################################
    # Tabela NAT
    #########################################################


    # Ativa mascaramento de saida
    # -------------------------------------------------------
    $iptables -A POSTROUTING -t nat -o $IF_EXTERNA -j MASQUERADE


    # Proxy transparente
    # -------------------------------------------------------
    #$iptables -t nat -A PREROUTING -i $IF_INTERNA -p tcp --dport 80 -j REDIRECT --to-port 3128
    #$iptables -t nat -A PREROUTING -i $IF_INTERNA -p tcp --dport 8080 -j REDIRECT --to-port 3128


    # Redireciona portas para outros servidores
    # -------------------------------------------------------
    #$iptables -t nat -A PREROUTING -d 192.168.200.1 -p tcp --dport 22 -j DNAT --to-destination 10.0.0.1


    # Redireciona portas na propria maquina
    # -------------------------------------------------------
    #$iptables -A PREROUTING -t nat -d 192.168.200.1 -p tcp --dport 5922 -j REDIRECT --to-ports 22


    Links relacionados e consultados:

    http://iptables.under-linux.org/


    Dúvidas, mail me: [email protected]

    Ricardo Jacomel
    http://www.jacomel.com.br
    [email protected]

    Valeu Galera!!!

    Marcelo Ribeiro