Skip to content

..:: Paulo Sa ::..

Soluções em Software Livre

  • Home
  • Administração
  • Comandos
  • Configuração
  • Estudo
  • Toggle search form

Squid+SSL

Posted on maio 23, 2026maio 23, 2026 By paulo.linux

Vamos abordar uma configuração no Squid que auxiliará na filtragem de conteúdo protegido por SSL.

Primeiro vamos verificar como está nossa instalação e alterar algumas configurações.

vamos descobrir se temos o que é necessário

squid -v |grep ssl

a resposta esperada é um conteúdo de vários parâmetros, incluindo ‘–with-openssl’ ‘–enable-ssl-crtd’ nesta lista, caso isso não acontecer, vamos partir para uma alteração na instalação.

1 – Gerar um backup do nosso arquivo configurado anteriormente.

sudo cp /etc/squid/squid.conf ~/squid.conf_bkp

Este comando vai fazer uma cópia do arquivo squid.conf no diretório do usuário que estiver utilizando.

2 – Remover o squid que está instalado

sudo apt remove squid –purge

Este comando vai remover totalmente o squid e suas configurações do sistema operacional.

3 – Instalar o pacote que vai nos auxiliar na configuração, já habilitando o openssl e ssl-crtd que precisamos para o monitoramento de conexões SSL.

sudo apt install squid-openssl

Este comando vai trazer o pacote pré-compilado do squid que contem tudo que precisamos para iniciar os trabalhos, evitando que tenhamos que fazer a compilação manual e correr o risco de faltar com algum parâmetro.

4 – Criar o certificado autoassinado que usaremos para o filtro

Você será solicitado a preencher os campos do certificado SSL autoassinado.

cd /etc/squid

sudo openssl req -new -newkey rsa:2048 -days <período de validade do certificado em dias> -nodes -x509 -keyout bump.key -out bump.crt

O arquivo de certificado bump.crt e o arquivo de chave privada bump.key serão criados no formato PEM.

O arquivo de chave privada deve ser armazenado em um local seguro para impedir o acesso não autorizado ao tráfego.

5 – Converta o arquivo de certificado em um certificado confiável no formato DER para que possa ser importado para um navegador. Para fazer isso, execute o comando:

sudo openssl x509 -in bump.crt -outform DER -out bump.der

6 – Importe o arquivo bump.der para a lista de autoridades de certificação raiz confiáveis nos computadores dos usuários.

Ao usar determinados navegadores (como o Mozilla Firefox), também é preciso adicionar o certificado ao armazenamento do navegador.

O certificado SSL autoassinado será criado.

Podemos fazer a cópia do arquivo bump.der utilizando um programa cliente FTP como, Filezilla e WinSCP, assim que tiver este certificado na maquina, mova para um pendrive para poder levar à todas as maquinas que passam pelo proxy para navegar.

7 – Gere o arquivo de configurações para o algoritmo Diffie-Hellman. Para fazer isso, execute o comando:

sudo openssl dhparam -outform PEM -out /etc/squid/bump_dhparam.pem 2048

Configure as permissões para usar um arquivo de certificado SSL. Para fazer isso, execute os seguintes comandos, dependendo do sistema operacional utilizado:

  • Ubuntu ou Debian:

sudo chown proxy:proxy /etc/squid/bump*

sudo chmod 400 /etc/squid/bump*

8 – Determine a versão do serviço Squid que está sendo usada no servidor. Para fazer isso, execute o comando:

squid -v

As informações sobre a versão utilizada são exibidas no formato Squid Cache: Version <versão>.

9 – Interrompa o serviço Squid se ele estiver em execução. Para fazer isso, execute o comando:

sudo systemctl stopsquid

Para Squid versão 4x ou superior:

Crie um diretório para o banco de dados do certificado e inicialize o banco de dados. Para fazer isso, execute os seguintes comandos, dependendo do sistema operacional utilizado:

  • Ubuntu ou Debian:

sudo mkdir -p /var/lib/squid

sudo rm -rf /var/lib/squid/ssl_db

sudo /usr/lib/squid/security_file_certgen -c -s /var/lib/squid/ssl_db -M 20MB

