Linux slogan
Visite também: Segurança Linux · BR-Linux.org · Dicas-L · Doode · NoticiasLinux · SoftwareLivre.org · UnderLinux



» Screenshot
Linux: Slackware 10.1, blackbox, pebrot,BitchX, e o filme "A Casa dos Horrores"
Por slackrlz
» Login
Login:
Senha:

Se você ainda não possui uma conta, clique aqui.

Esqueci minha senha



Artigo

Squid 3 como proxy transparente + firewall Iptables
Linux user
jucinaldo
05/03/2009
Este é meu primeiro artigo, espero que sirva para muitos que estão em busca da configuração base do Squid 3 + Iptables no Linux Debian 5 Lenny. O tema proposto também funciona para outras distros, como Slackware e Fedora. No artigo relato as diferenças de pastas configuração em tais distros.
Por: Jucinaldo Braga Barbosa
[ Hits: 80550 ]
Conceito: 8.3   10 voto(s)10 voto(s)10 voto(s)10 voto(s)10 voto(s) + quero dar nota ao artigo

Instalando e configurando o Squid 3

Bem, antes de tudo vamos fazer a instalação do Squid 3. Vamos atualizar nossa lista de pacotes, utilizando um terminal, logue como usuário "root" ou utilize "sudo" antes de cada comando, sendo que neste caso seu usuário precisa ter privilégio no sudoers.

# apt-get update

Após concluída a tarefa, vamos instalar o pacote Squid 3:

# apt-get install squid3

Concluída esta tarefa, vamos a configuração do Squid.

O coração do Squid fica em /etc/squid3/squid.conf, onde vamos fazer o backup do mesmo e em seguida trabalhar suas configurações. Quando for abrir este arquivo, use seu editor de texto preferido, eu utilizo o vim, portanto substitua pelo que preferir.

Backup do squid.conf original:

# cp -v /etc/squid3/squid.conf /etc/squid3/squid.conf.BACKUP

Apagando o original:

# rm -v /etc/squid3/squid.conf

Criando nossa configuração em um novo squid.conf (use seu editor preferido):

# vim /etc/squid3/squid.conf

Abrindo este novo arquivo, copie e cole este script e altere para suas características. Retire meus comentários se desejar:

##squid.conf
http_port 3128
cache_mem 1000 MB # Se seu servidor for dedicado, coloque neste valor a metade de sua memória RAM, do contrário use apenas 25%
cache_swap_low 90
cache_swap_high 95
cache_dir ufs /var/spool/squid3 45000 16 256 # Aqui é o tamanho máximo de sua cache, no meu caso é 45GB, estude sua necessidade e capacidade da partição /var

maximum_object_size 30000 KB
maximum_object_size_in_memory 40 KB

access_log /var/log/squid3/access.log squid
cache_log /var/log/squid3/cache.log
cache_store_log /var/log/squid3/store.log
pid_filename /var/log/squid3/squid3.pid # pid - mudamos para esta pasta para facilitar na identificação de problemas
mime_table /usr/share/squid3/mime.conf

cache_mgr sudporte@viacom.net.br
memory_pools off

diskd_program /usr/lib/squid3/diskd
unlinkd_program /usr/lib/squid3/unlinkd

refresh_pattern ^ftp:           1440    20%     10080
refresh_pattern ^gopher:        1440    0%      1440
refresh_pattern (cgi-bin|\?)    0       0%      0
refresh_pattern .               0       20%     4320
quick_abort_max 16 KB
quick_abort_pct 95
quick_abort_min 16 KB
request_header_max_size 20 KB
reply_header_max_size 20 KB
request_body_max_size 0 KB

acl manager proto cache_object
acl localhost src 127.0.0.1/32
acl to_localhost dst 127.0.0.0/8
acl vlan24 src 192.168.30.0/24 # Representa a sua rede e respectiva máscara de sub-rede
acl lan src 172.18.28.0/24 # Assim como neste exemplo, se você tiver mais de uma rede, deve ser expressada uma por uma

acl SSL_ports port 443 563
acl Safe_ports port 80 # http
acl Safe_ports port 21 # ftp
acl Safe_ports port 443 563 1863 # 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 CONNECT method CONNECT

http_access allow manager localhost
http_access deny manager
http_access deny !Safe_ports
http_access deny CONNECT !SSL_ports

http_access allow vlan24
http_access allow vlan26
http_access allow vlan28

cache_mgr webmaster
mail_program mail
cache_effective_user proxy
cache_effective_group proxy
httpd_suppress_version_string off
visible_hostname zenhulk

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

Até aqui, se for utilizar proxy normal, esta é a base.

