segunda-feira, 17 de julho de 2017

Instalação e configuração do captive portal no PFSENSE

O Captive Portal controla e gerencia de forma automática o acesso a Internet em redes públicas. O usuário é interceptado pelo sistema do captive portal sempre que faz uma requisição na web e o sistema redireciona para uma interface que solicita uma autenticação. Nesse artigo, você encontra um guia para instalar e configurar o Captive Portal no pFsense.

Índice

  1. Criando usuários
  2. Configuração do Captive Portal
  3. Configurando Vouchers

Criando usuários

O primeiro passo é a criação dos usuários que terão permissão de acesso ao Captive Portal. Para isso, deve-se acessar o menu System -> User Manager no painel administrativo do pFsense.

Clique no botão Add, na tela que é aberta em seguida, há os seguintes campos:

  • Username -> Nome de usuário
  • Password -> Senha
  • Full Name -> Nome completo
  • Expiration date -> Data de validade do usuário
  • Group Membership -> Adesão a algum grupo de usuários
  • Certificate -> Criação de certificado, utilizado em ambientes com Autoridade de Certificação
  • Keys -> Chaves IPSec e SSH

Os campos que precisamos preencher, por hora, são apenas os três primeiros, os restantes podem ser mantidos em branco. Tendo preenchido os campos, clique em Save para cadastrar o usuário.

O próximo passo é conceder permissão de login ao captive portal. Para isso, vamos editar as permissões do usuário clicando no ícone de lápis que é mostrado na tela de usuários.

Na tela de edição do usuário, clique no botão ADD da seção Effective Privileges

Em seguida, selecione a opção User - Services:Captive Portal login em Assigned Privileges e em seguida clique em Save, feito isso o usuário já é capaz de fazer o login no Captive Portal. Agora é preciso configurar as funcionalidades do Captive Portal.

Configuração do Captive Portal

Clique no menu Services -> Captive Portal. Na seção Captive Portal Zones, clique no botão ADD.

Na tela seguinte, defina o Zone Name(Nome da Zona) e o Zone Description(Descrição da Zona) e em seguida clique no botão Save & Continue.

Depois disso, será aberta a página de configuração do Captive Portal. Clique em Enable Captive Portal

Feito isso, são mostrados vários campos para configuração do Captive Portal, sendo os principais:

  • Interfaces -> LAN ou WAN
  • Maximum Concurrent Connections -> Número máximo de conexões simultâneas de um mesmo IP
  • Idle timeout -> Tempo em minutos que define após quanto tempo de inatividade os usuários serão desconectados
  • Hard timeout -> Tempo em minutos que define após quanto tempo um usuário ativo é desconectado
  • Pass-through credits per MAC Address -> Número de créditos por MAC para conexão com o captive portal sem autenticação.
  • Waiting period to restore pass-through credits -> Tempo em horas que define após quanto tempo os créditos por MAC serão devolvidos
  • Reset waiting period -> Se marcada esta opção, o tempo de espera volta ao valor inicial cada vez que o usuário se conecta.
  • Logout popup window -> Se marcada esta opção, é aberta uma janela popup para o usuário fazer o logout

Preencha os campos citados acima como for de sua preferência, deixe-os em branco se quiser utilizar os valores padrões. Na seção Authentication selecione Local User Manager/Vouchers e deixe a opçao Allow only/users groups with "Captive portal login" privilege set marcada.

Feito isso, a configuração básica do Captive portal está feita, mas podemos realizar uma configuração adicional, colocando os vouchers.

Configurando vouchers

Estando na tela de configuração do Captive Portal, que utilizamos anteriormente, acesse no menu superior a opção vouchers

Clique em Enable the creation, generation and activation of rolls with vouchers. Em seguida, recomenda-se manter os valores padrões, então basta rolar a página e clicar no botão Save.

Depois disso, agora deve está presente o botão Add na seção Voucher Rolls, clique neste botão para criar o nosso primeiro conjunto de vouchers.

