Proxy transparente

1. Proxy transparente

fernando rodrigues da silva
magubuntu

(usa Ubuntu)

Enviado em 26/12/2013 - 10:36h

Olá pessoal, estou preparando um servidor Debian 7, com squid3 e firewall iptables. O squid3 já está instalado e configurado, estou configurando o iptables. Já compartilhei a internet e está funcionando, porém, apenas setando o proxy e a porta no browser, ativei o proxy transparente colocando a linha http_port 3128 transparent no squid.conf, mas ainda não funciona. Segue as minhas regras do firewall:

#!/bin/sh
#
firewall_start(){

echo ""
echo " Iniciando as Regras do Firewall ..............."
echo ""


echo " Limpando as Regras Anteriores .......... [ OK ]"
echo ""

iptables -F INPUT
iptables -F OUTPUT
iptables -F FORWARD
iptables -t filter -F
iptables -t nat -F
iptables -t mangle -F
iptables -t raw -F

#### REGRAS DE LOG ####
iptables -A OUTPUT -p tcp --dport 80 -j LOG

#lIBERA PINGS
iptables -I INPUT -p icmp -j ACCEPT
iptables -I OUTPUT -p icmp -j ACCEPT

#Libera SSH
iptables -A INPUT -p tcp -s 10.1.4.15 --dport 7654 -j ACCEPT
iptables -A INPUT -p tcp -s 10.1.4.170 --dport 7654 -j ACCEPT
iptables -A OUTPUT -p tcp -d 10.1.4.15 --sport 7654 -j ACCEPT
#iptables -A OUTPUT -p tcp -d 10.1.4.170 --sport 7654 -j ACCEPT

echo " Ativando o Proxy Transparente SQUID .......... [ OK ]"
iptables -t nat -A PREROUTING -i eth1 -p tcp --dport 80 -j REDIRECT --to-port 3128
iptables -A INPUT -p tcp --dport 3128 -j ACCEPT
iptables -A INPUT -p udp --dport 3128 -j ACCEPT

iptables -A INPUT -p ALL -i lo -s ip_ext -j ACCEPT
iptables -A OUTPUT -p ALL -s ip_ext -j ACCEPT
iptables -t nat -A POSTROUTING -s 10.1.4.0/24 -o eth0 -d 0/0 -j SNAT --to-source ip_ext

echo " Ativando o IP forward .......... [ OK ]"
echo "1" > /proc/sys/net/ipv4/ip_forward
echo "1" > /proc/sys/net/ipv4/conf/all/rp_filter
echo "1" > /proc/sys/net/ipv4/conf/all/proxy_arp
echo "1" > /proc/sys/net/ipv4/ip_dynaddr

#echo 1 > /proc/sys/net/ipv4/ip_forward
#modprobe iptable_nat

#libera pacotes de retorno da internet
iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A OUTPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT

echo " Liberando a interface de loopback .......... [ OK ]"
iptables -A INPUT -i lo -j ACCEPT

echo " Firewall em operacao .......... [ OK ]"
sleep 1

echo " Definindo Politicas Padrao ..............."
echo ""
iptables -P INPUT DROP
iptables -P OUTPUT DROP
iptables -P FORWARD DROP

}
firewall_stop(){

iptables -F
iptables -X
iptables -P INPUT ACCEPT
iptables -P FORWARD ACCEPT
iptables -P OUTPUT ACCEPT

}
case "$1" in

"start")
firewall_start
;;

"stop")
firewall_stop
echo " Desativando todas as Regras do Firewall .......... [ OK ]"
sleep 1
;;

status)
echo -e " ============================== Table Filter ============================ ";
iptables -t filter -L -n
echo -e " ============================== Table Nat ============================= ";
iptables -t nat -L -n
echo -e " ============================== Table Mangle =========================== ";
iptables -t mangle -L -n
echo -e " ============================== Table Raw ============================ ";
iptables -t raw -L -n
;;

