Instalação do Squid (Proxy)

A necessidade de gerenciar e otimizar o tráfego de rede nas empresas torna o uso de proxies cada vez mais essencial. Entre as soluções disponíveis, o Squid se destaca por sua robustez e flexibilidade, sendo amplamente utilizado para melhorar o desempenho da navegação, aumentar a segurança e controlar o acesso à internet.

Neste guia, vamos explorar passo a passo o processo de instalação do Squid, abordando desde os requisitos básicos até a configuração inicial, para que você possa aproveitar ao máximo os benefícios dessa poderosa ferramenta de proxy em seu ambiente de rede.

Pré-requisitos

  • Privilégios de root na instância
  • Porta "3128 (Squid)" liberada no firewall da instância

Passos

1. Atualizar os pacotes e instalar o Squid.

sudo apt update sudo apt install squid -y

2. Verificar se a instalação foi bem sucedida e o serviço está no ar.

systemctl status squid.service
● squid.service - Squid Web Proxy Server Loaded: loaded (/lib/systemd/system/squid.service; enabled; vendor preset: enabled) Active: active (running) since Tue 2024-06-11 14:14:23 -03; 2min 54s ago Docs: man:squid(8) Main PID: 790768 (squid) Tasks: 4 (limit: 9493) Memory: 17.0M CGroup: /system.slice/squid.service ├─790768 /usr/sbin/squid -sYC ├─790770 (squid-1) --kid squid-1 -sYC ├─790790 (logfile-daemon) /var/log/squid/access.log └─790793 (pinger) jun 11 14:14:23 clickmvp-host squid[790770]: Max Swap size: 0 KB jun 11 14:14:23 clickmvp-host squid[790770]: Using Least Load store dir selection jun 11 14:14:23 clickmvp-host squid[790770]: Set Current Directory to /var/spool/squid jun 11 14:14:23 clickmvp-host squid[790770]: Finished loading MIME types and icons. jun 11 14:14:23 clickmvp-host squid[790770]: HTCP Disabled. jun 11 14:14:23 clickmvp-host squid[790770]: Pinger socket opened on FD 14 jun 11 14:14:23 clickmvp-host squid[790770]: Squid plugin modules loaded: 0 jun 11 14:14:23 clickmvp-host squid[790770]: Adaptation support is off. jun 11 14:14:23 clickmvp-host squid[790770]: Accepting HTTP Socket connections at local=[::]:3128 remote=[::] FD 12 flags> jun 11 14:14:24 clickmvp-host squid[790770]: storeLateRelease: released 0 objects

3. Editar o arquivo "/etc/squid/squid.conf". Localizar a linha com o conteúdo "http_access deny all". Adicione as linhas no bloco abaixo. Substituir "<ip-servidor>" pelo IP do seu servidor. Os "..." significam que há linhas entre as linhas.

auth_param basic program /usr/lib/squid3/basic_ncsa_auth /etc/squid/passwords auth_param basic realm proxy acl authenticated proxy_auth REQUIRED ... acl localnet src <ip-servidor> acl bad_url dstdomain /etc/squid/bad-sites.acl http_access deny bad_url ... http_access allow localhost http_access allow authenticated ... http_access deny all

4. Criar a senha de acesso ao proxy para um usuário. Esse procedimento deverá ser seguido para todos os usuários que criar o acesso. Informar a senha desejada, quando solicitado.

sudo htpasswd -c /etc/squid/passwords <nome-usuario>

5. Verificar se a senha e o usuário foram criados corretamente.

sudo cat /etc/squid/passwords
<nome-usuario>:$apr1$aW5rRwKO$ix2jyKQLMRvbwWX0AgzvR/

6. Verificar se as configurações estão corretas. Se o comando não retornar nada, as configurações estão ok.

sudo squid -k reconfigure

7. Reiniciar o serviço para que as configurações sejam aplicadas.

sudo systemctl restart squid.service

8. Testar o acesso. Nesse exemplo iremos acessar a url "https://ipinfo.io/json". Substituir os campos pelos dados informados nos passos anteriores. Se for bem sucedido ele retornará código HTTP 200 "HTTP/1.1 200 Connection established".

curl -v -x http://<nome-usuario>:<senha-usuario>@<ip-servidor>:3128 https://ipinfo.io/json
* Trying 999.999.999.999:3128... * TCP_NODELAY set * Connected to 999.999.999.999 (999.999.999.999) port 3128 (#0) * allocate connect buffer! * Establish HTTP proxy tunnel to ipinfo.io:443 ... < HTTP/1.1 200 Connection established ... < HTTP/2 200 < server: nginx/1.24.0 < date: Tue, 11 Jun 2024 18:14:00 GMT < content-type: application/json; charset=utf-8 < content-length: 266 < access-control-allow-origin: * < x-content-type-options: nosniff < x-envoy-upstream-service-time: 1 < via: 1.1 google < strict-transport-security: max-age=2592000; includeSubDomains < alt-svc: h3=":443"; ma=2592000,h3-29=":443"; ma=2592000 < { "ip": "999.999.999.999", "city": "North Bergen", "region": "New Jersey", "country": "US", "loc": "40.8043,-74.0121", "org": "AS14061 DigitalOcean, LLC", "postal": "07047", "timezone": "America/New_York", "readme": "https://ipinfo.io/missingauth" * Connection #0 to host 999.999.999.999 left intact }

9. Bloquear acesso a domínios específicos, editando o arquivo "/etc/squid/bad-sites.acl" e incluindo os domínios que deseja bloquear.

.msn.com .youtube.com

10. Atualizar as configurações.

sudo squid -k reconfigure

11. Testar o acesso. Se o bloqueio for bem sucedido ele retornará código HTTP 403 "HTTP/1.1 403 Forbidden".

curl -v -x http://<nome-usuario>:<senha-usuario>@<ip-servidor>:3128 https://youtube.com
* Trying 999.999.999.999:3128... * TCP_NODELAY set * Connected to 999.999.999.999 (999.999.999.999) port 3128 (#0) * allocate connect buffer! * Establish HTTP proxy tunnel to www.youtube.com:443 ... < HTTP/1.1 403 Forbidden ... < * Received HTTP code 403 from proxy after CONNECT * CONNECT phase completed! * Closing connection 0 curl: (56) Received HTTP code 403 from proxy after CONNECT


Gostou do post? Não deixe de compartilhar este artigo com seus amigos e colegas! Não se esqueça de se inscrever na nossa lista para receber as últimas novidades diretamente no seu e-mail. Junte-se a nós e fique por dentro de tudo sobre Inteligência Artificial e tecnologia!