O servidor Squid pode ser configurado de modo a seguir regras de acesso, autenticações ou acesso liberado. O procedimento descrito assume que a sua máquina linux já esta configurada na rede local onde será o servidor para as demais e conectada a internet. Este procedimento não prevê envio e recebimento de mensagens através do serviço de proxy.
As configurações sitadas neste documento foram realizadas diretamente no arquivo squid.conf (/etc/squid/squid.conf)
Verifique se os pacotes do squid encontram-se instalado em seu sistema através do comando:
[root@localhost root]# rpm -qa |grep squid
|
Serão apresentados os seguintes pacotes para a versão CL7.0:
squid-(versão do pacote)
linuxconf-squid-(versão do pacote)
squid-doc-(versão do pacote)
squid-auth-(versão do pacote)
squid-templates-(versão do pacote)
|
Para a versão Cl60 e anteriores será apresentado apenas os pacotes:
squid-(versão do pacote)
linuxconf-squid-(versão do pacote)
|
Caso os pacotes não apareçam utilize o aplicativo apt-get ou o rpm para instalar os pacotes.
Antes de iniciar o processo de configuração aconselha-se a fazer uma cópia do arquivo original onde serão feitas as alterações, pois se for necessário refazer a configuração desde o início por algum motivo de erro não será preciso reinstalar os pacotes.
Para fazer a cópia do arquivo original utilize o comando:
[root@localhost root]#cp /etc/squid/squid.conf /tmp
|
OBS: Para todos os exemplos foi utilizada a rede 192.168.0.0 . A regra acl rede_interna src restringe o acesso a somente a rede interna impedindo assim que outros que estejam fora da rede utilizem o seu serviço de proxy.
Segue abaixo alguns exemplos de permissão de acesso no squid
Esta é a forma mais simples de configuração do servidor squid, para que todas as máquinas da rede tenham acesso a internet, será criada uma regra (acl) para dar acesso a somente máquinas que pertençam a rede .
Edite o arquivo de configuração:
[root@localhost root]#mcedit /etc/squid/squid.conf
|
No arquivo de configuração do squid procure a seguinte entrada:
Na sequência do arquivo insira a acl "acl rede_interna src 192.168.0.0
#Recommended minimum configuration:
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 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
acl rede_interna src 192.168.0.0 <- insira esta linha.
|
O último passo a ser especificado para este tipo de configuração é a liberação de acesso para a rede interna.
Ainda no arquivo procure pela entrada abaixo:
# INSERT YOUR OWN RULE(S) HERE TO ALLOW ACCESS FROM YOUR CLIENTS
#
# And finally deny all other access to this proxy
#http_access deny all <- comente esta entrada
http_access allow rede_interna <- insira esta linha
|
Pressione F2 para salvar e F10 para sair.
Utilize os comandos abaixo para iniciar o serviço do squid.
[root@localhost root]# service squid stop ; service squid start
|
Nas máquinas clientes configure o programa de navegação para procurar pelo servidor proxy, informando o ip da máquina servidor e a porta de comuicação.
OBS: A porta de comunicação não foi alterada sendo assim o serviço responderá na porta 3128.
Esta forma de acesso permite que somente usuários cadastrados no servidor proxy poderão utilizá-lo para navegação. Quando for feito um pedido no navegador ele mostrará uma tela pedindo login e senha para acesso:
OBS: O usuário e o login não precisam ser necessariamente os mesmos do usuário real.
Para autenticar os usuários será necessário um programa que verifique se as informações estão corretas ou não, neste exemplo utilizaremos o ncsa_auth que esta no diretório /usr/lib/squid.
Copie o arquivo para dentro do diretório /usr/bin/ com o comando:
[root@localhost root]#cp /usr/lib/squid/ncsa_auth /usr/bin/
|
Após a cópia do arquivo crie o arquivo onde ficarão a senhas dos usuários .
O arquivo /etc/squid/squid_passwd deve ser criado com o comando htpasswd:
Ex:
[root@localhost]# htpasswd -c /etc/squid/squid_passwd joao
|
Será pedida a senha e em seguida sua confirmação. Para inserir os outros usuários que terão acesso, será necessário retirar a opção -c e alterar o nome do usuário.
Ex:
[root@localhost]# htpasswd /etc/squid/squid_passwd pedro
|
Feita a criação do arquivo onde ficarão as senhas e copiado o programa que autenticará, edite o arquivo squid.conf com o comando:
[root@localhost root]#mcedit /etc/squid/squid.conf
|
Procure pela entrada:
# TAG: authenticate_program
# Specify the command for the external authenticator. Such a
# program reads a line containing "username password" and replies
# "OK" or "ERR" in an endless loop. If you use an authenticator,
# make sure you have 1 acl of type proxy_auth. By default, the
# authenticator_program is not used.
#
# If you want to use the traditional proxy authentication,
# jump over to the ../auth_modules/NCSA directory and
# type:
# % make
# % make install
#
# Then, set this line to something like
#
# authenticate_program /usr/bin/ncsa_auth /usr/etc/passwd
authenticate_program /usr/bin/ncsa_auth /etc/squid/squid_passwd <-insira esta linha
|
A linha acima refere-se ao programa que irá autenticar assim como o arquivo que guardará as senhas dos usuários.
Na sequência do arquivo insira a acl "acl password proxy_auth REQUIRED" no final como mostra o exemplo abaixo:
#Recommended minimum configuration:
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 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
acl password proxy_auth REQUIRED <- insira esta linha.
|
O último passo a ser especificado para este tipo de configuração é a liberação do acesso através de senha.
Ainda no arquivo procure pela entrada abaixo:
# INSERT YOUR OWN RULE(S) HERE TO ALLOW ACCESS FROM YOUR CLIENTS
#
# And finally deny all other access to this proxy
#http_access deny all <- comente esta linha.
http_access allow password <- insira esta linha.
|
Pressione F2 para salvar e F10 para sair do arquivo.
As configurações necessárias para que o servidor squid requisite senhas já esta pronto.
Utilize os comandos abaixo para iniciar o serviço do squid.
[root@localhost root]# service squid stop ; service squid start
|
OBS: Quando o navegador for carregado e algum endereço for pedido, será apresentada um tela pedindo o login e a senha, somente os usuários cadastrados no servidor proxy terão acesso.
Este tipo de restrição é utilizada por administradores de rede para que os usuários que precisem utilizar a internet como meio e comunicação ou pesquisa façam o uso dela apenas profissionalmente e não para assuntos que não estejam ligados as suas funções dentro do seu trabalho.
Este exemplo refere-se a restrição de apenas algumas máquinas da rede, vamos utilizar a rede 192.168.0.0 e restringir os IP's 192.168.0.1 e 192.168.0.2.
Edite o arquivo squid.conf com o comando:
[root@localhost root]#mcedit /etc/squid/squid.conf
|
Na sequência do arquivo insira as acls:
acl rede_interna src 192.168.0.0
"acl proibir_ip src 192.168.0.1 192.168.0.2" ao final das acls já criadas.
#Recommended minimum configuration:
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 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
acl rede_interna src 192.168.0.0 <- insira esta linha.
acl proibir_ip src 192.168.0.1 192.168.0.2 <- insira esta linha.
|
O último passo a ser especificado para este tipo de configuração é a restrição de acesso para os dois ips.
Ainda no arquivo procure pela entrada abaixo:
# INSERT YOUR OWN RULE(S) HERE TO ALLOW ACCESS FROM YOUR CLIENTS
#
# And finally deny all other access to this proxy
#http_access deny all <- comente esta linha.
http_access allow rede_interna <- insira esta linha.
http_access deny proibir_ip <- insira esta linha.
|
Pressione F2 para salvar e F10 para sair do arquivo.
OBS: Os valores utilizados para a rede e os ips das máquinas devem ser adaptados para a rede em que se esta implantando o serviço.
As configurações necessárias para que o servidor squid faça a restrição dos IPs já esta pronta.
Utilize os comandos abaixo para iniciar o serviço do squid.
[root@localhost root]# service squid stop ; service squid start
|
Este exemplo refere-se a restrição de endereços específicos iniciados por www ou ftp.
Neste tipo de configuração pode ser criado um arquivo para que todos os endereço a serem restringidos possam ser arquivados.
Crie o arquivo através do comando:
[root@localhost root]#touch /etc/squid/sites
|
Dentro deste arquivo insira os endereços que não deverão ser acessados:
Ex:
[root@localhost root]#mcedit /etc/squid/sites
|
www.conectiva.com.br
www.uol.com.br
www.playboy.com.br
|
Pressione F2 para salvar e F10 para sair
Edite o arquivo squid.conf com o comando:
[root@localhost root]#mcedit /etc/squid/squid.conf
|
Na sequência do arquivo insira as acls
acl rede_interna src 192.168.0.0
acl proibir_sites dstdomain "/etc/sites" ao final das acls já criadas.
#Recommended minimum configuration:
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 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
acl rede_interna src 192.168.0.0 <- insira esta linha.
acl proibir_sites dstdomain "/etc/squid/sites" <- insira esta linha.
|
O último passo a ser especificado para este tipo de configuração é a restrição de acesso para os endereços cadastrados.
Ainda no arquivo procure pela entrada abaixo:
# INSERT YOUR OWN RULE(S) HERE TO ALLOW ACCESS FROM YOUR CLIENTS
#
# And finally deny all other access to this proxy
#http_access deny all <- comente esta linha.
http_access deny proibir_sites <- insira esta linha.
http_access allow rede_interna <- insira esta linha.
|
Pressione F2 para salvar e F10 para sair do arquivo.
As configurações necessárias para que o servidor squid faça a restrição dos endereços cadastrados no arquivo sites já esta pronto.
Utilize os comandos abaixo para iniciar o serviço do squid.
[root@localhost root]# service squid stop ; service squid start
|
Este exemplo refere-se a restrição de acesso através da consulta de palavras que não devam ser pesquisadas.
Neste tipo de configuração pode ser criado um arquivo para que todas as palavras a serem restringidas possam ser arquivados.
Crie o arquivo através do comando:
[root@localhost root]#touch /etc/squid/palavras
|
Dentro deste arquivo insira os endereços que não deverão ser acessados:
Ex:
[root@localhost root]#mcedit /etc/squid/palavras
|
mp3
povo
cone
|
Pressione F2 para salvar e F10 para sair
OBS: Este exemplo difere do anterior por rejeitar qualquer palavra cadastrada no arquivo. Quando um endereço for digitado no navegador ele procurará a ocorrência da palavra em todo o endereço digitado:
Ex:
Se o endereço http://www.conectiva.com.br fosse solicitado o mesmo não apareceria, pois a palavra cone esta cadastrada dentro do arquivo palavras.
Edite o arquivo squid.conf com o comando:
[root@localhost root]#mcedit /etc/squid/squid.conf
|
Na sequência do arquivo insira as acls
acl rede_interna src 192.168.0.0
acl proibir_palavras dstdomain "/etc/palavras" ao final das acls já criadas.
#Recommended minimum configuration:
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 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
acl rede_interna src 192.168.0.0 <- insira esta linha.
acl proibir_palavras url_regex -i "/etc/squid/palavras" <- insira esta linha.
|
O último passo a ser especificado para este tipo de configuração é a restrição de acesso para os endereços cadastrados.
Ainda no arquivo procure pela entrada abaixo:
# INSERT YOUR OWN RULE(S) HERE TO ALLOW ACCESS FROM YOUR CLIENTS
#
# And finally deny all other access to this proxy
#http_access deny all <- comente esta linha.
http_access deny proibir_palavras <- insira esta linha.
http_access allow rede_interna <- insira esta linha.
|
Pressione F2 para salvar e F10 para sair do arquivo.
As configurações necessárias para que o servidor squid faça a restrição dos endereços cadastrados no arquivo sites já esta pronto.
Utilize os comandos abaixo para iniciar o serviço do squid.
[root@localhost root]# service squid stop ; service squid start
|
Este exemplo refere-se a restrição de acesso através de horários programados.
Este tipo de configuração deve ser utilizada em casos onde o acesso a internet feito pelos usuários somente em horário de trabalho.
Edite o arquivo squid.conf com o comando:
[root@localhost root]#mcedit /etc/squid/squid.conf
|
Na sequência do arquivo insira as acls: acl rede src 192.168.0.0
e
acl horario time MTWHF 09:00-18:00 ao final das acls já criadas.
#Recommended minimum configuration:
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 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
acl rede_interna src 192.168.0.0 <- insira esta linha.
acl horario time MTWHF 09:00-18:00 <- insira esta linha.
|
OBS: Este exemplo preve que todas as máquinas irão acessar o servidor squid de segunda a sexta somente das 09 às 18 horas.
Caso seja necessário liberar acesso para somente algumas máquinas além do horário especificado crie novas regras se baseando neste exemplo, alterando a rede para os ips específicos das máquinas e os horários de acesso. OBS: O nome das regras deverá ser diferente.
O último passo a ser especificado para este tipo de configuração é a restrição de acesso para o horário.
Ainda no arquivo procure pela entrada abaixo:
# INSERT YOUR OWN RULE(S) HERE TO ALLOW ACCESS FROM YOUR CLIENTS
#
# And finally deny all other access to this proxy
#http_access deny all <- comente esta linha.
http_access allow rede_interna horario <- insira esta linha.
http_access deny rede_interna <- insira esta linha.
|
Pressione F2 para salvar e F10 para sair do arquivo.
As configurações necessárias para que o servidor squid faça a restrição de acesso por horário já esta pronto.
Utilize os comandos abaixo para iniciar o serviço do squid.
[root@localhost root]# service squid stop ; service squid start
|