Relatório em Tablet

Relatórios com usuários do Captive Portal no pfSense 2.1 e 2.2

A um tempo atrás me deparei com uma demanda para extrair relatórios de navegação para usuários do Captive Portal do pfSense. Encontrei uma adaptação do lightsquid para esse fim no fórum do pfSense, entretanto esta versão não funcionava corretamente nas versões 2.0.x do pfSense, pois foi desenvolvida para versões anteriores. Corrigi os problemas do pacote original e adaptei seu uso para as versões 2.0.x. Agora com a nova versão 2.1 do pfSense novas adaptações foram necessárias.

Para facilitar o procedimento preparamos as modificações em pacotes compactados que podem ser baixados pelos botões acima.

Descompacte o arquivo no seu PC e copie o diretório utilizando um cliente de SCP (Caso utilize Windows, baixe o WinSCP) para o seu pfSense. Utilize o usuário root com a senha do admin.

Agora entre no diretório onde se encontram os arquivos que você copiou utilizando o cliente SCP e copie o arquivo ip2name.portalauth para o diretório /usr/local/libexec/lightsquid/. No exemplo abaixo, copiei o diretório do ip2name para dentro do diretório root.

Copie o arquivo lightsquid.xml para dentro do diretório /usr/local/pkg
Agora abra as configurações do lightsquid pela interface gráfica e selecione a opção de Captive Portal e salve.
cp03
Neste momento temos que resolver o problema de dependência. O local onde vamos copiar a dependência muda de acordo com o histórico de instalações (instalação nova, update de versão e etc), o ideal é testar e descobrir onde devemos publicar.
Para isso execute o comando:
cp04

Note que ele retorna que o arquivo ip2name.portalauth não é encontrado no diretório /usr/pbi/lightsquid-amd64/libexec/lightsquid/

Então vamos copiar o arquivo para esse local:

Para confirmar se tudo está correto, execute novamente o comando:

Caso nenhum erro seja retornado, os relatórios já devem ser gerados com os nomes dos usuários. No exemplo abaixo o usuário “Zezinho” é um usuário de Captive Portal:

cp09

Se algum erro de dependência de bibliotecas ocorrer, dentro do diretório do /root/ip2name temos as duas dependências do Perl. Uma delas é o diretório Data e outra é a biblioteca Zone.pm. Se seu problema for relacionado as bibliotecas Date copie esse diretório para o caminho base do Perl, seguindo o exemplo de erro anterior; você deve copiar o diretório Data para o diretório /usr/pbi/squid-amd64/lib/perl5/5.14.2/. Caso seu erro seja relacionado a biblioteca Zone.pm copie o arquivo dentro do diretório /root/ip2name/Time/Zone.pm para o diretório /usr/pbi/squid-amd64/lib/perl5/5.14.2/Time/

Algumas premissas devem ser seguidas para que a geração fique 100%.

  1. Deve-se configurar no Captive Portal um HardTimeout, mesmo que seja de 12 ou 24 horas. Recomendo 12 horas.
  2. O Lease do DHCP deve ser no mínimo o dobro do tempo de HardTimeout do Captive Portal.
  3. Por padrão o log de autenticações do pfSense do Captive Portal é bem pequeno, se seu fluxo de usuários for muito grande, deve-se aumentar esse log. Na versão 2.1 esse valor foi aumentado para 500k, porém, caso não seja suficiente execute o procedimento abaixo:

Para aumentar o tamanho dos logs, conecte no servidor via SSH (caso use Windows, baixe o Putty) e edite o arquivo /etc/rc/. Encontre o trecho do código que referencia “portalauth“. Utilize como base a figura abaixo, os valores marcados em vermelho representam 500k, aumente conforme sua necessidade.

OBS: Faça um backup do /etc/rc , então após editar abra o arquivo novamente e veja se está tudo no lugar.

rclog

Para que a configuração entre em vigor é necessário excluir o arquivo de log /var/log/portalauth.log e reiniciar o firewall. Agora o valor que você configurou será utilizado como padrão para todos os logs. Para que outros logs assumam o novo tamanho, basta removê-los e reiniciar o firewall.

Também é necessário alterar no cron as entradas:

/usr/bin/perl /usr/pbi/lightsquid-amd64/www/lightsquid/lightparser.pl today

Para:

/usr/bin/perl /usr/local/www/lightsquid/lightparser.pl today

E

/usr/bin/perl /usr/pbi/lightsquid-amd64/www/lightsquid/lightparser.pl yesterday

Para:

/usr/bin/perl /usr/local/www/lightsquid/lightparser.pl yesterday

