Squid Proxy Instalação e Configuração.

Neste artigo, vamos abordar a instalação e configuração do servidor proxy Squid. O Squid tem sido utilizado por grande parte das empresas privadas e públicas.

English version: click HERE

 Dessa forma, parte dessa popularização do Squid está relacionado a segurança operacional da ferramenta e sua flexibilidade. Dessa forma, essa flexibilidade do Squid, permite uma extensa gama de controle de acesso. 

Além disso, o Squido pode operar em diversos sistemas operacionais como : Linux, Windows, BSD. 

Um ponto muito interessante do Squid é sua capacidade de utilização da licença GNU GPL. Dessa forma desenvolvedores se sentem atraídos em utilizar a ferramenta e contribuir com modificações. 

Analogamente, vale destacar que muitos provedores de serviço também têm utilizado o Squid entre seus clientes e servidores.  

Lista do tutorial sobre Squid e SquidGuard:

Parte 1: Squid Proxy Instalação e Configuração.

Parte 2: Squid Proxy: Filtrar clientes por IP e MAC

Parte 3: Squid: Autenticação de Usuário

Parte 4: SquidGuard : Instalação e Configuração

Parte 5: SquidGuard : como importar blocklist ?

Tópicos que serão abordados nesse post:

1) Instalação do Squid

Vamos fazer uma apresentação de uma prática onde instalamos o Squid e fazemos a configuração inicial.

Dessa forma, usuários Windows podem obter a ferramenta acessando o site do Squid: www.squid-cache.org/. Para usuários Linux, a instalação pode ser feita usando os repositórios:

sudo apt-get install squid

Nesse sentido, após a instalação, vamos verificar se o Squid está sendo executado de forma satisfatória. Então, vamos utilizar o seguinte comando: 

sudo service squid status

Aumente seu conhecimento em Redes

Sugestão de livros:

2) Configuração do Squid

Após a instalação, vamos iniciar a fase de configuração. Dessa forma vamos acessar o diretório  /etc/squid e em seguida vamos criar uma cópia do arquivo de configuração “squid.conf”.

sudo cd /etc/squid 

sudo cp squid.conf squid.conf.backup

Em seguida, vamos editar o arquivo “squid.conf” e vamos apagar todas a linhas desse arquivo. O motivo de estarmos apagando as linhas do arquivo, é para que o leitor possa identificar de forma segmentada cada parte da configuração.

No entanto, é possível editar linhas específicas do arquivo a medida em que o leitor adquirir um maior conhecimento na ferramenta.

sudo nano squid.conf

Antes de tudo, vamos apagar todas as linhas do arquivo. Logo depois, vamos adicionar linhas que representam ACLs de acesso.

Posteriormente, vamos adicionar as seguintes linhas no arquivo “squid.conf”:

acl SSL_ports port 443
acl Safe_ports port 80 # http
acl Safe_ports port 21 # ftp
acl Safe_ports port 443 # https
acl CONNECT method CONNECT
## Bloqueia acesso de portas nao Safe_ports
http_access deny !Safe_ports

## Nega CONNECT para outras portas que nao seja SSL ports
http_access deny CONNECT !SSL_ports

#porta que o squid vai ouvir / Squid listen port
http_port 3128

#Permitir apenas computadores da minha rede/ only my network is allowed
acl Minha_Rede src 192.168.10.0/24

http_access allow Minha_Rede

#o resto bloqueia, Block all the rest
http_access deny all

Apresentamos abaixo a figura com a descrição de ACLs que recebem o nome e logo após a porta.

Squid Proxy ACLs

Essa parte Nega (deny) acesso http (http_access) às portas que não (!) são Safe_ports. 

Squid Proxy  ACL2

Essa parte nega (deny) conexão http (http_access) às portas que não (!) são SSL_ports. 

Squid Proxy Deny

Posteriormente, vamos especificar a porta que o Squid vai ouvir. Então, quando um cliente desejar acessar um servidor WEB, esse enviará para a porta do Squid.

Logo depois, o Squid vai fazer a requisição WEB ao servidor.

Squid Proxy  port

Depois disso, vamos criar uma ACL que informa que a rede de origem (SRC) será “192.168.10.0/24”. Além disso essa rede terá permissão (ALLOW). Dessa forma, você deve alterar para a sua rede interna. 

Squid Proxy  aloow

Logo depois, introduzimos um bloqueio para todo o resto. Dessa forma, todo o tráfego (ALL) que não atender as ACLs iniciais será bloqueado (DENY). 

Squid Proxy deny all
http acess deny all

Em seguida, vamos reiniciar o Squid para que as configurações façam efeito. Posteriormente, vamos verificar o status do Squid. Depois disso, teste a conexão do cliente com a internet.

sudo service squid restart
sudo service squid status

“Limpe o cache do navegador”

