Sempre tive curiosidade sobre como funcionavam os portais de autenticação que vemos por ai, e mexendo no pfsense, descobri o recurso Captive Portal.
O Captive Portal é uma página web que é exibida ao usuário para que seja feita uma autenticação para que recursos sejam liberados, no caso, internet. É muito utilizado em hotspots como cafeterias, shoppings, aeroportos e outros estabelecimentos comerciais com acesso a internet. Lembrando que a responsabilidade por eventuais ilícitos recai sobre o estabelecimento, então é também uma forma de identificação e registro dos acessos, mesmo que sejam gratuitos.
Colocando a mão na massa, vamos em Services/Captive Portal +Add;
A criação do serviço é bem simples, Zone Name é o nome do portal (eu coloquei hífen, mas deu erro, então alterei para underline), coloque uma descrição e clique em Save Continue;
Não é preciso mexer em todas as opções, sinceramente, eu testei um monte, fiz besteira, refiz... vou mostrar neste tutorial as opções que efetivamente vão deixar o Captive Portal funcionando e uma ou outra que achei interessante.
No link Configuration, habilite o Captive Portal e selecione a interface desejada (normalmente LAN ou Wireless), Maximum concorrent connections, são o número de conexões simultâneas, vai variar de acordo com o ambiente;
Idle timeout: Seria a validade da conexão ociosa e Hard timeout o tempo para se autenticar;
Enable logout popup window é uma janela popup para que o usuário possa fazer logoff. After authentication Redirection URL é a página que o usuário será redirecionado ao se autenticar;
Disable Concurrent user logins: Desabilita o mesmo usuário em mais de um dispositivo;
É possível definir uma largura de banda a ser usada pelos usuários;
Existe a possibilidade de customizar a página de login do Captive Portal;
É possível também, exibir Termos e Condições de uso durante o acesso;
Na Autenticação, usei o método backend (ou base local, dependendo da versão);
Pronto, o Captive Portal está configurado e funcional.
Agora vamos ao teste...
Como vamos utilizar usuários internos, precisaremos de um usuário, o que não deve ser problema se você já conhece minimamente o pfsense. Escolha um usuário, vá em Editar.
Nas opções do usuário, procure por Effective Privileges +Add/Assigned privileges e selecione a opção User - Services: Captive Portal login que é a opção que irá liberar o acesso aos usuários ao portal;
Agora sim, vamos ao teste... Ao tentar acessar uma página qualquer, temos que fazer o login e aceitar os termos e condições;
Indo em Captive Portal, no portal criado, temos a visualização do IP, MAC, usuário, data e hora da sessão e um botão que possibilita a desconexão de algum usuário;
Uma outra forma de se autenticar, é com o uso de Voucher, eu mesmo já utilizei em um hotel, em que eu tinha a internet pelos dias que fiquei hospedado utilizando um código alfanumético. Para habilitar o sistema de Voucher, vamos editar nosso portal;
No link vouchers, habilitar a criação, geração e ativação dos Vouchers, fiz algumas alterações, tomei um monte de erro e na vez que deu certo, não alterei nada, habilitei e salvei;
Clique em +Add;
Aqui tem umas opções interessantes:
- Roll: um valor de início da sequencia de 0 a 65535, usei o 1
- Minutes per ticket: Vai variar de acordo com a necessidade, achei que uma hora seria interessante
- Count: Número de vouchers gerados
- Comentários: São sempre opcionais, mas ajudam a entender as coisas.
Após salvar, temos nossa autenticação por voucher funcionando;
Para testar, precisamos dos códigos certo? No último ícone, é possível exportar a lista dos vouchers. Salve e abra com um editor de texto;
Pronto, ai estão os vouchers criados;
Note que ao tentar acessar uma página da internet, aparecerá um campo para o uso do voucher, basta utilizar um código da lista, aceitar os termos e fazer Login;
Ao logar, o usuário será redirecionado para a página que foi configurada anteriormente;
E também é possível gerenciar o acesso;
Para facilitar, é interessante incluir na dashboard do pfsense o widget do Captive Portal;
Bom, temos nosso Captive Portal funcionando, agora você já pode dar uma incrementada naquele projetinho e oferecer internet autenticada e monitorada.
Espero que tenha sido útil.
Abraço!