Squid em Modo Transparente

Iniciado por joaotime, 20 de Janeiro de 2014, 08:46

tópico anterior - próximo tópico

joaotime

Ola Pessoal estou usando Ubutun 13.10 com squid 3.3.8 ate agora tudo bem funcionando normal com as configurações abaixo , porem quando passa ele para modo transparente ele começa a não checar mais os sites e da erro numa url expecifica segue meu squid,conf


# Nome do servidor
visible_hostname ServidorProxy

# Cache
cache_mem 300 MB
maximum_object_size_in_memory 32 KB
maximum_object_size 1024 MB
minimum_object_size 0 KB
cache_swap_low 90
cache_swap_high 95
cache_dir ufs /var/spool/squid3 100 16 256
# Logs de acesso
access_log /var/log/squid3/access.log squid

#coloque seu email
cache_mgr suporteti@martfer.com.br

# Regras acl padrão
acl SSL_ports port 443
acl Safe_ports port 80   # http
acl Safe_ports port 21   # ftp
acl Safe_ports port 443  # https
acl Safe_ports port 70   # gopher
acl Safe_ports port 210  # wais
acl Safe_ports port 280  # http-mgmt
acl Safe_ports port 488  # gss-http
acl Safe_ports port 591  # filemaker
acl Safe_ports port 777  # multiling http
acl Safe_ports port 901  # swat
acl Safe_ports port 1025-65535 # portas altas
acl CONNECT method CONNECT



# Permissões e bloqueios padrão
http_access deny !Safe_ports
http_access deny CONNECT !SSL_ports
# Permissões e bloqueios padrão
http_access deny !Safe_ports
http_access deny CONNECT !SSL_ports

# Bloqueio de sites por URL
acl ipliberados url_regex -i "/etc/configuracao/ipliberado"
http_access allow ipliberados
acl sites_proibidos url_regex -i "/etc/configuracao/sites_bloqueados"
http_access deny sites_proibidos
# Bloqueio de downloads por extensão

acl downloads_proibidos url_regex -i \.exe \.torrent \.avi

http_access deny downloads_proibidos


# Permisão rede local e servidor

acl redelocal src 192.168.0.0/24
http_access allow localhost
http_access allow redelocal
# Bloqueio de usuarios fora da rede
http_access deny all


estou colocando ele assim em modo transparente

http_port 3128 transparente

e adicionando a regra ao firewall assim

$IPT -t nat -A PREROUTING -i $LAN -p tcp --dport 80 -j REDIRECT --to-port 3128

se alguns dos amigos puder me ajudar fico grato

King11

#1
estou colocando ele assim em modo transparente

http_port 3128 transparente


O correto é transparent


Veja se ajuda!
http://www.smartdicas.com/tutoriais-linux/instalacao-e-configuracao-o-squid3-transparent-no-ubuntu-13-10/

joaotime

descupe estava como transparent eu escrevi errados mesmo
mesmo assim não deu

Arthur Bernardes

Você disse uma URL em específico, poderia nos dizer qual?

Ao passar para o modo transparente, você reiniciou seu script de firewall e seu Squid? Pode postar seu script de firewall? Use o "code" , facilita muuuito a visualização!

joaotime

#!/bin/sh


#Declaração de Variaçoes
PATH=/sbin:/bin:/usr/sbin:/usr/bin
IPT="/sbin/iptables"
PROGRAMA="/usr/local/bin/firewall"
PORTSLIB="/etc/configuracao/portlib"


#Interfaces de Rede
LAN=eth0
WAN=eth1
REDE="192.168.0.0/24"


