[FUG-BR] [OT?] Firewall em uma máquina, Squid em outra (transparente)

Welkson Renny de Medeiros welkson em focusautomacao.com.br
Terça Junho 15 13:04:21 BRT 2010


Welkson Renny de Medeiros escreveu:
> Alessandro de Souza Rocha escreveu:
>   
>> da uma olhada.
>> http://www.free.bsd.com.br/noticia.php3?CAD=1&NOT=159
>>   
>>     
> Alessandro,
>
> Como expliquei pelo Talk... eu fiz testes com essa solução e outras que encontrei...
>
> Funciona tudo perfeito.. navego normalmente e vejo o proxy funcionando (tail -f acccess.log)... o problema é que no access.log aparece o IP do GATEWAY e não do terminal que está usando a net.
>
> Já procurei MUITA coisa na net... já li a documentação do squid, testei  (x_forward_for, entre outras)... sem sucesso... fiz testes com squid 2.6 e 2.7... decidi então compilar o mais atual (3.1)... tive que adaptar algumas coisas on squid.conf, mas consegui levantar o serviço... mas o mesmo erro ocorre (compilei com pf+transp, x_fowardfor, etc).
>
> Acredito ser uma boa prática instalar o proxy em uma máquina DIFERENTE do gateway... alguém deve ter ambiente parecido funcionando... se postar o squid.conf e o trecho do pf.conf que faz o rdr já me ajuda muito.
>
> Help-me!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
>   

Encontrei alguma coisa, mas pra Linux... abaixo estou postando as regras 
(adaptei de acordo com o pouco que conheço de IPGambiTables =)
http://www.faqs.org/docs/Linux-mini/TransparentProxy.html#s6

################### pf.conf do GATEWAY (192.168.0.254) 
##########################
# NAT usado no proxy transparente
nat on $int_if from $int_if:network to 192.168.0.250 port { 80,8080 } -> 
$int_if

# redireciona todo tráfego que chegar na porta 80 para o servidor proxy 
(192.168.0.250)
rdr inet proto tcp from !192.168.0.250 to any port www  -> 192.168.0.250 
port 8080

# libera a saída do pacote (só para desencargo, pois em outra regra eu 
libero toda a saída)
pass in quick on $int_if proto tcp from any to 192.168.0.250 port { 80, 
8080 }keep state
################### FIM do pf.conf do GATEWAY (192.168.0.254) 
###################



############### squid.conf na máquina do PROXY (192.168.0.250 <---- 
OUTRA máquina) ##############

[root em services:/usr/local/etc/squid] # sed '/^$/d' squid.conf
http_port 8080 transparent
log_fqdn off
hierarchy_stoplist cgi-bin ?
acl QUERY urlpath_regex cgi-bin \?
cache_dir diskd /usr/local/squid/cache 15000 30 256
cache_access_log /usr/local/squid/logs/access.log
cache_store_log /usr/local/squid/logs/store.log
cache_log /usr/local/squid/logs/cache.log
emulate_httpd_log on
acl manager proto cache_object
acl webserver src 192.168.0.254/32
acl localhost src 127.0.0.1/32 192.168.0.254/32
acl to_localhost dst 127.0.0.0/8
acl SSL_ports port 443 563
acl Safe_ports port 80          # http
acl Safe_ports port 81          # http (merda do dominio sistemas)
acl Safe_ports port 4976        # banco real
acl Safe_ports port 21          # ftp
acl Safe_ports port 443 563     # https, snews
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 CONNECT method CONNECT
# acesso administrativo (usar squidclient)
acl purge method PURGE
http_access deny purge !localhost
always_direct allow all
http_access allow Safe_ports
http_access allow SSL_ports
http_access allow manager webserver
http_access deny manager
http_access deny !Safe_ports
http_access deny CONNECT !SSL_ports
http_access deny all
http_reply_access allow all
icp_access allow all

# Usuario sob o qual ira rodar o Squid.
cache_effective_user squid

# Grupo sob o qual ira rodar o Squid.
cache_effective_group squid
cache_mgr webmaster em focusautomacao.com.br
visible_hostname services.focusautomacao.com.br

# necessario para proxy transparente
forwarded_for on                                                 <---- 
FIZ VÁRIOS TESTES com esse parâmetro
#follow_x_forwarded_for allow webserver
#acl_uses_indirect_client
#log_uses_indirect_client on
#follow_x_forwarded_for deny all
log_icp_queries off
buffered_logs on
strip_query_terms off
logfile_rotate 4
coredump_dir none
client_persistent_connections off
server_persistent_connections off
ie_refresh on

############### FIM do squid.conf na máquina do PROXY (192.168.0.250) 
##########################


O proxy funciona normalmente... o problema é que no log (access.log) 
mostra o ip do GATEWAY (192.168.0.250), e não do usuário que está 
tentando acessar algum site.

Se alguém tiver ambiente parecido por favor, poste o pf.conf e squid.conf

Vou continuar aqui lendo alguns livros e materiais da internet... 
qualquer novidade eu comunico.

-- 
Welkson Renny de Medeiros
Desenvolvimento / Gerência de Redes
Focus Automação Comercial
FreeBSD Community Member


Mais detalhes sobre a lista de discussão freebsd