fc5 - Fedora Core 5 - Tutorial squid por user ou IP.

Atualizado em: 23/07/2006



Sobre este documento

Tutorial - Squid no Fedora Core 5, instalar e configurar com controle de acesso por usuário ou por IP, comandos e linhas de comando utilizados na manutenção de servidor proxy - Squid (na minha opinião e como eu uso, copiar e colar no console), existem diversas ferramentas via ambiente gráfico, ao estilo clique, clique..... ou da maneira mais rápida e simples, copiar colar os comandos.

Tentei fazer alterações minimas na configuração da instalação padrão, somente para acrescentar as ACL e configurações constantes nos modelos e dicas indicados neste tutorial, a intenção é demonstrar como funciona, colocar o servidor proxy funcionando com diversas opções de controle, neste documento consta somente algumas opções e exemplos, Squid é altamente configurável, portanto procure fazer passo a passo e testar as diversas opções, use os modelos para entender e testar, depois procure refinar a configuração a seu modo.

Não recomendo mas é perfeita possivel copiar as configurações de outra instalação que utiliza Squid 2.5, testei com copias de configuração do CL10 e funciona sem problemas, a versão do squid entre as duas distro são praticamente a mesma, caso queira testar algum exemplo do CL10 no FAQ ou de alguma instalação com squid da serie 2.5, pode copiar que deverá funcionar sem problemas...

Os comandos e dicas podem não atender as suas necessidades, não ser compatível com sua instalação, use como referencia, tente adaptar ao seu ambiente.

Página principal sobre Squid, indicações, FAQ, tutoriais, modelos de configuração, squid.conf, modelos de acl e mais dicas em:
http://www.zago.eti.br/squid/A-menu-squid.html

Tutorial, dicas, download, documentação, indicações e mais sobre FC5 em;
http://www.zago.eti.br/distro/fedora-dicas.html


Dicas - Solução de problemas

Tente instalar e configurar por partes, tente isolar o problema, facilita na localização e solução, considere usar ambiente de testes, pode usar uma estação da rede com dual-boot ou até mesmo modem discado nesta maquina para efetuar testes de navegação atraves de outra maquina da rede, testar acl e configuração em geral, veja dicas em;
http://www.zago.eti.br/squid/dicas-e-truques.html

Instalar e testar servidor proxy

Antes de iniciar esta configuração, certifique que a maquina tem acesso livre à internet, navega sem restrições de firewall ou outro proxy, pode ser qualquer estação da rede com acesso livre pelo NAT/firewall, ou conectada via modem ou ADSL, o que importa é configuração livre para navegar.

Dependendo do perfil de instalação o Squid já vem instalado, a principio precisa somente do pacote "squid", procure por ele na interface gráfica de sua preferencia, ou mesmo que instalado pode repetir a linha de comando, exemplos, instalar via smart (modo console, copiar e colar linhas de comando)

smart install squid -y

Marcar para iniciar junto com o boot da maquina;

chkconfig squid on

Iniciar o servidor proxy (Squid)

service squid start

Na primeira vez vai criar o diretório cache e deve retornar;

  [root@FC5 zago]# service squid start
  init_cache_dir /var/spool/squid... Iniciando squid: .      [  OK  ]
  

Prontinho, squid instalado e rodando, o próprio instalador cria automaticamente arquivos de configuração, log, cache e outras configurações necessárias, mas ainda não navega por falta de regras.

A configuração default que fica em /etc/squid/squid.conf não tem regras de controle, ou melhor, o Squid é muito flexível e permite diversos tipos de configuração, precisamos personalizar o controle de acesso à web, escolher e configurar o controle, por usuário, por IP, por horário, liberar geral com restrição de alguns sites, controles por palavras na URL e muito mais, qualquer destas configurações ou parte delas podem ser via ferramentas de configuração via ambiente ambiente gráfico, editar diretamente o squid.conf ou simplesmente substituir por um squid.conf de outra instalação previamente configurado.

Por segurança, faça copia do squid.conf, assim tem como voltar em casos de acidentes..

cp /etc/squid/squid.conf /etc/squid/copia1-squid.conf

Para testar o funcionamento, em uma estação da rede, configure o proxy no navegador e tente acessar algum site, vai dar acesso negado, acompanhe os logs, deve retornar algo neste formato.

  [root@FC5 zago]# tail -f /var/log/squid/access.log
  1143210828.527      1 192.168.1.144 TCP_DENIED/403 1379 GET http://www.zago.eti.br/ - NONE/- text/html