iniciar() {

echo
modprobe ip_tables
modprobe iptable_nat
modprobe ip_conntrack
modprobe ip_conntrack_ftp
modprobe ip_nat_ftp
modprobe ipt_LOG
modprobe ipt_REJECT
modprobe ipt_MASQUERADE
modprobe ipt_state
modprobe ipt_multiport
modprobe iptable_mangle
modprobe ipt_tos
modprobe ipt_limit
modprobe ipt_mark
modprobe ipt_MARK
echo
echo "==============================================================================="
echo "| MÓDULOS CARREGADOS |"
echo "==============================================================================="
echo

$IPT -F
$IPT -t nat -F
$IPT -t mangle -F
$IPT -X
$IPT -t nat -X
$IPT -t mangle -X
$IPT -Z
$IPT -t nat -Z
$IPT -t mangle -Z

echo
echo "==============================================================================="
echo "| REGRAS LIMPAS |"
echo "==============================================================================="
echo
$IPT -P INPUT ACCEPT
$IPT -P OUTPUT ACCEPT
$IPT -P FORWARD ACCEPT

echo
echo "==============================================================================="
echo "| POLITICA PADRÃO DEFINIDAS |"
echo "==============================================================================="
echo

echo 1 > /proc/sys/net/ipv4/ip_forward
$IPT -t nat -A POSTROUTING  -o $WAN -j MASQUERADE
echo 1 > /proc/sys/net/ipv4/conf/default/rp_filter

echo
echo "==============================================================================="
echo "| INTERNET COMPARTILHADA |"
echo "==============================================================================="
echo
$IPT -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
$IPT -A FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT
$IPT -I OUTPUT -p icmp -o $WAN -j ACCEPT
$IPT -I INPUT -p icmp -j ACCEPT
echo
echo "==============================================================================="
echo
echo "==============================================================================="
echo "| CONEXÃO ESTABELICIDA |"
echo "==============================================================================="
echo

$IPT -A INPUT -m state --state INVALID -j DROP
$IPT -A FORWARD -m state --state INVALID -j DROP

echo
echo "==============================================================================="
echo "| NEGANDO PACOTES INVALIDOS |"
echo "==============================================================================="
echo

for i in `cat $PORTSLIB`; do

$IPT -A INPUT -p tcp --dport $i -j ACCEPT
$IPT -A FORWARD -p tcp --dport $i -j ACCEPT
$IPT -A OUTPUT -p tcp --sport $i -j ACCEPT

$IPT -A INPUT -p udp  --dport $i -j ACCEPT
$IPT -A FORWARD -p udp  --dport $i -j ACCEPT
$IPT -A OUTPUT -p udp  --dport $i -j ACCEPT


#$IPT -A INPUT -m multiport -p tcp --dport $i -j ACCEPT
#$IPT -A FORWARD -m multiport -p tcp --dport $i -j ACCEPT
#$IPT -A OUTPUT -m multiport -p tcp --dport $i -j ACCEPT
#$IPT -A INPUT -m multiport -p udp --dport $i -j ACCEPT
#$IPT -A FORWARD -m multiport -p udp --dport $i -j ACCEPT
#$IPT -A OUTPUT -m multiport -p udp --dport $i -j ACCEPT

done
echo "**********Portas Liberadas****************"

$IPT -A INPUT -i lo -j ACCEPT
$IPT -A INPUT -i $LAN -j ACCEPT
$IPT -A FORWARD -i lo -j ACCEPT
$IPT -A FORWARD -i $LAN -j ACCEPT
# Fim Fecho tudo que nao tiver no firewall
$IPT -A INPUT -j LOG --log-prefix "FIREWALL: INPUT "

echo "**********Travego Liberado************"
echo

######## Ativa Redirecionamento ######
#$IPT -I FORWARD -s 192.168.0.24 -j ACCEPT
#$IPI -t nat -A POSTROUTING -s 192.168.0.24 -o $WAN -j MASQUERADE
$IPT -t nat -A PREROUTING -i $LAN -p tcp --dport 80 -j REDIRECT --to-port 3128
$IPT -t nat -A PREROUTING -i $WAN -p tcp -m tcp --dport 3389 -j DNAT --to-destination 192.168.0.9
$IPT -t nat -A PREROUTING -i $WAN -p tcp -m tcp --dport 1025 -j DNAT --to-destination 192.168.0.10
$IPT -t nat -A PREROUTING -i $WAN -p tcp -m tcp --dport 3306 -j DNAT --to-destination 192.168.0.10
$IPT -t nat -A PREROUTING -i $WAN -p tcp -m tcp --dport 33899 -j DNAT --to-destination 192.168.0.110:33899
$IPT -t nat -A PREROUTING -i $WAN -p tcp -m tcp --dport 222 -j DNAT --to-destination 192.168.0.10
#$IPT -t nat -A PREROUTING -i $WAN -p tcp -m tcp --dport 12020 -j DNAT --to-destination 192.168.0.110
$IPT -t nat -A PREROUTING -i $WAN -p tcp -m tcp --dport 4550 -j DNAT --to-destination 192.168.0.4
$IPT -t nat -A PREROUTING -i $WAN -p tcp -m tcp --dport 5550 -j DNAT --to-destination 192.168.0.4
$IPT -t nat -A PREROUTING -i $WAN -p tcp -m tcp --dport 6550 -j DNAT --to-destination 192.168.0.4
$IPT -t nat -A PREROUTING -i $WAN -p tcp -m tcp --dport 1200 -j DNAT --to-destination 192.168.0.4
$IPT -t nat -A PREROUTING -i $WAN -p tcp -m tcp --dport 37777 -j DNAT --to-destination 192.168.0.4
$IPT -t nat -A PREROUTING -i $WAN -p tcp -m tcp --dport 3300 -j DNAT --to-destination 192.168.0.21:3300
$IPT -t nat -A PREROUTING -i $WAN -p tcp -m tcp --dport 12020 -j DNAT --to-destination 192.168.0.21
#$IPT -t nat -A PREROUTING -i $WAN -p tcp -m tcp --dport 8888 -j DNAT --to-destination 192.168.0.24

echo "******* Redireciomanto Ativados**********"

parar() {

$IPT -F
$IPT -t nat -F
$IPT -t mangle -F
$IPT -X
$IPT -t nat -X
$IPT -t mangle -X
$IPT -Z
$IPT -t nat -Z
$IPT -t mangle -Z

echo
echo "==============================================================================="
echo "| FIREWALL DESLIGADO |"
echo "==============================================================================="
echo

}

status() {
$IPT -L -v -n
}

case "$1" in
"start") iniciar ;;
"stop") parar ;;
"restart") parar; iniciar ;;
"status") status;;

