Servidor Proxy Squid no Linux Ubuntu


Fala galera, beleza? 😎 Vamos implementar hoje um servidor squid no Ubuntu 16.04, com autenticação local, esse tutorial está bem detalhado, porém o nível dessa implementação é para quem está iniciando no mundo linux e quer aprender a configurar um servidor proxy squid da maneira mais simples e objetiva possível.

Se você não possui o Ubuntu instalado, ou não sabe como instalar, clica 👇🏼 aqui embaixo que temos um vídeo bem rápido de como fazer a instalação do Ubuntu no VirtualBox para você aprender cada vez mais trabalhar com sistemas Linux.
👉🏼 Link do vídeo de instalação do Ubuntu no VirtualBox: https://www.youtube.com/watch?v=HUvP8LvEaws

Passo 1: Atualizando o Ubuntu

sudo apt-get update

Passo 2: Instalando o Squid no Linux Ubuntu 16.04

sudo apt-get install squid

Passo 3: Configurando o Squid no Linux Ubuntu 16.04

Vamos efetuar uma cópia de backup do arquivo “squid.conf”

sudo cp -Rfa /etc/squid/squid.conf{,.bkp}

Acesse o diretório de configuração do do Squid:

cd /etc/squid

Listando os arquivos no diretório:

ls -l

Agora vamos apagar o arquivo “squid.conf” e criar um novo, somente com as opcoes que desejamos:

sudo rm -rf squid.conf

Em seguida vamos criar o nosso novo arquivo de configuração.

sudo touch squid.conf

Agora vamos editar o arquivo criado, vou utilizar o “vim”.

sudo vim squid.conf

Conteúdo do arquivo:

### ARQUIVO DE CONFIGURACAO DO SQUID ###

## DEFINE A PORTA DE CONEXAO DO SQUID
http_port 3128

## DEFINE O TAMANHO MAXIMO DE UM OBJETO PARA SER ARMAZENADO EM CACHE ##
maximum_object_size 4096 KB

## DEFINE O TAMANHO MINIMO DE UM OBJETO PARA SER ARMAZENADO EM CACHE ## 
minimum_object_size 0 KB

## DEFINE O TAMANHO MAXIMO DE UM OBJETO PARA SER ARMAZENADO EM CACHE DE MEMORIA ## 
maximum_object_size_in_memory 64 KB

## DEFINE A QUANTIDADE DE MEMORIA RAM A SER ALOCADA PARA CACHE ## 
cache_mem 512 MB

## AJUSTA A PERFORMANCE EM CONEXOES PIPELINE ##
pipeline_prefetch on

## CACHE DE FQDN ##
fqdncache_size 1024

## OPCOES DE REFRESH PATTERN ##
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

## DEFINE A PORCENTAGEM DO USO DO CACHE ## 
cache_swap_low 90
cache_swap_high 95

## ARQUIVO DE LOGS DO SQUID ## 
access_log /var/log/squid/access.log squid
cache_log /var/log/squid/cache.log
cache_store_log /var/log/squid/store.log

## DEFINE O LOCAL DO CACHE ##
cache_dir ufs /var/spool/squid 1600 16 256

## CONTROLE DE ROTACAO DOS ARQUIVOS DE LOGS ##
logfile_rotate 10

## ARQUIVO ONDE CONTEM OS ENDERECOS LOCAIS DA REDE ##
hosts_file /etc/hosts

## ACLS - PORTAS PADROES LIBERADAS ##
acl SSL_ports port 80 #HTTP
acl SSL_ports port 443 #HTTPS
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

### DEFININDO MODO DE AUTENTICACAO
auth_param basic program /usr/lib/squid3/basic_ncsa_auth /etc/squid/usuarios
auth_param basic children 5
auth_param basic realm "DIGITE SEU USUARIO E SENHA PARA ACESSO A INTERNET:"
auth_param basic credentialsttl 2 hours
auth_param basic casesensitive off

### ACL PARA GARANTIR A AUTENTICACAO DO USUARIO NOS SITES ###
acl autenticados proxy_auth REQUIRED

