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
#
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?
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 :)
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
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.
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.