zekkerj

Onde vc pegou esse firewall, joaotime?
Pesquise antes de perguntar, sua dúvida pode já ter sido respondida.
Não respondo dúvidas por MP, coloque sua dúvida no fórum onde ela pode ser pesquisada pelos seus colegas!
Não venha ao fórum apenas para perguntar. Se você sabe a resposta de um problema, porque não ajudar seu colega? ;D

joaotime

eu fiz ele com parte pgado aqui no forum mesmo porque ha coisa de errado nele ?

zekkerj

Na verdade ainda não vi, foi só pra saber se já está testado.
Pesquise antes de perguntar, sua dúvida pode já ter sido respondida.
Não respondo dúvidas por MP, coloque sua dúvida no fórum onde ela pode ser pesquisada pelos seus colegas!
Não venha ao fórum apenas para perguntar. Se você sabe a resposta de um problema, porque não ajudar seu colega? ;D

joaotime

Sim todas estas configurações estão em modo produção

zekkerj

Citarfor i in `cat $PORTSLIB`; do

$IPT -A INPUT -p tcp --dport $i -j ACCEPT
$IPT -A FORWARD -p tcp --dport $i -j ACCEPT
$IPT -A OUTPUT -p tcp --sport $i -j ACCEPT

$IPT -A INPUT -p udp  --dport $i -j ACCEPT
$IPT -A FORWARD -p udp  --dport $i -j ACCEPT
$IPT -A OUTPUT -p udp  --dport $i -j ACCEPT

