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: 58.019 ]

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

Instalando Squid a partir do código fonte

Gerenciando relatórios do SARG

Configurando Squid para liberação de messenger em horário específico, dentre outros

Controlando acesso às páginas do Apache na rede interna

Autenticando Squid utilizando MySQL

  
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