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



  1. #1
    pfsandro
    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. Cara... desculpe-me pela minha ignorância, mas eu não entendi como as coisas rodam aí. Dá pra explicar um pouco melhor?



  3. 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
    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. 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.






Tópicos Similares

  1. Sarg não mostra ip dos clientes
    Por jaelcio no fórum Redes
    Respostas: 22
    Último Post: 14-08-2014, 14:28
  2. Respostas: 12
    Último Post: 29-09-2012, 09:49
  3. navegar sem o IP do proxy no navegador???
    Por eduardounai no fórum Servidores de Rede
    Respostas: 6
    Último Post: 26-01-2006, 10:42
  4. IE navega sem o ip do proxy.
    Por webluc no fórum Servidores de Rede
    Respostas: 11
    Último Post: 19-01-2006, 18:26
  5. Mudando IP do Proxy
    Por no fórum Servidores de Rede
    Respostas: 3
    Último Post: 12-06-2003, 15:18

Visite: BR-Linux ·  VivaOLinux ·  Dicas-L