Igual a outros usuários, tive grandes problemas com o Squid em relação ao bloqueio de páginas com protocolo HTTPS, apesar da imensa quantidade de how-tos e tutoriais sempre ocorria algum problema ou relacionado aos certificados ou a compilação do Squid. Após pesquisas no Google e no próprio VOL, vou compartilhar o processo utilizado que tornou possível esta função.
Os testes foram realizados em uma VM rodando o Debian Wheezy com o Squid 3 previamente instalado. A priori foi escolhida a versão 3.3.
Com o Squid 3 instalado, foi realizado o download da versão 3.3 diretamente do site squid-cache.org, decidi utilizar a pasta /usr/src para o download e demais processos:
A partir deste ponto, durante o processo de compilação iremos informar ao Squid quais opções serão setadas para possibilitar o bloqueio de páginas HTTPS, além destas serão setadas opções relacionadas as pastas padrões do Squid. Primeiramente resolva as dependências:
Durante o processo de compilação do Squid foi setada a opção "--libexecdir=/lib/squid3" nesta pasta estão os arquivos necessários à execução, um destes arquivos, ssl_crtd será usado para a criação de certificados dinâmicos:
A partir deste ponto o Squid 3 estará apto a realizar os bloqueios na porta 443, lembrando que a partir da versão 3.2 não se usa mais a opção transparent e sim a intercept:
Para aqueles que usam o Sarg é necessário modificar o sarg.conf, atualizando a TAG access_log:
access_log /var/log/squid3/access.log
Com isso o Squid 3 poderá realizar o bloqueio do tão famigerado HTTPS. Espero que esta dicas ajudem à todos aqueles que passam pelo problema do HTTPS e àqueles que puderem contribuir com alguma melhora neste pequeno how-to, fiquem à vontade e sirvam-se.
[1] Comentário enviado por removido em 01/04/2015 - 16:27h
Renato, quanto a sites de banco e outros com autenticação (SSL) como os de webmail (GMAIL, hotmail, skype ETC), consegue acessa-los sem problema ?
*Devido ao certificado auto assinado, tive alguns erros a algum tempo atrás com uma configuração semelhante, na época criei exceções para os sites especificamente via iptables porem não era o ideal.
[2] Comentário enviado por rbonfim em 01/04/2015 - 17:49h
[1] Comentário enviado por erisrjr em 01/04/2015 - 16:27h
Renato, quanto a sites de banco e outros com autenticação (SSL) como os de webmail (GMAIL, hotmail, skype ETC), consegue acessa-los sem problema ?
*Devido ao certificado auto assinado, tive alguns erros a algum tempo atrás com uma configuração semelhante, na época criei exceções para os sites especificamente via iptables porem não era o ideal.
Eris com relação a webmails não tive problemas, o acesso ao hotmail e gmail foram normais. Realmente não fiz teste com os sites bancários vou verificar e te posto se tive problemas ou não! Forte abraço!
[7] Comentário enviado por wanderton em 07/07/2015 - 16:43h
Olá, parabéns pelo tutorial mais fiquei em duvida a respeito de parte das instruções, peço que verifique os itens:
No item que trata dos parâmetros do "./configure" o item "--libexecdir=${prefix}/lib/squid3" será /usr//lib/squid3 já que o prefixo setado é "/usr" então está correto as informações:
"Durante o processo de compilação do Squid foi setada a opção "--libexecdir=/lib/squid3" nesta pasta estão os arquivos necessários à execução, um destes arquivos, ssl_crtd será usado para a criação de certificados dinâmicos:
[8] Comentário enviado por rbonfim em 07/07/2015 - 18:15h
[7] Comentário enviado por wanderton em 07/07/2015 - 16:43h
Olá, parabéns pelo tutorial mais fiquei em duvida a respeito de parte das instruções, peço que verifique os itens:
No item que trata dos parâmetros do "./configure" o item "--libexecdir=${prefix}/lib/squid3" será /usr//lib/squid3 já que o prefixo setado é "/usr" então está correto as informações:
"Durante o processo de compilação do Squid foi setada a opção "--libexecdir=/lib/squid3" nesta pasta estão os arquivos necessários à execução, um destes arquivos, ssl_crtd será usado para a criação de certificados dinâmicos:
[11] Comentário enviado por rbonfim em 09/07/2015 - 00:12h
Wanderton
Este comando refere-se a criação da pasta para o cache dos certificado dinâmicos e também um banco de dados destes certificados, servem justamente para que não ocorram os erros de certificados para sites sobre o protocolo HTTPS.
Se você precisar de mais informações recomendo esta leitura: http://wiki.squid-cache.org/Features/DynamicSslCert
[12] Comentário enviado por Jose_mauro2015 em 09/07/2015 - 22:41h
Boa Noite, Renato tudo bom?
Eu segui o seu procedimento para compilar e configurar o squid3 aparentemente a compilação ocorreu com sucesso.
Só que ele continua apenas bloqueando HTTP e também faz os logs das paginas acessadas, mas não URL HTTPS você seguiu exatamente a configuração acima ?
E também queria tirar uma outra duvida se você poder me ajudar é claro, seria referente ao arquivo /usr/share/squid3/errors/Portuguese/ERR_ACCESS_DENIED, tentei customizar nesse caminho e em outro que também tem esse arquivo cara você acredita que a pagina de erro não modifica kkkk já viu algo parecido ?
E parabéns pela artigo....
[13] Comentário enviado por rbonfim em 16/07/2015 - 23:04h
[12] Comentário enviado por Jose_mauro2015 em 09/07/2015 - 22:41h
Boa Noite, Renato tudo bom?
Eu segui o seu procedimento para compilar e configurar o squid3 aparentemente a compilação ocorreu com sucesso.
Só que ele continua apenas bloqueando HTTP e também faz os logs das paginas acessadas, mas não URL HTTPS você seguiu exatamente a configuração acima ?
E também queria tirar uma outra duvida se você poder me ajudar é claro, seria referente ao arquivo /usr/share/squid3/errors/Portuguese/ERR_ACCESS_DENIED, tentei customizar nesse caminho e em outro que também tem esse arquivo cara você acredita que a pagina de erro não modifica kkkk já viu algo parecido ?
E parabéns pela artigo....
Caro Mauro utilizei o procedimento descrito acima! Caso o problema não tenha sido resolvido abra um tópico no forum para analisarmos todo o procedimento! ok!?
Sobre a customização da página, tive esse mesmo problema, foi uma luta para mudar a danada da página, vou tentar relembrar o processo e posto aqui!
[14] Comentário enviado por Jose_mauro2015 em 22/07/2015 - 14:30h
[13] Comentário enviado por rbonfim em 16/07/2015 - 23:04h
[12] Comentário enviado por Jose_mauro2015 em 09/07/2015 - 22:41h
Boa Noite, Renato tudo bom?
Eu segui o seu procedimento para compilar e configurar o squid3 aparentemente a compilação ocorreu com sucesso.
Só que ele continua apenas bloqueando HTTP e também faz os logs das paginas acessadas, mas não URL HTTPS você seguiu exatamente a configuração acima ?
E também queria tirar uma outra duvida se você poder me ajudar é claro, seria referente ao arquivo /usr/share/squid3/errors/Portuguese/ERR_ACCESS_DENIED, tentei customizar nesse caminho e em outro que também tem esse arquivo cara você acredita que a pagina de erro não modifica kkkk já viu algo parecido ?
E parabéns pela artigo....
Caro Mauro utilizei o procedimento descrito acima! Caso o problema não tenha sido resolvido abra um tópico no forum para analisarmos todo o procedimento! ok!?
Sobre a customização da página, tive esse mesmo problema, foi uma luta para mudar a danada da página, vou tentar relembrar o processo e posto aqui!
Forte abraço!
Boa tarde, Renato
Eu consegui resolver o problema era erro de configuração nos comandos que trata sobre o SSL e certificado e também porque o squid3 com SSL não funciona como proxy transparente.
E quanto ao erro da pagina é porque na instalação apt-get install squid3 tem uma biblioteca chamada squid-langpack e as configs de tratamento de erro ficaram definidas nelas então ficou assim: /usr/share/squid-langpack/pt-br/ERR_ACCESS_DENIED.
[16] Comentário enviado por yurifc4 em 29/07/2015 - 10:35h
Fiz todos os procedimentos corretamente do tutorial e por um momento achei que ia definitivamente resolver esse problema com os sites https, então... no último passo dei um restart no squid e me deu o retorno "[ ok ] Restarting Squid HTTP Proxy 3.x: squid3.", mas quando fui testar, deu erro na página de "Conexão recusada pelo servidor proxy", verifiquei o status do serviço com o service squid3 status e para minha surpresa... "[FAIL] squid3 is not running ... failed!". Eu já tinha o squid3 (3.4) e fiz todo o processo com o 3.4.
[17] Comentário enviado por Jose_mauro2015 em 29/07/2015 - 11:15h
[16] Comentário enviado por yurifc4 em 29/07/2015 - 10:35h
Fiz todos os procedimentos corretamente do tutorial e por um momento achei que ia definitivamente resolver esse problema com os sites https, então... no último passo dei um restart no squid e me deu o retorno "[ ok ] Restarting Squid HTTP Proxy 3.x: squid3.", mas quando fui testar, deu erro na página de "Conexão recusada pelo servidor proxy", verifiquei o status do serviço com o service squid3 status e para minha surpresa... "[FAIL] squid3 is not running ... failed!". Eu já tinha o squid3 (3.4) e fiz todo o processo com o 3.4.
Estou aceitando sugestões ou dicas... obrigado :)
Bom dia, Yuri
Tira uma duvida você criou o certificado myCA.der ? Esse certificado ira autenticar as estações clientes, cria e deixa junto com o myCA.pem, depois copia para as estações de trabalho e instala o certificado no navegador, para gerar o certificado executa esse comando:
# openssl x509 -in myCA.pem -outform DER -out myCA.der
Para ajudar agente visualizar melhor o problema post seu squid.conf
[19] Comentário enviado por yurifc4 em 29/07/2015 - 13:36h
Opa, Boa tarde gurizada.
Na verdade não tinha gerado o certificado do cliente, gerei, tudo certo.
Só que para voltar a funcionar, eu tinha desfeito o processo de renomear os arquivos na pasta /usr/sbin...
Então, na tentativa de fazer funcionar, renomeie novamente o arquivo squid (que gerou na compilação) para squid3 e até o momento esse é o meu squid.conf http://notepad.cc/cuneoxo94 (bem simples mesmo)
Esses são os meus retornos dos comandos...
~ $ sudo service squid3 restart
[FAIL] Restarting Squid HTTP Proxy 3.x: squid3[....] Waiting...........................................................................failed.
. ok
~ $ sudo squid3 -k reconfigure
squid: ERROR: Could not send signal 1 to process 5344: (1) Operation not permitted
~ $ sudo service squid3 status
[ ok ] squid3 is running.
amadio@amadio-positivo ~ $
Mesmo com o failed, ele está rodando... só que ainda não está bloqueando sites https.
Não importei o certificado nos navegadores dos clientes, vou providenciar isso... mas não era para ele me apresentar um erro de certificado?
Obs: No syslog não aparece nada relacionado ao squid.
[20] Comentário enviado por yurifc4 em 29/07/2015 - 14:27h
Bom, após reiniciar o computador... ele voltou com aquele problema. Inicia sem problemas, mas ao verificar o status "squid3 is not running".
Verificando o syslog:
Jul 29 14:53:48 amadio squid3[5633]: Squid Parent: will start 1 kids
Jul 29 14:53:48 amadio squid3[5633]: Squid Parent: (squid-1) process 5636 started
Jul 29 14:53:48 amadio (squid-1): UFSSwapDir::openLog: Failed to open swap log.
Jul 29 14:53:48 amadio squid[5633]: Squid Parent: (squid-1) process 5636 exited with status 1
Jul 29 14:53:51 amadio squid[5633]: Squid Parent: (squid-1) process 5655 started
Jul 29 14:53:51 amadio (squid-1): UFSSwapDir::openLog: Failed to open swap log.
Jul 29 14:53:51 amadio squid[5633]: Squid Parent: (squid-1) process 5655 exited with status 1
Jul 29 14:53:54 amadio squid[5633]: Squid Parent: (squid-1) process 5658 started
Jul 29 14:53:55 amadio (squid-1): UFSSwapDir::openLog: Failed to open swap log.
Jul 29 14:53:55 amadio squid[5633]: Squid Parent: (squid-1) process 5658 exited with status 1
Jul 29 14:53:58 amadio squid[5633]: Squid Parent: (squid-1) process 5661 started
Jul 29 14:53:58 amadio (squid-1): UFSSwapDir::openLog: Failed to open swap log.
Jul 29 14:53:58 amadio squid[5633]: Squid Parent: (squid-1) process 5661 exited with status 1
Jul 29 14:54:01 amadio squid[5633]: Squid Parent: (squid-1) process 5665 started
Jul 29 14:54:01 amadio (squid-1): UFSSwapDir::openLog: Failed to open swap log.
Jul 29 14:54:01 amadio squid[5633]: Squid Parent: (squid-1) process 5665 exited with status 1
Jul 29 14:54:01 amadio squid[5633]: Squid Parent: (squid-1) process 5665 will not be restarted due to repeated, frequent failures
Jul 29 14:54:01 amadio squid[5633]: Exiting due to repeated, frequent failures
[21] Comentário enviado por rbonfim em 29/07/2015 - 15:31h
Yuri, faça o seguinte:
squid -Ncd1
Assim temos uma saída completa do inicio do serviço, imagino que a priori o principal problema é relativo a Swap e Log! Posta e saída do comando acima pra nos analisarmos!
__#$
root@human:/#apt-get install -y brain
"Conhecimento é livre"
[22] Comentário enviado por yurifc4 em 30/07/2015 - 10:56h
rbonfim deu um erro nesse comando... mas acabei instalando em um outro servidor com o Debian Wheezy, no que eu estava testando era o LMDE. Configurei com o squid3, mas ainda não fiz esse procedimento. Só que agora, com um usuário comum, em sites https que é para bloquear ele apresenta um erro do servidor proxy e não o do acesso negado (melhor que nada). Mas com o usuário convidado, que é onde a maioria das pessoas utilizam, ele acessa normalmente os sites bloqueados.
Minha dúvida é se mesmo realizando esse processo e dando certo, ele tbm vai funcionar com o usuário convidado?!
E pelos comentários, parece que ngm conseguiu fazer.
Bom, só testando para ver :)
[24] Comentário enviado por yurifc4 em 30/07/2015 - 13:17h
Agora fiz todo o processo com o Wheezy e seguindo a risca o tutorial... mesmo problema, inicia, mas não inicia rsrs.
O problema era a opção -c... não existe.
segue com os parametros -Nd1
2015/07/30 13:13:43| Starting Squid Cache version 3.3.13 for x86_64-unknown-linux-gnu...
2015/07/30 13:13:43| Process ID 10683
2015/07/30 13:13:43| Process Roles: master worker
2015/07/30 13:13:43| With 1024 file descriptors available
2015/07/30 13:13:43| Initializing IP Cache...
2015/07/30 13:13:43| DNS Socket created at [::], FD 5
2015/07/30 13:13:43| DNS Socket created at 0.0.0.0, FD 6
2015/07/30 13:13:43| Adding nameserver 8.8.8.8 from /etc/resolv.conf
2015/07/30 13:13:43| Adding nameserver 192.168.1.1 from /etc/resolv.conf
2015/07/30 13:13:43| helperOpenServers: Starting 5/5 'ssl_crtd' processes
2015/07/30 13:13:43| helperOpenServers: Starting 0/10 'ncsa_auth' processes
2015/07/30 13:13:43| helperOpenServers: No 'ncsa_auth' processes needed.
2015/07/30 13:13:43| Logfile: opening log /var/log/squid3/access.log
2015/07/30 13:13:43| WARNING: log parameters now start with a module name. Use 'stdio:/var/log/squid3/access.log'
2015/07/30 13:13:43| Unlinkd pipe opened on FD 21
2015/07/30 13:13:43| Store logging disabled
2015/07/30 13:13:43| Swap maxSize 3072000 + 262144 KB, estimated 256472 objects
2015/07/30 13:13:43| Target number of buckets: 12823
2015/07/30 13:13:43| Using 16384 Store buckets
2015/07/30 13:13:43| Max Mem size: 262144 KB
2015/07/30 13:13:43| Max Swap size: 3072000 KB
2015/07/30 13:13:43| ERROR opening swap log /var/spool/squid3/swap.state: (13) Permission denied
FATAL: UFSSwapDir::openLog: Failed to open swap log.
[25] Comentário enviado por yurifc4 em 30/07/2015 - 13:46h
Bom, era só alterar no "chown -R squid:squid /var/spool/squid3/".
Agora está rodando normalmente... porém, importei o certificado no cliente, e mesmo assim continua tudo liberado. E quando coloco o intercept na http_port 3128, bloqueia TUDO, menos os https rsrs.
[26] Comentário enviado por yurifc4 em 30/07/2015 - 14:31h
Estou sem entender... fui em um computador testar e acessei o facebook.com, por exemplo que é bloqueado. E deu um erro de certificado, aquele que tem o "Me tire daqui" e tal... importei o certificado e bloqueio mesmo \o/
O que será que as outras máquinas tem de diferente que não deu certo e essa deu?! São todas Linux.
[27] Comentário enviado por yurifc4 em 30/07/2015 - 15:36h
Aee descobri o que era... nas opções de proxy do firefox, tem que marcar a opção "DNS remoto" que vai funcionar perfeitamente. http://imgur.com/ikoipy9
Utilizo esse script para configurar automaticamente...
// Configure and lock proxy for clients
lockPref("network.proxy.http","192.168.1.100");
lockPref("network.proxy.http_port", 3128);
lockPref("network.proxy.type", 1);
lockPref("network.proxy.share_proxy_settings", true);
lockPref("network.proxy.no_proxies_on", "localhost, 127.0.0.1");
lockPref("network.proxy.socks_remote_dns", true);
Salvo em /usr/lib/firefox/defaults/pref/
Só que agora, preciso descobrir se é possível salvar em uma pasta o certificado, para que funcione com todos os usuários.
O maior problema é com o usuário convidado, pois ele apaga tudo após o logout.
[30] Comentário enviado por guitoneloto em 13/08/2015 - 12:52h
Olá, gostaria de tirar uma dúvida.
Realizei todo o processo, configurei o squid e mesmo assim ainda apresenta erro de certificado nos clientes ao acessar o proxy transparente.
Alguém saberia como posso resolver isso ?
[33] Comentário enviado por fabianno515 em 09/11/2015 - 23:01h
boa noite! amigos, sou iniciante, e estou com proble ao tentar iniciar o squid3 depois de realizar os procedimentos!!
Erro: FATAL: Unknown http(s)_port option 'ssl_bump'.
FATAL: Bungled /etc/squid3squid.conf line2 : https_port 3127 intercept ssl_bump generate_host_certificates=on dynamic_cert_mem_cache_size=4MB
[37] Comentário enviado por razakmg em 16/11/2015 - 17:15h
Olá.
Muito bom o seu tópico. Parabéns.
Sou um pouco leigo quanto a distro Linux. Sei o básico. Resolvi aprender mais sobre ralando no TCC.
Pro meu trabalho, meu orientador me colocou pra usar o CentOS.
Eu consigo fazer essas mesmas configurações pra essa distribuição?
Preciso muito dessa ajuda, se não for incomodo. Grato!
[39] Comentário enviado por _Aprendiz_ em 23/12/2015 - 10:49h
Bom dia pessoal!
Me ajudem por favor!!
Sou novato no fórum e em Linux.
Mas enfim, estou tentando criar o Proxy da minha empresa e ao executar o comando ./configure completo, conforme passado no artigo, ele me retorna a msg:
error: Cannot find cppunit from /usr
O que pode ser? como posso resolver? Me ajudem!?
Muito Obrigado!
[43] Comentário enviado por marciotaglietta em 08/06/2016 - 12:08h
Boa tarde Renato!
Primeiro parabéns pelo post, vinha procurando uma solução e parece que encontrei.
Estou com um problema na hora de executar o comando ./configure.
Está dando o seguinte erro:
configure: using system installed cppunit version 1.13.2
configure: Using cppunit includes from /usr
configure: error: Cannot find cppunit at /usr
O libcppunit-dev está instalado e tudo mais que encontrei e testei não deu certo.
Você tem ideia de como poderia resolver esse erro????
Antecipadamente agradeço e fico no aguardo.
Obrigado
[46] Comentário enviado por chiarete em 14/05/2018 - 13:50h
Boa tarde!
Será que vai sair alguma atualização para não precisar ter que compilar o squid ou criar certificados.
Eu utilizava anteriormente com a regra
iptables -t nat -A PREROUTING -s $LAN_RANGE -p tcp --dport 443 -j REDIRECT --to-port 3128
e funcionava normalmente.
[47] Comentário enviado por rafaelinfosys em 12/09/2018 - 16:34h
Olá.
A configuração para mim funcionou bem até...
###############
Durante o processo de compilação do Squid foi setada a opção "--libexecdir=/lib/squid3" nesta pasta estão os arquivos necessários à execução, um destes arquivos, ssl_crtd será usado para a criação de certificados dinâmicos:
[48] Comentário enviado por figlesias em 25/06/2021 - 16:03h
Olá Renato, muito bom seu artigo aí! Parabéns! Seguinte: eu fiz todo o passo a passo de configuração do Squid seguindo as sugestões dos amigos aqui do VOL, deu quase tudo certo, inclusive a implementação do certificado SSL. O Proxy está funcionando certinho quando não defino ele como Transparent ou Intercept, como você mesmo disse acima, no caso de versões do SQUID superiores a 3x usamos intercept e não transparent.
A questão é que meu proxy não transparente está me gerando alguns problemas que não consigo resolver:
1 - Outlook não envia nem recebe e-mails - já liberei no meu Firewall todas as portas possíveis de POP3 e SMTP (TCP e UDP) (INPUT - OUTPUT e FORWARD) e também o DNS (Porta 53 UDP - usando na tag iptables a opção de Origem e Destino informando o DNS da minha rede externa), inclusive inserindo ida e retorno para o IP do meu provedor de e-mail que no caso é a Homehost, mesmo assim, com o proxy ativado não passa. Liberei também as bendidas portas de e-mail usadas no SQUID na acl Safe_ports e mesmo assim não funcionou. Eu consigo acessar o webmail do meu provedor via proxy mas Outlook não envia nem recebe.
2 - Estou com um problema de Whatsapp WEB também com proxy sem ser transparente, por que neste caso vi e tentei diversas dicas de liberação deste, tanto por portas quanto por URL ou pelas listas de IPS do whatsapp no cidr, e mesmo assim, não consigo fazer o bendito exibir o QR para conectar o Web WhatsApp. Estudando um pouco mais aqui no VOL vi alguns dizendo que no Proxy transparente esse problema não acontece, por essa razão estou tentando implementar o Proxy Transparente, mas aí vem o terceiro problema ai:
3 - Tudo funcionando, SQUID rodando sem ser transparente, implementei no meu Firewall várias sugestões de regras aqui do VOL para redirecionamento e em todas após restart do Firewall e do Squid, dá erro no Squid de: "No forward-proxy ports configured", hoje tentei a última dica desse tipo de regra, as suas aqui e também não deu certo. Me ajuda!!! Tem algo errado, mas não sei o que é, cabeça fritando já. Vou deixar abaixo o início do meu squid.conf e as regras do meu Firewall relacionadas ao SQUID já incluidas as que você indicou aí:
$localnet = minha rede interna
$iflan = minha interface de rede interna
$ifwan = minha interface de rede externa
Agradeço imensamente se puder me ajudar!!! Depois de tudo rodando direitinho vou compartilhar um modelo de SQUID.CONF e de FIREWALL bem documentado aqui pra ajudar outros colegas!!!