Vc aqui libera um grupo de portas nas cadeias INPUT, FORWARD e OUTPUT. Não tem nada demais liberar as cadeias INPUT e FORWARD juntas, mas não faz muito sentido fazer isso ao mesmo tempo na cadeia OUTPUT, que é a saída do próprio Firewall. Vc está liberando a mesma porta em sentidos contrários...

Outra coisa que vc está fazendo e que não é eficiente, é liberar as mesmas portas para TCP e UDP, pq são serviços diferentes, que usam portas diferentes. Liberar porta 80/tcp não tem nada de mais, mas não há serviço conhecido que use a porta 80/udp, por exemplo.

Por fim, essas liberações que vc está fazendo acabam valendo apenas para a internet, pois vc mais adiante está liberando todo o tráfego vindo da rede local. Já as liberações nas cadeias FORWARD e OUTPUT são inúteis, pois vc não está fazendo nenhum bloqueio nelas.
Pesquise antes de perguntar, sua dúvida pode já ter sido respondida.
Não respondo dúvidas por MP, coloque sua dúvida no fórum onde ela pode ser pesquisada pelos seus colegas!
Não venha ao fórum apenas para perguntar. Se você sabe a resposta de um problema, porque não ajudar seu colega? ;D

zekkerj

Voltando ao seu problema, seria interessante ver no log de acesso do squid se o tráfego continua passando após vc ativar o squid transparente.

Eu verificaria em especial se o DNS das estações está funcionando. Tem uma diferença crucial entre o squid configurado e o transparente, que é no fato de que no squid transparente quem faz a consulta DNS é a estação, no squid configurado quem faz a consulta é o servidor proxy.
Pesquise antes de perguntar, sua dúvida pode já ter sido respondida.
Não respondo dúvidas por MP, coloque sua dúvida no fórum onde ela pode ser pesquisada pelos seus colegas!
Não venha ao fórum apenas para perguntar. Se você sabe a resposta de um problema, porque não ajudar seu colega? ;D

joaotime

se eu deixar as regra assim funciona ne

for i in `cat $PORTSLIB`; do
$IPTABLES -A INPUT -p tcp --dport $i -j ACCEPT
$IPTABLES -A FORWARD -p tcp --dport $i -j ACCEPT
$IPTABLES -A OUTPUT -p tcp --sport $i -j ACCEPT
$IPTABLES -A INPUT -p udp  --dport $i -j ACCEPT
done

o que eu percebi pelo logo e quando esta com proxy no nagegador ele redireciona para o ip do web service
quando esta proxy transparente ele redireciona para o ip do proxy

zekkerj

A questão dessas regras não tem a ver com o funcionamento do squid, foi só um comentário sobre a eficiência do teu firewall.

Já olhou os logs do squid?
Pesquise antes de perguntar, sua dúvida pode já ter sido respondida.
Não respondo dúvidas por MP, coloque sua dúvida no fórum onde ela pode ser pesquisada pelos seus colegas!
Não venha ao fórum apenas para perguntar. Se você sabe a resposta de um problema, porque não ajudar seu colega? ;D

joaotime

sim pois acima como ele esta tratando
quando esta com proxy no nagevador ele redireciona para o ip certo  esta assim redirect 0 ip neste caso
neste caso aqui
quando esta com proxy transparente ele joga o redirecionamento para dentro do próprio servidor redirect 192.168.0.1

se quiser posto os dois exemplo

mais como eu postei no firewall seria o certo ?

zekkerj

não vi erro no firewall, por isso a questão sobre os logs.

Vc chega a ver o tráfego passando?

Se vc desativa o direcionamento (ou seja, sem passar pelo proxy), as máquinas conseguem navegar?
Pesquise antes de perguntar, sua dúvida pode já ter sido respondida.
Não respondo dúvidas por MP, coloque sua dúvida no fórum onde ela pode ser pesquisada pelos seus colegas!
Não venha ao fórum apenas para perguntar. Se você sabe a resposta de um problema, porque não ajudar seu colega? ;D