sudo chown -R proxy:proxy /var/lib/squid

No arquivo de configuração /etc/squid/squid.conf, faça as seguintes alterações:

Ubuntu ou Debian:

Crie as entradas antes de http_port

##Parametros para habilitar o monitoramento SSL
acl step1 at_step SslBump1
acl intermediate_fetching transaction_initiator certificate-fetching
http_access allow intermediate_fetching
sslcrtd_program /usr/lib/squid/security_file_certgen -s /var/lib/squid/ssl_db -M 20MB
sslcrtd_children 5
sslproxy_cert_error allow all
#sslproxy_cert_error deny all
ssl_bump stare all
ssl_bump bump all

Substitua a diretiva http_port pelo seguinte:

http_port 3128 tcpkeepalive=60,30,3 ssl-bump generate-host-certificates=on dynamic_cert_mem_cache_size=20MB tls-cert=/etc/squid/bump.crt tls-key=/etc/squid/bump.key cipher=HIGH:MEDIUM:!LOW:!RC4:!SEED:!IDEA:!3DES:!MD5:!EXP:!PSK:!DSS options=NO_TLSv1,NO_SSLv3 tls-dhparams=prime256v1:/etc/squid/bump_dhparam.pem

10 – Inicie o serviço do Squid

sudo systemctl start squid

==== AUTHENTICATING FOR org.freedesktop.systemd1.manage-units ===
Authentication is required to start ‘squid.service’.
Authenticating as: Paulo Sa (paulo)
Password:
==== AUTHENTICATION COMPLETE ===

Será solicitada a senha do usuário para ativar o serviço de autenticação no Squid

Um exemplo de arquivo de configuração do squid.conf

# /etc/squid/squid.conf
# By Paulo Sa
#
# Porta padrão do Squid
#http_port 3128

##Parametros para habilitar o monitoramento SSL
acl step1 at_step SslBump1
acl intermediate_fetching transaction_initiator certificate-fetching
http_access allow intermediate_fetching
sslcrtd_program /usr/lib/squid/security_file_certgen -s /var/lib/squid/ssl_db -M 20MB
sslcrtd_children 5
sslproxy_cert_error allow all
#sslproxy_cert_error deny all
ssl_bump stare all
ssl_bump bump all

# HTTPS interception direct proxy
http_port 3128 tcpkeepalive=60,30,3 ssl-bump generate-host-certificates=on dynamic_cert_mem_cache_size=20MB tls-cert=/etc/squid/bump.crt tls-key=/etc/squid/bump.key cipher=HIGH:MEDIUM:!LOW:!RC4:!SEED:!IDEA:!3DES:!MD5:!EXP:!PSK:!DSS options=NO_TLSv1,NO_SSLv3 tls-dhparams=prime256v1:/etc/squid/bump_dhparam.pem

# Está porta é usada para troca de informações entre servidores proxy.
# Não use o ICP se você tem um único proxy-pai que você sempre usa.
# Para desabilitar, basta colocar um 0. Padrão: 3130
icp_port 0

# Especifica o número da porta através do qual o Squid irá receber e enviar requisições HTCP de e para caches vizinhos.
# Para desabilitar, colocar 0. O padrão é 4827.
htcp_port 0

# Esta ACL diz ao squid para não armazenar em cache o conteúdo dos CGI’s, por tratar-se de conteúdo dinâmico
acl QUERY urlpath_regex cgi-bin \?
no_cache deny QUERY

# Quantidade de memória usada pelo squid
cache_mem 256 MB

# Quando o cache chega no limite, automaticamente ele esvazia o cache
cache_swap_low 80
cache_swap_high 85

# Tamanho máximo para gravação no cache squid
maximum_object_size 64 MB

# Tamanho mínimo para gravação no cache squid
minimum_object_size 0 KB

# Tamanho maximo dos objetos mantidos em memória.
maximum_object_size_in_memory 128 KB
ipcache_size 3072
ipcache_low 90
ipcache_high 93

