Problemas com Content Filter

Visualizando 7 respostas da discussão
  • Autor
    Posts
    • #687
      skate_forever
      Participante

      Bom 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.


      Wireguard_webadmin

      Sistema gratuito (Open Source) para gestão de VPN's WireGuard com uma Web interface intuitiva e fácil de usar.

      Principais funcionalidades:

      - Sistema de Firewall completo e flexível.
      - Encaminhamento de portas
      - Suporte a multi usuário com níveis diferentes de acesso
      - Múltiplas instâncias do Wireguard
      - Crypto key routing para configuração de VPN site-to-site

      O projeto é Open Source, fácil de instalar e está disponível em wireguard_webadmin

    • #6433
      skate_forever
      Participante

      Ao 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)

    • #6434
      skate_forever
      Participante

      Se 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

    • #6435
      Bruno Vicente
      Participante

      skate_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

    • #6436
      skate_forever
      Participante

      Pois é 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.

    • #6437
      skate_forever
      Participante

      Bruno, reportei o bug e eles já resolveram.

      Espero que lancem a versão final do 2.4.1, com essa correção.

      http://bugs.endian.com/view.php?id=3308

    • #6438
      Bruno Vicente
      Participante

      Good work, skate_forever!

      Sim, com certeza este virá corrigido.

      []’s

    • #6439
      thiagonmat
      Participante

      fis isso e não funcionou ps a linha do script que uso é a 200 e 201 é normal isso?

Visualizando 7 respostas da discussão
  • O tópico ‘Problemas com Content Filter’ está fechado para novas respostas.