Home › Comunidade Brasileira Endian Firewall › Endian Firewall › Endian Firewall – Suporte › Problemas com Content Filter
Marcado: content filter, Dansguardian, restartdansguardian.py
- Este tópico contém 7 respostas, 3 vozes e foi atualizado pela última vez 13 anos, 6 meses atrás por
thiagonmat.
- AutorPosts
- novembro 16, 2010 às 1:23 pm #687
skate_forever
ParticipanteBom dia senhores,
Estou com um problema que está causando dores e cabeça.
Estou com um Endian atualizado para a versão 2.4.1 (com o intuito de resolver esse problema mas o mesmo continua), o problema é o seguinte:
Estou com proxy habilitado, utilizando políticas de acesso e autenticação via AD (Windows 2003), ele consegue passar um tempo funcionando corretamente, mas de forma aleatórias, o dansguardian acaba pegando um content filter diferente.
Por exemplo, tenho filtros de 1 a 10 e também criado as políticas de acesso de 1 a 10 e aplicadas, uma hora ou outra o dansguardian começa a pegar políticas erradas.
Por exemplo, tenho a regra 8, 9 e 10. Em determinada hora ao invés de pegar a política 10, o mesmo pega a política 9.
Como resolvo? Pego e removo as regras, 9 e 10, tanto o filtro quanto a política de acesso. E recrio as regras na ordem inversa, o que era 10, vira 9, e o que era 9, vira 10.
Ok, volta a funcionar por um tempo, mas depois, TODAS as políticas começam a usar a política 8 como filtro. Que pode ser visto no log do dansguardian.
Já fiz pesquisa no bugs, fórum internacional e no google.
E não achei nenhuma solução. Se alguém tiver uma ideia, agradeço.
🚀 Apresentando o Hotspot Beacon! 🚀
Desbloqueie o potencial do seu Wi-Fi com o Hotspot Beacon. Personalize sua página de acesso para mostrar anúncios, promoções ou informações e engajar seus clientes, impulsionando o seu negócio.
💡 Principais Funcionalidades:
- Interface amigável e intuitiva
- Opções de personalização completas para sua marca
- Gerenciamento de propagandas e promoções
- Integração fácil com sistemas existentes via API
- Limitação de velocidade ou largura de banda por usuário
- Controle de acesso por horário
🔗 Confira o site para saber mais: https://hotspotbeacon.com - novembro 17, 2010 às 2:55 pm #6433
skate_forever
ParticipanteAo aplicar as políticas no proxy o mesmo deixava de funcionar apropriadamente, aplicando políticas erradas ou bloqueando tudo.
Após várias análises de log e arquivos de configuração ficou constatado um problema no script feito em python (restartdansguardian.py).
O problema está na listagem de diretórios que está sendo considerada como string.
Quando o número de content filters ultrapassava 9, chegando a 10 ou mais, a listagem ficava invertida.
Listagem normal em numeral: 1, 2, 3, 4, 5, 6, 7, 8, 9 e 10.
Listagem utilizando string: 1, 10, 2, 3, 4, 5, 6, 7, 8 e 9.
Isso faz com que o dansguardian gere as configurações de forma incorreta, jogando para a variável groupname um valor totalmente diferente das configurações do content filter.
Por exemplo, o arquivo de configuração dansguardianf10.conf responsável pelo grupo Segurança, tinha a variável groupname com o valor “Custo content2”.
A resolução do problema se deu seguindo os seguintes passos, que deram norte para o debug do script python:
# ls -1 /etc/dansguardian/profiles/ [ Aqui ele mostra a listagem como se fosse string. ]
# ls -1 /etc/dansguardian/profiles/ | sed “s/^(.)$/01/” | sort | sed “s/^0(.)$/1/” [ Aqui vimos como a listagem deveria ser. ]
OBS.: A listagem pode ser feita com sort -n.
Após verificar o script, não foi achado nada.
Ao executar o comando abaixo, tivemos a resposta:
# restartdansguardian -d [ Mostrou onde se encontrava o erro do script. ]
Agora ao entrar no arquivo /usr/local/bin/restartdansguardian.py
# vi /usr/local/bin/restartdansguardian.py
Procuramos pela linha que continha “.Include” e chegando a função, def getprofiles() responsável pela criação dos content filters.
O processo de debug se deu ao executar linha por linha da função getprofiles.
def getprofiles():
if file_exists(DANSGUARDIAN_SETTINGS):
profiles = glob(DANSGUARDIAN_SETTINGS)
else:
profiles = glob(DANSGUARDIAN_SETTINGS_DEFAULT)
profiles += glob(“%s/*/settings” % DANSGUARDIAN_PROFILES)
profiles = sorted(map(lambda p: os.path.dirname(p), profiles))
debug(profiles)
return profiles
O processo.
# python
Python 2.4.6 (#1, Nov 10 2009, 07:02:03)
[GCC 3.4.6 20060404 (e 3.4.6-10.endian8)] on linux2
Type “help”, “copyright”, “credits” or “license” for more information.
>>> import os
>>> import glob
>>> profile = glob.glob (“/var/efw/dansguardian/settings”)
>>> profiles = glob.glob (“/var/efw/dansguardian/settings”)
>>> profiles += glob.glob (“%s/*/settings” % “/var/efw/dansguardian/profiles”)
>>> profiles
[‘/var/efw/dansguardian/settings’, ‘/var/efw/dansguardian/profiles/content2/settings’,
‘/var/efw/dansguardian/profiles/content3/settings’, ‘/var/efw/dansguardian/profiles/content4/settings’,
‘/var/efw/dansguardian/profiles/content5/settings’, ‘/var/efw/dansguardian/profiles/content6/settings’,
‘/var/efw/dansguardian/profiles/content7/settings’, ‘/var/efw/dansguardian/profiles/content8/settings’,
‘/var/efw/dansguardian/profiles/content9/settings’, ‘/var/efw/dansguardian/profiles/content10/settings’,
‘/var/efw/dansguardian/profiles/content11/settings’, ‘/var/efw/dansguardian/profiles/content12/settings’,
‘/var/efw/dansguardian/profiles/content13/settings’, ‘/var/efw/dansguardian/profiles/content14/settings’,
‘/var/efw/dansguardian/profiles/content15/settings’, ‘/var/efw/dansguardian/profiles/content16/settings’]
>>> profiles = sorted(map(lambda p: os.path.dirname(p), profiles))
>>> profiles
[‘/var/efw/dansguardian’, ‘/var/efw/dansguardian/profiles/content10’,
‘/var/efw/dansguardian/profiles/content11’, ‘/var/efw/dansguardian/profiles/content12’,
‘/var/efw/dansguardian/profiles/content13’, ‘/var/efw/dansguardian/profiles/content14’,
‘/var/efw/dansguardian/profiles/content15’, ‘/var/efw/dansguardian/profiles/content16’,
‘/var/efw/dansguardian/profiles/content2’, ‘/var/efw/dansguardian/profiles/content3’,
‘/var/efw/dansguardian/profiles/content4’, ‘/var/efw/dansguardian/profiles/content5’,
‘/var/efw/dansguardian/profiles/content6’, ‘/var/efw/dansguardian/profiles/content7’,
‘/var/efw/dansguardian/profiles/content8’, ‘/var/efw/dansguardian/profiles/content9’]
A descoberta.
>>> profile = glob.glob (“/var/efw/dansguardian/settings”)
>>> profiles = glob.glob (“/var/efw/dansguardian/settings”)
>>> profiles += glob.glob (“%s/*/settings” % “/var/efw/dansguardian/profiles”)
>>> profiles
[‘/var/efw/dansguardian/settings’, ‘/var/efw/dansguardian/profiles/content2/settings’,
‘/var/efw/dansguardian/profiles/content3/settings’, ‘/var/efw/dansguardian/profiles/content4/settings’,
‘/var/efw/dansguardian/profiles/content5/settings’, ‘/var/efw/dansguardian/profiles/content6/settings’,
‘/var/efw/dansguardian/profiles/content7/settings’, ‘/var/efw/dansguardian/profiles/content8/settings’,
‘/var/efw/dansguardian/profiles/content9/settings’, ‘/var/efw/dansguardian/profiles/content10/settings’,
‘/var/efw/dansguardian/profiles/content11/settings’, ‘/var/efw/dansguardian/profiles/content12/settings’,
‘/var/efw/dansguardian/profiles/content13/settings’, ‘/var/efw/dansguardian/profiles/content14/settings’,
‘/var/efw/dansguardian/profiles/content15/settings’, ‘/var/efw/dansguardian/profiles/content16/settings’]
>>> profiles = map(lambda p: os.path.dirname(p), profiles)
>>> profiles
[‘/var/efw/dansguardian’, ‘/var/efw/dansguardian/profiles/content2’,
‘/var/efw/dansguardian/profiles/content3’, ‘/var/efw/dansguardian/profiles/content4’,
‘/var/efw/dansguardian/profiles/content5’, ‘/var/efw/dansguardian/profiles/content6’,
‘/var/efw/dansguardian/profiles/content7’, ‘/var/efw/dansguardian/profiles/content8’,
‘/var/efw/dansguardian/profiles/content9’, ‘/var/efw/dansguardian/profiles/content10’,
‘/var/efw/dansguardian/profiles/content11’, ‘/var/efw/dansguardian/profiles/content12’,
‘/var/efw/dansguardian/profiles/content13’, ‘/var/efw/dansguardian/profiles/content14’,
‘/var/efw/dansguardian/profiles/content15’, ‘/var/efw/dansguardian/profiles/content16’]
>>>
OBS.: The glob module finds all the pathnames matching a specified pattern according to the rules used by the Unix shell.
E ao debugar a linha 174 do script, temos o responsável pelo problema, o sorted.
A solução foi a seguinte. Substituímos a linha abaixo:
profiles = sorted(map(lambda p: os.path.dirname(p), profiles))
Por essas:
#profiles = sorted(map(lambda p: os.path.dirname(p), profiles))
profiles = map(lambda p: os.path.dirname(p), profiles)
Restart no dansguardian e verificamos que as políticas estavam corretas.
Testes foram feitos e mostraram que as políticas agora estão sendo aplicadas corretamente.
PS.: Agradecer ao Enderson Maia, que ajudou no debug do script. x)
- novembro 17, 2010 às 4:00 pm #6434
skate_forever
ParticipanteSe alguém tiver mais alguma ideia sobre isso, seria bom acrescentar neste tópico.
O código identado fica:
def getprofiles():
if file_exists(DANSGUARDIAN_SETTINGS):
profiles = glob(DANSGUARDIAN_SETTINGS)
else:
profiles = glob(DANSGUARDIAN_SETTINGS_DEFAULT)
profiles += glob("%s/*/settings" % DANSGUARDIAN_PROFILES)
profiles = sorted(map(lambda p: os.path.dirname(p), profiles))
debug(profiles)
return profiles - novembro 17, 2010 às 4:09 pm #6435
Bruno Vicente
Participanteskate_forever
Muito interessante esta situação, eu havia iniciado uma pesquisa quando vi o post mas não encontrei nada que pudesse levar a uma solução.
Agora está aí!
Manda lá para a seção de Dicas.
[]’s
- novembro 17, 2010 às 6:02 pm #6436
skate_forever
ParticipantePois é Bruno, passei por maus bocados pesquisando até conseguir achar isso ai.
Agora estou vendo pra reportar isso ao Endian para eles corrigirem isso.
Espero que aceitem.
- novembro 18, 2010 às 12:04 pm #6437
skate_forever
ParticipanteBruno, reportei o bug e eles já resolveram.
Espero que lancem a versão final do 2.4.1, com essa correção.
- novembro 18, 2010 às 3:35 pm #6438
Bruno Vicente
ParticipanteGood work, skate_forever!
Sim, com certeza este virá corrigido.
[]’s
- outubro 20, 2011 às 1:26 pm #6439
thiagonmat
Participantefis isso e não funcionou ps a linha do script que uso é a 200 e 201 é normal isso?
- AutorPosts
- O tópico ‘Problemas com Content Filter’ está fechado para novas respostas.