# política de substituição dos objetos quando se esgota o espaço destinado ao cache em disco.
# lru: mantém os objetos referenciados recentemente.
# heap GDSF: otimiza o “hit rate” por manter objetos pequenos e populares no cache, guardando assim um numero maior de objetos.
# heap LFUDA: otimiza o “byte hit rate” por manter objetos populares no cache sem levar em conta o tamanho.
# Se for utilizado este, o maximum_object_size devera ser aumentado para otimizar o LFUDA.
cache_replacement_policy heap LFUDA

# define a política de substituição dos objetos em memória da mesma forma como o cache_replacement_policy
memory_replacement_policy heap GDSF

# Esta TAG determina onde e como serão feitos 4 caches de 500 MiB, totalizando 2GiB.
cache_dir ufs /var/spool/squid/cache1 500 16 256
cache_dir ufs /var/spool/squid/cache2 500 16 256
cache_dir ufs /var/spool/squid/cache3 500 16 256
cache_dir ufs /var/spool/squid/cache4 500 16 256

# Log de requisitares.
cache_access_log /var/log/squid/access.log
# Log do cache.
cache_log /var/log/squid/cache.log
# Log de objetos guardados. Pode ser desativado.
cache_store_log none

# Pode ser usada para especificar uma lista de servidores DNS no lugar no /etc/resolv.conf dns_nameservers Endereço_IP
# Não esquecer de trocar a faixa de dns pela da sua faixa.
dns_nameservers 8.8.8.8
dns_nameservers 2.2.2.1

# Estas opções são o padrão do Squid e configuram como serão tratados os tempos de vida dos objetos no cache
refresh_pattern ^ftp: 1440 20% 10080
refresh_pattern ^gopher: 1440 0% 1440
refresh_pattern (cgi-bin|\?) 0 0% 0
refresh_pattern . 0 20% 4320

# O cache pode ser configurado para continuar com o download de requisições abortadas
quick_abort_min 0 KB
quick_abort_max 0 KB
quick_abort_pct 100

# Tempo de vida para requisições falhas. Certos tipos de erros (como
# conexão recusada ou página não encontrada) são marcados como
# “sem-cache” por um determinado tempo. Padrão de 5 minutos
negative_ttl 3 minutes

# Tempo de vida para resultados bem sucedidos de resolução DNS. Se você
# realmente precisar alterar esse valor, não deixe inferior a 1 minuto.
# Padrão de 6 horas.
positive_dns_ttl 5 minutes

# Nem sempre o Squid não consegue diferenciar conexões TCP totalmente fechadas e parcialmente fechadas.
# Mudando essa opção para off fará com que o Squid imediatamente feche a conexão quando a leitura do socket
# retornar “sem mais dados para leitura”
half_closed_clients off

# Estas ACL’s fazem parte da configuração padrão do Squid e é o mínimo recomendável para seu uso não sendo necessária nenhuma alteração.
#acl manager proto cache_object
acl SSL_ports port 443 563
acl Safe_ports port 80 # http
acl Safe_ports port 21 # ftp
acl Safe_ports port 443 563 # 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

# —- Cache para aceleração do Windows Update —-
refresh_pattern au.download.windowsupdate.com/.*\.(cab|exe|msi) 10080 100% 43200 store-stale
refresh_pattern download.microsoft.com/.*\.(cab|exe|msi) 10080 100% 43200 store-stale
refresh_pattern msgruser.dlservice.microsoft.com/.*\.(cab|exe|msi) 10080 100% 43200 store-stale
refresh_pattern windowsupdate.com/.*\.(cab|exe|msi) 10080 100% 43200 store-stale
refresh_pattern www.microsoft.com/.*\.(cab|exe|msi) 10080 100% 43200 store-stale

# Tags de Autenticação de usuários para monitoramento mais eficiente de conteúdos acessados
#auth_param basic program /usr/lib/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

#acl bad_urls dstdomain “/etc/squid/blacklisted_sites.acl”
#http_access deny bad_urls

#acl blockkeywordlist url_regex “/etc/squid/blockkeywords.lst”
#http_access deny blockkeywordlist

