Página 1 de 2 12 ÚltimoÚltimo
+ Responder ao Tópico



  1. #1
    dB
    Visitante

    Padrão IPTABLES - minhas estaçoes nao navegam...

    Caros estou com um problema, fiz o seguinte com o IPTABLES:


    Código :
    #!/bin/bash
    /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
     
    ### Variaveis ###  
    iptables=/usr/sbin/iptables
    ETH_EXTERNA=eth1
    ETH_INTERNA=eth0
     
    ### ativa o roteamento dinamico ###
    echo 1 > /proc/sys/net/ipv4/ip_forward
     
    echo 1 > /proc/sys/net/ipv4/conf/all/proxy_arp
     
    ####################
    #   Limpa tabela   #
    ####################
     
    $iptables -F
    $iptables -X
    $iptables -F -t nat
    $iptables -X -t nat
    $iptables -F -t mangle
    $iptables -X -t mangle
    $iptables -F PREROUTING -t mangle
    $iptables -F PREROUTING -t nat
    $iptables -F POSTROUTING -t nat
     
     
    echo "Limpando regras de firewall..."
     
    ##################
    #   Fecha tudo   #
    ##################
     
    $iptables -P INPUT DROP
    $iptables -P OUTPUT DROP
    $iptables -P FORWARD DROP
     
    ### Aceita os pacotes que realmente devem entrar ###
    $iptables -A INPUT -i ! $ETH_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
     
    ### Dropa pacotes TCP indesejáveis ###
    $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
     
    ### Pacote mal formado ###
    #$iptables -A INPUT -i $ETH_EXTERNA -m unclean -j LOG --log-level 6 --log-prefix "FIREWALL: pacote mal formado: "
    $iptables -A INPUT -i $ETH_EXTERNA -m unclean -j DROP
     
    ### Proteção contra ping suspeito ###
    $iptables -A FORWARD -m unclean -j DROP
     
    ### Contra ping ###
    $iptables -A FORWARD -p icmp --icmp-type echo-request -j DROP
     
    ### Contra ping of death ###
    $iptables -A FORWARD -p icmp --icmp-type echo-request -m limit --limit 1/s -j ACCEPT
     
    ### Contra syn-floods ###
    $iptables -A FORWARD -p tcp -m limit --limit 1/s -j ACCEPT
     
    ### Proteção 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 $ETH_EXTERNA -j SCANNER
    $iptables -A INPUT -p tcp --tcp-flags ALL NONE -i $ETH_EXTERNA -j SCANNER
    $iptables -A INPUT -p tcp --tcp-flags ALL ALL -i $ETH_EXTERNA -j SCANNER
    $iptables -A INPUT -p tcp --tcp-flags ALL FIN,SYN -i $ETH_EXTERNA -j SCANNER
    $iptables -A INPUT -p tcp --tcp-flags ALL SYN,RST,ACK,FIN,URG -i $ETH_EXTERNA -j SCANNER
    $iptables -A INPUT -p tcp --tcp-flags SYN,RST SYN,RST -i $ETH_EXTERNA -j SCANNER
    $iptables -A INPUT -p tcp --tcp-flags SYN,FIN SYN,FIN -i $ETH_EXTERNA -j SCANNER
     
    ### Proteção 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 $ETH_EXTERNA --dport 27444 -j TRINOO
    $iptables -A INPUT -p TCP -i $ETH_EXTERNA --dport 27665 -j TRINOO
    $iptables -A INPUT -p TCP -i $ETH_EXTERNA --dport 31335 -j TRINOO
    $iptables -A INPUT -p TCP -i $ETH_EXTERNA --dport 34555 -j TRINOO
    $iptables -A INPUT -p TCP -i $ETH_EXTERNA --dport 35555 -j TRINOO
     
    ### Proteção 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 $ETH_EXTERNA --dport 666 -j TROJAN
    $iptables -A INPUT -p TCP -i $ETH_EXTERNA --dport 666 -j TROJAN
    $iptables -A INPUT -p TCP -i $ETH_EXTERNA --dport 4000 -j TROJAN
    $iptables -A INPUT -p TCP -i $ETH_EXTERNA --dport 6000 -j TROJAN
    $iptables -A INPUT -p TCP -i $ETH_EXTERNA --dport 6006 -j TROJAN
    $iptables -A INPUT -p TCP -i $ETH_EXTERNA --dport 16660 -j TROJAN
     
    ### Proteção contra worms ###
    $iptables -A FORWARD -p tcp --dport 135 -i $ETH_INTERNA -j REJECT
     
    ### Loga tentativa de acesso a determinadas portas ###
    $iptables -A INPUT -p tcp --dport 21 -i $ETH_EXTERNA -j LOG --log-level 6 --log-prefix "FIREWALL: ftp: "
    $iptables -A INPUT -p tcp --dport 23 -i $ETH_EXTERNA -j LOG --log-level 6 --log-prefix "FIREWALL: telnet: "
    $iptables -A INPUT -p tcp --dport 25 -i $ETH_EXTERNA -j LOG --log-level 6 --log-prefix "FIREWALL: smtp: "
    $iptables -A INPUT -p tcp --dport 80 -i $ETH_EXTERNA -j LOG --log-level 6 --log-prefix "FIREWALL: http: "
    $iptables -A INPUT -p tcp --dport 110 -i $ETH_EXTERNA -j LOG --log-level 6 --log-prefix "FIREWALL: pop3: "
    $iptables -A INPUT -p udp --dport 111 -i $ETH_EXTERNA -j LOG --log-level 6 --log-prefix "FIREWALL: rpc: "
    $iptables -A INPUT -p tcp --dport 113 -i $ETH_EXTERNA -j LOG --log-level 6 --log-prefix "FIREWALL: identd: "
    $iptables -A INPUT -p tcp --dport 137:139 -i $ETH_EXTERNA -j LOG --log-level 6 --log-prefix "FIREWALL: samba: "
    $iptables -A INPUT -p udp --dport 137:139 -i $ETH_EXTERNA -j LOG --log-level 6 --log-prefix "FIREWALL: samba: "
    $iptables -A INPUT -p tcp --dport 161:162 -i $ETH_EXTERNA -j LOG --log-level 6 --log-prefix "FIREWALL: snmp: "
    $iptables -A INPUT -p tcp --dport 6667:6668 -i $ETH_EXTERNA -j LOG --log-level 6 --log-prefix "FIREWALL: irc: "
    $iptables -A INPUT -p tcp --dport 3128 -i $ETH_EXTERNA -j LOG --log-level 6 --log-prefix "FIREWALL: squid: "
     
    #################################
    #   Libera portas especificas   #
    #################################
     
    $iptables -A INPUT -p TCP -s 192.168.1.0/24 -m multiport --dport 8,11,21,22,3128,25,110,1041,1863,443,80,2222,10000,9024,35000 -j ACCEPT
    $iptables -A OUTPUT -p TCP -d 192.168.1.0/24 -m multiport --sport 8,11,21,22,3128,25,110,1041,1863,443,80,2222,10000,9024,35000 -j ACCEPT
     
    $iptables -A FORWARD -p TCP -s 192.168.1.0/24 -m multiport --dport 8,11,21,22,3128,80,25,110,443,1041,1863,10000,9024,35000 -j ACCEPT
    $iptables -A FORWARD -p TCP -d 192.168.1.0/24 -m multiport --sport 8,11,21,22,3128,80,25,110,443,1041,1863,10000,9024,35000 -j ACCEPT
     
    $iptables -A INPUT -p TCP -s 200.xxx.xxx.x/25 -m multiport --dport 8,11,21,22,3128,25,110,1041,8080,2222,10000,9024,35000 -j ACCEPT
    $iptables -A OUTPUT -p TCP -d 200.xxx.xxx.x/25 -m multiport --sport 8,11,21,22,3128,25,110,1041,8080,2222,10000,9024,35000 -j ACCEPT
     
    $iptables -A INPUT -p TCP -s 200.xxx.xx.xxx/29 -m multiport --dport 8,11,2121,22,3128,25,110,1041,80,2222,10000,9024 -j ACCEPT
    $iptables -A OUTPUT -p TCP -d 200.xxx.xx.xxx/29 -m multiport --sport 8,11,2121,22,3128,25,110,1041,80,2222,1000,9024 -j ACCEPT
     
    ####################
    #   Mascaramento   #
    ####################
     
    $iptables -t nat -A POSTROUTING -p tcp -s 192.168.1.0/24 -d 0/0  --dport 80 -j MASQUERADE
    $iptables -t nat -A POSTROUTING -p tcp -s 192.168.1.0/24 -d 0/0  --dport 25 -j MASQUERADE
    $iptables -t nat -A POSTROUTING -p tcp -s 192.168.1.0/24 -d 0/0  --dport 110 -j MASQUERADE
    $iptables -t nat -A POSTROUTING -p tcp -s 192.168.1.0/24 -d 0/0  --dport 35000 -j MASQUERADE
    $iptables -t nat -A POSTROUTING -p tcp -s 192.168.1.0/24 -d 0/0  --dport 1863 -j MASQUERADE
    $iptables -t nat -A POSTROUTING -p tcp -s 192.168.1.0/24 -d 0/0  --dport 443 -j MASQUERADE
     
     
    echo "Firewall ativo!!"



    Mas minhas estações nao navegam, o q pode estar errado??

  2. #2
    karfax
    Visitante

    Padrão IPTABLES - minhas estaçoes nao navegam...

    Voce deveria ser explicito na origem como foi na hora de restringir:
    -s 0/0 -dport 80 -j ACCEPT
    ps: 0/0 é todos os endereços.

    Sds,

  3. #3

    Padrão IPTABLES - minhas estaçoes nao navegam...

    isso é um firewall? aff

    ja ouviu fala RH-Lokkit?

    t+

  4. #4

    Padrão IPTABLES - minhas estaçoes nao navegam...

    Citação Postado originalmente por karfax
    Voce deveria ser explicito na origem como foi na hora de restringir:
    -s 0/0 -dport 80 -j ACCEPT
    ps: 0/0 é todos os endereços.

    Sds,
    quando vc naum explicita uma sintaxe, ele considera q se aplica a tdos

    se vc naum disser q eh -s 0/0, ele ja sabe q eh pra 0/0

    []'s

  5. #5

    Padrão IPTABLES - minhas estaçoes nao navegam...

    se vc substituir esse monte d masquerade ae do final, por

    $iptables -t nat -A POSTROUTING -s 192.168.1.0/24 -o eth1 -j MASQUERADE

    funciona?

    qq coisa, dah um

    iptables -F
    iptables -t nat -F

    aplica a regra q t passei em cima, e vai adicionando linha por linha do teu firewall, pra ver em qual linha, quando aplicada, dah pau

    []'s

  6. #6
    Visitante

    Padrão IPTABLES - minhas estaçoes nao navegam...

    nao ta funcionando pq ele uso -P OUTPUT DROP eh ainda por cima nao fez uma regra de FORWARD eficiente
    cara na boa apaga tudo eh comeca denovo

  7. #7
    Visitante

    Padrão IPTABLES - minhas estaçoes nao navegam...

    mas assim ele pego o sentido da coisa so q ele entro meio q em "paranoia" nao tem necessidade de se tao restritivo assim... quero dizer... voce pode faze esse controle loco q vc ta querendo ai mas vc tem q ter em mente o "caminho dos pacotes" por exemplo...

    #$iptables -A FORWARD -p tcp ! --syn -m state --state NEW -j DROP
    vc ta dropando conexoes novas...

    #$iptables -A INPUT -p TCP -s 192.168.1.0/24 -m multiport --dport 8,11,21,22,3128,25,110,1041,1863,443,80,2222,10000,9024,35000 -j ACCEPT
    eh depois vc quer liberar as portas... entao vc primeiro dropa seu cliente pra depois dar acesso? nao faz sentido...

    me passa seu email vou te mandar meu script pra vc dar uma estudada

  8. #8
    Visitante

    Padrão IPTABLES - minhas estaçoes nao navegam...

    detalhe peguei a regra errada nao sei se alguem percebeu mas nao eh essa
    #$iptables -A INPUT -p TCP -s 192.168.1.0/24 -m multiport --dport 8,11,21,22,3128,25,110,1041,1863,443,80,2222,10000,9024,35000 -j ACCEPT


    eh essa
    #$iptables -A FORWARD -p TCP -s 192.168.1.0/24 -m multiport --dport 8,11,21,22,3128,80,25,110,443,1041,1863,10000,9024,35000 -j ACCEPT

    oque eh pior ainda pq se vc especifica no INPUT abrir essas portas todas vc esta abrindo todas essas portas no IP do firewall!!!
    INPUT filho so eh pra propria maquina!! tipo assim o INPUT so escuta o IP do firewall eo loopback

  9. #9
    dB
    Visitante

    Padrão IPTABLES - minhas estaçoes nao navegam...

    Citação Postado originalmente por Anonymous
    detalhe peguei a regra errada nao sei se alguem percebeu mas nao eh essa
    #$iptables -A INPUT -p TCP -s 192.168.1.0/24 -m multiport --dport 8,11,21,22,3128,25,110,1041,1863,443,80,2222,10000,9024,35000 -j ACCEPT


    eh essa
    #$iptables -A FORWARD -p TCP -s 192.168.1.0/24 -m multiport --dport 8,11,21,22,3128,80,25,110,443,1041,1863,10000,9024,35000 -j ACCEPT

    oque eh pior ainda pq se vc especifica no INPUT abrir essas portas todas vc esta abrindo todas essas portas no IP do firewall!!!
    INPUT filho so eh pra propria maquina!! tipo assim o INPUT so escuta o IP do firewall eo loopback
    Caros desculpe, nao pude ver o meu proprio post antes, seguinte essa "regra" de bloqear pra depois liberar eu achei mais seguro, gostaria q vc pudesse entao me enviar seu script pra eu dar um olhada.

    [email protected]

    Grato a todas as criticas e sugestoes q foram e q serao dadas...

  10. #10
    felco
    Visitante

    Padrão IPTABLES - minhas estaçoes nao navegam...

    Pega esse eh bem simples:

    -----------------------------------------------
    #!/bin/bash

    #Variaveis
    INT="eth1"
    EXT="eth0"
    LAN="192.168.0.0/16"
    iptables="/sbin/iptables"

    inicia () {
    #Ativa repasse de pacotes
    echo "Iniciando..."
    echo 1 > /proc/sys/net/ipv4/ip_forward

    #Zerar regras
    $iptables -F
    $iptables -X
    $iptables -t nat -F
    $iptables -t nat -X

    #Politca padrao
    $iptables -P INPUT DROP
    $iptables -P FORWARD DROP
    $iptables -P OUTPUT ACCEPT

    #Regras de NAT
    #
    #Regra para o Squid
    #$iptables -t nat -A PREROUTING -i $INT -s 192.168.0.0/16 -p tcp --dport 80 -j REDIRECT --to-port 3128

    #Regras basicas de INPUT
    $iptables -A INPUT -i $INT -s 0/0 -p tcp --dport 22 -j ACCEPT
    $iptables -A INPUT -i $EXT -s 0/0 -p tcp --dport 22 -j ACCEPT
    $iptables -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
    $iptables -A INPUT -i $INT -s $LAN -p tcp --dport 3128 -j ACCEPT
    $iptables -A INPUT -i lo -j ACCEPT
    $iptables -A INPUT -j DROP

    #Regras basicas de FORWARD
    $iptables -A FORWARD -p tcp --dport 135 -j DROP
    $iptables -A FORWARD -p udp -m multiport --dports 137,138 -j DROP
    $iptables -A FORWARD -p tcp --dport 139 -j DROP
    $iptables -A FORWARD -p tcp --dport 445 -j DROP
    $iptables -A FORWARD -p udp --dport 445 -j DROP
    $iptables -A FORWARD -p udp --dport 500 -j DROP
    $iptables -A FORWARD -p tcp --dport 1039 -j DROP
    $iptables -A FORWARD -p udp --dport 1050 -j DROP
    $iptables -A FORWARD -p udp --dport 1065 -j DROP
    $iptables -A FORWARD -i eth1 -o eth0 -j ACCEPT
    $iptables -A FORWARD -i eth0 -o eth1 -j ACCEPT
    $iptables -A FORWARD -j DROP

    #Masquerade
    $iptables -t nat -A POSTROUTING -o $EXT -s $LAN -j MASQUERADE
    }

    para () {
    echo "Parando..."
    $iptables -F
    $iptables -F -t nat
    $iptables -X
    $iptables -X -t nat
    $iptables -P INPUT ACCEPT
    $iptables -P FORWARD ACCEPT
    $iptables -P OUTPUT ACCEPT
    echo 0 > /proc/sys/net/ipv4/ip_forward
    }

    case $1 in

    start)
    inicia
    ;;
    stop)
    para
    ;;
    *)
    echo "Uso: $0 (start|stop)"
    ;;
    esac
    --------------------------------------------

  11. #11
    serhumano
    Visitante

    Padrão Ae

    Oi gente.. desculpe talvez a minha ignorância.. mas to começando agora.. e tenho interesse em aprender sobre segurança...e.. gostaria de saber...
    esse código aí é colocado em q arquivo??

  12. #12

    Padrão IPTABLES - minhas estaçoes nao navegam...

    vota a fala, não adianta vc pega esse script ae do felco e joga na tua maquina, pois cada maquina requer um tipo de segurança, se vc usa adsl ou radio, isso ira fluenciar nas regras, em relação a suas interfaces tmb, então, antes de pega um scrip ao qual vc n tem nem uma noção do vai fazer na sua maquina, leia e estudo sobre o mesmo, no futuro, vc vai sai ganhando..

    t+

  13. #13
    felco
    Visitante

    Padrão IPTABLES - minhas estaçoes nao navegam...

    Eh ta certo, estuda! Isso ai nao eh receita de bolo!

  14. #14
    Aquini
    Visitante

    Padrão IPTABLES - minhas estaçoes nao navegam...

    Outro ponto que vc deve observar é a lógica de processamento do iptables. Se as políticas estão setadas para DROPAR, não há necesidade de ocupar memória criando regras que dropem, somente crie regras de ACCEPT, afinal por POLICY vc está dando DROP em todo o resto. E quando vc tiver duas regras concorrentes prevalecerá a que foi inserida primeiro na respectiva tabela (excetuando políticas) portanto se vc cria uma regra para dropar todo o INPUT e depois várias regras para liberar alguns INPUTS, prevalecerá o DROP...

    Seria interessante q vc mantivesse a POLICY em ACCEPT, e criar no final das regras de cada tabela envolvida no seu firewall uma regra de LOG e outra que DROP todo o resto, assim vc poderá acompanhar o que está tentando ser acessado e poderá ir liberando, se for o caso.

    T+

  15. #15
    serhumano
    Visitante

    Padrão IPTABLES - minhas estaçoes nao navegam...

    Ta certo.. mas por onde eu começo??/
    mas só pra mim saber.. em q arquivo eu colocaria esse script?

  16. #16
    dB
    Visitante

    Padrão IPTABLES - minhas estaçoes nao navegam...

    Citação Postado originalmente por serhumano
    Ta certo.. mas por onde eu começo??/
    mas só pra mim saber.. em q arquivo eu colocaria esse script?
    Recomendo dar uma lida num HOWTO q tem no www.netfilter.org , tem em portugues la no site, de uma olhada vale muito apena.

    Esse script vc poderia colocar num arquivo qualquer, por exemplo, dentro do rc.firewall e pedir pra rodar na inicializacao do Linux, por exemplo no rc.local.

  17. #17
    serhumano
    Visitante

    Padrão ae

    pow valeu.. dei uma lida lá em uma grande parte já.. legal...
    brigadão....

  18. #18
    Aquini
    Visitante

    Padrão IPTABLES - minhas estaçoes nao navegam...

    Vc pode colocá-lo onde quiser... (sem má interpretação por favor...)
    Pode criar um script com o nome de firewall e chamá-lo através do arquivo /etc/rc.local ou pode escrevê-lo dentro do próprio rc.local (argh!) ou faça parecido com o script do felco e coloque ele dentro do diretório /etc/init.d para rodá-lo com o comando service.

    Fica ao seu gosto a implementação, desde que saiba o que implementar e onde implementar...
    E para tanto, o estudo é necessário...

    T+

  19. #19

    Padrão IPTABLES - minhas estaçoes nao navegam...

    Citação Postado originalmente por serhumano
    Ta certo.. mas por onde eu começo??/
    mas só pra mim saber.. em q arquivo eu colocaria esse script?
    d uma olhada nesse projeto

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

    []'s

  20. #20
    felco
    Visitante

    Padrão IPTABLES - minhas estaçoes nao navegam...

    Cara eu postei esse script pra vc estudar ele, apartir do momento que vc entender como os pacotes trafegam pelas chains do iptables vc podera criar as suas proprias regras.
    Entra no link que o demiurgo posto eh um tutorial muito bom mesmo!