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.

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.

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

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

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.

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.

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).

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:

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).
- Altere a porta 443 e 80 no Squid.conf e tente acessar a internet com o cliente.
- 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

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:



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

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:



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:

Configurando a máquina cliente:

Configurando a máquina do 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
Python: mostrar portas TCP abertas
Modelagem de Dados e Seu primeiro Cliente!
Quais são as Principais Características de um SGBD relacional?
O que não te contam sobre Storytelling
Fazer gráficos ruins é mais fácil do que se pensa. Ninguém quer isso, mas acontece….
O Livro Storytelling com dados
Versão Kindle Versão física Revisitando uma literatura muito útil para todo profissional que precisa transmitir…