## BLOQUEIA O ACESSO UNSAFE PORTS ##
http_access deny !Safe_ports

## Deny CONNECT to other than secure SSL port ##
http_access deny CONNECT !SSL_ports

## SITES BLOQUEADOS PARA ACESSO ##
acl sites-bloqueados url_regex -i "/etc/squid/regras.s_bloqueados"

## SITES LIBERADOS PARA ACESSO ##
acl sites-liberados url_regex -i "/etc/squid/regras.s_liberados"

## DEFININDO A ORDEM DAS REGRAS - ACLS ##
http_access deny sites-bloqueados
http_access allow autenticados
http_access allow sites-liberados
http_access deny all
http_reply_access allow all
icp_access allow all
miss_access allow all

## NOME QUE IRA APARECER NA TELA DE ERRO OU BLOQUEIO DO SQUID ##
visible_hostname proxy.tidahora.com.br

## DIRETORIO DAS PAGINAS DE ERROS ##
error_directory /usr/share/squid/errors/pt-br

## OUTRAS OPCOES DE CACHE ##
cache_effective_user proxy
coredump_dir /var/spool/squid

Agora vamos criar o diretório onde vamos criar as listas de sites bloqueados e liberados.

sudo mkdir /etc/squid/regras

Vamos criar o arquivo de sites liberados e bloqueados:

sudo touch /etc/squid/regras.s_liberados
sudo touch /etc/squid/regras.s_bloqueados

Vamos inserir algum site na lista de liberados e na lista de bloqueados:

sudo vim /etc/squid/regras.s_liberados

Conteúdo:

.tidahora.
.uol.
sudo vim /etc/squid/regras.s_bloqueados

Conteúdo:

.globo.

Criando o cache:

sudo chmod -Rf 774 /var/spool/squid
sudo squid -z

Inicie o serviço do Squid:

sudo systemctl start squid

Verificando o status do serviço:

sudo systemctl status squid

PASSO 4: CRIANDO OS USUÁRIOS PARA ACESSO A INTERNET

Instale o Apache no servidor Linux Ubuntu, o apache possui um programa que iremos utilizar para gerar os logins e senhas.

sudo apt-get install apache2

Criando os usuários com o comando “htpasswd”

Utilize o comando abaixo, somente pela primeira vez, para criar o arquivo:

sudo htpasswd -c /etc/squid/usuarios johnny

Para os demais usuários utilize:

sudo htpasswd /etc/squid/usuarios jferreira

Agora vamos recarregar as configurações do squid:

sudo squid -k reconfigure

PASSO 5: AJUSTANDO O ENCAMINHAMENTO DE PACOTES NO KERNEL

Para que possamos acessar a Internet através de um servidor proxy no Linux, é preciso ativarmos o encaminhamento de pacotes no kernel, para que possamos compartilhar a rede do servidor.

Esse procedimento precisa ser feito pelo usuário “root”:

Caso voce nao tenha definido a senha para o usuario root, vamos definir abaixo:

Acessando o console como “root”

sudo su -

Habilitando o encaminhamento de pacotes:

echo 1 >> /proc/sys/net/ipv4/ip_forward

PASSO 6: TESTANDO O SERVIDOR SQUID PROXY NO UBUNTU LINUX

Ajuste o endereço IP do servidor nas configurações de Proxy do navegador.

Se você nao sabe qual o endereço IP do seu servidor digite:

sudo ifconfig

Abra o Firefox e siga os passos abaixo:

Feche as configurações e o navegador e abra-o novamente.

Será solicitado Login e Senha para acesso a Internet:

Digite um site que está na lista de sites liberados:

www.uol.com.br

Vamos acessar um site que está na lista de Bloqueados:

www.globo.com

Pronto, agora você já possui um servidor Proxy Squid em Linux Ubuntu. 😎

Dúvidas, comentário e sugestões postem nos comentários…
👋🏼 Até a próxima!


Johnny Ferreira
johnny.ferreira.santos@gmail.com
http://www.tidahora.com.br

comments powered by Disqus