Pesquisa de site

Como criar um proxy HTTP usando Squid no CentOS 7/8


Os proxies da Web já existem há algum tempo e são usados por milhões de usuários em todo o mundo. Eles têm uma ampla variedade de finalidades, sendo a mais popular o anonimato online, mas existem outras maneiras de aproveitar as vantagens dos proxies da web. Aqui estão algumas ideias:

  • Anonimato on-line
  • Melhore a segurança on-line
  • Melhore os tempos de carregamento
  • Bloquear tráfego malicioso
  • Registre sua atividade online
  • Para contornar restrições regionais
  • Em alguns casos, pode reduzir o uso da largura de banda

Como funciona o servidor proxy

O servidor proxy é um computador usado como intermediário entre o cliente e outros servidores dos quais o cliente pode solicitar recursos. Um exemplo simples disso é quando um cliente faz solicitações online (por exemplo, deseja abrir uma página web), ele se conecta primeiro ao servidor proxy.

O servidor proxy então verifica seu cache de disco local e se os dados puderem ser encontrados lá, ele retornará os dados ao cliente, se não estiver armazenado em cache, fará a solicitação em nome do cliente usando o endereço IP do proxy (diferente do clientes) e depois retornar os dados ao cliente. O servidor proxy tentará armazenar em cache os novos dados e os utilizará para solicitações futuras feitas ao mesmo servidor.

O que é proxy Squid

Squid é um proxy da web que utilizou minha ampla gama de organizações. É frequentemente usado como proxy de cache, melhorando os tempos de resposta e reduzindo o uso de largura de banda.

Para os fins deste artigo, instalarei o Squid em um VPS Linode CentOS 7 e o usarei como um servidor proxy HTTP.

Como instalar o Squid no CentOS 7/8

Antes de começarmos, você deve saber que o Squid não possui requisitos mínimos, mas a quantidade de uso de RAM pode variar dependendo dos clientes que navegam na Internet através do servidor proxy.

O Squid está incluído no repositório base e, portanto, a instalação é simples e direta. Antes de instalá-lo, entretanto, certifique-se de que seus pacotes estejam atualizados executando.

yum -y update

Prossiga instalando o squid, inicie e habilite-o na inicialização do sistema usando os seguintes comandos.

yum -y install squid
systemctl start squid
systemctl  enable squid

Neste ponto, seu proxy web Squid já deve estar em execução e você pode verificar o status do serviço com.

systemctl status squid
Saída de amostra
 squid.service - Squid caching proxy
   Loaded: loaded (/usr/lib/systemd/system/squid.service; enabled; vendor preset: disabled)
   Active: active (running) since Thu 2018-09-20 10:07:23 UTC; 5min ago
 Main PID: 2005 (squid)
   CGroup: /system.slice/squid.service
           ├─2005 /usr/sbin/squid -f /etc/squid/squid.conf
           ├─2007 (squid-1) -f /etc/squid/squid.conf
           └─2008 (logfile-daemon) /var/log/squid/access.log

Sep 20 10:07:23 tecmint systemd[1]: Starting Squid caching proxy...
Sep 20 10:07:23 tecmint squid[2005]: Squid Parent: will start 1 kids
Sep 20 10:07:23 tecmint squid[2005]: Squid Parent: (squid-1) process 2007 started
Sep 20 10:07:23 tecmint systemd[1]: Started Squid caching proxy.

Aqui estão alguns locais de arquivos importantes que você deve conhecer:

  • Arquivo de configuração do Squid: /etc/squid/squid.conf
  • Registro de acesso do Squid: /var/log/squid/access.log
  • Registro do cache do Squid: /var/log/squid/cache.log

Um arquivo de configuração mínimo squid.conf (sem comentários) se parece com isto:

acl localnet src 10.0.0.0/8	# RFC1918 possible internal network
acl localnet src 172.16.0.0/12	# RFC1918 possible internal network
acl localnet src 192.168.0.0/16	# RFC1918 possible internal network
acl localnet src fc00::/7       # RFC 4193 local private network range
acl localnet src fe80::/10      # RFC 4291 link-local (directly plugged) machines
acl SSL_ports port 443
acl Safe_ports port 80		# http
acl Safe_ports port 21		# ftp
acl Safe_ports port 443		# https
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
http_access deny !Safe_ports
http_access deny CONNECT !SSL_ports
http_access allow localhost manager
http_access deny manager
http_access allow localnet
http_access allow localhost
http_access deny all
http_port 3128
coredump_dir /var/spool/squid
refresh_pattern ^ftp:		1440	20%	10080
refresh_pattern ^gopher:	1440	0%	1440
refresh_pattern -i (/cgi-bin/|\?) 0	0%	0
refresh_pattern .		0	20%	4320