Para alterar o Cron é necessário instalar um pacote no Pfsense, depois de instalado o menu Services -> Cron ficará disponível.

[Image by: Shutterstock]

The following two tabs change content below.
Profissional de TI a mais de 15 anos, desenvolvendo projetos em consultoria de infraestrutura e segurança, com grande experiência em ambientes Microsoft(Windows Server , Exchange 2003/2007/2010/2013, Cluster File Server, Cluster SQL Server, Exchange, DFS, Active Directory) e Unix(Iptables,DRBD,HeartBeat,HAproxy,Apache+PHP,Squid,OpenVPN). Certificado Microsoft Windows Server, Exchange 2013, Symantec SMG, Zabbix entre outras.
  1. Pingback: Relatórios com usuários do Captive Portal no pfSense 2.1 | pfSense-BR

  2. Gardy Erickson de Padua - Reply

    Otimo artigo. Fiz e funcionou, porém parou depois. Gostaria de saber qual versao ideal do squid, e o diretório dos logs, é no /var/squid/log mesmo?

    • Gardy, vamos lá você realizou alguma update no servidor depois do configurado? Algumas atualizações de versões sobrescrevem as configurações dos relatórios fazendo necessário executar o procedimento de configuração dos relatórios novamente. Experimente rodar o comando para ver se são reportados erros: /usr/bin/perl /usr/local/www/lightsquid/lightparser.pl today
      A versão do squid não influenciou em nenhum dos ambientes que eu gerencio. Os logs do squid devem ficar em /var/squid/log.

  3. Olá Thiago

    A rotina que você fez era exatamente o que eu precisava, mas apliquei para o pfsense 2.1.4 e não dá erro, mas ele não grava nada no portalauth.log. Fica sempre zerado.
    Um detalhe diferente do que você comentou é que eu tenho um serviço DHCP em um Windows, que também é o meu AD para autenticação via RADIUS.

    Será que este cenário meu não vou conseguir implementar o Lightsquid com a identificação do usuário?

    Agradeço a ajuda.

    • Joseval, boa noite tudo bem?
      Agora na versão nova do Squid-dev, você pode selecionar o tipo de autenticação como CaptivePortal, dessa forma os logs do Squid serão gravados com os usuários corretos, e não será mais necessário a minha solução.
      Vou atualizar o post assim que possível, mas é bem simples. Na aba autenticação selecione CaptivePortal e no LigthSquid selecione o tipo do log squid.

  4. ola, nao utilizo o squid3-dev, apliquei a solucao na versao 2.1 x64,com o comando /usr/sbin/clog /var/log/portalauth.log via console, consigo ver os logs normalmente, porem na interface o lightsquid busca os logs do squid e nao do captive, tem algo a ser alterado?

  5. Pessoal, desculpe não estar respondendo, estou preparando uma versão compatível com a 2.1.5 tendo em vista que a solução com squid-dev não está atendendo, pois não libera os ips e macs cadastrados na lista de liberações do captive portal.

  6. Olá Thiago, tudo tranquilo? Ótimo tutorial. Estou usando a versão 2.1.5 do Pfsense na qual esta adaptação para izibir usuários do portal captive não aparece. Fico no aguardo pelo seu desenvolvimento de solução para esta versão mais recente. Abraço!

  7. Olá, segui todo o tutorial de instalção, porém meu relatório mostra apenas ops ips dos usuários logados no captive portal. Algum sugestão de como resolver esse problema?

  8. Boa Tarde Thiago, fiz tudo como solicitou na publicação e não aparece os nomes somente os ip’s, eu estou usando autenticação pelo AD isso interfere?, eu marquei a opção captive portal no lightsquid e mesmo assim não mostrou. Você tem um tutorial de como configurar o captive portal adequadamente.
    desde já obrigado.

  9. Ola Thiago
    Executei todo o procedimento e nao tive problemas. So que nos relatorio lightSquid esta aparecendo a conta como admin.
    Um detalhe no meu ambiente é que estou utilizando o Active Directory para autenticar as contas no Captive portal.
    Na autenticação no Captive Portal nao estou tendo problemas, ele esta autenticando as contas sem problema algum que inclusive nos status do captive portal aparece a conta do usuario logado. Teria mais alguma outra dica?
    Desde já eu agradeço.

    Versão PFSense 2.1.5.

    • Alysson, obrigado por alertar referente a referencia dos links, foi realizado uma migração da ferramenta de gerenciamento de downloads e acabaram corrompendo algumas referencias. O arquivo já foi postado novamente. Mais uma vez obrigado e boa sorte!

  10. Estou com um problema aqui, fala que eu não tenho permissão para copiar o arquivo
    #cp ip2name.partalauth /usr/local/libexec/lightsquid

  11. Wander Sfalsin dos Santos - Reply

    Tentei fazer no pfsense 2.2.1 x64 e não funcionou. O comando /usr/bin/perl /usr/local/www/lightsquid/lightparser.pl today não retorna erro. No relatório do lightsquid só aparece IPs

  12. Olá, tenho uma dúvida, é necessário ter o squid configurado com captive portal para que o lightsquid possa gerar os log?…

    abraço

  13. Oi, alguém poderia me ajudar nesse erro?

    Após o Comando : /usr/bin/perl /usr/local/www/lightsquid/lightparser.pl today
    ——————————————————————————————————————————-
    [2.2.2-RELEASE][[email protected]]/: /usr/bin/perl /usr/local/www/lightsquid/lightparser.pl yesterday
    Can’t locate Date/Parse.pm in @INC (@INC contains: /usr/local/lib/perl5/5.14/BSDPAN /usr/local/lib/perl5/site_perl/5.14/mach /usr/local/lib/perl5/site_perl/5.14 /usr/local/lib/perl5/5.14/mach /usr/local/lib/perl5/5.14 . /usr/local/www/lightsquid/) at /usr/pbi/lightsquid-amd64/local/libexec/lightsquid/ip2name.portalauth line 2.
    BEGIN failed–compilation aborted at /usr/pbi/lightsquid-amd64/local/libexec/lightsquid/ip2name.portalauth line 2.
    Compilation failed in require at /usr/local/www/lightsquid/lightparser.pl line 39.

    • Sanderson, copiei as pastas Date e Time que está no arquivo compactado para /usr/local/www/lightsquid/ e o erro que mencionou não apareceu mais, porém continuo com os relatórios apenas por IP também. Estou buscando uma solução, conseguiu algo?

  14. Renato acredito que não funcione, devido minha versão do pfsense 2-2-2 o perl 5.18, mas estou verificado a possibilidade de verificar isso via sarg, só falta eu homologar os usuários do captive no squid, com isso acredito que funcione, boa sorte qualquer novidade eu comunico, e vc tbm porfavor!

    • Hi, I need that script running for pfsense 2.2.2 urgently…
      I would pay for it. 🙂
      Ur Website in Portugese is hard for me to understand (Germany).

      How fast can we get it to work?
      What do you need / want for it?

      regards

      CAT

  15. Thiago agradeço pela ajuda em disponibilizar um novo arquivo, sendo que infelizmente ainda não aparece o nome do usuário.

    Executei o:
    /usr/bin/perl /usr/local/www/lightsquid/lightparser.pl today

    não aparece nada, nem erro.

    Mando rodar o Refresh now eo Refresh full e ainda tenho ip invés do nome do usuário

    # Hora Usuário Real Name Conexões Bytes % Grupo
    1 [Graph Report] 192.168.0.39 ? 13 043 109.6 M 23.2% ?

  16. Thiago grato pelo seu empenho em me ajudar, mas já verifiquei os arquivos solicitados por vc, e ainda não funcionou.

    Verifiquei os seguintes arquivos.

    existe o Binario em /usr/local/sbin/clog.

    está sendo registrado: no /var/log/portalauth.log

    Mandei rodar novamente e ainda aparece somente o ip.

  17. hola estamos instalando pfsense 2.1.5 y no nos deja instalar deja en este comando y de ahi no pasa / usr/local/bin/cpdup -vvv -I -o /usr /mnt/usr y no se que hacerle para continuar ya lo reinicie y no hace nada, me podrá ayudar por favor.

  18. Olá, gostaria de saber se esse procedimento só funciona se:

    1: – Services / Proxy Server / General / Transparent HTTP proxy – Desabilitado
    2: – Services / Proxy Server / Authentication / Authentication method – Usuario autenticando pelo Captive Portal

    Obrigado.

  19. OI novamente, tive que formatar o servidor (Queima da PLACA MÃE) e agora instalei 2.2.4 64bits já fiz o procedimento do 2.2.2 e não apareceu nenhum erro, mas ainda mostra os usuários e sim por ips, o único procedimento que não fiz foi modificar no cron.

  20. Quando aplico essas instruções na versão 2.2.6 amd64 fica dando erro de lighthttps Line 411, e a memória RAM fica em 100% Swap 50% crescendo ate travar o servidor, alguma solução para essa nova versão?

    Me ajudem!

    • Para o WinSCP funcionar, o SSH deve estar habilitado, verifique se consegue se logar via SSH, caso não consiga, o problema deve ser justamente a falta de ativação do protocolo ou uma mudança da porta padrão do mesmo.

Deixe uma resposta