Se tiver usando Slackware Linux, modifique as seguintes linhas do squid.conf:

De:

access_log /var/squid/logs/access.log squid
cache_log /var/log/squid3/cache.log
cache_store_log /var/log/squid3/store.log
pid_filename /var/log/squid3/squid3.pid

Para:

access_log /var/squid3/log/access.log squid
cache_log /var/squid3/logs/cache.log
cache_store_log /var/squid3/logs/store.log
pid_filename /var/squid3/logs/squid3.pid

As linhas abaixo, já postadas no script, são responsáveis pelo nome do usuário que o Squid usa para manipular os arquivos, neste exemplo usuário "proxy":

cache_effective_user proxy
cache_effective_group proxy

Obs.: Se você usa Debian não se preocupe e desconsidere este item, pois o Debian cria o usuário "proxy" por padrão. Porém se você usa outras distros e fez a instalação do binário ou outra fonte, deve seguir os seguintes passos:

Criar um usuário "proxy" ou outro nome se preferir, sendo que altere no squid.conf:

# useradd proxy

Dê propriedade à pasta de log do Squid para o usuário que você criou, no Debian e outras distros fica em /var/log/squid3/ e no Slackware /var/log/squid3/, daí você identifica onde fica em sua distro e:

# chown proxy.proxy /var/log/squid3/
ou
# chown proxy.proxy /var/squid3/log/ (Slackware)

Se você estiver com dificuldades para encontrar esta pasta, basta criá-la com estas características e dar as permissões ao usuário criado e mudar o padrão do script squid.conf aqui postado.

# mkdir -p /var/log/squid3

E não esqueça da permissão após criar a pasta:

# chown proxy.proxy /var/log/squid3/

Se você for implementar um proxy transparente, deverá aplicar algumas configurações em seu script de firewall, assunto abordado na página seguinte.

Próxima página >>




Páginas do artigo
   1. Instalando e configurando o Squid 3
   2. Proxy transparente e configuração do firewall Iptables

Outros artigos deste autor
Nenhum artigo encontrado.

Leitura recomendada

Comentários
[1] Comentário enviado por fernandofranco em 05/03/2009 - 19:17h:

uma pergunta para que o squid rode em modo de transparent, precisa complila ele como --enable-linux-netfilter ?

e uma coisa qual a diferença em instalar o squid pelo yum ou pelo rpm.

acredito que seja pq o rpm com a opcao --enable-linux-netfilter complila e o yum não? é isso

[2] Comentário enviado por jucinaldo em 05/03/2009 - 22:10h:

Cara vc usa Fedora como vi em seu Perfil. Vc pode baixar o pacote e intalar tanto por yum ou rpm -ivh, sendo quue a diferenca entre esta ´e s´o de que se precisar de alguma biblioteca ou alguma + o yum pode facilitar, dai com yu seria ## yum localinstall o_pacote, dai se ele n~ao instalar frescar com assinatura do pacote, basta fazer assim ### yum --nogpgcheck localinstall o_pacote o pacote rpm sao pre compilados ´e um abra´co...
valews!!

[3] Comentário enviado por andriopj em 06/03/2009 - 15:48h:

caro fernandofranco
vc pode instalar pelo yum.

incrusive, o fedora 10, ja vem com squid instalado senao me engano.
contudo desinstale todos o squid que ja vem pre definido no fedora 10, e utilize o seguinte comando para instalar ele: yum install squid

todos os pacotes/blibliotecas serao instalados automaticamente, nas pasta padrao do squid.

logo logo, estou postando meu config, tou fazendo ele com a seguinte ideia: transparent, faca cache, tenha uma certa seguranca (ataques) mas nao bloqueia nada na rede (skype, msn, hotmail, web).

[4] Comentário enviado por osirix em 07/03/2009 - 13:48h:

alguem poderia me explicar que erro seria esse


2009/01/30 04:40:12| httpAccept: FD 12: accept failure: (22) Invalid argument
2009/01/30 04:40:12| comm_old_accept: FD 12: (22) Invalid argument

esse erro ai enche o meu cache.log em 5 minutos e deixa ele com uma tamanho de 2GB ai o meu squid trava.
eu uso squid-3.0-stable9
obrigado desde de ja . ^^

[5] Comentário enviado por jucinaldo em 09/03/2009 - 10:50h:

cara manda o teu squid.conf!!!!!!!!!!

[6] Comentário enviado por nemphilis em 10/03/2009 - 17:49h:

primeiro, verifique se o seu squid esta com o '--enable-linux-netfilter' ativado.
#squid -v

