Liberando vídeos específicos do YouTube com e2guardian + Squid utilizando interceptação SSL

Neste artigo ensinarei como liberar vídeos específicos do YouTube com e2guardian + Squid, utilizando interceptação SSL para capturar URLs necessárias.

[ Hits: 57.121 ]

Por: Renato Carneiro Pacheco em 16/04/2015


Configurando e2guardian e Squid



Como funciona o e2guardian

O e2guardian ainda não possui um manual oficial, apenas notas e changelogs do que foi alterado. Eles estão reaproveitando os docs do Dansguardian por enquanto para divulgar seu funcionamento.

Não entrarei em detalhes do funcionamento do e2guardian/Dansguardian, pois o foco deste artigo é apenas a funcionalidade extra que foi adicionada na ferramenta, que é a interceptação SSL.

Quem não estiver familiarizado com a ferramenta, sugiro a leitura da Wiki do Dansguardian:

Editando o e2guardian.conf

Localizado em /etc/e2guardian, acrescente (ou descomente) o "e2guardian.conf" com as seguintes opções:

language = 'portuguese'
loglocation = '/var/log/e2guardian/access.log'
authplugin = '/etc/e2guardian/authplugins/proxy-basic.conf'
authplugin = '/etc/e2guardian/authplugins/proxy-digest.conf'
usexforwardedfor = on # para que o Squid grave os logs com o IP de cada usuário em vez do IP do e2guardian
daemonuser = 'e2guardian'
daemongroup = 'e2guardian'
sslcertificatepath = '/etc/ssl/certs/'
cacertificatepath = '/etc/e2guardian/keys/cacert.pem'
caprivatekeypath = '/etc/e2guardian/keys/cakey.pem'
certprivatekeypath = '/etc/e2guardian/keys/e2guardiankey.pem'
generatedcertpath = '/etc/e2guardian/generatedcerts/'
generatedlinkpath = '/etc/e2guardian/generatedlinks/'

O resto das opções deixe como está, que é o padrão do e2guardian. Modifique de acordo com a necessidade do seu ambiente. Crie os diretórios para armazenar os certificados gerados e logs:

# cd /etc/e2guardian
# mkdir generatedcerts generatedlinks
# chown -R e2guardian:e2guardian generatedcerts generatedlinks
# mkdir /var/log/e2guardian
# chown -R e2guardian:e2guardian /var/log/e2guardian

Editando o e2guardianf1.conf

Este arquivo é referente às configurações do grupo (filtro) 1, que contêm listas referente à pasta /etc/e2guardian/lists e outras opções pertinentes ao filtro. No nosso caso, vamos nos ater apenas nas configurações essencialmente importantes.

Acrescente (ou descomente) as seguintes linhas abaixo:

groupname = 'Grupo padrão'
naughtynesslimit = 160 #Eu aumentei o limite do peso para evitar diversos falsos positivos
sslcertcheck = on #Verifica se o certificado que o e2guardian recebe dos sites acessados é autêntico
sslmitm = on #Habilita a função MITM
onlymitmsslgrey = on #Quando habilitada, apenas os sites na lista "greysslsitelist" serão interceptados
sslseparatelists = on #Habilita tratamento diferenciado para HTTPS com relação ao HTTP. A opção sslmitm depende dela para que o MITM funcione

Adicione o site do YouTube e seus dependentes na lista "greysslsitelist":

# echo -e youtube.com\n googlevideo.com\n ytimg.com >> /etc/e2guardian/lists/greysslsitelist

Adicione as expressões regulares (regex) para os vídeos específicos do YouTube no arquivo "exceptionregexpurllist". Vou utilizar o exemplo com este vídeo:
(Sim! Sou fã de GTA V...)

No link, repare que depois do "v=", existe um código. Este é o ID do vídeo no YouTube. É através dele que será feita a filtragem. Acrescente a linha abaixo no arquivo "exceptionregexpurllist" para liberar o XML "crossdomain.xml" disponibilizado pelo Google Vídeo, YouTube e o playback do servidor Google Vídeo:

# echo "^(.*\.(googlevideo|youtube)\.com/(crossdomain|videoplayback).*)" >> /etc/e2guardian/lists/exceptionregexpurllist
# echo "^(.*\s.youtube.com/.*)" >> /etc/e2guardian/lists/exceptionregexpurllist

Obs.: estes endereços devem ser executados apenas uma vez.

Utilize o script abaixo para inserir as regexs do YouTube no arquivo exceptionregexpurllist:

