http://www.zago.eti.br/squid/squid-CL10.txt Este documento é uma adaptação do tutorial: http://www.zago.eti.br/squid/squid-CL9.txt Já foi testado no 10, tenho instalações rodando sem problema algum, falta algumas correções neste texto, ainda tem algumas referencias ao CL9, considere CL10 em lugar de CL9. Tutorial, com dicas e modelos pra copiar e colar, todos os passos pra instalar e configurar o Squid no CL10, serve também pro CL9 A versão do Squid é a mesma no CL9 e CL10, as regras, diretivas e configurações funcionam sem problema nas duas versões. http://www.zago.eti.br/squid/A-menu-squid.html Use CTRL+F para refinar a pesquisa. Linha de: **************** separa mensagens ou tópicos. ******************************************************** Zago http://www.zago.eti.br/menu.html FAQ e artigos sobre Linux Passo a passo pra instalar e configurar um servidor proxy, (Squid) em uma instalação do CL10 com internet compartilhada e funcionando conforme um destes tutoriais: http://www.zago.eti.br/adsl-compartilhar.txt http://www.zago.eti.br/modem/modem-compartilhar.txt Material pra leitura e tutoriais recomendados: http://www.conectiva.com.br/cpub/pt/doc/livros.php procure por: GUIA DO SERVIDOR CONECTIVA LINUX 9 - PROFESSIONAL EDITION escolha => Consulta on-line => Download Neste livro procure por Servidor-Proxy, direto em: http://www.conectiva.com/doc/livros/online/9.0/servidor/www.html#WWW0047 tem um excelente passo a passo pra configurar o Squid. http://www.linuxman.pro.br/squid/ Excelente e completo documento em portugues sobre a instalação e configuração do Squid, tem capitulos especiais sobre: Bloqueio de Banners Protegendo usuários com antivírus Autenticando usuários Controle de Banda Usando ACLs externas MAC Address tipos de acl ****************************************************************** RESUMO ZAGO (resumo de comandos) prontos pra copiar e colar Neste tutorial todos os comandos devem ser executados como root, abra um terminal e torne root com su - Pra não digitar, veja dicas sobre copiar e colar em: http:www.zago.eti.br/cp.txt # Pra instalar Squid apt-get install squid.* ##Criar e liberar o arquivo de log: chmod 777 /var/log/squid touch /var/log/squid/access.log chmod 777 /var/log/squid/access.log chown proxy.proxy /var/cache/squid chgrp proxy /var/cache/squid chmod 777 /var/log/squid/access.log chown proxy.proxy /var/log/squid/access.log chgrp proxy /var/log/squid #copiar modelo de configuração e acl cd /etc/squid wget 200.204.198.164/zago/squid/acl/squid.conf-transp-cl10 wget 200.204.198.164/zago/squid/acl/direto.txt wget 200.204.198.164/zago/squid/acl/negasites.txt wget 200.204.198.164/zago/squid/acl/negapalavra.txt wget 200.204.198.164/zago/squid/acl/liberapalavra.txt mv squid.conf squid-default.conf cp squid.conf-transp-cl10 squid.conf chkconfig squid on # Faça os ajustes nos arquivos de regras e altere a ultima linha do squid.conf, onde consta faqcl10 troque pelo nome da maquina onde vai rodar o squid, pegue o nome da maquina no arquivo /etc/hosts e substitua no squid.conf, ex.: visible_hostname faqcl10 Depois é só iniciar o squid com: squid -z service squid start Caso não queira fazer o download pelo wget pra depois alterar. Então use o "vi" com lynx pra trazer o smb.conf e acl diretamente pro editor "vi", assim voce traz o texto pra dentro do editor vi, faz os ajustes das palavras, acl e personaliza a configuração pra salvar o arquivo já personalizado pra suas necessidades, renomeie o arquvo de configuração da instalação: mv squid.conf squid-default.conf veja dicas no FAQ cp.txt e use os comandos: :r !lynx -dump http://200.204.198.164/zago/squid/acl/squid.conf-transp-cl10 :r !lynx -dump http://200.204.198.164/zago/squid/acl/direto.txt :r !lynx -dump http://200.204.198.164/zago/squid/acl/negasites.txt :r !lynx -dump http://200.204.198.164/zago/squid/acl/negapalavra.txt :r !lynx -dump http://200.204.198.164/zago/squid/acl/liberapalavra.txt Nesta configuração foi definido 32MB de cache pra memoria, isto é muito pouco voce deve adequar este valor de acordo com tua maquina. # Quando tiver problemas na inicialização, principalmente quem usa ADSL com IP dinamico, pode falhar no boot, use a opção -D pra não testar DNS, pode colocar a linha de comando no rc.local, pra isto desabilite a opção pelo chkconfig: chkconfig squid off echo "squid -D" >> /etc/rc.d/rc.local MENSAGENS ERROS As mensagens de sites negados por padrão serão exibidas em ingles, o Squid exibe a pagina em html que está em: /usr/share/squid/errors/English/ERR_ACCESS_DENIED pra exibi-las em Portugues, e faciliar esta configuração, troque este arquivo pelo que está em portugues no diretório: /usr/share/squid/errors/Portuguese/ERR_ACCESS_DENIED mv /usr/share/squid/errors/English/ERR_ACCESS_DENIED /usr/share/squid/errors/English/ERR_ACCESS_DENIED-ingles cp /usr/share/squid/errors/Portuguese/ERR_ACCESS_DENIED /usr/share/squid/errors/English/ERR_ACCESS_DENIED squid -k reconfigure Redirecionar todo o trafego da porta 80 (navegação) pro Squid, acrescente nas regras do firewall (no servidor) esta linha: iptables -t nat -A PREROUTING -p tcp -m multiport -s 192.168.1.0/24 --dport 80,443 -j REDIRECT --to-ports 3128 Esta regra não pode ser colocada em qualquer lugar do firewall, no Iptables a ordem das regras tem influencia no resultado, pra testar o Squid, use somente regras pra compartilhar a conexão e redirecionar o trafego pro Squid, como exemplo pode utilizar estas regras: modprobe iptable_nat iptables -t nat -A PREROUTING -p tcp -m multiport -s 192.168.1.0/24 --dport 80,443 -j REDIRECT --to-ports 3128 iptables -t nat -A POSTROUTING -o ppp0 -j MASQUERADE echo 1 > /proc/sys/net/ipv4/ip_forward Altere a interface ppp0 para o correto da tua rede, cuidado com a quebra de linhas, no exemplo acima são 4 linhas, a primeira carraga o modulo do Iptables, a segunda linha faz o redirecionamento de todo o trafego da porta 80 pro Squid na porta 3128, a terceira e quarta linha faz NAT para os demais serviços não controlados pelo Squid, como e-mail, conexões por ssh, ftp e etc.., depois que tudo funcinar, implante as suas regras de firewall, veja mais sobre firewall em: http://www.zago.eti.br/firewall Pra quem já tem um firewall rodando, precisa reiniciar este serviço, ou reiniciar a maquina com o novo script. Na estação windows, botão auxiliar no icone do IE -> propriedades -> conexão -> em servidor proxy informe o IP do servidor squid e na porta informe 3128 Parabéns voce conseguiu!!!, caso ocorra alguma mensagem de erro ou não funcione, veja dicas e mais mais detalhes nos proximos tópicos deste texto. Em casos de mensagens estranhas nos logs, travamento do squid ou não inicia no boot, limpe o cache e tente novamente, pra isto faça copia do arquivo de log pra outro local e execute estas linhas de comando: service squid stop rm -rf /var/cache/squid mkdir /var/cache/squid chown proxy.proxy /var/cache/squid chgrp proxy /var/cache/squid chmod 777 /var/log/squid/access.log chown proxy.proxy /var/log/squid/access.log chgrp proxy /var/log/squid squid -z RunCache& Persistindo o problema, consulte os logs, sua grande fonte de informação pra solução de problemas, inicie por: dicas e comandos pra explorar logs do squid: http://www.zago.eti.br/squid/log.txt Nos proximos tópicos tem explicação mais detalhada, caso tenha problemas ou queira entender a configuração, continue consultando este documento. ****************************************************************** Configurando Squid no CL10, instalado com perfil "estação de trabalho", pra ser utilizado como estação de trabalho Linux e compartilhar conexão de internet por modem discado ou ADSL para as demais maquinas da rede, tanto os clientes Linux ou windows. Faça por parte, facilita na localização e resolução de problemas: 1 - Instale o CL10 com perfil estação de trabalho, caso vá utilizar a maquina somente pra compartilhar internet então faça a instalação com perfil firewall ou personalizado. 2 - Instale o modem ou ADSL e teste a navegação. 3 - compartilhe a conexão para as demais maquinas da rede e teste se o servidor continua navengando e as estações também: http://www.zago.eti.br/adsl-compartilhar.txt ou http://www.zago.eti.br/modem/modem-compartilhar.txt Passe pra instalação e configuração do Squid somente depois que superar os itens acima, tanto o servidor como as estações navegarem. INSTALAÇÃO E CONFIGURAÇÃO DO SQUID (PROXY TRANSPARENTE) No CL10 instalado com perfil "estação de trabalho" não instala pacotes do Squid, instale estes pacotes: squid, linuxconf-squid, squid-auth e squid-extra-templates Pra instalar com apt-get em uma só linha de comando, execute: apt-get install squid.* linuxconf-squid Quem instalou por outro perfil ou opções, confira com o comando: rpm -qa |grep squid Compare o teu resultado com o abaixo: # rpm -qa |grep squid squid-extra-templates-2.5.1-25760cl squid-2.5.1-25760cl squid-auth-2.5.1-25760cl Retornando o nome e versão parerecido com o resultado acima então está instalado. Não retornando nada, nem erros então não está instalado. Retornando mensagem de erro é comando errado, verifique a sintaxe. ****************************************************************** CONFIGURANDO O SERVIDOR SQUID (PROXY) TRANSPARENTE (SEM AUTENTICAÇÃO) Considerando que o micro já compartilha a conexão por ADSL ou modem discado. Redirecionar todo o trafego da porta 80 (navegação) pro Squid, acrescente nas regras do firewall (no servidor) esta linha: iptables -t nat -A PREROUTING -p tcp -m multiport -s 192.168.1.0/24 --dport 80,443 -j REDIRECT --to-ports 3128 O arquivo de confgiguarção do Squid fica em /etc/squid/squid.conf ele é grande e tem muitas opções de configuração. Na instalação vem com 3194 linhas incluindo comentarios e opções de configuração, a maioria comentadas, voce pode editar o arquivo pra tirar os comentarios ou alterar as linhas desejadas, fazer isto é muito trabalhoso e sujeito a erros. Existem varias ferramentas pra configurar o Squid, entre elas o webmin: http://www.zago.eti.br/webmin.txt Pode iniciar com webmin e depois finalizar ajustes editando diretamente o squid.conf, pode utilizar linuxconf e outras ferramentas. Pra facilitar e simplificar a instalação pode substituir o arquivo squid.conf por outro previamente configurado e personalizado pra suas necessidades, por exemplo o de outra instalação, backup ou até mesmo o modelo que se encontra neste site (diretório), mesmo fazendo a copia do squid.conf ainda precisa executar os demais comandos pra ajustar as permissões e criar diretórios, esta parte consta no RESUMO inicial que basta copiar e colar. Sempre é bom salvar os arquivos de configuração pra ter como voltar ao ponto inicial caso resolva reiniciar todo o processo, renomeie o arquivo /etc/squid/squid.conf pra outro nome e depois faça a copia do squid.conf desejado pra /etc/squid/. pra renomear o original: mv /etc/squid/squid.conf /etc/squid/squid-default.conf Agora copie seu squid.conf ou utilize um modelo do FAQ, por exemplo, copie o squid.conf-tranparente.txt pra /etc/squid e depois renomeie pra squid.conf Melhor copiar todo o diretório acl, tem varios arquivos com exemplos de ACL. http://www.zago.eti.br/squid/acl/ ##Crie e libere o arquivo de log: chmod 777 /var/log/squid touch /var/log/squid/access.log chmod 777 /var/log/squid/access.log No lugar de liberar geral com chmod 777 o mais indicado é ajustar as permissões com: chown proxy.proxy /var/cache/squid chgrp proxy /var/cache/squid chown proxy.proxy /var/log/squid/access.log chgrp proxy /var/log/squid ##Inicie o Squid com: service squid start O comando acima perde efeito quando a maquina for reiniciada, pra iniciar o Squid junto com o boot da maquina, vale somente a partir do proximo boot, execute: chkconfig squid on Outra maneira mais interessante é não utiliza a linha acima, mas incluir squid -D no final do rc.local. Explicando: Iniciando o squid com a opção -D ele não faz teste de DNS, caso a maquina não esteja conectada na internet no momento que inicia o Squid, vai falhar o teste de DNS e a inicialização do squid também vai falhar, isto é comum em conexões de ADSL com pppoe, caso teu squid falha na inicialização e depois de conectado na internet a inicialização funciona sem problema, então tire a opção do chkconfig pra iniciar no boot e acrescente no final do: /etc/rc.d/rc.local a linha: squid -D ou em uma tacada só: chkconfig squid off echo "squid -D" >> /etc/rc.d/rc.local squid -z squid -k reconfigure A C L - CONTROLANDO ACESSO À INTERNET. O squid tem um excelente controle de acesso à internet, pode ser por IP, dominio, palavra e etc..., este controle é feito por acl, pra facilitar a manutenção o ideal é criar arquivos externos, são arquivos texto com os termos que desaja o bloqueio ou liberação, assim qualquer ateração basta editar estes arquivos pra fazer a correção e não precisa alterar nada no squid.conf. ACL PRA LIBERAR SITE DIRETO Alguns sites tem problemas ao passar pelo proxy, principalmente os sites seguros, entre eles estão os sites de bancos, da receita federal e alguns mais, até é possivel liberar as portas e configurar uma "acl" exclusiva a eles, prefiro liberar direto, sem passar pelo proxy, Inclua no arquivo /etc/squid/direto.txt os sites que voce queira liberar. Os sites listados neste arquivo estão totalmente liberados, não tem cache, não tem log de acesso, não não passam pelo proxy, estão sujeitos as regras de NAT do firewall. Desta maneira tem cache acl direto url_regex -i "/etc/squid/direto.txt" http_access allow direto all Desta maneira não tem cache acl NOCACHE url_regex "/etc/squid/direto.txt" \? no_cache deny NOCACHE ACL PRA LIBERAR SITE DIRETO (POR IP DE DESTINO) Esta liberação também pode ser feito por IP, pra acessar algum servidor por IP, por exemplo sites hospedados em ADSL e acessados por redirecionadores ou mesmo sites que se conhece o IP e queira controlar pelo IP e não pelo dominio, em ambos os casos esta ACL se aplica ao IP de destino, crie um arquivo, por exemplo ipdireto.txt em /etc/squid e dentro dele relacione os IP destino que queira liberar pra acesso direto à internet, relacione um IP por linha. acl ipdireto dst "/etc/squid/ipdireto.txt" http_access allow ipdireto ACL PRA LIBERAR ESTAÇÃO POR (POR IP REMETENTE) Voce pode liberar algumas estações, por exemplo a do chefe, patrão e alguma estação especial, esta liberação pode ser feita por IP, crie o arquivo, neste exemplo é /etc/squid/iplocal.txt e nele relacione um IP por linha, todos os IP que constarem neste arquivo estão liberados pra acesso à internet. acl iplocal src "/etc/squid/iplocal.txt" http_access allow iplocal ACL POR PALAVRA. Estas "acl" barram o acesso a todo site que tenha no endereço palavra listada no arquivo /etc/squid/negapalavra.txt e libera as excessões que são as palavras listadas no arquivo /etc/squid/liberapalavra.txt # acl pra bloquear palavras nos endereços e liberar excessões acl negapalavra url_regex "/etc/squid/negapalavra.txt" acl liberapalavra url_regex "/etc/squid/liberapalavra.txt" http_access allow liberapalavra all http_access deny negapalavra all tem poucas palavras neste modelo (negapalavra.txt) voce pode substituir este arquvo por um mais completo, procure por blacklist em: http://www.squidguard.org http://www.squidguard.org/blacklist/ Também pode monitorar os logs com "tail -f /var/log/squid/access.log" pra bloquear basta acrescentar a palavra no arquivo negapalavra.txt, pra liberar basta remover a palavra ou incluir o site no arquivo liberapalavra.txt, sempre que fizer alteração precisa recarregar o squid com: squid -k reconfigure após o comando acima as alterações passam a valer. A C L PRA BLOQUEAR DOWNLOAD DE ARQUIVOS. Crie o arquivo /etc/squid/negadownload.txt neste arquivo relacione os tipos de arquivos que queira barrar, este arquivo deve ter a seguinte estrutura: \.mp3$ \.exe$ \.mpg$ \.avi$ # criar uma acl para incluir os tipos de arquivo acl negadownload urlpath_regex -i "/etc/squid/negadownload.txt" http_access deny negadownload ****************************************************************** COMANDOS: Para carregar o Squid junto com a inicialização do Linux, execute: chkconfig squid on Comandos úteis pra manutenção: service squid stop ## parar o serviço squid service squid start ## iniciar o serviço squid service squid restart ## reinicar o serviço squid. service squid status ## ver status, se está rodando ou não. Após alterar configurações do squid, dê um killall -9 no squid, rode um squid -z e em seguida restarte o squid. após alterações recarregue o squid com: squid -k reconfigure Apagar cache, limpar todo o cache, vai reiniciar do zero, execute: squid -z Pra testar o squid: squid -k check Parar o Squid service squid stop ****************************************************************** LADO ESTAÇÃO WINDOWS - configuração da estação WIN98 Na estação que já navegava antes de iniciar a configuração do Squid, precisa alterar as propriedades do Internet Explorer pra navegar via proxy. No Desktop click com botão auxiliar sobre o icone do Internet explorer e depois em propriedades pra abrir a janela "Propriedades de Internet" Nesta tela click em "conexões" Procure e marque a opção: Acessar a internet por um servidor proxy Preencha o campo endereço com o IP do servidor proxy e o campo Portas com:3128 OBS. Este IP é o mesmo da placa de rede do servidor ligado ao HUB pra rede interna, é o mesmo do gateway informado em TCP/IP. OK pra fechar todas as janelas e depois abra o IE pra navegar normalmente atravez de um servidor proxy. ****************************************************************** LADO ESTAÇÃO LINUX - configuração da estação. ****************************************************************** Anotações e teste pra solução de problemas com travamento no CL10 O squid.conf foi modificado para esta configuração: http://200.204.198.164/zago/squid/acl/squid.conf-transp-testcl10 Nesta instalação seguir todos os passos desde o inicio deste tutorial, trocar a copia indicada no tutorial pelo que está no endereço acima e executar estes comandos: rm -rf /var/cache/squid mkdir /var/cache/squid chown proxy.proxy /var/cache/squid chgrp proxy /var/cache/squid chmod 777 /var/log/squid/access.log chown proxy.proxy /var/log/squid/access.log chgrp proxy /var/log/squid squid -z RunCache& service squid start rm -rf /var/cache/squid mkdir /var/cache/squid chown nobody.nobody /var/cache/squid chgrp nobody /var/cache/squid chmod 777 /var/log/squid/access.log chown nobody.nobody /var/log/squid/access.log chgrp nobody /var/log/squid squid -z service squid start RunCache& mensagens reportadas quando ocorria o erro, copia de parte das mensagens de: /var/log/messages Aug 10 01:27:32 servmail squid[6891]: Squid Parent: child process 6954 exited due to signal 6 Aug 10 01:27:35 servmail squid[6891]: Squid Parent: child process 6984 started Aug 10 01:27:35 servmail (squid): storeUfsDirOpenSwapLog: Failed to open swap log. Aug 10 01:27:35 servmail squid[6891]: Squid Parent: child process 6984 exited due to signal 6 Aug 10 01:27:39 servmail squid[6891]: Squid Parent: child process 7012 started Aug 10 01:27:39 servmail (squid): storeUfsDirOpenSwapLog: Failed to open swap log. Aug 10 01:27:39 servmail squid[6891]: Squid Parent: child process 7012 exited due to signal 6 Aug 10 01:27:39 servmail squid[6891]: Exiting due to repeated, frequent failures Aug 10 01:30:10 servmail squid[8143]: Squid Parent: child process 8145 started Aug 10 01:32:11 servmail squid: Squid is already running! Process ID 8145 ****************************************************************** ****************************************************************** OBSERVAÇÕES IMPORTANTES!!!! DICAS PRA SOLUÇÃO DE PROBLEMAS. DICAS & TRUQUES D I C A S !!! >>> Dica: edite o arquivo /etc/squid.conf e leia atentamente os comentários, pois neles tem explicações pra configurações possíveis... >>> - O Squid para de analizar as regras na primeira que for atentida, quando precisar de alguma excessão de regra, por exemplo liberar um IP para não passar pelas regras, esta deverá se colocada antes da que proibe. O Squid é o contrário do iptables, deve liberar primeiro, depois proibir. >>> ERROS. Caso ocorra alguma mensagem de erro ou "FALHOU", procure no log: /var/log/messages Neste arquivo procure pelas referencias ao Squid, a maioria dos erros estão registradas neste arquivo, também tem a opção de configurar o debug do Squid pra fazer uma depuração mais detalhada. O comando tail permite acompanhar os logs no momento de criação, no FAQ log.txt (neste site) tem mais dicas sobre o uso deste comando. Consulte os logs: /var/log/squid /var/log/squid/access.log /var/log/squid/cache.log /var/log/messages /var/log/message verifique o espaço livre em disco: verifique o espaço nas partições, por exemplo em /var/log >>> Apagar cache, limpar todo o cache, vai reiniciar do zero, execute: Precisa parar o squid, pra parar execute: service squid stop pra limpar o cache: squid -z >>> Reiniciar o Squid: squid -k reconfigure >>> Pra testar o squid: squid -k check >>> Parar o Squid service squid stop ou da forma mais radical kill -9 squid >>> >>> >>> >>> No primeiro acesso a cada site não deverá apresentar diferença no desempenho porque o cache está vazio, cada pagina acessada ficará gravado no cache do squid pra agilizar os proximos acessos ao mesmo site, o papel do proxy é este, armazenar as paginas acessadas e nos proximos acessos faz comparação com o cache, quando não foram alteradas o squid não faz o download novamente, simplesmente entrega o que estava no cache, por isto a recomedação de HD SCSI pra dar mais velocidade no acesso ao cache em disco, dependendo da rede e volume de sites acessados, este chache pode se tornar grande, monitore o espaço em disco e periodicamente limpe o cache do squid executando como root: squid -z >>> Erro 'visible_hostname' # service squid start Iniciando squid FATAL: Could not determine fully qualified hostname. Please set 'visible_hostname' Squid Cache (Version 2.5.STABLE1): Terminated abnormally. CPU Usage: 0.010 seconds = 0.010 user + 0.000 sys Maximum Resident Size: 0 KB Page faults with physical i/o: 405 /etc/init.d/squid: line 118: 1583 Abortado (core dumped) $SQUID [FALHOU] MOTIVO DO ERRO. Faltou acertar o /etc/hosts Este erro é porque o dominio e ou apelido estão incompletos, abaixo a forma errada: cat /etc/hosts 127.0.0.1 localhost.localdomain localhost 192.168.1.103 zago SOLUÇÃO: precisa informar o IP da maquina mais dominio e apelido, na forma de um dominio, mesmo que não exista, mas precisa obedecer o formato como está abaixo, desta maneira funciona e não ocorre mais a mensagem de erro. cat /etc/hosts 127.0.0.1 localhost.localdomain localhost 192.168.1.103 zago.eti.br zago >>> Alterar a regra do firewall: para iptables -t nat -A PREROUTING -p tcp -m multiport -s 192.168.1.0/24 --dport 80,443 -j REDIRECT --to-ports 3128 >>> PERSONALIZAR MENSAGEM DE ERRO: As mensagens exibida pelo Squid, como Acesso negado e outras, são arquivos HTML que voce pode editar a seu modo, incluir logo, figuras e etc.., estes arquivos estão em: /usr/share/squid/errors/Portuguese Faça testes com alterações no conteúdo do arquivo: ERR_ACCESS_DENIED mantenha o nome do arquivo, altere somente o conteúdo. >>> ****************************************************************** L O G Analizadores de log do Squid. SARG, vaja mais em: http://www.zago.eti.br/squid/sarg.txt webalizer, acesse: http://www.mrunix.net/webalize >>> Acompanhar a geração do log de acesso a internet. Monitorar clientes na rede interna, acompanhar as entradas serem registradas no arquivo de log, (carregamento de GIFs, Paginas, etc). Veja no arquivo de configuração onde determinou a gravação do log, pra este exemplo está assim: cache_access_log /var/log/squid/access.log então pra este exemplo utilize: tail -f /var/log/squid/access.log Pra quem configurou pra gravar os log em outro local, basta acertar o caminho no comando acima. >>> [root@squid root]# service squid status squid (pid 1149 1147) está rodando... [root@squid root]# ps -aux | grep squid root 1147 0.0 0.6 5612 1656 ? S 09:30 0:00 /usr/sbin/squid nobody 1149 0.3 5.2 17440 13332 ? S 09:30 0:15 (squid) root 1311 1.0 0.2 1848 720 pts/0 S 10:55 0:00 grep squid [root@squid root]# chkconfig --list squid squid 0:não 1:não 2:não 3:sim 4:não 5:sim 6:não >>> ****************************************************************** ****************************************************************** Testar Esta regra é pra ser colocada no firewall antes da regra que rediciona o trafego pro Squid, em $IP_LIBERADO vai o IP da maquina que não deverá passar pelo servidor proxy, passará somente pelo NAT. iptables -A FORWARD -s $IP_LIBERADO -p tcp -d 0.0.0.0/0   -j ACCEPT iptables -A FORWARD -s 192.168.1.0/24 -p udp -d 0.0.0.0/0   -j DROP ****************************************************************** EXPLICANDO SOBRE OS TIPOS DE ACL acl Define uma lista de acesso, pode esta na mesma linha de criação da acl ou quando são muitas palavras (expressões) utilize arquivo texto com uma informação por linha, na linha de criação da acl indique este arquivo, a opção -i serve pra tratar as expressões tanto em minuscula como maiusculas, sem a opção -i serão tratadas como case-sensitive. acl nome tipo string1 ... | "arquivo" src Baseado em ip ou hostname de origem da requisição acl nome src ip/máscara. acl acl "" sendo: acl = indicação que é uma acl. = nome dado a acl, pode ser qualquer um. = tipo de acl, por exemplo src, url_regex etc.. = a condição exigida, depende do tipo de acl, pode ser uma palavra, dominio .... "" = quando a condição contiver varias palavras ou dominios fica mais fácil colocar tudo em um arquivo e indica-lo na acl. Exemplo de acl acl direto url_regex -i "/etc/squid/direto.txt" http_access allow direto all Neste exemplo o nome da acl direto, expressão url_regex é pra forçar a pesquisa na URL, a condição pode estar em uma string na própria linha da acl, ou em um arquivo, neste exemplo foi indicado o arquivo direto.txt, portanto entre parentese e indicando o caminho e o nome do arquivo: "/etc/squid/direto.txt" A expressão -i é pra tratar as palavras tanto em maiuscula como em minuscula, sem a expressão -i a comparação é case-sensitive, com -i é case-insesitive dst acl nome dst ip/máscara (com base no ip de destino da requisição) Utilize em acl pra endereços por IP do servidor de destino (servidores ou maquinas remotas com acesso via internet) Ex.: acl ipdireto dst 200.204.198.164/32 src acl nome src ip/máscara (com base no ip de origem da requisição) Utilize em acl pra endereços por IP do cliente (maquinas da rede inerna). Ex.: acl iplocal src 192.168.0.0/24 srcdomain acl aclname srcdomain nome_domínio Utilize em acl pra domínios locais, como envolve resolução de IP e nomes pode provocar atrazos nas requisições. Ex.:acl aclname srcdomain .localdomain.com dstdomain acl nome dstdomain nome_domínio Utilize em acl pra domínios destinos (servidores na internet), como envolve resolução de IP e nomes pode provocar atrazos nas requisições. Ex.: acl aclname dstdomain .zago.eti.br url_regex Utilize em acl que requer pesquisa de palavra na url por expressões regulares, com a opção -i torna case-insesitive ou seja procura por maiusculas e minusculas. Ex.: acl aclname url_regex -i sexo time Utilize em acl que requer controle por periodo, tem que definir dias da semana e hora inicial e final, por exemplo: acl manhamicroip71 time M T W H F 12:00-13:30 srcdom_regex acl nome srcdom_regex regex dstdom_regex acl nome dstdom_regex regex urpath_regex Com base na expressão que representa o caminho. acl nome urlpath_regex regex port Com base no protocolo de transferência (http, ftp, etc) acl nome port numero-porta method Com base no tipo de método da requisição acl nome method tipo-método browser acl nome browser tipo ident acl nome ident nome_usuário ident_regex acl aclname ident_regex pattern ****************************************************************** ACL POR HORA. ACL POR HORARIO, CONTROLAR POR DIA DA SEMANA OU POR FAIXA DE HORARIO. acl nomedaacl time SMTWHFA 00:00-00:00 Onde: SMTWHFA é o dia da semana que queira incluir na ACL S - Sunday = Domingo M - Monday = Segunda T - Tuesday = Terça W - Wednesday = Quarta H - Thursday = Quinta F - Friday = Sexta A - Saturday = Sábado 00:00-00:00 é o horario inicial e final = [h1:m1-h2:m2] 9:00-12:00 = inicia as 9:00 e termina as 12:00. Onde h2:m2 deve ser maior que h1:m1, no caso de iniciar em dia e terminar em outro, coloque como 24:00 a hora final da acl e crie outra acl pro horario restante, ou seja iniciando em zero hora e com final na hora desejada. Exemplo: Controlar o acesso do computador 192.168.1.71 das 9:00 às 12:00 e das 13:30 às 18:00 de segunda a sexta-feira ACL pra acesso nos horarios e dias acima indicados: acl microip71 src 192.168.0.71/255.255.255.255 acl manhamicroip71 time M T W H F 9:00-12:00 acl tardemicroip71 time M T W H F 13:30-18:00 Pra LIBERAR acesso, libera somente no horario de trabalho, basta incluir estas políticas de http_access: http_access allow microip71 manhamicroip71 http_access allow microip71 tardemicroip71 pra PROIBIR acesso, proibe somente no horario de trabalho, basta incluir estas políticas de http_access: http_access deny microip71 manhamicroip71 http_access deny microip71 tardemicroip71 Pra liberar somente no horario de almoço, todos os dias das 12 as 13:30 e após o expediente às 18:00hs, esta pra dar uma canja pra quem não pode acessar internet no horario de trabalho. acl microip71 src 192.168.0.71/255.255.255.255 acl manhamicroip71 time M T W H F 12:00-13:30 acl tardemicroip71 time M T W H F 18:00-24:00 http_access allow microip71 manhamicroip71 http_access allow microip71 tardemicroip71 ******************************************************************