- IPtables + Squid
+ Responder ao Tópico
-
IPtables + Squid
Prezados amigos, estou com o seguinte problema.
No meu firewall se eu boto a seguinte regra: iptables -A FORWARD -m state --state ESTABLISHED,RELATED,NEW -j ACCEPT a internet funciona normalmente pelo proxy. No entanto, todos os meus usuarios conseguem navegar sem usar proxy. Quando eu boto um DROP no FORWARD, todos param de navegar, inclusive pelo proxy. O que preciso e que todos naveguem, porem, somente passando pelo proxy.
Estou anexando a minha regra do iptables pra ver se alguem tem alguma dica.
Qualquer ajuda e bem vinda.
Abraco
Vitor
RULES.SH
#!/bin/bash
. /etc/firewall/functions.sh
INT_IF="eth1"
EXT_IF="eth0"
DMZ_IF1="eth2"
FWIP_INT=`get_ip_int $INT_IF`
FWIP_EXT1=`get_ip_int $EXT_IF`
FWIP_DMZ1=`get_ip_int $DMZ_IF1`
#REDE_INTERNA=`get_network $INT_IF`
#REDE_DMZ=`get_network $DMZ_IF1`
REDE_INTERNA="10.0.0.0/25"
REDE_DMZ="50.0.0.0/24"
#Don't respond to broadcast pings
echo "1" > /proc/sys/net/ipv4/icmp_echo_ignore_broadcasts
#Enable forwarding
echo 1 >/proc/sys/net/ipv4/ip_forward
#Block source routing
echo 0 >/proc/sys/net/ipv4/conf/all/accept_source_route
#Kill timestamps. These have been the subject of a recent bugtraq thread
echo 0 > /proc/sys/net/ipv4/tcp_timestamps
#Kill redirects
echo 0 >/proc/sys/net/ipv4/conf/all/accept_redirects
#Enable bad error message protection
echo 1 > /proc/sys/net/ipv4/icmp_ignore_bogus_error_responses
#Allow dynamic ip addresses
echo "1" > /proc/sys/net/ipv4/ip_dynaddr
# Disable ICMP redirects for IPSEC
echo 0 > /proc/sys/net/ipv4/conf/eth0/send_redirects
echo 0 > /proc/sys/net/ipv4/conf/eth1/send_redirects
echo 0 > /proc/sys/net/ipv4/conf/eth2/send_redirects
echo 0 > /proc/sys/net/ipv4/conf/all/send_redirects
echo 0 > /proc/sys/net/ipv4/conf/default/send_redirects
echo 0 > /proc/sys/net/ipv4/conf/lo/send_redirects
echo 0 > /proc/sys/net/ipv4/conf/eth0/accept_redirects
echo 0 > /proc/sys/net/ipv4/conf/eth1/accept_redirects
echo 0 > /proc/sys/net/ipv4/conf/eth2/accept_redirects
echo 0 > /proc/sys/net/ipv4/conf/all/accept_redirects
echo 0 > /proc/sys/net/ipv4/conf/default/accept_redirects
echo 0 > /proc/sys/net/ipv4/conf/lo/accept_redirects
if [ "$1" == "stop" ]; then
stop_fw stop
exit 0
elif [ "$1" == "clean" ]; then
stop_fw stop
exit 0
else
stop_fw stop
load_modules
fi
iptables -P INPUT DROP
iptables -P OUTPUT ACCEPT
iptables -P FORWARD DROP
# INICIO das Regras de INPUT (Destinadas ao FW)
# Aceita conexoes estabilizadas, originadas do firewall
iptables -A INPUT -i lo -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
#Redireciona conexao para Go-Global
iptables -t nat -A PREROUTING -d $FWIP_EXT1 -p tcp -m state --state NEW --dport 8087 -j DNAT --to-destination 10.0.0.60
iptables -t nat -A PREROUTING -d $FWIP_EXT1 -p tcp -m state --state NEW --dport 491 -j DNAT --to-destination 10.0.0.60
iptables -A FORWARD -p tcp -m state --state NEW -d 10.0.0.60 -m multiport --dport 491,8087 -j ACCEPT
# Libera acesso SSH vindo da xxxx destinado ao firewall
#iptables -A INPUT -p tcp -s x.x.x.x -i $EXT_IF -m state --state NEW --dport 22 -j ACCEPT
# Libera acesso de SP para o RJ
iptables -A INPUT -s x.x.x.x -j ACCEPT
iptables -A OUTPUT -s x.x.x.x -j ACCEPT
# Libera SSH vindo da rede interna destinado ao firewall
iptables -A INPUT -p tcp -s $REDE_INTERNA -i $INT_IF -m state --state NEW --dport 22 -j ACCEPT
# Libera SSH para Internet
iptables -A INPUT -p tcp -s 0/0 --dport 22 -j ACCEPT
#Libera FTP
iptables -A INPUT -p tcp --dport 21 -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT
# Libera acesso ao Proxy
iptables -A INPUT -p tcp -s $REDE_INTERNA -i $INT_IF -m state --state NEW --dport 3128 -j ACCEPT
# Libera VPN(IPSEC) para o Firewall
iptables -A INPUT -p icmp -i ipsec0 -j ACCEPT
iptables -A INPUT -s x.x.x.x -i $EXT_IF -p tcp --dport 500 -j ACCEPT
iptables -A INPUT -s x.x.x.x -i $EXT_IF -p udp --dport 500 -j ACCEPT
iptables -A INPUT -s x.x.x.x -i $EXT_IF -p 50 -j ACCEPT
# Libera VPN(IPSEC) SP para o Firewall
iptables -A INPUT -p icmp -i ipsec0 -j ACCEPT
iptables -A INPUT -s x.x.x.x -i $EXT_IF -p tcp --dport 500 -j ACCEPT
iptables -A INPUT -s x.x.x.x -i $EXT_IF -p udp --dport 500 -j ACCEPT
iptables -A INPUT -s x.x.x.x -i $EXT_IF -p 50 -j ACCEPT
# Libera trafego VPN xxxx
iptables -A FORWARD -s $REDE_INTERNA -d 10.0.0.0/8 -j ACCEPT
iptables -A FORWARD -d $REDE_INTERNA -s 10.0.0.0/8 -j ACCEPT
# Permite toda a rede interna acessar FTP,SSH,TS,SMTP,POP3,AIM,IPSEC na internet
#iptables -A FORWARD -s $REDE_INTERNA -p tcp -i $INT_IF -m state --state NEW -m multiport --dport 20,21,22,25,110,119,443,1111,1723,3389,4343,5190,8080,32768,32769 -j ACCEPT
iptables -A FORWARD -s $REDE_INTERNA -p tcp -i $INT_IF -m state --state NEW -m multiport --dport 20,21,22,25,110,119,443,809 -j ACCEPT
iptables -A FORWARD -s $REDE_INTERNA -p tcp -i $INT_IF -m state --state NEW -m multiport --dport 1111,1723,3389,4343,5190,8080,32768,32769 -j ACCEPT
#iptables -A FORWARD -s $REDE_INTERNA -p udp -i $INT_IF -m state --state NEW -m multiport --dport 20,21,22,25,110,500,1111,3389,4343,4500,5190,8080 -j ACCEPT
iptables -A FORWARD -s $REDE_INTERNA -p udp -i $INT_IF -m state --state NEW -m multiport --dport 20,21,22,25,110,500,809,1111 -j ACCEPT
iptables -A FORWARD -s $REDE_INTERNA -p udp -i $INT_IF -m state --state NEW -m multiport --dport 3389,4343,4500,5190,8080 -j ACCEPT
iptables -A FORWARD -s $REDE_INTERNA -p 50 -i $INT_IF -m state --state NEW -j ACCEPT
iptables -A FORWARD -s $REDE_INTERNA -p 51 -i $INT_IF -m state --state NEW -j ACCEPT
iptables -A FORWARD -s $REDE_INTERNA -i $INT_IF -m state --state NEW -d x.x.x.x -j ACCEPT
# Libera acesso a VPN da xxx
iptables -A FORWARD -s $REDE_INTERNA -p tcp -i $INT_IF -m state --state NEW -d x.x.x.x -j ACCEPT
# Permite toda a rede interna pingar para fora
iptables -A FORWARD -p icmp -s $REDE_INTERNA -i $INT_IF -m icmp --icmp-type echo-request -j ACCEPT
# Permite Servidor na DMZ Acessar Oracle Interno
# change iptables -A FORWARD -s 50.0.0.7 -p tcp -i $DMZ_IF1 -m state --state NEW --dport 1024:65535 -j ACCEPT
iptables -A FORWARD -s 50.0.0.8 -p tcp -i $DMZ_IF1 -m state --state NEW --dport 1024:65535 -j ACCEPT
# Servidor DNS INTERNO 1(AD) e 2(FS) Acessa DNS
iptables -A FORWARD -s 10.0.0.110 -p udp -i $INT_IF -m state --state NEW --dport 53 -j ACCEPT
iptables -A FORWARD -s 10.0.0.110 -p tcp -i $INT_IF -m state --state NEW --dport 53 -j ACCEPT
# liberando acesso para ao Servidor Data Center
iptables -A FORWARD -d x.x.x.x -j ACCEPT
# Servidor AD Acessa xxx
iptables -A FORWARD -s 10.0.0.110 -p udp -i $INT_IF -m state --state NEW --dport 123 -j ACCEPT
# Executa NAT para rede interna acessar os protocolos discriminados anteriormente
iptables -t nat -A POSTROUTING -s $REDE_INTERNA -o $EXT_IF ! -d 10.0.0.138/25 -j SNAT --to $FWIP_EXT1
iptables -t nat -A POSTROUTING -s $REDE_DMZ -o $EXT_IF ! -d 10.0.0.138/25 -j SNAT --to $FWIP_EXT1
# Inicios das regras de PREROUTING (redirecionamentos)
# Acesso aos servidores CITRIX na DMZ
# Servidor 1 (Inclui Tomcat)
#iptables -t nat -A PREROUTING -d $FWIP_EXT1 -p tcp -m state --state NEW --dport 8084 -j DNAT --to-destination 50.0.0.6
iptables -t nat -A PREROUTING -d $FWIP_EXT1 -p tcp -m state --state NEW --dport 1494 -j DNAT --to-destination 50.0.0.6
iptables -t nat -A PREROUTING -d $FWIP_EXT1 -p tcp -m state --state NEW --dport 8080 -j DNAT --to-destination 50.0.0.6
iptables -t nat -A PREROUTING -d $FWIP_EXT1 -p tcp -m state --state NEW --dport 80 -j DNAT --to-destination 50.0.0.7
iptables -t nat -A PREROUTING -d $FWIP_INT -p tcp -m state --state NEW --dport 80 -j DNAT --to-destination 50.0.0.7
#iptables -A FORWARD -p tcp -m state --state NEW -d 50.0.0.6 -m multiport --dport 1494,1495,8084,8080 -j ACCEPT
iptables -A FORWARD -p tcp -m state --state NEW -d 50.0.0.6 --dport 100:8100 -j ACCEPT
iptables -A FORWARD -p tcp -m state --state NEW -d 50.0.0.7 --dport 80:8100 -j ACCEPT
# Servidor 2
#iptables -t nat -A PREROUTING -d $FWIP_EXT1 -p tcp -m state --state NEW --dport 8088 -j DNAT --to-destination 10.0.0.8
#iptables -t nat -A PREROUTING -d $FWIP_EXT1 -p tcp -m state --state NEW --dport 1495 -j DNAT --to-destination 10.0.0.8
#iptables -t nat -A PREROUTING -d $FWIP_EXT1 -p tcp -m state --state NEW --dport 8084 -j DNAT --to-destination 10.0.0.8
#iptables -A FORWARD -p tcp -m state --state NEW -d 10.0.0.8 -m multiport --dport 1495,8088 -j ACCEPT
iptables -t nat -A PREROUTING -d $FWIP_EXT1 -p tcp -m state --state NEW --dport 8088 -j DNAT --to-destination 10.0.0.156
iptables -t nat -A PREROUTING -d $FWIP_EXT1 -p tcp -m state --state NEW --dport 1495 -j DNAT --to-destination 10.0.0.156
iptables -t nat -A PREROUTING -d $FWIP_EXT1 -p tcp -m state --state NEW --dport 8084 -j DNAT --to-destination 10.0.0.156
iptables -A FORWARD -p tcp -m state --state NEW -d 10.0.0.156 -m multiport --dport 1495,8088 -j ACCEPT
-
Como você bloqueou no forward?? Você tentou bloquar o trafego com destino a porta 80 na tabela forward?
Tenta e posta o resultado ai...
-
cara.. voce precisa refazer seu firewall, ta uma bagunça.. muita regra que nao precisa.. etc etc
comece lendo um excelente tutorial de iptables:
Firewall com IPTABLES - by Eriberto
-
Como disse o alexandre, refazer o seu firewall seria uma excelente idéia.
Mas, tratando diretamente o seu problema, eu não vi nenhuma regra liberando o acesso à porta 80 saindo do firewall/squid (iptables -A OUTPUT -p tcp --dport 80 -j ACCEPT), assim o seu firewall não consegue navegar.
Outra coisa, se você bloqueia a porta 80 no forward, você bloqueia a conexão da lo para a eth0 e aí o proxy não navega também.
-
o firewall bagunça e lei rs...
agora pq vc não manda um redirect da porta 80 pro seu proxy ???? acredito q isso vai resolver o seu problema
se vc nao quiser q naveguem fora do proxy vc mete um drop na porta 80