Além disso, caso tenha erros, podemos verificar o syslog. Então, para isso podemos usar o comando abaixo:

sudo cat /var/log/syslog | grep squid

Configurando o navegador do cliente:

O navegador do cliente deve apontar sua configuração de proxy para o IP da interface LAN do Squid e usar a porta do Squid proxy. Em nosso caso, a porta usada foi a 3128 e o IP do Squid foi o 192.168.10.1.

Testando as ACLs

Vamos passar algumas tarefas para que você possa testar a efetividade das ACLs configuradas. Lembrando que após cada mudança o servidor Squid deve ser reinicializado (sudo service squid restart). 

  1. Altere a porta 443 e 80 no Squid.conf e tente acessar a internet com o cliente.
  2. Modifique a rede 192.168.10.0/24 ( ou sua rede ) no Squid.conf e tente navegar com o cliente.

3) Configuração baseada em horário

Logo depois, vamos iniciar a configuração do Squid baseada em horário. Então, a ideia é utilizar uma ACL que funcione em um horário específico.

Além disso, é importante mostrar a tabela de abreviações que o Squid usa para ACLs baseadas em tempo:

“acl aclname time [day-abbrevs] [h1:m1-h2:m2]
day-abbrevs:
S – Sunday
M – Monday
T – Tuesday
W – Wednesday
H – Thursday
F – Friday
A – Saturday
h1:m1 must be less than h2:m2″

Em seguida, vamos configurar o Squid para permitir o acesso dos clientes apenas em um horário específico durante alguns dias da semana: (Sunday, Monday, Tuesday, Wednesday, Thursday, Friday, Saturday) e em um tempo específico (10:00-18:00).

Assim, observe que agora a permissão de acesso “http_access allow Minha_Rede” recebe a ACL “Horario” .

Então, isso indica que só será permitido acesso durante esses dias e horário específico.

acl SSL_ports port 443 #
acl Safe_ports port 80 # http
acl Safe_ports port 21 # ftp
acl Safe_ports port 443 # https
acl CONNECT method CONNECT
http_access deny !Safe_ports
http_access deny CONNECT !SSL_ports
http_port 3128
acl Minha_Rede src 192.168.10.0/24

#######

acl Horario time S M T W T F 10:00-18:00 #dias e horas
http_access allow Minha_Rede Horario # funcionar apenas durante o “Horario”

#######

http_access deny all
acl horario
ACL Horario
sudo service squid restart
sudo service squid status

“Limpe o cache do navegador”

Além disso, caso tenha erros, podemos verificar o syslog. Então, para isso podemos usar o comando abaixo:

sudo cat /var/log/syslog | grep squid

Testando a ACL de tempo

  • Agora, altere a ACL “Horario” indicando um tempo diferente do atual e verifique se está conseguindo se conectar com a internet. (sudo service squid restart)

4) Configuração baseada em URLs/palavras.

Em seguida, vamos fazer a restrição de páginas WEB com base nas palavras da URL. Dessa forma, quando precisar bloquear uma URL pode usar uma palavra da URL. No entanto, vale ressaltar que essa configuração não se aplica a HTTPS.

Então, para o HTTPS vamos mostrar depois como bloquear por domínios. Assim, vamos adicionar as regras antes da regra : (http_access allow Minha_Rede). 

Agora vamos criar uma ACL de bloqueio (DENY). Dessa forma, vamos criar uma ACL chamada Palavras_Proibidas.

Assim, essa ACL utiliza as palavras que inserirmos em: “/etc/squid/palavras_proibidas.txt” para realizar o bloqueio (DENY).

acl SSL_ports port 443
acl Safe_ports port 80 # http
acl Safe_ports port 21 # ftp
acl Safe_ports port 443 # https
acl CONNECT method CONNECT
http_access deny !Safe_ports
http_access deny CONNECT !SSL_ports
http_port 3128
acl Minha_Rede src 192.168.10.0/24

########
#Restrição usando palavras/urls

acl Palavras_Proibidas url_regex -i "/etc/squid/palavras_proibidas.txt"
http_access deny Palavras_Proibidas
########

http_access allow Minha_Rede
http_access deny all

Vamos explicar alguns pontos importantes dessa configuração: 

Squid Proxy  urls
ACL do tipo: registro de URL
Squid Proxy palavras
Especifica o arquivo com as palavras/urls
Squid Proxy  deny 2
Nega as palavras da ACL Palavras_Proibidas 

Em seguida, vamos criar o arquivo que será usado para bloqueio de palavras na URL. Então, em nosso caso, criamos o arquivo palavras_proibidas.txt  localizado em /etc/squid/.

Assim, inserimos as palavras que desejamos bloquear nas URLs. Exemplo, Felipe, Jogos….

sudo nano   /etc/squid/palavras_proibidas.txt
Squid Proxy  names
Palavras usadas
sudo service squid restart
sudo service squid status