Na tela seguinte, há as seguintes opções para criação do conjunto de vouchers:

  • Roll # -> Identificador do conjunto de vouchers
  • Minutes per ticket -> Define a quantidade de minutos de acesso por voucher
  • Count -> Número de vouchers do conjunto a ser gerado
  • Coment -> Comentário

Por fim, clique em Save para criar o Voucher roll. Para visualizar os vouchers gerados, clique no ícone destacado na imagem abaixo

Configuração realizada!

Depois de tudo isso feito, o captive portal já deve estar funcionado como esperado, porém alguns fatores podem causar erros e o Captive portal não estar funcionando como esperado, é preciso que o DHCP esteja ativado e que o DNS tenha sido configurado corretamente.

Se tudo foi configurado corretamente, logo ao iniciar o browser no cliente, este deve ser conectado diretamente através dos créditos por MAC e deve ser redirecionado ao site colocado no campo durante a configuração. Após o fim do crédito, a seguinte tela deve ser mostrada:

sexta-feira, 20 de maio de 2016

[OBI2012] Consecutivos

Certamente a questão Consecutivos foi a mais complicada da primeira fase da OBI 2012, apesar de também não exigir nenhum conteúdo mais avançado. Para resolvê-la basta saber trabalhar bem com as estruturas de repetição.

Na minha solução usei a variável $seqMaior$ para guardar a pontuação da maior sequência e $seqAtual$ para guardar a pontuação da sequência atual que inicia com o valor $1$, uma vez que não existe uma sequência de $0$ termos. A cada laço do for há uma verificação: se o número lido for igual ao lido anteriormente a pontuação da sequência é incrementada em 1, caso contrário a sequência que estava sendo contada acaba, mas antes de reinicializá-la com $1$ precisamos verificar se ela é a maior até agora para atualizar a variável $seqMaior$. Observe que esta verificação não é feita para o primeiro número lido($i = 0$).

Código em C++

quinta-feira, 19 de maio de 2016

[OBI2012] Corrida

Esta questão (leia aqui) é facilmente resolvida se pensarmos no problema como uma divisão, onde C é o dividendo, N é o divisor e o resultado pretendido é o resto.

Leonardo, ao percorrer $C$ metros, fará o circuito da pista completamente $X$ vezes, sendo que o ponto de parada da sua última volta será determinado pela distância que resta correr após as $X$ voltas, ou seja, $C - X \cdot N$, observe que isso é exatamente o resto da divisão de $C$ por $N$. Portanto, basta imprimir $C$ % $M$.

Código em C++

terça-feira, 17 de maio de 2016

[OBI2012] Vice Campeão

A questão, que pode ser lida aqui, é uma questão simples da primeira fase da OBI 2012 que pede, em outras palavras, o segundo maior valor entre três números.

A solução que pensei foi ordenar os três inteiros em ordem crescente e imprimir o número do meio(ou o segundo maior).

Código em C++

Vale lembrar que existem várias outras abordagens possíveis para resolver esse problema.

terça-feira, 3 de novembro de 2015

Utilizando o Cloud9 como ambiente de programação

O Cloud9 é um ambiente de densenvolvimento totalmente online, onde você pode programar em diversas linguagens de programação, como Python, JavaScript, C ou C++. O mais interessante é que a ferramenta oferece gratuitamente uma máquina virtual rodando Ubuntu, a qual tem mysql instalado inclusive. Existem também planos pagos com máquinas melhores.
Veja abaixo o passo a passo para utilizar a ferramenta:

quarta-feira, 9 de setembro de 2015

Gerando modelo relacional a partir de um script SQL no MySQL Workbench

O MySQL Workbench traz uma ferramenta bem útil,que faz uma engenharia reversa no script sql e gera a partir dele o modelo relacional(em tabelas). Veja neste post o passo a passo para utilizar a ferramenta.
Para exemplificar, utilizarei o banco de dados world disponibilizado aqui, faça o download da versão InnoDB. Obviamente você deve ter o MySQL e o Workbench instalados no seu computador para poder fazer o procedimento.

terça-feira, 8 de setembro de 2015