+ Responder ao Tópico



  1. #1
    pfsandro
    Visitante

    Padrão micro externo mostra ip do proxy

    olá
    Sou novato no forum e estou tendo um problema se alguem já tiver pego alguma coisa e puder me ajudar agradeço.

    Tenho na empresa a seguinte situação.
    um proxy squid e um firewall rodando em uma maquina.
    e tenho um servidor web rodando numa segunda máquina.
    todas as requisições a porta 80 recebidas pelo proxy são redirecionadas para o servidor web.
    até ai sem problema eu consigo acessar externamente a página sem problema nenhum.
    No entanto neste servidor roda um sistema em php que pega o numero IP da máquina cliente para autenticar.

    internamente sem problema ele pega o ip das maquinas locais, mas externamente ele sempre mostra o ip do proxy.

    e não consegui solucionar o problema se alguem tiver alguma dica agradeço.

    o meu firewall é esse




    OPCOES DE CONFIGURACAO
    #
    # INTERNET - IP DA PLACA EXTERNA
    #
    INET_IP="200.18.97.200"
    INET_IFACE="eth0"
    #
    # REDE LOCAL - RANGE DE IP DA PLACA INTERNA
    #
    LAN_IP="192.168.100.1"
    LAN_IP_RANGE="192.168.100.0/24"
    LAN_BCAST_ADRESS="192.168.100.255"
    LAN_IFACE="eth1"
    #
    # LOCAL HOST
    #
    LO_IFACE="lo"
    LO_IP="127.0.0.1"
    #
    # CONFIGURACAO DO IPTABLES
    #
    IPTABLES="/sbin/iptables"
    #
    # PRECISA PARA INICIACAO DOS MODULOS
    #
    /sbin/depmod -a
    #
    # CARREGA MODULOS
    #
    /sbin/modprobe ip_tables
    /sbin/modprobe ip_conntrack
    /sbin/modprobe ip_conntrack_ftp
    /sbin/modprobe ip_nat_ftp
    /sbin/modprobe iptable_filter
    /sbin/modprobe iptable_mangle
    /sbin/modprobe iptable_nat
    /sbin/modprobe ipt_LOG
    /sbin/modprobe ipt_limit
    /sbin/modprobe ipt_state
    #
    # CONFIGURACAO DO PROC
    #
    echo "1" > /proc/sys/net/ipv4/ip_forward
    #
    # POLITICAS DE SEGURANCA
    #
    $IPTABLES -P INPUT ACCEPT
    $IPTABLES -P OUTPUT DROP
    $IPTABLES -P FORWARD ACCEPT
    #
    # REGRA DE PACOTES TCP DESCARTADOS.
    #
    $IPTABLES -N bad_tcp_packets
    #
    # REGRAS SEPARADAS POR PROTOCOLO ICMP, TCP and UDP to traverse
    #
    $IPTABLES -N allowed
    $IPTABLES -N icmp_packets
    $IPTABLES -N tcp_packets
    $IPTABLES -N udpincoming_packets
    #
    # Regras de ICMP
    #
    $IPTABLES -A icmp_packets -p ICMP -s 0/0 --icmp-type 8 -j ACCEPT
    $IPTABLES -A icmp_packets -p ICMP -s 0/0 --icmp-type 11 -j ACCEPT
    #
    # PORTAS
    ###### server web ##################
    #$IPTABLES -t nat -A PREROUTING -s 0/0 -d $INET_IP -p tcp --dport 80 -j DNAT --to 192.168.100.10

    #*************************************************************************
    $IPTABLES -A tcp_packets -p TCP -s 0/0 --dport 25 -j allowed
    $IPTABLES -A tcp_packets -p TCP -s 192.168.100.0/24 --dport 21 -j allowed
    $IPTABLES -A tcp_packets -p TCP -s 192.168.100.0/24 --dport 25 -j allowed
    $IPTABLES -A tcp_packets -p TCP -s 192.168.100.0/24 --dport 80 -j allowed
    $IPTABLES -A tcp_packets -p TCP -s 192.168.100.0/24 --dport 110 -j allowed
    $IPTABLES -A tcp_packets -p TCP -s 192.168.100.0/24 --dport 22 -j REJECT
    #
    #
    $IPTABLES -A udpincoming_packets -p UDP -s 192.168.100.0/24 --source-port 53 -j ACCEPT
    #
    # PACOTES TCP REJEITADOS
    #
    $IPTABLES -A INPUT -p tcp -j bad_tcp_packets
    #
    # REGRAS DE PACOTES RECEBIDOS DA INTERNET
    #
    $IPTABLES -A INPUT -p ICMP -i $INET_IFACE -j icmp_packets
    $IPTABLES -A INPUT -p TCP -i $INET_IFACE -j tcp_packets
    $IPTABLES -A INPUT -p UDP -i $INET_IFACE -j udpincoming_packets
    #
    # REGRAS ESPECIAIS PARA REDE NAO PARTINDO DA INTERNET
    #
    $IPTABLES -A INPUT -p ALL -i $LAN_IFACE -d $LAN_BCAST_ADRESS -j ACCEPT
    $IPTABLES -A INPUT -p ALL -i $LO_IFACE -s $LO_IP -j ACCEPT
    $IPTABLES -A INPUT -p ALL -i $LO_IFACE -s $LAN_IP -j ACCEPT
    $IPTABLES -A INPUT -p ALL -i $LO_IFACE -s $INET_IP -j ACCEPT
    $IPTABLES -A INPUT -p ALL -i $LAN_IFACE -s $LAN_IP_RANGE -j ACCEPT
    $IPTABLES -A INPUT -p ALL -d $INET_IP -m state --state ESTABLISHED,RELATED -j ACCEPT
    #
    # PACOTES TCP DESCARTADOS
    #
    $IPTABLES -A FORWARD -p tcp -j bad_tcp_packets
    #
    # PACOTES ACEITOS NO REENVIO
    #
    $IPTABLES -A FORWARD -i $LAN_IFACE -j ACCEPT
    $IPTABLES -A FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT
    #PPP
    # PACOTES REJEITADOS NA SAIDA
    #
    $IPTABLES -A OUTPUT -p tcp -j bad_tcp_packets
    #
    # Special OUTPUT rules to decide which IP's to allow.
    #
    $IPTABLES -A OUTPUT -p ALL -s $LO_IP -j ACCEPT
    $IPTABLES -A OUTPUT -p ALL -s $LAN_IP -j ACCEPT
    $IPTABLES -A OUTPUT -p ALL -s $INET_IP -j ACCEPT
    #
    # REDIRECT PROXY
    #
    $IPTABLES -t nat -A PREROUTING -s $LAN_IP_RANGE -d 192.168.100.0/24 -p tcp -m tcp --dport 80 -j REDIRECT --to-port 3128
    $IPTABLES -t nat -A POSTROUTING -d 0/0 -j MASQUERADE
    #
    # BLOQUEIO DE ACESSO EXTERNO VIA PROXY
    #
    $IPTABLES -A INPUT -s 0.0.0.0 -d $INET_IP -p tcp --dport 3128 -j DROP
    $IPTABLES -A INPUT -s 0.0.0.0 -d $INET_IP -p tcp --dport 80 -j DROP
    #

  2. #2

    Padrão Re: micro externo mostra ip do proxy

    Cara... desculpe-me pela minha ignorância, mas eu não entendi como as coisas rodam aí. Dá pra explicar um pouco melhor?

  3. #3

    Padrão Re: micro externo mostra ip do proxy

    esse nao eh um problema no linux nem no firewal.. etc etc..

    isso eh na programação do seu sistema em php

    a variavel $_SERVER["REMOTE_ADDR"] mostra o ip de conexao..

    caso tenha um proxy... o ip REAL do usuario eh carregado na variavel:

    $_SERVER["X_FORWARDED_FOR"]

    lembrando q o proxy de quem for acessar o sistema precisa estar habilitado para enviar o ip real do usuario no cabeçalho (geralmente isso eh padrao) !!

    uma regra simples para detectar isso em php eh fazer o seguinte:


    if (isset($_SERVER["X_FORWARDED_FOR"])) {
    echo "Conexao via proxy detectada";
    echo "Servidor: " . $_SERVER["REMOTE_ADDR"];
    echo "IP: " . $_SERVER["X_FORWARDED_FOR"];
    }
    else {
    echo "Conexao sem proxy detectada";
    echo "IP: " . $_SERVER["REMOTE_ADDR"];
    }

    eh bem simples

  4. #4
    pfsandro
    Visitante

    Padrão Re: micro externo mostra ip do proxy

    olá xstefanox.
    Desculpe a minha ignorância talvez não tenha me expressado corretamente.

    deixa eu tentar de novo.

    tenha na minha empresa um firewall+squid rodando no redhat9. (eth0 201.x.x.x eth1 192.168.x.1)
    tenho tambem um 2003 server rodando servidor web. (192.168.x.10)
    nesse servidor roda mysql e php.
    Criei uma regra para direcionar todas as solicitações ao servidor web para ele no firewall.

    A principio tudo funciona sem problemas. eu consigo internamente e externamente acessar o servidor web.

    No entanto estou rodando um sistema em php nesse servidor. e existira nesse sistema uma implementação que só irá permitir o acesso se o IP for pré determinados.
    quanto a isso sem problemas também.

    O que ocorre é que em qualquer lugar que me conecto a esse servidor ao inves de aparecer o ip do micro local (existe um script de php que detecta o ip) ele mostra somente o ip do proxy tipo 192.168.x.1.

    e não é o php pois quando tiro o firewall e ligo o servidor www direto no modem ads para que ele faça o roteamento funciona sem problemas.

    acho que é alguma coisa no meu firewall. mas não consegui resolver.

    espero ter sido mais claro agora.
    vleu por enquanto. grde abraço

  5. #5

    Padrão Re: micro externo mostra ip do proxy

    Nossa cara, isso é bizarro.
    Eu acho que do firewall não é porque quando se faz NAT, não há mudança no cabeçalho do pacote, então ele deveria ler a conexão como vinda direto do IP da internet. Passa um sniffer pra saber como estão sendo roteados os pacotes no seu Windows 2003.

  6. #6
    pfsandro
    Visitante

    Padrão Re: micro externo mostra ip do proxy

    OK cara Resolvido erro era problema no meu redirecionamento.
    a linha
    $iptables -t nat -A postrouting -o eth1 -j masquerade
    mudei para
    $iptables -t nat -A postrouting -i eth1 -j masquerade
    e funcionou.
    valeuu
    muito obrigado a todos.
    grande abraço.