for i in fwGlWXr9-8k
do
echo "^(.*\.youtube\.com/watch\?v=$i)" >> /etc/e2guardian/lists/exceptionregexpurllist
echo "^(.*\.youtube\.com/v/$i)" >> /etc/e2guardian/lists/exceptionregexpurllist
echo "^(.*\.ytimg\.com/vi/$i/default.jpg)" >> /etc/e2guardian/lists/exceptionregexpurllist
echo "^(.*\.youtube\.com/watch\?feature=player_embedded\&v=$i)" >> /etc/e2guardian/lists/exceptionregexpurllist
echo "^(.*\.youtube\.com/v/$i\&hl=pt_BR\&fs=1\&)" >> /etc/e2guardian/lists/exceptionregexpurllist
echo "^(.*\.youtube\.com/get_video_info\?.*video_id=$i&.*)" >> /etc/e2guardian/lists/exceptionregexpurllist
echo "^(.*\.youtube\.com/embed_api_rest\?\&method=list_recs\&v=$i)" >> /etc/e2guardian/lists/exceptionregexpurllist
echo "^(.*\.youtube\.com/embed/$i)" >> /etc/e2guardian/lists/exceptionregexpurllist
echo ""
done

Obs.: o script é simples. Caso alguém tenha uma ideia melhor, fique à vontade. O intuito aqui é apenas demonstrar a possibilidade de realizarmos a exceção no site do YouTube.

Pronto! Agora é só subir o serviço:

# service e2guardian start

Se falhar, olhem em /var/log/e2guardian/access.log as mensagens de erro.

Configuração do Squid

Aqui não será abordada todas as configurações do Squid, apenas acrescente/modifique estas três linhas abaixo em /etc/squid/squid.conf:

http_port 127.0.0.1:3128 #Evita que os usuários acessem o cache sem passar pelo e2guardian
follow_x_forwarded_for allow localhost #Liberar o header "follow_x_forwarded_for" apenas para o e2guardian
follow_x_forwarded_for deny all #Negar geral

Obs.: se for Squid 3.x, o caminho é /etc/squid3/squid.conf.

Página anterior     Próxima página

Páginas do artigo
   1. Introdução
   2. Proxy: SSL autêntico x SSL Man-in-the-Middle
   3. e2guardian: fork do Dansguardian
   4. Instalação da parafernália
   5. Criando as chaves da CA
   6. Configurando e2guardian e Squid
   7. Interceptando as conexões SSL do YouTube
   8. Conclusão
Outros artigos deste autor

Iniciando seu Linux através do NTLoader do Windows 2000/XP

Leitura recomendada

Otimização Servidores Linux para Cache usando Squid

Proxy Squid Transparente

Instalação e configuração do Squid no Fedora

Proxy Squid com autenticação + Sarg + Webmin

Problemas com o Squid

  
Comentários
[1] Comentário enviado por fabio em 16/04/2015 - 15:59h

Baita artigo! Favoritado.

[2] Comentário enviado por tiaguera em 18/04/2015 - 12:11h

luz no fim do túnel! faço a mesma coisa com sslbump no freebsd, mas ele tem algumas limitações q me irritam (funciona em squid antigo apenas e nao funciona em proxy transparente)... vou testar o e2guardian e ver se ta valendo migrar... obrigado!

[3] Comentário enviado por olivam em 19/04/2015 - 00:43h

amigo como ficaria o redirecionamento da porta 443 no iptables. ou não funciona em proxy transparente?


Olivam C Moraes
Seja Livre use Linux!

[4] Comentário enviado por renato_pacheco em 19/04/2015 - 12:36h


[2] Comentário enviado por tiaguera em 18/04/2015 - 12:11h

luz no fim do túnel! faço a mesma coisa com sslbump no freebsd, mas ele tem algumas limitações q me irritam (funciona em squid antigo apenas e nao funciona em proxy transparente)... vou testar o e2guardian e ver se ta valendo migrar... obrigado!


Cara, eu já testei no squid e funciona das duas formas (autenticada e transparente). O problema do squid é a sua filtragem q não tem um bom desempenho. Por isso optei pelo e2guardian.

[5] Comentário enviado por renato_pacheco em 19/04/2015 - 14:16h


[3] Comentário enviado por olivam em 19/04/2015 - 00:43h

amigo como ficaria o redirecionamento da porta 443 no iptables. ou não funciona em proxy transparente?


Olivam C Moraes
Seja Livre use Linux!


Eu tenho certeza q funciona, só não me lembro se tem q modificar algo no e2guardian.conf...

[6] Comentário enviado por olivam em 19/04/2015 - 21:28h


[5] Comentário enviado por renato_pacheco em 19/04/2015 - 14:16h


[3] Comentário enviado por olivam em 19/04/2015 - 00:43h