"restart")
echo " Reativando todas as Regras do Firewall .......... [ OK ]"
sleep 1
firewall_stop; firewall_start
;;

*)
iptables -L -n

esac



  


2. Re: Proxy transparente

Estefanio Brunhara
stefaniobrunhara

(usa CentOS)

Enviado em 26/12/2013 - 11:06h


echo " Ativando o Proxy Transparente SQUID .......... [ OK ]"

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




Se a eth1 for a placa da conexão de internet não funciona! ethX deve ser a eth da lan OK !



3. Re: Proxy transparente

fernando rodrigues da silva
magubuntu

(usa Ubuntu)

Enviado em 26/12/2013 - 11:23h

eth1 = interface lan
eth0 = interface wan

Valeu!


4. Re: Proxy transparente

Junior Rocha
junior

(usa Ubuntu)

Enviado em 26/12/2013 - 17:54h


Quando roda o processo do squid dá tudo certo?Tente rodar em modo debug: /usr/bin/squid -D.

Se você comentar a linha:
iptables -t nat -A PREROUTING -i eth1 -p tcp --dport 80 -j REDIRECT --to-port 3128

e adicionar:
iptables -t nat -A PREROUTING -i eth1 -p tcp --dport 80 -j ACCEPT

Consegue navegar na internet (porta 80)?

Att.



5. Re: Proxy transparente

Natanael Henrique
natanaelhenrique

(usa Arch Linux)

Enviado em 26/12/2013 - 18:12h

Faltou você tratar da resolução de nomes. Sem essa regra o DNS não vai funcionar.


6. Re: Proxy transparente

Carlos Alberto de Souza Barbosa
souzacarlos

(usa Outra)

Enviado em 26/12/2013 - 18:24h

Boa tarde, seguinte... vc já tentou o mais simples primeiro? quero dizer remover todas essas regras deixar as POLICE tudo ACCEPT e antes de tudo setar o proxy no navegador e ver se vai funcionar. Caso não, seria uma boa tentar ai sim partiria para o próximo passo que é fazer o REDIRECT.

Obs: Uma coisa de cada vez, primeiro o mais simples!!!!

aguardo.


7. Re: Proxy transparente

Buckminster
Buckminster

(usa Debian)

Enviado em 27/12/2013 - 05:14h

iptables -P OUTPUT DROP

Coloque está regra acima como ACCEPT e deixa as regras INPUT e FORWARD como DROP.

No Squid, se for versão 3.0 e abaixo, o certo é transparent, se for versão 3.1 e acima, o certo é intercept:

http_port 3128 intercept

Execute squid -v ou squid --version ou squid3 -v ou squid3 --version e veja a versão do teu Squid.

Faça as alterações, reinicie o Squid e o Iptables e teste a navegação sem setar o proxy nos navegadores.

E veja que aqui nessa linha, por exemplo:

iptables -A OUTPUT -p ALL -s ip_ext -j ACCEPT << essa linha aqui não está liberando a saída (OUTPUT),

você colocou uma variável ip_ext, mas não encontrei no teu script a declaração dessa variável. Além disso toda variável no script do Iptables, quando chamada, deve vir precedida do sinal $, assim

iptables -A OUTPUT -p ALL -s $ip_ext -j ACCEPT

Num script simples como o teu não tem necessidade de setar variáveis, mas caso queira fazer, primeiro declare elas no início do script, por exemplo:

ip_ext="192.168.1.1"

e depois chame ela assim no meio da regra

$ip_ext

E essa regra

#### REGRAS DE LOG ####

iptables -A OUTPUT -p tcp --dport 80 -j LOG

deve ficar no final do script, aliás, todas as regras de logs devem ficar no final.

E declare sempre as políticas padrões logo após as regras de limpeza, no início do script.

Nem sei como está funcionando o compartilhamento com esse script, você tem certeza que a internet está chegando na rede?






Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts