Autor Tópico: Squid Transparente ja tentei de tudo  (Lida 1776 vezes)

Offline fdsrafael

  • Usuário Ubuntu
  • *
  • Mensagens: 1
    • Ver perfil
Squid Transparente ja tentei de tudo
« Online: 20 de Agosto de 2011, 08:16 »
Bom dia!

Venho desesperado atras da ajuda de vcs.
Estou tentando fazer um Servidor cache com squid tansparente, o servidor esta funcionado perfeitamente mais sem ser transparente.
Vou colocar breviamente a minha instalação e o squid.conf e a regra de firewall que criei.
Tenho instalado o Ubuntu server 10.04 baixei o desktop e instalei do squid 3.19 coloquei todas as linhas de comando que queria como mostra abaixo e funcionou perfeitemente mais na hora de colocalo como transpaente instalei o firewaal no init.d dei permissão no chmod +x firewall mais não teve jeito.
Segue abaixo o Squid e o firewall.

#   WELCOME TO SQUID 3.0.STABLE19
#   ----------------------------

# Squid normally listens to port 3128
http_port 3128 transparent

#Default:
 cache_mem 64 MB

#Default:
 cache_swap_low 90
 cache_swap_high 95

#Default:
 cache_dir ufs /var/spool/squid3 30000 16 256

#Default:
 maximum_object_size 100 MB

#Default:
 maximum_object_size_in_memory 64 KB

#Default:
 minimum_object_size 0 KB

#Suggested default:
refresh_pattern ^ftp:      1440   20%   10080
refresh_pattern ^gopher:   1440   20%   1440
refresh_pattern (cgi-bin|\?)   0   0%   0
refresh_pattern .      0   20%   4320

acl manager proto cache_object
acl localhost src 127.0.0.1/32 10.2.0.0/24
acl to_localhost dst 127.0.0.0/8 0.0.0.0/32
acl acesso_total src "/etc/squid3/acesso_total"
acl acesso_restrito src "/etc/squid3/acesso_restrito"
acl liberado url_regex -i "/etc/squid3/liberado"
acl download url_regex -i "/etc/squid3/download"
acl bloqueado url_regex -i "/etc/squid3/bloqueado"

#### BLOQUEIA TUDO E LIBERA ALGUNS SITES ####

acl bloqueado1 url_regex "/etc/squid3/bloqueado1"
acl liberado1 url_regex  "/etc/squid3/liberado1"

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 1025-65535   # unregistered ports
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 110         
#acl Safe_ports port 25
acl CONNECT method CONNECT

#Default:
http_access allow manager localhost
http_access deny manager
http_access deny !Safe_ports
http_access deny CONNECT !Safe_ports
http_access allow acesso_total
http_access allow liberado
http_access deny download
http_access deny bloqueado
http_access allow acesso_restrito
http_access allow liberado1
http_access deny bloqueado1
http_access deny all

#http_access allow localnet
http_access allow localhost

#icp_access allow localnet
icp_access deny all

#htcp_access allow localnet
htcp_access deny all

#We recommend you to use at least the following line.
hierarchy_stoplist cgi-bin ?

access_log /var/log/squid3/access.log squid

#Default:
 cache_log /var/log/squid3/cache.log

#Default:
 cache_store_log /var/log/squid3/store.log

error_directory /usr/share/squid3/errors/Portuguese/


Agora o Firewall

#!/bin/bash