amigo como ficaria o redirecionamento da porta 443 no iptables. ou não funciona em proxy transparente?


Olivam C Moraes
Seja Livre use Linux!

Eu tenho certeza q funciona, só não me lembro se tem q modificar algo no e2guardian.conf...


estou utilizando squid 3.4 com sslbump +dansguardian-2.10.1.1 +slackware 14.1 só que as vezes trava o squid e tenho que dar um killall no squid e startar para voltar a funcionar, seria ótimo um tutorial e2guardian+squid com proxy transparente incluindo as regra utilizadas do iptables, redirecionando as portas 80,8080 e 443 para o e2guardian e usar o squid para fazer somente cache, deixando todo trabalho de filtragem http e https para o e2guardian.

Parabéns pelo Ótimo artigo...

é uma luz no fim do túnel para quem quer filtrar https (youtube e facebook).

Olivam C Moraes
Seja Livre use Linux!

[7] Comentário enviado por removido em 21/04/2015 - 22:38h


Ótimo artigo!

[8] Comentário enviado por renato_pacheco em 22/04/2015 - 14:16h


[6] Comentário enviado por olivam em 19/04/2015 - 21:28h


[5] Comentário enviado por renato_pacheco em 19/04/2015 - 14:16h


[3] Comentário enviado por olivam em 19/04/2015 - 00:43h

amigo como ficaria o redirecionamento da porta 443 no iptables. ou não funciona em proxy transparente?


Olivam C Moraes
Seja Livre use Linux!

Eu tenho certeza q funciona, só não me lembro se tem q modificar algo no e2guardian.conf...

estou utilizando squid 3.4 com sslbump +dansguardian-2.10.1.1 +slackware 14.1 só que as vezes trava o squid e tenho que dar um killall no squid e startar para voltar a funcionar, seria ótimo um tutorial e2guardian+squid com proxy transparente incluindo as regra utilizadas do iptables, redirecionando as portas 80,8080 e 443 para o e2guardian e usar o squid para fazer somente cache, deixando todo trabalho de filtragem http e https para o e2guardian.

Parabéns pelo Ótimo artigo...

é uma luz no fim do túnel para quem quer filtrar https (youtube e facebook).

Olivam C Moraes
Seja Livre use Linux!


Olivam,

Retiro o q disse! Por enquanto, o e2guardian não funciona como HTTPS transparente, somente HTTP transparente. Falei com o desenvolvedor e ele confirmou.

[9] Comentário enviado por SephirothHG em 01/04/2016 - 10:33h

Parabéns pelo artigo, Renato!

Estou tendo um problema, onde o serviço do e2guardian falha se a variável cacertificatepath estiver descomentada no arquivo e2guardian.conf.
Criei o certificado conforme o artigo e coloquei o caminho para o mesmo na variável.

[10] Comentário enviado por renato_pacheco em 01/04/2016 - 14:59h


[9] Comentário enviado por SephirothHG em 01/04/2016 - 10:33h

Parabéns pelo artigo, Renato!

Estou tendo um problema, onde o serviço do e2guardian falha se a variável cacertificatepath estiver descomentada no arquivo e2guardian.conf.
Criei o certificado conforme o artigo e coloquei o caminho para o mesmo na variável.


Dê uma olhada se o dono do diretório é o usuário e2guardian e grupo e2guardian. Caso não dê certo, execute o e2guadian assim: e2guardian -N. Ele vai mostrar alguma coisa pra vc, caso haja algum problema.

[11] Comentário enviado por SephirothHG em 06/04/2016 - 11:19h


[10] Comentário enviado por renato_pacheco em 01/04/2016 - 14:59h


[9] Comentário enviado por SephirothHG em 01/04/2016 - 10:33h

Parabéns pelo artigo, Renato!

Estou tendo um problema, onde o serviço do e2guardian falha se a variável cacertificatepath estiver descomentada no arquivo e2guardian.conf.
Criei o certificado conforme o artigo e coloquei o caminho para o mesmo na variável.


Dê uma olhada se o dono do diretório é o usuário e2guardian e grupo e2guardian. Caso não dê certo, execute o e2guadian assim: e2guardian -N. Ele vai mostrar alguma coisa pra vc, caso haja algum problema.


Muito obrigado pela resposta, Renato!

Demorei pra ver a sua resposta, pois achava que o VOL notificava quando houvesse comentários onde postei, daí fiquei esperando.

Sinceramente, não sei o que fiz, mas o e2guardian subiu sem falhas.
Porém, ao tentar acessar o vídeo que deveria estar liberado (ou qualquer outra página do youtube) recebo a mensagem de erro de "Falha na Conexão Segura" (SSL_ERROR_RX_RECORD_TOO_LONG)