Como pode ver, o squid está funcionando, a estação recebeu um aviso de acesso negado e também registrou nos logs do Squid, isto ocorre porque falta configurar o squid, falta ACL e outras regras, simplificando a demonstração do funcionamento, neste tutorial tem varias opções de confiuração, escolha uma delas para seus testes.

Controle de acesso pelo IP da estação

Nesta opção de liberar acesso conforme o IP da estação, tem seus prós e contras, como a liberação de acesso ocorre conforme o IP da estação, se usuário alterar IP por outro que tenha acesso ele navega com as permissões do outro IP, mas isto é questão para outro tópico, fixar IP por MAC e outros controles de rede.

A grande vantagem é enjaular o usuário para acessar somente os sites associados ao seu IP, a configuração pode ser feita para um IP ou varios, eles acessarão somente os sites que constam na ACL pertencente a eles.

Nesta configuração precisa criar ACL contendo a lista de IP e sites associados a ela, pode criar diversas ACL, para facilitar o entendimento, vamos considerar que varios IP deverão acessar somente sites de bancos, algo como um grupo de usuários que acessam somente bancos, outro grupo de usuários tem acesso a outra lista de sites, veja exemplo de dois grupos de sites, bancos e restritos, cada qual com seu IP amarrado a uma lista de sites que podem acessar, veja este exemplo;

  www.zago.eti.br/squid/acl/ip_restrito.txt
  www.zago.eti.br/zago/squid/acl/ip_restrito_sites.txt
  www.zago.eti.br/squid/acl/ip_bancos.txt
  www.zago.eti.br/squid/acl/ip_bancos_sites.txt

Estações listadas em ip_bancos.txt (192.168.1.190 e 192.168.1.143) acessam somente os sites listados em ip_bancos_sites.txt (www.bradesco.com.br e www.bb.com.br), pode se criar quantas ACL forem necessárias e personalizar a seu modo, este é um exemplo somente.

Também tem uma ACL para IP liberados, liberar geral para alguns IP, mesmo assim pode bloquear palavras indejadas como na configuração anterior por palavra.

Na troca de configuração pode ocorrer problemas, dependendo da configuração anterior acaba ocorrendo erros relacionados a processos e cache e dando mais trabalho, reinstalando automaticamente recria os arquivos de configuração, diretórios com permissões corretas, prefiro remover e reinstalar via smart, caso não tenha na sua instalação, pode remover e reinstalar com seu gerenciador de pacotes preferido.

Os passos a seguir desinstala, remove a configuração anterior incluindo o cache e log, reinstala o Squid, faz copia de outra configuração e inicia o novo Squid, caso queira manter copia do log ou de alguma configuração ou ACL, então faça copia antes de inciar o processo de copiar e colar as linhas abaixo.

  service squid stop 
  sleep 5
  smart remove squid -y
  rm -rf /etc/squid
  rm -rf /var/cache/squid
  rm -rf /var/log/squid/access.log
  smart install squid -y
  cd /etc/squid
  mv /etc/squid/squid.conf /etc/squid/original2-squid.conf
  #comando para importar este squid.conf no "vi" (veja cp.txt)
  #  :r !lynx -dump http://www.zago.eti.br/squid/acl/squid-conf-por-ip-site
  wget 200.204.198.164/zago/squid/acl/squid-conf-por-ip-site
  cp /etc/squid/squid-conf-por-ip-site /etc/squid/squid.conf
  wget 200.204.198.164/zago/squid/acl/squid-conf-por-ip-site
  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
  wget 200.204.198.164/zago/squid/acl/ip_liberados.txt
  wget 200.204.198.164/zago/squid/acl/ip_restrito.txt
  wget 200.204.198.164/zago/squid/acl/ip_restrito_sites.txt
  wget 200.204.198.164/zago/squid/acl/ip_bancos.txt
  wget 200.204.198.164/zago/squid/acl/ip_bancos_sites.txt
  cp /etc/squid/squid-conf-por-ip-site /etc/squid/squid.conf
  service squid start

Ou se preferir, substitua o squid.conf por outro e execute;

squid -k reconfigure

Prontinho, não ocorrendo erros na copia ou inicialização do Squid é sinal de que deu tudo certo, agora com seu editor preferido, edite os arquivos em /etc/squid.

Configurar estação para navegação livre.

