http://www.zago.eti.br/squid/squid-com-senha-cl10.txt Tutorial pra instalar Squid com autenticação no CL10. FAQ sobre Squid acesse: http://www.zago.eti.br/squid/squid.txt http://www.zago.eti.br/squid/squid-com-senha.txt Tutorial pra instalar e configurar Squid com senha pra usuários terem acesso à internet. 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 Voce pode gerar relatorios de acesso à internet, estes relatorios são em HTML, muito rico em detalhes, como sites acessados, negados, e muitas informações sobre o que o usuário utilizou na net, veja tutorial e FAQ em: http://www.zago.eti.br/squid/sarg-2.0.txt Veja mais sobre squid em: http://www.zago.eti.br/squid/A-menu-squid.html veja mais sobre firewall em: http://www.zago.eti.br/firewall/A-menu-firewall.html Neste tutorial todos os comandos devem ser executados como root, abra um terminal e torne root com su - veja dicas sobre copiar e colar, usar modelos de configuração e outras dicas, vem em: http://www.zago.eti.br/modelos/A-menu-modelos.html Use CTRL+F para refinar a pesquisa. Linha de: **************** separa mensagens ou tópicos. Este tutorial foi modificado pra incluir autenticação por usuário e gerar relatorios de uso com o SARG, foi adaptado por:                          .-.                          /v\                         // \\                        /(   )\                         ^^-^^                         LINUX Busque soluções em linux e sai na frente você e sua empresa. Serviços em Servidores,Samba,Squid,Firewall,Internet.                         Email:               andersonmsp@click21.com.br ******************************************************** Zago http://www.zago.eti.br/menu.html FAQ e artigos sobre Linux ****************************************************************** RESUMO ZAGO (resumo de comandos) prontos pra copiar e colar # Instalar apt-get install squid.* apache-htpasswd ##Criar diretório squid e liberar todas as permissões: mkdir /var/spool/squid chmod 777 /var/spool/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 #criar e liberar diretorio pra regras mkdir /etc/squid/regras #copiar modelo de configuração e acl cd /etc/squid wget 200.204.198.164/zago/squid/acl/squid.conf-cl10-htpasswd.txt wget 200.204.198.164/zago/squid/acl/direto.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-cl10-htpasswd.txt squid.conf Também pode usar o "vi" com lynx pra trazer os textos acima 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 :r !lynx -dump http://200.204.198.164/zago/squid/acl/squid.conf-cl10-htpasswd.txt :r !lynx -dump http://200.204.198.164/zago/squid/acl/direto.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 ##Iniciar Squid somente pra este boot: service squid start # configurar pra iniciar Squid automaticamente em todo boot. chkconfig --level 35 squid on squid -z squid -k reconfigure Sempre que fizer qualquer alteração nos arquivos de configurações ou nos arquivos das acl, precisa recarregar (reconfigurar) o squid com: squid -k reconfigure O Squid está configurado, ainda falta criar usuários com suas senhas, acertar o firewall pra redirecionar o trafego pro squid e configurar as estações. 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 reinicie o script de firewall ou execute a linha acima na linha de comando. Nas estações configure o navegador pra usar proxy, a configuração é a mesma pra qualquer brownser, o que diferencia em cada um deles é o local onde fica esta configuração, por exemplo no konqueror, na barra de menu clique em "Configurações" depois no item "Configurar konqueror" procure na coluna da esquerdo por "proxy", clique sobre ele e depois selecione item "Especificar configurações de proxy manualmente", clique em "configurar" e preencha o endereço pra "HTTP" com o IP do servidor proxy, use este formato: http://192.168.1.2, altere a porta 8080 pra 3128 e selecione a opção "Usar o mesmo servidor proxy para todos os protocolos", prontinho, clique Ok, aplicar e OK.... Estações 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 OBS. Ainda precisa criar as regras, usuários e senhas, veja a seguir tópico sobre as regras e depois sobre usuários. ****************************************************************** ACL - explicando como criar as regras pra usuários. ****************************************************************** Criar usuários e senhas: SQUID COM SENHA, COM AUTENTICAÇÃO PELO htpasswd Pra autenticar pelo htpasswd, requer a instalação do pacote htpasswd, os comandos executados no inicio do tutorial já instala este pacote, Pra verificar se já está instalado: [root@speedy root]# rpm -qa | grep htpasswd apache-htpasswd-2.0.49-61250cl Pra instalar: apt-get install apache-htpasswd neste tópico vamos fazer a configuração e criar usuários com suas senhas. Passo 1 Criar o arquivo de usuários e com um editor de texto, neste arquivo coloque o nome de login que será utilizado pelos usuarios que terão acesso à internet, depois precisa criar a senha com o comando htpasswd pra completar a configuração. Os usuários que vão acessar internet não precisam ser os mesmos do Linux, pode criar usuários exclusivos pra acessar a internet, assim eles não terão uma shell válida, servem exclusivamente pra acessar a internet, isto melhora a segurança da rede, por outro lado tem o trabalho extra de criar os usuários e suas senhas, este tópico trata sobre este assunto, pode até utilizar os mesmos nomes dos usuários do sistema, mas as senhas são guardadas em arquivos diferentes e portanto podem ser diferentes. Tem outras maneiras de autenticação, por exemplo PAM/LDAP, Samba e etc... Pra liberar a internet com autenticação, somente para os usuários do Samba, Lembre que vai poder utilizar somente um processo de autenticação, caso queira cofigurar para os usuários do Samba, procure neste documento o tópico: SQUID COM SENHA, COM AUTENTICAÇÃO PELO samba (em elaboração) Exemplo pra criar o arquivo de usuários: Pra adicionar os nomes dos usuários no arquivo de usuários (quem vai acessar a net) pode ser feito em qualquer editor de texto simples, por exemplo no "vi" vi /etc/squid/usuarios pressione insert pra entrar no modo edição e acrescente neste arquivo um usuário por linha, por exemplo: anderson antonio zago frank pra salvar e sair pressione ESC pra sair do modo edição e depois SHIFT: wq o arquivo vai ficar assim: cat /etc/squid/usuarios anderson antonio zago frank Depois precisa definir senhas a estes usuários, para o primeiro usuário precisa do parametro -c (create file) que cria o arquivo e adiciona o usuário no arquivo de senhas, para os demais usuários não use esta diretiva -c. OBS. A diretiva -c cria o arquivo de senhas, deve executar somente pra criar o primeiro usuário, caso execute novamente removerá todos os usuários do arquivo de senhas e portanto terá que recriar a senha de todos eles. Exemplo: htpasswd -c /etc/squid/passwd anderson htpasswd /etc/squid/passwd antonio htpasswd /etc/squid/passwd zago htpasswd /etc/squid/passwd frank DICA. precisa indicar o caminho onde está o arquivo de senhas ou executar o comando htpasswd dentro do diretório onde está o arquivo de senhas, os comandos abaixo tem o mesmo resultado, basta executar: cd /etc/squid htpasswd -c passwd anderson htpasswd passwd antonio htpasswd passwd zago No CL10 precisa copiar o arquivo: /usr/lib/squid/ncsa_auth para /usr/bin, caso ainda não o fez no instalação do squid, execute agora, (execute somente uma única vez) esta linha de comando: cp /usr/lib/squid/ncsa_auth /usr/bin/ squid -k reconfigure Parabéns voce conseguiu!!!, agora vá a uma estação cofigurada pra acessar a internet via proxy e digite um endereço qualquer na URL que vai abrir uma tela pedindo login e senha, informe um dos usuários e senha, tem que ser um usuário cadastrado conforme explicado acima. Caso ocorra alguma mensagem de erro ou não funcione, tente implantar o serviço por partes, tente isolar o problema, veja dicas e mais detalhes nos proximos tópicos deste texto e nos arquivos indicados. ****************************************************************** PROXIMOS TÓPICOS TEM MAIS DETALHES PRA SOLUCIONAR PROBLEMAS. Tem a repetição dos comandos com comentarios e explicação mais detalhada. ****************************************************************** Configurando Squid no CL10, instalado com perfil "Desktop corporativo", 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 "Desktop corporativo" 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. No CL9 instalado com perfil "estação de trabalho" os pacotes do Squid não vem instalado por defatul, portanto precisa instalar também 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) (COM AUTENTICAÇÃO) Considerando que o micro já compartilha a conexão por ADSL ou modem discado. Considerando que já instalou os pacotes: # rpm -qa |grep squid squid-extra-templates-2.5.1-25760cl squid-2.5.1-25760cl squid-auth-2.5.1-25760cl 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. 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. A melhor solução é 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), antes 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 Na falta de um squid.conf, faça copia do modelo que se encontra neste site, copie o squid.conf-autenticado.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 o diretório squid e libera todas as permissões: mkdir /var/spool/squid chmod 777 /var/spool/squid ##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 CL9 precisa copiar o arquivo: /usr/lib/squid/ncsa_auth para /usr/bin, esta linha de comando faz a cópia: cp /usr/lib/squid/ncsa_auth /usr/bin/ 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 ##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 --level 35 squid on 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 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 --level 35 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. Para os browsers do Linux, Konqueror e outros, precisa incluir http:// antes do IP, por exemplo http://192.1638.1.2 Toda vez que abrir o browser (navegador) seja ele qual for, tanto nas estações Windows como Linux, vai abrir uma tela de autenticação onde deverá digitar o login e senha que foi configurado como acima, neste exemplo só conseguem navegar os usários anderson antonio e zago ****************************************************************** LADO ESTAÇÃO LINUX - configuração da estação. Para os browsers do Linux, Konqueror e outros, precisa incluir http:// antes do IP, por exemplo http://192.1638.1.2 ****************************************************************** ****************************************************************** ****************************************************************** OBSERVAÇÕES IMPORTANTES!!!! DICAS PRA SOLUÇÃO DE PROBLEMAS. DICAS & TRUQUES D I C A S !!! >>> acl minharede src 192.168.1.2/255.255.255.0 O IP 192.168.1.2 que consta na ACL acima que também está no /etc/squid.conf, este IP é o da maquina que está rodando o Squid, no exemplo acima o maquina tem o IP 192.168.1.2, ajuste esta linha (ACL) alterando para o IP correto da tua maquina. >>> 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. Cnsulte 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 >>> Erro ao iniciar ou reconfigurar o squid: # squid -k reconfigure squid: ERROR: No running copy Além desta mensagem na tela consta no log /var/log/message: Nov 22 02:36:31 zago (squid): Cannot open '/var/log/squid/access.log' for writing. ^IThe parent director Pra solucionar o problema criei e dei permissão total no diretório /var/spool/squid e /var/log/squid, com esta liberação o Squid passou a funcionar mas qualquer usuário pode acessar e alterar os logs do Squid, voce pode ajustar estas permissões a seu modo. EXPLICANDO: pro comando service squid start o resoltado era OK e não exibia mensagem de erro, mas ao executar # squid -k reconfigure squid: ERROR: No running copy [root@csr spool]# service squid stop Interrompendo squid squid: ERROR: No running copy [FALHOU] Consultando os logs de /var/log/messages..... Nos log de /var/log/messages aparecia esta mensagem: Nov 20 14:24:41 csr squid: Failed to make swap directory /var/spool/squid: (13) Permission denied Nov 20 14:24:41 csr squid: 2003/11/20 14:24:41| Creating Swap Directories Nov 20 14:24:41 csr squid: FATAL: Failed to make swap directory /var/spool/squid: (13) Permission denied Nov 20 14:24:41 csr squid: Squid Cache (Version 2.5.STABLE1): Terminated abnormally. Pra solucionar executei: mkdir /var/spool/squid chmod 777 /var/spool/squid Também nos log de /var/log/messages aparecia esta mensagem: Nov 20 14:29:12 csr (squid): Cannot open '/var/log/squid/access.log' for writing. ^IThe parent directory must be writeable by the ^Iuser 'nobody', which is the cache_effective_user ^Iset in squid.conf. Nov 20 14:29:12 csr squid[2678]: Squid Parent: child process 2765 exited due to signal 6 Pra solucionar executei: touch /var/log/squid/access.log chmod 777 /var/log/squid/access.log 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 >>> ****************************************************************** ****************************************************************** Copia da configuração default da instalação O arquivo de configuração do Squid fica em: /etc/squid/squid.conf na instalação vem com 3194 linhas e sem comentarios somente estas linhas: hierarchy_stoplist cgi-bin ? acl QUERY urlpath_regex cgi-bin \? no_cache deny QUERY auth_param basic children 5 auth_param basic realm Squid proxy-caching web server auth_param basic credentialsttl 2 hours refresh_pattern ^ftp: 1440 20% 10080 refresh_pattern ^gopher: 1440 0% 1440 refresh_pattern . 0 20% 4320 acl all src 0.0.0.0/0.0.0.0 acl manager proto cache_object acl localhost src 127.0.0.1/255.255.255.255 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 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 # Only allow cachemgr access from localhost http_access allow manager localhost http_access deny manager # Deny requests to unknown ports http_access deny !Safe_ports # Deny CONNECT to other than SSL ports http_access deny CONNECT !SSL_ports http_access deny all http_reply_access allow all icp_access allow all coredump_dir /var/cache/squid ****************************************************************** 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 ******************************************************************