segundo, ali no squid.conf em http_port 3128 falta dizer que e transparente (pode ser o seu problema osirix), altere para:

http_port 3128 transparent

abracos.

[7] Comentário enviado por geraldogof em 17/03/2009 - 21:01h:

Parabéns Jucinaldo,
Ótima dica a sua me ajudou muito mesmo, mas aproveitando gostaria de implementar uma segunda sub-rede no meu servidor Debian. Por favor o que fazer para tal?
Abraço, Geraldo

[8] Comentário enviado por jucinaldo em 18/03/2009 - 11:16h:

Geraldo
Crie no squid.conf jundo das outras ACLs a acl da nova rede:

acl novarede src 192.168.1.0/24

Dai vc cria a permição para a nova rede junta as outra permições!

http_access allow novarede


dai vc salva o arquivo
e da o seguinte comanda para modifucar as regras do squido sem parar o serviço:

squid3 -k reconfigure


Abraços espero que ajude!


[9] Comentário enviado por removido em 24/03/2009 - 20:34h:

O Squid3 e muito BALA! ++++

Flw

[10] Comentário enviado por comfaa em 27/04/2009 - 10:45h:

tem como colocar ele autenticado mas quando seta-lo para Gateway ele ir direto pro Proxy ?

[11] Comentário enviado por jucinaldo em 27/04/2009 - 11:17h:

cara squid em modo transparente não da pro por autenticação!!!
Valeu abraços!!

[12] Comentário enviado por francisco.costa em 08/05/2009 - 21:54h:

jucinaldo, muito obrigado por compartilhar seu conhecimento. Essa galera do VOL já me ajudou bastante. Espero um dia ter conhecimento suficiente pra ajudar alguém.

Obrigado mesmo.

[13] Comentário enviado por bestmoor em 21/07/2009 - 21:36h:

tenho um problema montei um Debian transparente mais nao consigo pingar para fora da rede ...mais nos navegadores estam navegando
ja aplicaquei os nats no iptables mais ainda nao funciona alguma dica ?
echo 1 > /proc/sys/net/ipv4/ip_forward
iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
iptables -t nat -A PREROUTING -s 192.168.0.0/255.255.255.0 -p tcp --dport 80 -j REDIRECT --to-port 3128

[14] Comentário enviado por fernandofranco em 24/07/2009 - 09:15h:

amigo bom dia, coloque todo o suas regras de firewall, pro pessoal da uma olhada nelas.

blz

[15] Comentário enviado por zarate.manaus em 18/01/2010 - 18:43h:

quero saber como instalar e configurar o squid 3.0 para fazer um servidor de proxy e cache e criar uma lista de IPS poderao ter acesso a internet e por fim cadastrar todos os mesmo no meu servidor de rede.agradeço desde ja .Obrigado!

[16] Comentário enviado por ngiongo em 16/03/2010 - 22:05h:

Ola,
Quero saber como faço para fazer o controle por mac address,um abraço

[17] Comentário enviado por tatuape em 15/04/2010 - 01:27h:

Caro amigo... para fazer ele ter o controle por mac, primeiro vc deve verificar se a versão que tu usa ja esta configurada para usar. Veja exemplo:

Esta opção tem que está habilitada - --enable-arp-acl

# squid -v

Squid Cache: Version 2.6.STABLE2configure options: '--prefix=/usr' '--exec_prefix=/usr' '--bindir=/usr/sbin' '--sbindir=/usr/sbin' '--libexecdir=/usr/lib/squid' '--sysconfdir=/etc/squid' '--localstatedir=/var/spool/squid' '--datadir=/usr/share/squid' '--enable-async-io' '--with-pthreads' '--enable-storeio=ufs,aufs,diskd,null' '--enable-linux-netfilter' '--enable-linux-proxy' '--enable-arp-acl' '--enable-epoll' '--enable-removal-policies=lru,heap' '--enable-snmp' '--enable-delay-pools' '--enable-htcp' '--enable-cache-digests' '--enable-underscores' '--enable-referer-log' '--enable-useragent-log' '--enable-auth=basic,digest,ntlm' '--enable-carp' '--with-large-files' 'i386-debian-linux' 'build_alias=i386-debian-linux' 'host_alias=i386-debian-linux' 'target_alias=i386-debian-linux'

Estando configurada, é so colocar as ACL´s e definir suas permissões.

Espero ter ajudado.

[18] Comentário enviado por merloata em 29/05/2010 - 17:29h:

Boa tarde !!!

