+ Responder ao Tópico



  1. #1
    cag
    Visitante

    Padrão problema firewall

    Tenho uma rede, com os seguintes ips: 192.168.254.1 até 192.168.254.12

    Código :
    #!/bin/bash
    IF_EXTERNA="eth0";
    IF_INTERNA="eth1";
     
    REDE_INTERNA="192.168.254.0/24"
     
    iptables -F
    iptables -Z
    iptables -X
    iptables -F -t nat
    iptables -X -t nat
    iptables -F -t mangle
    iptables -X -t mangle
     
    echo 1 > /proc/sys/net/ipv4/ip_forward
    echo 1 > /proc/sys/net/ipv4/ip_dynaddr
     
    iptables -P FORWARD DROP
    iptables -P INPUT DROP
    iptables -P OUTPUT ACCEPT
     
    iptables -t mangle -A OUTPUT -o $IF_EXTERNA -p tcp -m multiport --dports 22,8080 -j TOS --set-tos 0x10
     
    iptables -A INPUT -i lo -j ACCEPT
    iptables -A INPUT -i $IF_INTERNA -j ACCEPT
    iptables -A FORWARD -i $IF_INTERNA -j ACCEPT
     
    iptables -A INPUT -i $IF_EXTERNA -p tcp --dport 777 -j ACCEPT
     
    iptables -t nat -A PREROUTING -i $IF_INTERNA -p tcp --dport 80 -j REDIRECT --to-port 3128
    iptables -t nat -A PREROUTING -i $IF_EXTERNA -p tcp --dport 8080 -j REDIRECT --to-port 80
    iptables -t nat -A POSTROUTING -s $REDE_INTERNA -j MASQUERADE

    Não funciona, a porta 8080 não redireciona tb.

    Tem algo com 192.168.254.0/24 ?

  2. #2

    Padrão problema firewall

    bora com calma, olha so



    iptables -A INPUT -i $IF_INTERNA -j ACCEPT
    iptables -A FORWARD -i $IF_INTERNA -j ACCEPT

    retira imediatamente essas regras, com elas vc ta liberando tudo pra tudo, seu fw ta mais furado q ... bom..

    essa regra

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


    ela ta certa, mas vc precisa liberar na forward a porta 3128


    iptables -A FORWARD -i $IF_INTERNA -p tcp --dport 3128 -J ACCEPT



    iptables -t nat -A PREROUTING -i $IF_EXTERNA -p tcp --dport 8080 -j REDIRECT --to-port 80


    essa regra a cima eu n entendir, vc quer jogar a 8080 pra porta 80?

    isso ta sem nexo..

    abraço



  3. #3
    cag
    Visitante

    Padrão problema firewall

    Já estou liberando tudo na forward...

    é pra ficar aberto mesmo, só para teste.


    essa regra a cima eu n entendir, vc quer jogar a 8080 pra porta 80?

    isso ta sem nexo..

    é para quando alguém de fora, digitar meu IP host:8080, redirecionar para meu servidor http, na porta 80.

  4. #4

    Padrão problema firewall

    Citação Postado originalmente por cag
    Já estou liberando tudo na forward...

    é pra ficar aberto mesmo, só para teste.


    essa regra a cima eu n entendir, vc quer jogar a 8080 pra porta 80?

    isso ta sem nexo..

    é para quando alguém de fora, digitar meu IP host:8080, redirecionar para meu servidor http, na porta 80.
    .

    entao libere a 8080 na forward


    iptables -A FORWARD -i $IF_EXTERNA -d ipdamaquinaqtacomweb -p tcp --dport 8080 --syn -j ACCEPT



  5. #5
    cag
    Visitante

    Padrão problema firewall

    eu tentei já, simplesmente trava tudo, nem a rede funciona.

    Mas se eu colocar o -P INPUT ACCEPT, funciona

  6. #6
    cag
    Visitante

    Padrão problema firewall

    opa, agora que olhei direito, realmente esqueci de liberar a forward, para a IF_EXTERNA...

    mas porque será que a rede aqui trava tudo, se o INPUT estiver como DROP.



  7. #7

    Padrão problema firewall

    Citação Postado originalmente por cag
    opa, agora que olhei direito, realmente esqueci de liberar a forward, para a IF_EXTERNA...

    mas porque será que a rede aqui trava tudo, se o INPUT estiver como DROP.

    vc tem q ver oq a sua rede interna depende do fw, pois a chain INPUT referece aos pacotes que vem da internet com destino ao seu fw ou os pacotes que sai da sua rede interna com destino ao fw, veja oq vc roda no fw que sua rede utiliza e libere na INPUT


    abraço

  8. #8
    cag
    Visitante

    Padrão problema firewall

    é que eu tenho um firewall, muito parecido e funciona tudo.

    Mas agora que eu saquei, é que neste firewall o FORWARD, está accept.

    Se eu colocar o forward para ACCEPT vai funcionar tudo.


    olha este
    Código :
    #!/bin/bash
     
    # Local para o executavel do IPTables
    IPT=`which iptables`;
     
    # Interface da rede INTERNA
    IF_INTERNA="eth1";
     
    # Interface da rede EXTERNA
    IF_EXTERNA="eth0";
     
    # Definição da rede interna
    REDE_INTERNA="192.168.254.0/24"
     
     
    fw_start()
    {
      #ativa o roteamento dinamico
      echo 1 > /proc/sys/net/ipv4/ip_forward
      echo 1 > /proc/sys/net/ipv4/ip_dynaddr
     
      $IPT -t filter -P INPUT       DROP
      $IPT -t filter -P FORWARD     DROP
      $IPT -t filter -P OUTPUT      ACCEPT
      $IPT -t nat    -P PREROUTING  ACCEPT
      $IPT -t nat    -P POSTROUTING ACCEPT
      $IPT -t nat    -P OUTPUT      ACCEPT
      $IPT -t mangle -P PREROUTING  ACCEPT
      $IPT -t mangle -P POSTROUTING ACCEPT
      $IPT -t mangle -P OUTPUT      ACCEPT
      $IPT -t mangle -P INPUT       ACCEPT
      $IPT -t mangle -P FORWARD     ACCEPT
     
      # Cria chain com regras de segurança
      $IPT -N BLOCK
      $IPT -A BLOCK -p icmp --icmp-type echo-request -j DROP
      $IPT -A BLOCK -p icmp --icmp-type echo-request -m limit --limit 1/s -j ACCEPT
      $IPT -A BLOCK -p tcp -m limit --limit 1/s -j ACCEPT
      $IPT -A BLOCK -p tcp --tcp-flags SYN,ACK,FIN,RST SYN -m limit --limit 1/s -j ACCEPT
      $IPT -A BLOCK -m unclean -j DROP
      $IPT -A BLOCK -m state --state ESTABLISHED,RELATED -j ACCEPT
      $IPT -A BLOCK -j DROP
      # Muda a prioridade dos pacotes (Type Of Service) para agilizar as coisas
      $IPT -t mangle -A OUTPUT -o $IF_EXTERNA -p tcp -m multiport --dports 22,8080 -j TOS --set-tos 0x10
     
      $IPT -t filter -A INPUT   -i lo -j ACCEPT
      $IPT -t filter -A INPUT   -i $IF_INTERNA -j ACCEPT
      $IPT -t filter -A FORWARD -i $IF_INTERNA -j ACCEPT
     
      $IPT -t nat -A PREROUTING -i $IF_INTERNA -p tcp --dport 80 -j REDIRECT --to-port 3128
     
     
      $IPT -t filter -A INPUT -i $IF_EXTERNA -p tcp -m multiport --dports 22-j ACCEPT
      $IPT -t nat -A PREROUTING -i $IF_EXTERNA -p tcp --dport 8080 -j REDIRECT --to-port 80
     
      #Libera a conexao para a rede interna
      $IPT -t nat -A POSTROUTING -s $REDE_INTERNA -j MASQUERADE
     
      $IPT -A INPUT -j BLOCK
      $IPT -A  FORWARD -j BLOCK
    }
     
    fw_stop()
    {
      $IPT -t filter -P INPUT       ACCEPT
      $IPT -t filter -P FORWARD     ACCEPT
      $IPT -t filter -P OUTPUT      ACCEPT
      $IPT -t nat    -P PREROUTING  ACCEPT
      $IPT -t nat    -P POSTROUTING ACCEPT
      $IPT -t nat    -P OUTPUT      ACCEPT
      $IPT -t mangle -P PREROUTING  ACCEPT
      $IPT -t mangle -P POSTROUTING ACCEPT
      $IPT -t mangle -P OUTPUT      ACCEPT
      $IPT -t mangle -P INPUT       ACCEPT
      $IPT -t mangle -P FORWARD     ACCEPT
      $IPT -t filter -F
      $IPT -t nat    -F
      $IPT -t mangle -F
      $IPT -t filter -X
      $IPT -t nat    -X
      $IPT -t mangle -X
      $IPT -t filter -Z
      $IPT -t nat    -Z
      $IPT -t mangle -Z
    }
     
    fw_usage()
    {
      echo
      echo "$0 (start | stop | restart | clear)"
      echo
      echo "start   - Ativa o firewall"
      echo "stop    - Desativa o firewall"
      echo "restart - Reativa o firewall"
      echo "clear   - Limpa os contatores"
    }
     
    fw_clear()
    {
      $IPT -t filter -Z
      $IPT -t nat    -Z
      $IPT -t mangle -Z
    }
     
    case $1 in
     
      start)
         fw_start;
      ;;
     
      stop)
         fw_stop;
      ;;
     
      restart)
        fw_stop;
        fw_start;
      ;;
     
      clear)
         fw_clear;
      ;;
      *)
         fw_usage;
         exit;
     
      ;;
    esac