Edite o arquivo /etc/squid/ip_liberados.txt para incluir o IP das estações com acesso liberado, neste exemplo, a estação de teste tem IP 192.168.1.244, veja o conteúdo do arquivo modificado e o resultado no log quando a estação acessa internet.

  [root@FC5 squid]# cat /etc/squid/ip_liberados.txt
  192.168.1.53
  192.168.1.80
  192.168.1.144

Registro nos logs,

  [root@FC5 zago]# tail -f /var/log/squid/access.log
  1143211963.136    707 192.168.1.144 TCP_MISS/200 449 GET http://www.zago.eti.br/icons/blank.gif - DIRECT/200.196.233.13 image/gif
  1143211963.155    713 192.168.1.144 TCP_MISS/200 517 GET http://www.zago.eti.br/icons/back.gif - DIRECT/200.196.233.13 image/gif

Prontinho, Squid OK, agora ajuste a seu modo, configure as ACL, basta editar o arquivo correspondente para incluir o IP da estação na ACL e sites que estas estações podem acessar.

Enjaular estação, navegar somente nos sites listados.

Edit /etc/squid/ip_liberados.txt, remova o IP da estação e acrescente este IP na lista /etc/squid/ip_restrito.txt, recarregue o squid.conf com squid -k reconfigure e teste a navegação na estação, deverá acessar somente os sites listados em ip_restrito_sites.txt e direto.txt, qualquer outro site receberá a tela de aviso do Squid informando "Access Denied. ", a tradução desta mensagem e outras formas de aviso é assunto para outro tópico, edite estes arquivos para incluir os sites que deseja liberar para estações com IP listado em ip_restrito.txt

Parar, status e iniciar squid manualmente.

  [root@FC5 squid]# service squid stop
  Parando o squid: .                                         [  OK  ]
  [root@FC5 squid]# service squid status
  squid está parado
  squid: ERROR: No running copy
  [root@FC5 squid]# service squid start -D
  Iniciando squid: .                                         [  OK  ]
  [root@FC5 squid]#

Alterar a configuração do squid original

Em teste, não use este tópico, quando pronto removo este aviso.

Alterando squid.conf para liberar sua rede, precisa remover o comentário de duas linhas e alterar a classe de rede quando diferente de 192.168.1.0 ou 192.168.2.0, só faltou remover o comentário no original, acho que no default não deveriam ser comentadas, como deve ter algum motivo para isto, como não navega com elas comentadas, então use seu editor preferido e retire o comentário destas duas linhas, (no squid.conf original são as linhas 1871 e 1872);

  # antes (configuração original vem comentada)
  #acl our_networks src 192.168.1.0/24 192.168.2.0/24
  #http_access allow our_networks
  #depois, retire o comentário e em lugar do IP altere para a classe de IP da sua rede
  acl our_networks src 192.168.1.0/24 192.168.2.0/24
  http_access allow our_networks

Ou em uma tacada só, remover os comentarios com estas linhas de comando, pode colar estas linhas abaixo no console para fazer o mesmo serviço de edição das linhas acima, cuidado com a quebra de linha, são duas linhas, cada uma inciando com sed;

  sed -i "s/#acl our_networks src 192\.168\.1\.0\/24 192\.168\.2\.0\/24/acl our_networks src 192\.168\.1\.0\/24 192\.168\.2\.0\/24/g" /etc/squid/squid.conf
  
  sed -i "s/#http_access allow our_networks/http_access allow our_networks/g" /etc/squid/squid.conf

Sempre que alterar squid.conf precisa recarregar as configurações com o comando;

squid -k reconfigure

Prontinho, agora a estação navega normalmente, nos logs registra algo como;

  1131293077.504   1974 192.168.1.53 TCP_MISS/200 55483 GET http://www.zago.eti.br/ - DIRECT/200.142.243.108 text/html

Sempre que alterar squid.conf ou alguma ACL, precisa recarregar as configurações com squid -k reconfigure, este comando pode falhar conforme as alterações efetuadas no squid.conf, quando tiver problemas, faça um teste, apague e recrie o cache, faça isto com o servidor proxy parado, exemplo;

  service squid stop 
  rm -rf /var/cache/squid
  squid -z
  service squid start

Persistindo o problema, reveja a configuração, volte o squid.conf padrão (original da instalação) e siga os passos acima, sempre testando o funcionamento a cada passo e não esqueça dos logs que é sua grande fonte de informação na solução de problemas.

Outra opção, zerar tudo, começar de novo, desinstalar e remover Squid e seus diretórios, exemplo via smart;