firewall_start(){

echo "####>> Ativando o compartilhamento da internet                                                  <<####"
echo 1 > /proc/sys/net/ipv4/ip_forward

echo "Limpando as regras do firewall"
iptables -F
iptables -X
iptables -t nat -F
iptables -t nat -X
iptables -t mangle -F
iptables -t mangle -X
iptables -P INPUT DROP
iptables -P FORWARD DROP
iptables -P OUTPUT ACCEPT
iptables -A INPUT -i lo -j ACCEPT
iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT

# Limite contra ping da morte e DoS
iptables -A INPUT -p icmp --icmp-type echo-request -m limit --limit 1/s -j ACCEPT
iptables -A INPUT -p icmp --icmp-type echo-reply -m limit --limit 1/s -j DROP

##>> Abre a faixa de endereços da rede local

#iptables -A INPUT -s 10.2.0.0/255.255.255.0 -j ACCEPT
iptables -A INPUT -p tcp --dport 3128 -i eth0 -j ACCEPT


##>> COMPARTILHAMENTO E PROXY TRANSPARENTE

echo "####>> Mascarando a placa de rede eth0 (Rede externa)                                           <<####"
iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE

echo "####>> Ativando o proxy transparente                                                            <<####"
iptables -t nat -A PREROUTING -s 10.2.0.0/255.255.255.0 -p tcp --dport 80 -j REDIRECT --to-port 3128

##>> BLOQUEAR ACESSO AO MSN MESSENGER
#iptables -A FORWARD -s 192.168.254.0/24 -p tcp --dport 1863 -j REJECT
#iptables -A FORWARD -s 192.168.254.0/24 -d loginnet.passport.com -j REJECT

##>> ABERTURAS E REDIRECIONAMENTO DE PORTAS

echo "####>> Abrindo a porta do servidor ssh (54323)                                                  <<####"
iptables -A INPUT -p tcp --dport 54323 -j ACCEPT
iptables -A OUTPUT -p tcp --dport 54323 -j ACCEPT


echo "####>> Abrindo a porta do Terminal  (3389)
                                                 <<####"
iptables -A INPUT -p tcp --dport 22 -j ACCEPT
iptables -A INPUT -p tcp --dport 3389 -j ACCEPT
iptables -A OUTPUT -p tcp --dport 3389 -j ACCEPT

echo "####>> Redirecionando portas Terminal Service                                                                  <<####"
iptables -I FORWARD -p tcp -i eth1 --dport 3389 -j ACCEPT
iptables -t nat -A PREROUTING -p tcp --dport 3389 -j DNAT --to-destination 10.2.0.254:3389

##>> CONECTIVIDADE SOCIAL

echo "#### >> Liberando ip's da caixa economica (cmt.gov.br)                                          <<####"
iptables -t nat -I PREROUTING -d 200.223.17.180/255.255.0.0 -j ACCEPT
iptables -t nat -I PREROUTING -d 200.201.173.168/255.255.0.0 -j ACCEPT

#### >> Ignora pings
#echo "1" > /proc/sys/net/ipv4/icmp_echo_ignore_all

#### >> Proteção contra IP spoofing << ####
echo 1 > /proc/sys/net/ipv4/conf/default/rp_filter
 
# Protege contra synflood
echo "1" > /proc/sys/net/ipv4/tcp_syncookies
 
# Proteção contra ICMP Broadcasting
echo "1" > /proc/sys/net/ipv4/icmp_echo_ignore_broadcasts
 
# Bloqueia traceroute
iptables -A INPUT -p udp --dport 33435:33525 -j DROP
 
# Proteções diversas contra portscanners, ping of death, ataques DoS, etc.
iptables -A INPUT -m state --state INVALID -j DROP
 
# Abre para a interface de loopback.
# Esta regra é essencial para o KDE e outros programas gráficos funcionarem adequadamente.
iptables -A INPUT -i lo -j ACCEPT
 
# Fecha as portas udp de 1 a 1024
iptables -A INPUT -p udp --dport 1:1024 -j ACCEPT
iptables -A INPUT -p udp --dport 59229 -j DROP
 
# Esta regra é o coração do firewall,
# ela bloqueia qualquer conexão que não tenha sido permitida acima, justamente por isso ela é a última da cadeia.
iptables -A INPUT -p tcp --syn -j DROP
 
echo "O Firewall esta sendo carregado..."
sleep 1
echo "Tudo pronto!"
sleep 1
}
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 "O Firewall esta sendo desativado"
sleep 2
echo "ok."
        ;;
  "restart")
echo "O Firewall esta sendo desativado"
sleep 1
echo "ok."
        firewall_stop; firewall_start
        ;;
      *)
        iptables -L -n
esac
 

Agurado a resposta de vcs.
Observação: Eth0 que recebe a net ip 192.168.1.1
Eth1 que sai para rede interna 10.2.0.254

Offline Tota

  • Usuário Ubuntu
  • *
  • Mensagens: 14.982
    • Ver perfil
Re: Squid Transparente ja tentei de tudo
« Resposta #1 Online: 20 de Agosto de 2011, 08:35 »
Ola

A sessão Instalação e Atualização não é para configuração de pacotes já instalados com sucesso.

Movido para => Internet, redes e segurança


Offline zekkerj

  • Usuário Ubuntu
  • *
  • Mensagens: 19.736
  • Gratidão gera gratidão, lamúria atrai lamúria...
    • Ver perfil
    • Blog do Zekke
Re: Squid Transparente ja tentei de tudo
« Resposta #2 Online: 20 de Agosto de 2011, 17:16 »
Citar
echo "####>> Redirecionando portas Terminal Service                                                                  <<####"
iptables -I FORWARD -p tcp -i eth1 --dport 3389 -j ACCEPT
iptables -t nat -A PREROUTING -p tcp --dport 3389 -j DNAT --to-destination 10.2.0.254:3389
Não misture "-I" com "-A" no script. "-I" coloca a regra no início da cadeia; "-A" coloca no fim. Misturando os dois, fica difícil prever onde a regra vai ficar, e a ordem das regras é tudo no iptables.

Citar
#iptables -A INPUT -s 10.2.0.0/255.255.255.0 -j ACCEPT
iptables -A INPUT -p tcp --dport 3128 -i eth0 -j ACCEPT


##>> COMPARTILHAMENTO E PROXY TRANSPARENTE

echo "####>> Mascarando a placa de rede eth0 (Rede externa)                                           <<####"
iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE

echo "####>> Ativando o proxy transparente                                                            <<####"
iptables -t nat -A PREROUTING -s 10.2.0.0/255.255.255.0 -p tcp --dport 80 -j REDIRECT --to-port 3128
Se a placa eth0 é a interface pra internet, então a regra onde você libera o acesso ao squid está MUITO errada, pois vc está liberando o que entra pela eth0 a acessar o squid, em vez de liberar o que entra pela eth1.

Verifique as regras acima, certifique-se de que as condições estão consistentes entre si.
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