Criando um servidor de autenticação com FreeRadius no Debian 10 Buster (Extra sqlippool)


Esse tutorial é ideal para provedores que desejam criar seu próprio sistema de autenticação com freeradius, fazendo autenticação do tipo PPPoE, hotspot, Wireless (PSK/EAP) entre outras.

Neste tutorial iremos instalar e configurar o FreeRadius 3.0.x sobre o Debina 10, com integração dos na base de dados MariaDB (frok do MySQL), ativaremos ainda o módulos SQLIPPOOL para armazenar nossa pool de IPs na base de dados.

REQUISITOS
1 – Debian 10 bustes – Instalação limpa
2 – WEB Apache + PHP + MariaDB + phpMyAdmin no Debian 10 Buster “LAMP” (Se desejar usar o phpMyAdmin)

Instalação do FreeRadius 3.0.>17

Primeiramente iremos criar o banco de dados e usuário e conceder as permissões de acesso.

Abra o terminal de comando do MariaDB e crie a base e o usuario chamados de radius e defina a senha para este usuário.

Altere SENHA_USER_RADIUS. Você pode gerar uma senha forte e segura em https://senhasegura.remontti.com.br

Instale os pacotes do freeradius

Com o o banco de dados radius criado iremos importar as tabelas padrões do freeradius:

Após comando será solicitado a senha do usuario radius (SENHA_USER_RADIUS).

Caso deseje logs mais detalhados (recomendo) edite o arquivo /etc/freeradius/3.0/radiusd.conf, mas antes faça um backup do mesmo.

Localize as variáveis e altere para yes

Ajustaremos o mod SQL para trabalhar com conexão do tipo mysql, e informamos os dados para conexão com o banco de dados. Arquivo /etc/freeradius/3.0/mods-available/sql.orig

Usarei o comando sed para facilitar sua vida 🙂 mas preste atenção nos comandos, se desejar pode editar o arquivo manualmente e alterar as entradas.

No próximo comando altere SENHA_USER_RADIUS para a senha de conexão do usuário radius.

Habilite o mod:

Agora no arquivo /etc/freeradius/3.0/sites-enabled/default vamos comentar alguns componentes que não nos interessa (Se você entrar no arquivo e editar manualmente ele está todo comentado, auto explicativo.) e incluir alguns componentes como o SQL.

Habilitando o mod sqlippool
Como o mod sqlippool você poderá ter sua pool de IPs direto no banco de dados.

Vou alterar (Descomentando e comentado) a chave pool_key = “%{NAS-Port}” por “%{Calling-Station-Id}“, desta forma a chave será o MAC, e “allow_duplicates = no” para não termos duplicidades de IPs. Mais adiante iremos também ajustar o allocate_clear.

Precisamos adicionar o mod sqlippool no nosso arquivo default, você acrescentará sqlippool em accounting {…} e post-auth {…} logo abaixo de sql:

Verifique com o comando abaixo se a saída do seu arquivo ficou assim:

Faremos os ajustes no arquivo inner-tunnel

Verifique com o comando abaixo se a saída do seu arquivo ficou assim:

Uma alteração que acho válida é para que para cada alocação de IP ela seja randômica, isso pode solucionar alguns problemas como o balanceamento dos prefixo no seu BGP, ou daqueles clientes que jogam online, fazem download e até mesmo que estão sofrendo algum ataque. Assim ao reiniciar seu equipamento o mesmo irá receber um novo endereço IP. Para que funcione desta forma iremos apenas comentar algumas linhas e descomentar outras, pois em /etc/freeradius/3.0/mods-config/sql/ippool/mysql/queries.conf variável allocate_find já vem com o modelo pronto 🙂

Comentar:

Descomentar:

Como alteramos a pool_key para Calling-Station-Id em /etc/freeradius/3.0/mods-enabled/sqlippool vamos ajustar o allocate_clear para quando for liberar um IP use a chave pool_key e não a NAS, caso contrário ira liberar IPs indevidos que estão sendo utilizado por usuários ativos e assim evitamos que surjam IPs duplicados, para isso:

Comentar:

Descomentar

É interessante você ajustar o tempo lease_duration = 3600 no arquivo /etc/freeradius/3.0/mods-available/sqlippool talvez para um menor intervalo, falo sobre isso no tutorial https://blog.remontti.com.br/4085 recomendo a leitura!

Opcional
Eu particularmente não gosto da ideia da tabela radusergroup não ter um ID, em alguma programação ela pode ser útil, então para fazer isso se desejar faça:

Entre com suasenha do usuário radius.

Caso você tenha uma alta demanda de requisições você pode fazer algumas alterações no radiusd.conf.
Altere conforme sua necessidade, e hardware de seu servidor. Vale lembrar que fazendo essas alterações pode ser necessário alterar o limite de conexões ao MariaDB. Não abuse nessas configurações recomendo ler a documentação.

Você pode começar dobrando os valores, ex.:

Finalizando

Habilite o freeradius para começar junto com a inicialização do sistema

Pare o serviço e inicie em modo debug

Se nenhum erro acontecer uma mensagem com: Ready to process requests aparecer parabéns seu freeradius está funcionando. Através do comando debug você consegue acompanhar as ações que o freeradius irá fazer, ótimo para estudos e entendimento. Para encerrar o modo debig use Crtl+c, e então inicie o serviço de forma normal.

Para integrar seu servidor freeradius para fazer autenticações PPPoE, Hotspot, Wireless PSK/EAP entre outras, você precisa aprender mais sobre as tabelas do banco de dados e quais atributos usar em cada situação sempre pensando na segurança. Você pode acessar https://blog.remontti.com.br/4085 onde irá encontra alguns modelos de autenticação que atente praticamente todos os cenários de provedores.

Gostou? Quer me ajudar? 🙂

Se quiser fazer uma doação para o café ficarei muito feliz pelo seu reconhecimento!

Se não puder doar pode deixar seu agradecimento nos comentário também ficarei feliz em saber que ajudei. Se tiver qualquer pergunta deixe-a também. Se preferir entrar em Contato clique aqui.

Participe do canal no telegram para ficar atualizado sempre que publicar um novo tutorial.

Abraço!

Fonte:
https://wiki.freeradius.org/guide/SQL-HOWTO
https://wiki.freeradius.org/modules/Rlm_sql
https://wiki.freeradius.org/modules/Rlm_sqlippool

Rudimar Remontti

Trabalho atualmente como Gerente de Redes em um Provedor de Internet no Rio Grande do Sul.

Você pode gostar...

1 Resultado

  1. 13 de março de 2020

    […] Vou tomar como base a instalação do FreeRadius no tutorial: (requisito) Criando um servidor de autenticação com FreeRadius 3.0.x no Debian Buster […]

Deixe uma resposta

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *