Tutorial - Squid no SUSE 10, 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.
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 yast (modo console, copiar e colar linhas de comando)
yast -i squid
Ou via smart quando instalado;
smart install squid -y
Marcar para iniciar junto com o boot da maquina;
chkconfig squid on
Iniciar o servidor proxy (Squid)
rcsquid start
Na primeira vez vai criar o diretório cache e deve retornar;
linux:~ # rcsquid start Starting WWW-proxy squid (/var/cache/squid) done
Nas demais vezes retorna;
linux:~ # rcsquid start -D Starting WWW-proxy squid done
Prontinho, squid instalado, 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, para testar, configure uma estação para navegar por este proxy e confira nos logs, deve retornar no navegador da estação a mensagem padrão de erro do Squid, no log do servidor um resultado semelhante a;
linux:~ # tail -f /var/log/squid/access.log 1131289310.779 196 192.168.1.53 TCP_DENIED/403 1389 GET http://www.zago.eti.br/ - NONE/- text/html
Observe que registrou acesso negado, isto ocorre por falta de regras na configuração, 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
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;
rcsquid stop rm -rf /var/cache/squid squid -z rcsquid 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)
rcsquid 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. rcsquid start
Nesta troca de configuração, apagar e recriar o cache, algumas vezes pode travar o PID e não iniiciar o Squid, veja em dicas e truques algumas dicas e soluções..
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)
rcsquid start
Na primeira vez vai criar o diretório cache e deve retornar;
opensuse101:/home/zago # rcsquid start Starting WWW-proxy squid (/var/cache/squid) done
Nas demais vezes retorna;
linux:~ # rcsquid start -D Starting WWW-proxy squid done
Prontinho, squid instalado, 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, para testar, configure uma estação para navegar por este proxy e confira nos logs, deve retornar no navegador da estação a mensagem padrão de acesso negado (Access Denied.), no log do servidor um resultado semelhante a;
linux:~ # tail -f /var/log/squid/access.log 1131289310.779 196 192.168.1.53 TCP_DENIED/403 1389 GET http://www.zago.eti.br/ - NONE/- text/html
Observe que registrou acesso negado, isto ocorre por falta de regras na configuração, 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
Edite o arquivo de configuração do squid /etc/squid/squid.conf para liberar sua rede, precisa remover o comentário das 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 faça as alterações.
Neste exemplo para testes, utilizei minha configuração padrão, simples e fácil, basta trocar o squid.conf e copiar as ACL requeridas pelo squid.conf, segue os passos.
mv /etc/squid/squid.conf /etc/squid/original-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 cd /etc/squid wget 200.204.198.164/zago/squid/acl/suse10-por-palavra.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 cp /etc/squid/suse10-por-palavra.txt /etc/squid/squid.conf squid -k reconfigure
Prontinho, nova confguração no ar, Squid rodando sem problemas.
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;
rcsquid stop rm -rf /var/cache/squid squid -z rcsquid 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 no tópico sobre SUSE 10;
(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)
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..
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 trocar a configuração do Squid atual por um modelo do FAQ, por segurança tem uma linha para renomear o squid.conf atual e fazer download do faq, linhas de comando para copiar e colar.
mv /etc/squid/squid.conf /etc/squid/original-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 cd /etc/squid wget 200.204.198.164/zago/squid/acl/suse10-por-palavra.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 cp /etc/squid/suse10-por-palavra.txt /etc/squid/squid.conf squid -k reconfigure
Caso falhe ao recarregar o Squid, aplique o metodo mais radial, remova tudo e instale novamente, por segurança, a primeira linha move o diretório /etc/squid para /tmp
rcsquid stop sleep 5 smart remove squid -y mv /etc/squid /tmp 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/original-squid.conf wget 200.204.198.164/zago/squid/acl/suse10-por-palavra.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 cp /etc/squid/suse10-por-palavra.txt /etc/squid/squid.conf rcsquid start
Depois desta alteraçã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 o DENIED nas URL que contém sexy;
1131305210.685 0 192.168.1.53 TCP_DENIED/403 1389 GET http://www.sexy.com.br/ - NONE/- text/html 1131305224.845 808 192.168.1.53 TCP_MISS/200 1606 GET http://www.google.com.br/ - DIRECT/64.233.161.99 text/html 1131305321.397 0 192.168.1.53 TCP_DENIED/403 1417 GET http://www.sexyhot.com.br/favicon.ico - 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.
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, 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, baccos 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 via yast, apt ou outra ferramenta.
Os passos a seguir desinstala, remove a configuração anterior incluindo o cache e reinstala o Squid, caso queira manter copia de alguma configuração ou ACL, então faça copia antes de inciar o processo de copiar e colar as linhas abaixo.
rcsquid 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 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-ip.txt cd /etc/squid wget 200.204.198.164/zago/squid/acl/suse10-por-ip.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 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/suse10-por-ip.txt /etc/squid/squid.conf rcsquid start
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 para incluir o IP das estações nos arquivos correspondentes, tente fazer um teste com uma estação, antes configure no servidor acrescentando o IP da uma estação em ip_restrito.txt, recarregue o squid e tente a navegação na estação, utilize outro navegador, configure para acessar a net via este proxy e 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.
Testes efetuados no beta8 do OPENSUSE 10.1, já vem com squid 3.0 e outros aplicativos, veja um resumo.
linux-i386:~ # smart search squid calamaris - A Report Generator sarg - Squid Analysis Report Generator squid - Squid WWW proxy server squid-beta - Squid V3.0 WWW Proxy Server (new version) squid-beta-debuginfo - Debug information for package squid-beta squid-debuginfo - Debug information for package squid squidGuard - filter plugin for squid squidGuard-debuginfo - Debug information for package squidGuard transconnect - Allows you to access the internet through a HTTP proxy
Instalar Squid 2.5, resumo dos comandos, pronto para copiar e colar, em uma instalação com perfil KDE e navegando sem restrições, os comandos abaixo configura o servidor proxy, em varios testes funcionou sem problema algum, comentários e anotações, veja no tópico sobre a instalação do SUSE 10, são os mesmos, a seguir a instalação e depois configuração de outros serviços.
smart install squid -y chkconfig squid on cp /etc/squid/squid.conf /etc/squid/copia1-squid.conf cd /etc/squid wget 200.204.198.164/zago/squid/acl/suse10-por-ip.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 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/suse10-por-ip.txt /etc/squid/squid.conf rcsquid start
Instalar;
smart install calamaris -y
webin tem modulo de análise do calamaris, acesse em; Servidores -> Servidor Proxy Squid -> "Análise de Log Calamaris"
Instalar;
smart install squidguard -y
ATENÇÃO!, o nome do pacote na istalação está em minusculas mas o executável no sistema está com "G" em maiusculo, está em; /usr/sbin/squidGuard
Arquivos de configuração e log ficam em/ `` squidguard.conf em; /etc/squidguard.conf lgo em; /var/log/squidGuard dbhome em; /var/lib/squidGuard/db ``
Incluir no squid.conf o redirecionamento, segue algumas tentativas que falhou, estão aqui como anotações até descobrir a correto, quando pronto removo este aviso.
`` redirect_program /usr/sbin/squidGuard
refresh_pattern ^gopher: 1440 0% 1440 refresh_pattern . 0 20% 4320 #TAG: redirect_program redirect_program /usr/sbin/squidGuard -c /etc/squidguard.conf acl all src 0.0.0.0/0.0.0.0 acl manager proto cache_object ``
Instalar;
smart install sarg -y