Estou com um problema aqui sou novo no ramo linux, estou com um problema aqui uso uma distribuição
do slackware 12 e ja instalei o squid 3.1 e funciona tudo normal so q somente com proxy ativo no windows
ja mudei tudo que tem q ser feito para rodar trasnparent e nada de funcionar ja rodei o firewall configurei o iptables
e nada de funcionar transparent...o q posso esta fazendo errado ??? vou colocar meu firewall aqui e meu squid a conf deles

aqui é meu firewall

echo 1 > /proc/sys/net/ipv4/ip_forward
iptables -t nat -A POSTROUTING -o eth1 -j MASQUERADE
iptables -t nat -A PREROUNTING -s 192.168.1.0/255.255.255.0 -p tcp --dport 80 -j REDIRECT --to-port 3128

aqui meu squid.conf

acl manager proto cache_object
acl localhost src 127.0.0.1/32
acl to_localhost dst 127.0.0.0/8
acl localnet src 10.0.0.0/8 # RFC1918 possible internal network
acl localnet src 172.16.0.0/12 # RFC1918 possible internal network
acl localnet src 192.168.1.0/24 # RFC1918 possible internal network
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 CONNECT method CONNECT
http_access allow manager localhost
http_access deny manager
http_access deny !Safe_ports
http_access deny CONNECT !SSL_ports
http_access allow localnet
http_access deny all
http_port 3128 transparent
visible_hostname amnet
hierarchy_stoplist cgi-bin ?
coredump_dir /usr/local/squid/var/cache
refresh_pattern ^ftp: 1440 20% 10080
refresh_pattern ^gopher: 1440 0% 1440
refresh_pattern -i (/cgi-bin/|\?) 0 0% 0
refresh_pattern . 0 20% 4320
error_directory /usr/local/squid/share/errors/pt-br


[19] Comentário enviado por UnsigneD em 11/06/2010 - 14:27h:

Ola!

Segui este tutorial de inicio ao fim, desde ja agredexo ao autor pelo excelente trabalho!
Mas estou com dificuldades...
Eu estou a configurar um proxy em ubuntu server 9.10 e estou a fazer os testes com windows xp a verificar se o proxy fica a funcionar ou nao, o servidor proxy tem duas placas de rede, tenho o squid.conf tal como esta neste post
o meu ficheiro das interfaces de rede esta desta forma:
auto lo eth0
iface lo inet loopback

iface eth0 inet dhcp #interface externa ligada a internet

iface eth1 inet static #interface interna, para rede interna
address 192.168.1.1
netmask 255.255.255.0
network 192.168.1.0
broadcast 192.168.1.255

Coloquei o ficheiro rc.local da seguinte forma:
------Inicio rc.local -----------

modprobe iptable_nat
echo 1 > /proc/sys/net/ipv4/ip_forward
iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE

iptables -A INPUT -p icmp --icmp-type echo-request -j DROP
echo 1 > /proc/sys/net/ipv4/conf/default/rp_filter
iptables -A INPUT -m state --state INVALID -j DROP
iptables -A INPUT -i lo -j ACCEPT
iptables -A INPUT -p tcp --dport 22 -j ACCEPT
iptables -A INPUT -i eth0 -p tcp --dport 3128 -j ACCEPT
iptables -A FORWARD -p tcp --dport 80 -j REJECT
iptables -A FORWARD -p tcp --dport 1863 -j REJECT
iptables -A FORWARD -d loginnet.passport.com -j REJECT
iptables -A INPUT -p tcp --syn -j DROP

Ja tentei com o ficheiro firewall da seguinte forma:
#!bin/bash
echo 1 > /proc/sys/net/ipv4/ip_forward
iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
iptables -t nat -A PREROUTING -s 192.168.1.0/255.255.255.0 -p tcp --dport 80 -j REDIRECT --to-port 3128

e também não obtive sucesso...

e o que se passa é o seguinte, coloquei o windows XP com estas definiçoes na placa de rede:
ip: 192.168.1.2
netmask: 255.255.255.0
gateway: 192.168.1.1 (ip do servidor proxy, na eth1)

acedo ao internet explorer e coloco o proxy como 192.168.1.1 porta 3128 e tenho internet a funcionar (logo parto do principio que o proxy esta a funcionar correctamente), mas se retirar essa opção do proxy no internet explorer deixo de ter internet no windows xp, não sei o que se passa, ando as voltas com isto e não consigo resolver!

alguem me ajude sff!

Obrigado

[20] Comentário enviado por ericlobobr em 02/02/2011 - 01:58h:

vlw cara, tua confiruação foi um luiz pra mim "jucinaldo " fiz uns modificaçoes e deu certo
o funciona:
para UnsigneD se vc ainda prcisar

muda o ip pra o seu a minha
eth0=192.168.254.102
eth1=192.168.1.1

