Netgate Discussion Forum
    • Categories
    • Recent
    • Tags
    • Popular
    • Users
    • Search
    • Register
    • Login

    LightSquid mais Completo

    Scheduled Pinned Locked Moved Portuguese
    5 Posts 4 Posters 2.7k Views
    Loading More Posts
    • Oldest to Newest
    • Newest to Oldest
    • Most Votes
    Reply
    • Reply as topic
    Log in to reply
    This topic has been deleted. Only users with topic management privileges can see it.
    • L
      leoescarpellin
      last edited by

      Boa noite pessoal,

      Venho aqui para compartilhar uma melhoria nos relatórios do LightSquid.
      A tempos procuro uma forma de deixar o relatório um pouco mais completo do que o disponivel para edição pela interface web do pfSense.
      Por exemplo, na interface web do pfsense não consigo gerenciar a disponibilização de informação como "realname" e "grupos" e "skipusers" (não listar algum usuario especifico).

      Eu que possuo a integração ntlm single sign-on com o pf2ad do Luiz Gustavo, chegava a ser um pouco frustrante pois nos relatório só aparecia o login da pessoa, e juntamente o relatório ficava um pouco poluido devido a vir no mesmo acessos com nome das maquinas ex: micro$ ou então os IPs das estações, e o Lightsquid possui arquivos de configuração que permitem ajustar o "realname", "grupos" e "skipusers".

      Como possuo integração como AD devido ao pf2ad decidi bolar script que buscassem as informações que preciso e alimentasse esses arquivos de configuração de forma automatica.

      Vou deixar abaixo a forma que fiz os scripts e alguns prints para verem como ficou muito melhor a visualização e consulta, principalmente se passar o acesso para algum diretor ou gerente que precise disso.

      Bom vamos ao que interessa:

      Lembrando que só utilizei e testei essas formas de preenchimento automatico em um pfSense 2.3.3 + pf2ad

      1. Meu primeiro problema, não é listado grupo algum dos usuarios, quando eu clicava em Relatórios por grupo, era mostrado apenas o grupo "00 - Sem Grupo", vamos ajustar isso.

      1.1 Crie o script abaixo com o nome que deseja no diretório que desejar, no meu caso criei dentro de "/root" com o nome "ldap_group.sh"

      #!/bin/sh
      /usr/local/bin/ldapsearch -b "ou=Grupos,ou=Escritorio,dc=dominio,dc=localdomain" -D "dominio\firewall" -x -w SENHA -h dominio.localdomain "(&(cn=*)(objectclass=group))" | grep -i cn: | cut -f2 -d: > /usr/local/etc/lightsquid/group.cfg.tmp

      N=0
      while read LINE ; do
              N=$((N+1))
              #echo "Processando #$N = $LINE"
        /usr/local/bin/ldapsearch -b "ou=Escritorio,dc=dominio,dc=localdomain" -D "dominio\firewall" -x -w SENHA -h dominio.localdomain "(memberOf=CN=$LINE,OU=Grupos,OU=Escritorio,DC=dominio,DC=localdomain)" | /usr/bin/grep -i sAMAccountName | /usr/bin/sed "s/sAMAccountName: /0$N  $LINE ,/g" >> /usr/local/etc/lightsquid/group.cfg.lin
      done < /usr/local/etc/lightsquid/group.cfg.tmp

      /usr/bin/awk -F, '{print $2,$1}' /usr/local/etc/lightsquid/group.cfg.lin | /usr/bin/sed "s/CN=//g" > /usr/local/etc/lightsquid/group.cfg

      /bin/rm -f /usr/local/etc/lightsquid/group.cfg.lin
      /bin/rm -f /usr/local/etc/lightsquid/group.cfg.tmp

      Obs.: Substituir todos os campos em vermelho de acordo com sua estrutura

      Explicando o Script:
      ldapsearch inicial - Vai buscar todos os grupos do AD que estiverem no caminho especificado e salvar em um arquivo chamado "group.cfg.tmp". No meu caso eu busquei todos os grupo que estavam dentro da OU "Grupos".
      While - Vai buscar todos os usuarios que eu possuo cadastrado na OU Escritorio, incluindo nas Sub-OUs, de acordo com cada grupo que ele percorrer no While e salvar em um arquivo "group.cfg.lin"
      awk - Vai organizar a posição do texto de cada linha de acordo com o necessario e remover o que for lixo e salvar no arquivo final "group.cfg" que é o arquivo lido pelo LightSquid.
      rm - Vai remover os arquivos temporarios criados durante o processo.

      2. Meu segundo problema, não é listado o realname dos usuarios, apenas o login, o campo realname fica com "?", vamos ajustar isso.

      2.1 Crie o script abaixo com o nome que deseja no diretório que desejar, no meu caso criei dentro de "/root" com o nome "ldap_realname.sh"

      #!/bin/sh
      /usr/local/bin/ldapsearch -b "ou=Escritorio,dc=dominio,dc=localdomain" -D "dominio\firewall" -x -w SENHA -h dominio.localdomain "(objectclass=person)" | /usr/bin/grep -i sAMAccountName | /usr/bin/sed "s/sAMAccountName: //g" > /usr/local/etc/lightsquid/realname.cfg.tmp

      while read LINE ; do
              /usr/local/bin/ldapsearch -b "ou=Escritorio,dc=dominio,dc=localdomain" -D "dominio\firewall" -x -w SENHA -h dominio.localdomain "(sAMAccountName=$LINE)" | /usr/bin/grep -i dn: | /usr/bin/sed "s/dn: CN=/$LINE  ,/g" >> /usr/local/etc/lightsquid/realname.cfg.lin
      done < /usr/local/etc/lightsquid/realname.cfg.tmp

      /usr/bin/awk -F, '{print $1,$2}' /usr/local/etc/lightsquid/realname.cfg.lin > /usr/local/etc/lightsquid/realname.cfg

      /bin/rm -f /usr/local/etc/lightsquid/realname.cfg.lin
      /bin/rm -f /usr/local/etc/lightsquid/realname.cfg.tmp

      Obs.: Substituir todos os campos em vermelho de acordo com sua estrutura

      Explicando o Script:
      ldapsearch inicial - Vai buscar todos os logins do AD que estiverem no caminho especificado e salvar em um arquivo chamado "realname.cfg.tmp". No meu caso eu busquei todos os usuarios que estavam dentro da OU "Escritorio".
      While - Vai buscar todos os Nomes de usuarios que eu possuo cadastrado na OU Escritorio, incluindo nas Sub-OUs, de acordo com cada login que ele percorrer no While e salvar em um arquivo "realname.cfg.lin"
      awk - Vai organizar a posição do texto de cada linha de acordo com o necessario e remover o que for lixo e salvar no arquivo final "realname.cfg" que é o arquivo lido pelo LightSquid.
      rm - Vai remover os arquivos temporarios criados durante o processo.

      3. Meu terceiro e ultimo problema, o relatório vinha muito poluido, alem dos logins dos usuarios apareciam no relatório IPs das estações ou nome das maquinas ex:"micro$", e isso não era interessante, ja que os links acessados por essas maquinas dessa forma são poucos itens de sistema e atualização. E quando fui preencher as maquinas no Skipuser da web não encontrei campo para tal, e decidir criar o arquivo manualmente e ajustar isso.

      3.1 Crie o script abaixo com o nome que deseja no diretório que desejar, no meu caso criei dentro de "/root" com o nome "ldap_skipusers.sh"

      #!/bin/sh
      /usr/local/bin/ldapsearch -b "cn=Computers,dc=dominio,dc=localdomain" -D "dominio\firewall" -x -w SENHA -h dominio.localdomain "(objectcategory=computer)" | /usr/bin/grep -i cn: | /usr/bin/sed "s/cn: //g" > /usr/local/etc/lightsquid/skipuser.cfg.tmp

      IP=192.168.0

      /usr/bin/sed 's/$/$/' /usr/local/etc/lightsquid/skipuser.cfg.tmp | /usr/bin/tr [A-Z] [a-z] > /usr/local/etc/lightsquid/skipuser.cfg

      for i in $(seq 1 255);
      do
              /bin/echo $IP.$i >> /usr/local/etc/lightsquid/skipuser.cfg
      done

      /bin/rm -f /usr/local/etc/lightsquid/skipuser.cfg.tmp

      Obs.: Substituir todos os campos em vermelho de acordo com sua estrutura

      Explicando o Script:
      ldapsearch inicial - Vai buscar todos os nomes de maquinas no AD que estiverem no caminho especificado e salvar em um arquivo chamado "skipuser.cfg.tmp". No meu caso eu busquei todos os computadores que estavam dentro da OU "Computers".
      sed - vai adicionar ao final de todas as linhas o "$" para que pegue as maquinas como no Squid e colocar todas em minusculo.
      for - Vai adicionar todos os IPs do escritório na faixa desejava conforme definido na variavel ao final do arquivo skipuser.cfg
      rm - Vai remover os arquivos temporarios criados durante o processo.

      Prontinho!
      Basta agora criar um agendamento no CRON do pfSense para que execute esses script de uma forma frequente.
      O lightsquid ja le por padrão estes 3 arquivos editados/criados não é necessario modificar configurações do lightsquid.
      Segue prints do relatório depois das alterações nos scripts acima.

      Obs.: Não sou nenhum profissional porem se alguem tiver alguma duvida ou problema me avisa que eu tento ajudar.
      Obs2.: Utilizei o caminho completo dos comando pois se não for feito dessa forma o script da problema quando executado via CRON do pfsense, então de preferencia mantenham os caminhos completos.

      Att,
      usuarios.jpg
      usuarios.jpg_thumb
      Grupos.jpg
      Grupos.jpg_thumb
      Grupos2.jpg

      Att,
      Leonardo Escarpellin

      1 Reply Last reply Reply Quote 0
      • marcellocM
        marcelloc
        last edited by

        Vou fixar nos tutoriais.  :)

        Treinamentos de Elite: http://sys-squad.com

        Help a community developer! ;D

        1 Reply Last reply Reply Quote 0
        • L
          leoescarpellin
          last edited by

          Maravilha Marcello,

          Espero que ajude o pessoal.  ;)

          Att,
          Leonardo Escarpellin

          1 Reply Last reply Reply Quote 0
          • A
            analista-m
            last edited by

            Show, vou testar !!!

            1 Reply Last reply Reply Quote 0
            • M
              moisesdfelix
              last edited by

              Poderia aplicar este script para um ambiente sem autenticação com o AD ?

              1 Reply Last reply Reply Quote 0
              • First post
                Last post
              Copyright 2025 Rubicon Communications LLC (Netgate). All rights reserved.