##Define o grupo de IPs que pode ter acesso a internet utilizando o Squid
# Se utilizarmos o squidGuard para garantir a segurança do conteúdo acessado, as configurações já estarão prontas.
url_rewrite_program /usr/bin/squidGuard -c /etc/squidguard/squidGuard.conf
# Em caso de bloqueio pelo próprio Squid, podemos usar arquivos de referência como este de bloqueio chamado block.txt atribuindo uma ACL de identificação de domínios.
acl rede src 192.168.15.0/24
#acl bloqueio dstdomain “/etc/squid/block.txt”
#acl autenticado proxy_auth REQUIRED
http_access allow localhost
#http_access deny bloqueio
http_access allow rede

# Definição de regras de acesso referentes as ACL’s da parte da configuração
# padrão do Squid, também não é necessária nenhuma alteração, portanto apenas
# acrescente as suas próprias regras a estas;
http_access allow manager localhost
http_access deny manager
http_access deny !Safe_ports
http_access deny CONNECT !SSL_ports

# esta regra diz ao Squid que se nenhuma das regras anteriores for aplicada o acesso será então negado
http_access deny all

# Permite o acesso a porta icp de acordo com a configuração feita na ACL all
# que no nosso caso representa qualquer origem. Está porta é usada para troca
# de informações entre servidores proxy.
# Não use o ICP se você tem um único proxy-pai que você sempre usa.
# icp_access allow rede

# Usuario sob o qual ira rodar o Squid.
cache_effective_user proxy
# Grupo sob o qual ira rodar o Squid.
cache_effective_group proxy

#Mostra o nome do servidor configurado nas mensagens de erro
visible_hostname proxy

# Desligando essa variável, faz com que o squid descarregue a memória não
# utilizada, chamando uma função interna free() do squid, ao invés de ficar
# com ela para futuras operações.
memory_pools off

#Por padrão o Squid irá incluir o IP ou nome da sua máquina nas solicitações HTTP.
#Ele irá saber o IP da sua máquina interna como também saber qual classe ip você usa internamente.
#Para o site visitado não interessa para ele qual seu ip interno, o importante é que você visitou o site.
forwarded_for off
forward_max_tries 25

# Apresenta as mensagens de erro em Português Brasil
error_directory /usr/share/squid/errors/pt-br

# Por padrão o Squid já possui essa configuração como ativa. Ela serve para não colocar no log os
# parâmetros que são passados junto ao endereço acessado pelo usuário. Assim garante a privacidade.
# As vezes quando se usa filtro por palavras e um site apresenta acesso negado é interessante setar
# essa opção como off para verificar no log o endereço completo.
strip_query_terms off

# Local para gravar os arquivos core em caso de falhas do squid (/var/spool/squid)
# ou Evitar que sejam feitos coredumps (none).
coredump_dir none

# Resolve um problema com conexões persistentes que ocorre com certos servidores,
# e que provoca delays em nosso cache.
detect_broken_pconn on

################ Fim da edição, pode salvar o arquivo################

Configuração

Navegação de Post

Previous Post: Sarg
Next Post: SquidGuard

Related Posts

SquidGuard Configuração
Sarg Configuração
Squid Proxy Configuração

Archives

  • maio 2026

Categories

  • Comandos
  • Configuração
  • Estudo
  • Uncategorized

Recent Posts

  • Squid Proxy
  • SquidGuard
  • Squid+SSL
  • Sarg
  • Distribuições

Recent Comments

Nenhum comentário para mostrar.

Copyright © 2026 ..:: Paulo Sa ::...

Powered by PressBook Masonry Dark

Powered by
►
Cookies necessários ativam recursos essenciais do site como logins seguros e ajustes de preferências de consentimento. Eles não armazenam dados pessoais.
Nenhum
►
Cookies funcionais suportam recursos como compartilhamento de conteúdo em redes sociais, coleta de feedback e ativação de ferramentas de terceiros.
Nenhum
►
Cookies analíticos rastreiam interações dos visitantes, fornecendo insights sobre métricas como número de visitantes, taxa de rejeição e fontes de tráfego.
Nenhum
►
Cookies de publicidade entregam anúncios personalizados baseados em suas visitas anteriores e analisam a eficácia das campanhas publicitárias.
Nenhum
►
Cookies não classificados são cookies que estamos em processo de classificar, junto com os provedores de cookies individuais.
Nenhum
Powered by