http_port 192.168.1.1:3128 transparent
hierarchy_stoplist cgi-bin ?
acl QUERY urlpath_regex cgi-bin \?
no_cache deny QUERY
cache_mem 512 MB
cache_swap_low 90
cache_swap_high 95
maximum_object_size 1500 MB
minimum_object_size 0 KB
maximum_object_size_in_memory 64 KB
cache_replacement_policy heap LFUDA
memory_replacement_policy heap GDSF
cache_dir ufs /var/spool/squid3 45000 32 256
cache_log /var/log/squid3/cache.log
cache_access_log /var/log/squid3/access.log squid
cache_store_log /var/log/squid3/store.log
pid_filename /var/log/squid3/squid3.pid
mime_table /usr/share/squid3/mime.conf
dns_nameservers 127.0.0.1
refresh_pattern ^ftp: 1440 20% 10080
refresh_pattern ^gopher: 1440 0% 1440
refresh_pattern (cgi-bin|\?) 0 0% 0
refresh_pattern . 0 20% 4320
quick_abort_min -1 KB
quick_abort_pct 95
quick_abort_max 0 KB
quick_abort_pct 100%
negative_ttl 2 minutes
positive_dns_ttl 5 minutes
half_closed_clients off
read_timeout 60 seconds
pconn_timeout 120 seconds
acl manager proto cache_object
acl localhost src 127.0.0.1/32
acl to_localhost dst 127.0.0.0/8
acl vlan24 src 192.168.1.1/32
acl rede src 192.168.1.0/32
acl SSL_ports port 443 563
acl Safe_ports port 21 25 43 53 70 80 110 210 280 443 488 563 587 591 777 5190
acl Safe_ports port 80 # http
acl Safe_ports port 21 # ftp
acl Safe_ports port 443 563 1863 # 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 CONNECT method CONNECT
acl site dstdomain sinttel.com.br,mte.gov.br,caixa.gov.br,bb.com.br,itau.com.br,hsbc.com.br,santander.com.br,bancoreal.com.br,bradesco.com.br,unibanco.com.br
always_direct allow site
http_access allow localhost
http_access allow rede
http_access allow manager localhost
http_access deny manager
http_access deny !Safe_ports
http_access deny CONNECT !SSL_ports
http_access allow vlan24
http_access allow all
cache_effective_user proxy
cache_effective_group proxy
visible_hostname nome do pc
cache_mgr sudporte@viacom.net.br
memory_pools off
forwarded_for off
error_directory /usr/share/squid3/errors/Portuguese/
ie_refresh on
detect_broken_pconn on
pipeline_prefetch on
diskd_program /usr/lib/squid3/diskd
unlinkd_program /usr/lib/squid3/unlinkd
request_header_max_size 20 KB
reply_header_max_size 20 KB
request_body_max_size 0 KB
cache_mgr webmaster
mail_program mail









[21] Comentário enviado por jurjus em 13/04/2011 - 10:31h:

uma dúvida

tenho 2 placas de rede, sendo
eth0:10.10.10.0/24
eth1:192.168.1.0/24
pppo:(endereço VELOX)

Não estou sabendo como configurar, alguem pode me ajudar?

[22] Comentário enviado por nildopd em 04/07/2011 - 23:30h:

AMIGAO jurjus ,boa noite.

Você já conseguiu resolver seu problema ? caso não, explica direitinho o que vc quer fazer e qual a versão linux q vc está pretendendo usar. vlw... abraço


qualquer coisa me add no skype

forte abraço.

nildo.ferreira

[23] Comentário enviado por gnulinuxspirit em 03/05/2012 - 17:46h:

Boa tarde, como faco para concertar esse erro, estou testando esse squid na minha maquina virtual.

FATAL: Bungled squid.conf line 6: cache_dir ufs /var/spool/squid3 128 16 256 # Aqui é o tamanho máximo de sua cache, no meu caso é 45GB, estude sua necessidade e capacidade da partição /var
Squid Cache (Version 3.1.19): Terminated abnormally.
CPU Usage: 0.008 seconds = 0.000 user + 0.008 sys
Maximum Resident Size: 14384 KB
Page faults with physical i/o: 0





Contribuir com comentário


  
Para executar esta ação você precisa estar logado no site, caso contrário, tudo o que for digitado será perdido.
Responsável pelo site: Fábio Berbert de Paula - Conteúdo distribuído sob licença GNU FDL
Site hospedado por:

Viva o Linux

A maior comunidade Linux da América Latina! Artigos, dicas, tutoriais, fórum, scripts e muito mais. Ideal para quem busca auto-ajuda em Linux.