“Limpe o cache do navegador”

Além disso, caso tenha erros, podemos verificar o syslog. Então, para isso podemos usar o comando abaixo:

sudo cat /var/log/syslog | grep squid

Testando a ACL “Palavras_Proibidas”

  • Adicione outro nome no palavras_proibidas.txt e tente navegar com o cliente. (sudo service squid restart)

5) Configuração baseada em domínios.

Em seguida, vamos fazer a configuração do Squid proxy com base nos domínios que pretendemos restringir. Agora, vamos criar um arquivo e dentro desse arquivo vamos inserir os domínios que serão bloqueados.

acl SSL_ports port 443
acl Safe_ports port 80 # http
acl Safe_ports port 21 # ftp
acl Safe_ports port 443 # https
acl CONNECT method CONNECT
http_access deny !Safe_ports
http_access deny CONNECT !SSL_ports
http_port 3128
acl Minha_Rede src 192.168.10.0/24

#######
#restrição por dominios/domain restriction
acl Dominios_Proibidos dstdomain "/etc/squid/dominios_proibidos.txt"
http_access deny Dominios_Proibidos
#######

http_access allow Minha_Rede
http_access deny all

Vamos explicar as configurações:
Squid Proxy  dstdomain
Acl do tipo domínio de destino
Squid Proxy  dominio
Arquivo onde vamos inserir a lista de domínios. 
Squid Proxy  deny 3
Regra para bloquear (DENY) os domínios inseridos no arquivo. 

Em seguida, vamos criar o arquivo onde vamos inserir os domínicos. Assim, o arquivo será: ”dominios_proibidos.txt” localizado dentro de /etc/squid/.

Então, vamos inserir os domínios dentro do arquivo.

sudo nano /etc/squid/dominios_proibidos.txt

Insira os domínios:

.youtube.com

.facebook.com

sudo service squid restart
sudo service squid status

“Limpe o cache do navegador”

Além disso, caso tenha erros, podemos verificar o syslog. Então, para isso podemos usar o comando abaixo:

sudo cat /var/log/syslog | grep squid

Testando a ACL “Dominios_Proibidos

  • Adicione outro domínio no dominios_proibidos.txt e tente navegar com o cliente. (sudo service squid restart)

Um pouco mais de teoria sobre o Squid Proxy

Consequentemente, ao atuar entre cliente e servidores o Squid permite gerenciar recursos e fazer o cache de conteúdo.

Assim, esse cache de conteúdos permite uma melhor otimização da largura de banda. Isso porque um recurso anteriormente acessado por um usuário pode ser acessado por outros usuários.

Dessa forma, os conteúdos estáticos mais acessados podem ser armazenados no cache do Squid.

Uma vez que esse conteúdo está armazenado no cache do Squid, o acesso de requisição desse conteúdo é mais rápido e evita o consumo de largura de banda a Internet. 

Do mesmo modo, a utilizaçã do Squid também permite a utilização de servidores de cache de forma hierárquica.

Então, essa utilização de servidores de cache de forma hierárquica possibilita uma otimização dos recursos da rede.

Assim como, o uso distribuído do Squid permite a sua utilização por Web sites. Além disso, o squid pode ser utilizado na outra ponta, isso é reduzindo o consumo de recursos do lado do servidor. 

Além disso, segundo a Wikimedia Deployment Information, o Squid pode quadruplicar a capacidade de servidores WEB que estejam posicionados após o Squid. 

Então, uma vez que o acesso ao conteúdo está armazenado no cache do Squid, parte das requisições não chegam ao servidor WEB.

Dessa forma, isso possibilita que que o servidor WEB atenta a um número maior de requisições. Squid Proxy Instalação e Configuração.

Cenário utilizado para os testes:

cenario squid proxy
Cenário usado nos testes

Configurando a máquina cliente:

cenario squid proxy 2
Configuração da rede Virtualizada da máquina cliente no VirtualBox

Configurando a máquina do Squid:

cenario squid proxy 3
Configurando a interface LAN da máquina virtual onde está o squid proxy no virtualbox
cenario squid proxy 4
Configurando a interface WAN da máquina virtual com o proxy Squid

Squid: Autenticação de Usuário

Squid Proxy: Filtrar clientes por IP e MAC

SquidGuard : Instalação e Configuração

Além desse post Squid Proxy Instalação e Configuração, veja também:

pfBlockerNG lista de bloqueio
Virtualizando o Raspberry Pi – Raspbian
Instalando Android no VirtualBox

Juliana Mascarenhas

Data Scientist and Master in Computer Modeling by LNCC.
Computer Engineer

O Livro Storytelling com dados

Versão Kindle Versão física Revisitando uma literatura muito útil para todo profissional que precisa transmitir…

Ler mais