(Isto vai apagar tudo referente ao Squid, portanto faça copia dos arquivos que queira manter, exemplo de alguma configuração ou ACL em /etc/squid ou dos logs em /var/log/squid/access.log)

  service squid stop 
  smart remove squid -y
  rm -rf /etc/squid
  rm -rf /var/cache/squid
  rm -rf /var/log/squid/access.log
  smart install squid -y
  sed -i "s/#acl our_networks src 192\.168\.1\.0\/24 192\.168\.2\.0\/24/acl our_networks src 192\.168\.1\.0\/24 192\.168\.2\.0\/24/g" /etc/squid/squid.conf
  
  sed -i "s/#http_access allow our_networks/http_access allow our_networks/g" /etc/squid/squid.conf
  # ou substitua o squid.conf e acl por outra configuração antes de iniciar o Squid, veja outros modelos indicados neste tutorial.
  service squid start

Nesta troca de configuração, apagar e recriar o cache, algumas vezes pode travar o PID e não iniciar o Squid, veja em dicas e truques algumas dicas e soluções..

Com filtro na URL, negando palavras na URL coforme lista

Modelo de Squid.conf e acl com bloqueio de acesso conforme uma lista de palavras, requer um arquivo negapalavra.txt com as palavras que vão negar acesso aos sites que contenha determinada palavra na URL, por exemplo, no arquivo contém a palavra sexy e portanto todos os sites que contenha sexy em qualquer parte do endereço (URL) serão negados, edite este arquivo com seu editor preferido para remover ou incluir novas palavras.

Tornando mais fácil, vamos substituir o original da instalação por um modelo do FAQ, por segurança tem uma linha para mover o sub-diretório atual do Squid para /tmp e depois fazer download do faq, linhas de comando para copiar e colar.

Nos comandos abaixo vai econtrar (suse10-por-palavra.txt), não é erro, aqui utilizei a mesma configuração do SUSE10, funciona sem problema algum o squid é da mesma versão.

  service squid stop 
  sleep 5
  mv /etc/squid/ /tmp
  smart remove squid -y
  rm -rf /etc/squid
  rm -rf /var/cache/squid
  rm -rf /var/log/squid/access.log
  smart install squid -y
  cd /etc/squid
  mv /etc/squid/squid.conf /etc/squid/original2-squid.conf
  #comando para importar este squid.conf no "vi" (veja cp.txt)
  #  :r !lynx -dump http://www.zago.eti.br/squid/acl/suse10-por-palavra.txt
  wget 200.204.198.164/zago/squid/acl/suse10-por-palavra.txt
  cp /etc/squid/squid-conf-por-ip-site /etc/squid/squid.conf
  wget 200.204.198.164/zago/squid/acl/squid-conf-por-ip-site
  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
  cp /etc/squid/suse10-por-palavra.txt /etc/squid/squid.conf
  service squid start

Este metodo acima é muito radical, remove tudo e reinstala, pode tentar fazer somente a troca do squid.conf e copiar respectivas ACL requeridas e recarregar o squid com squid -k reconfigure, na maioria das vezes funciona, quando falhar, tente interpretar a mensagem de erro e os logs, ou refaça tudo como no exemplo acima.

Depois desta configuração serão bloqueados acesso a sites que contenha em alguma parte da URL, o filtro é qualquer palavra listada em negapalavra.txt, como exemplo, a palavra sexy consta na lista e portanto os sites abaixo estão bloqueados, faça um teste, tente acessar estes sites;

  http://www.sexy.com.br/
  http://www.sexyhot.com.br/

Recebeu o aviso do proxy em lugar da página normal, acessou outros sites normalmente, então funcionou!

No log deve encontrar registros semelhantes a estes, observe que acessa www.zago.eti.br e nega acesso a www.sexy.com.br (DENIED nas URL que contém sexy);

  1[root@FC5 squid]# tail /var/log/squid/access.log
  1143220677.787   1500 192.168.1.144 TCP_MISS/200 32825 GET http://www.zago.eti.br/menu.html - DIRECT/200.196.233.13 text/html
  1143220685.957    883 192.168.1.144 TCP_DENIED/403 1379 GET http://www.sexy.com.br/ - NONE/- text/html

Na acl liberapalavra.txt consta as excessões, os sites que mesmo contendo a palavra negada em alguma parte da URL deverão ser liberados.

Página principal sobre Squid
http://www.zago.eti.br/squid/A-menu-squid.html

Página principal deste site (FAQ)
http://www.zago.eti.br/menu.html