Nos logs do e2guardian, aparece a seguinte mensagem:
"https://www.youtube.com:443 *DENIED* Failed to negotiate ssl connection to client CONNECT 0 0 SSL SITE 1 200 - Grupo padrão - - "

Alguma ideia do que possa ser?

Desculpe se estou sendo inoportuno, mas a quantidade de informações sobre o e2guardian na internet é bem pobre, e o seu artigo é a fonte de informação mais completa que encontrei.

[12] Comentário enviado por renato_pacheco em 06/04/2016 - 11:41h


Muito obrigado pela resposta, Renato!

Demorei pra ver a sua resposta, pois achava que o VOL notificava quando houvesse comentários onde postei, daí fiquei esperando.

Sinceramente, não sei o que fiz, mas o e2guardian subiu sem falhas.
Porém, ao tentar acessar o vídeo que deveria estar liberado (ou qualquer outra página do youtube) recebo a mensagem de erro de "Falha na Conexão Segura" (SSL_ERROR_RX_RECORD_TOO_LONG)

Nos logs do e2guardian, aparece a seguinte mensagem:
"https://www.youtube.com:443 *DENIED* Failed to negotiate ssl connection to client CONNECT 0 0 SSL SITE 1 200 - Grupo padrão - - "

Alguma ideia do que possa ser?

Desculpe se estou sendo inoportuno, mas a quantidade de informações sobre o e2guardian na internet é bem pobre, e o seu artigo é a fonte de informação mais completa que encontrei.


Cara, tá tranquilo, tá favorável! IUHaeiuhaiueh! Agora o seu problema está na criação das chaves e acrescentar o certificado nos navegadores. Reveja o passo-a-passo e depois me fala.

[13] Comentário enviado por SephirothHG em 06/04/2016 - 15:28h


[12] Comentário enviado por renato_pacheco em 06/04/2016 - 11:41h


Muito obrigado pela resposta, Renato!

Demorei pra ver a sua resposta, pois achava que o VOL notificava quando houvesse comentários onde postei, daí fiquei esperando.

Sinceramente, não sei o que fiz, mas o e2guardian subiu sem falhas.
Porém, ao tentar acessar o vídeo que deveria estar liberado (ou qualquer outra página do youtube) recebo a mensagem de erro de "Falha na Conexão Segura" (SSL_ERROR_RX_RECORD_TOO_LONG)

Nos logs do e2guardian, aparece a seguinte mensagem:
"https://www.youtube.com:443 *DENIED* Failed to negotiate ssl connection to client CONNECT 0 0 SSL SITE 1 200 - Grupo padrão - - "

Alguma ideia do que possa ser?

Desculpe se estou sendo inoportuno, mas a quantidade de informações sobre o e2guardian na internet é bem pobre, e o seu artigo é a fonte de informação mais completa que encontrei.


Cara, tá tranquilo, tá favorável! IUHaeiuhaiueh! Agora o seu problema está na criação das chaves e acrescentar o certificado nos navegadores. Reveja o passo-a-passo e depois me fala.


Refiz os certificados, e após lutar um pouco com os navegadores (que diziam que o mesmo não era confiável), consegui fazer funcionar no Firefox. No Chrome não aceita de jeito nenhum, mas acho que ele está reclamando da versão do SSL, que é a 1.0.1f (estou usando o Ubuntu 14.04), mas já vou verificar como atualizá-lo.
Deu certo! Tá funcionando, finalmente! hahaha
Agora só preciso descobrir como criar grupos e resolver o problema da confiabilidade do certificado.

Valeu pelo força, Renato!

[14] Comentário enviado por renato_pacheco em 06/04/2016 - 17:12h



Refiz os certificados, e após lutar um pouco com os navegadores (que diziam que o mesmo não era confiável), consegui fazer funcionar no Firefox. No Chrome não aceita de jeito nenhum, mas acho que ele está reclamando da versão do SSL, que é a 1.0.1f (estou usando o Ubuntu 14.04), mas já vou verificar como atualizá-lo.
Deu certo! Tá funcionando, finalmente! hahaha
Agora só preciso descobrir como criar grupos e resolver o problema da confiabilidade do certificado.

Valeu pelo força, Renato!


Sobre os certificados, é possível inserir via netlogon um script q inclui os certificados no Windows. No Firefox, é possível distribuir através d JavaScript, mas é bem complicado. Como não fui eu q fiz essa parada, não tenho muitos detalhes sobre isso. Se vc buscar na Internet, acredito q encontrará sem dificuldades. Se vc tiver AD na sua rede, é mais fácil inserir os certificados (exceto Firefox).


Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts