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.