LightSquid mais Completo
-
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.tmpN=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.tmpObs.: 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.tmpwhile 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.tmpObs.: 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.tmpIP=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,
-
Vou fixar nos tutoriais. :)
-
Maravilha Marcello,
Espero que ajude o pessoal. ;)
-
Show, vou testar !!!
-
Poderia aplicar este script para um ambiente sem autenticação com o AD ?