Configurando o Squid como um proxy HTTP

Aqui, mostraremos como configurar o squid como um proxy HTTP usando apenas o endereço IP do cliente para autenticação.

Adicionar ACLs do Squid

Se desejar permitir que o endereço IP acesse a web através do seu novo servidor proxy, você precisará adicionar uma nova linha ACL (lista de controle de acesso) no arquivo de configuração .

vim /etc/squid/squid.conf

A linha que você deve adicionar é:

acl localnet src XX.XX.XX.XX

Onde XX.XX.XX.XX é o endereço IP do cliente real que você deseja adicionar. A linha deve ser adicionada no início do arquivo onde as ACLs estão definidas. É uma boa prática adicionar um comentário próximo à ACL que descreva quem usa esse endereço IP.

É importante observar que se o Squid estiver localizado fora da sua rede local, você deverá adicionar o endereço IP público do cliente.

Você precisará reiniciar o Squid para que as novas alterações tenham efeito.

systemctl  restart squid

Abra portas proxy do Squid

Como você deve ter visto no arquivo de configuração, apenas determinadas portas são permitidas para conexão. Você pode adicionar mais editando o arquivo de configuração.

acl Safe_ports port XXX

Onde XXX é a porta real que você deseja carregar. Novamente, é uma boa ideia deixar um comentário ao lado que descreva para que a porta será usada.

Para que as alterações tenham efeito, você precisará reiniciar o squid mais uma vez.

systemctl  restart squid

Autenticação de cliente proxy Squid

Você provavelmente desejará que seus usuários se autentiquem antes de usar o proxy. Para isso, você pode habilitar a autenticação HTTP básica. É fácil e rápido de configurar.

Primeiro, você precisará do httpd-tools instalado.

yum -y install httpd-tools

Agora vamos criar um arquivo que posteriormente armazenará o nome de usuário para autenticação. O Squid é executado com o usuário “squid ” então o arquivo deve pertencer a esse usuário.

touch /etc/squid/passwd
chown squid: /etc/squid/passwd

Agora criaremos um novo usuário chamado “proxyclient ” e configuraremos sua senha.

htpasswd /etc/squid/passwd proxyclient

New password:
Re-type new password:
Adding password for user proxyclient

Agora para configurar a autenticação abra o arquivo de configuração.

vim /etc/squid/squid.conf

Após as ACLs das portas, adicione as seguintes linhas:

auth_param basic program /usr/lib64/squid/basic_ncsa_auth /etc/squid/passwd
auth_param basic children 5
auth_param basic realm Squid Basic Authentication
auth_param basic credentialsttl 2 hours
acl auth_users proxy_auth REQUIRED
http_access allow auth_users

Salve o arquivo e reinicie o squid para que as novas alterações tenham efeito:

systemctl restart squid

Bloquear sites no Squid Proxy

Por fim, criaremos uma última ACL que nos ajudará a bloquear sites indesejados. Primeiro, crie o arquivo que armazenará os sites da lista negra.

touch /etc/squid/blacklisted_sites.acl

Você pode adicionar alguns domínios que deseja bloquear. Por exemplo:

.badsite1.com
.badsite2.com

O ponto seguinte diz ao squid para bloquear todas as referências a esses sites, incluindo www.badsite1, subsite.badsite1.com, etc.

Agora abra o arquivo de configuração do Squid.

vim /etc/squid/squid.conf

Logo após as ACLs das portas, adicione as duas linhas a seguir:

acl bad_urls dstdomain "/etc/squid/blacklisted_sites.acl"
http_access deny bad_urls

Agora salve o arquivo e reinicie o squid:

systemctl restart squid

Depois que tudo estiver configurado corretamente, agora você pode definir o navegador do cliente local ou as configurações de rede do sistema operacional para usar o proxy HTTP squid.

Conclusão

Neste tutorial, você aprendeu como instalar, proteger e configurar um servidor Squid HTTP Proxy por conta própria. Com as informações que acabou de obter, agora você pode adicionar alguns filtros básicos para tráfego de entrada e saída através do Squid.

Se quiser ir além, você pode até configurar o squid para bloquear alguns sites durante o horário de trabalho para evitar distrações. Se você tiver alguma dúvida ou comentário, poste-os na seção de comentários abaixo.