Instalação FreeRadius no Debian 12 Bookworm (Extra sqlippool)


Este tutorial é especialmente útil para provedores de serviços que desejam estabelecer seu próprio sistema de autenticação usando o FreeRADIUS. Ele abrange uma ampla gama de autenticação, incluindo PPPoE, hotspot, e autenticação sem fio (PSK/EAP), entre outras opções.

REQUISITOS
1 – Debian 12 Bookworm – Instalação limpa

Acesse seu bash e vire root com o comando su – para evitar comandos “que não existem”, e antes de mais nada tenha seu repositório atualizado.

Se o seu sistema Debian acabou de ser instalado e está em sua configuração inicial, aqui está o meu comando secreto que eu uso em todos os servidores após a instalação. Esse comando tem o objetivo de aprimorar a produtividade do shell (bash) no Debian e instalar alguns pacotes essenciais. É basicamente um script que inclui a maior parte das etapas descritas no tutorial: Como melhorar a produtividade no seu Debian após instalação

O serviço web não é necessário, mas normalmente juntamente do Freeradius acabo instalando um phpmyadmin por exemplo para poder fazer uma administração fácil do banco de dados entre outros. Se desejar pular esta etapa ela é opcional.

Instalação do Serviço Web+PHP

Vamos instalar os pacotes necessários

Ajuste fino, quiser saber mais clique aqui.

Instalação do MariaDB & phpMyAdmin

Por padrão o pacote MaraiDB no Debian usa unix_socket para autenticar o login do usuário, o que basicamente significa que você pode usar o nome de usuário e a senha do sistema operacional para efetuar login no console do MariaDB. Assim, você pode logar diretamente sem fornecer a senha root do MariaDB. Mais a frente vou ensinar como definir uma senha, não farei agora pois se você alterar nesse momento ao instalar o phpMyAdmin terá um erro.

Selecione Apache2

Responda Sim

Informe a senha para o banco de dados do phpmyadmin. http://senhasegura.remontti.com.br/

Repita a senha

Para acessar o phpmyadmin:http://[SERVER_IP]/phpmyadmin/

Para aumentar a seguraça vamos definir uma senha para o usuário root do MariDB, não esqueça de alterar ALTERE_3ST4_SENHA pela sua senha.

Apague seus rastros, em /root/.mysql_history temos um histórico com todos os comandos dado no terminal do MariaDB, então não é legal deixar lá em texto puro a senha que setamos!

Instalação do FreeRadius

Abra o terminal de comando do MariaDB e crie a base e o usuário 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 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).

Vamos fazer backups primeiramente dos arquivos que iremos alterar.

Irei abusar do comando sed de agora em diante com o intuito de entrar nos arquivos para editar, se não souber o que cada comando representa recomendo utilizar o chat GPT, cola lá e pergunta que ele explica rsrs (estou ficando velho)

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

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

Habilite os mods sql e sqlippool:

Desativando o TLS do Mysql

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.

Faremos os ajustes no arquivo inner-tunnel

Verifique com o comando abaixo se a saída dos seus arquivos ficou assim:

SQLIPPOOL

Para muitos o o maior pesadelo 👻 DUPLICIDADE DE IPs 👻
No Debian 12 temos a versão 3.2.1 do freeradius sendo rodada, nessa versão alguma melhorias já foram aplicadas, mas eu ainda acho falha para maioria dos IPs, então vou deixar aqui algumas alterações que tenho aplicado para uma realidade provedores que acredito que irá atender sem dores de cabeça.

Importe o banco de dados e aplique as regras de procedure.

Crie uma cópia do arquivo original, nunca se saber quando iremos precisar.

Para debugs e até mesmo algum script que visa buscar por falhas ou entendimento irei criar a coluna action na tabela radippool, nela estarei gravando qual a ação/query que ele executou do queries.conf.

Vamos pagar tudo que tem em queries.conf e criar todas as entradas.

Deixei nos comentários o macimo de explicação

É interessante você ajustar o tempo lease_duration = 3600 que por padrão é de 1h no arquivo /etc/freeradius/3.0/mods-available/sqlippool, para mim obtive resultados melhores com 30min, porém sempre respeitando o tempo de Acct-Interim-Interval que deve ser um tempo menor, entre 5 a 10 minutos, para evitar duplicidades de IPs.
Falo sobre isso no tutorial https://blog.remontti.com.br/4085 recomendo a leitura!

Caso você tenha uma alta demanda de requisições você deve 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.:

Em grande escalas é importante que você também realize um tuning no MariaDB. Recomendo:
https://github.com/major/MySQLTuner-perl
https://github.com/BMDan/tuning-primer.sh

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!

Resolução de problema:

Se seu login conter @ no entanto não terminar como domínio padrão exemplo user@dom.xxx.yy user@dom.xxx, e sim apenas user@dom edite:

Altere para accept o seguinte filtro:

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. Seu blog me salva há tempos! Obrigado por compartilhar seu conhecimento!

    Eu estou começando a usar o freeRADIUS em um projeto pessoal de hotspot, conseguir fazer funcionar, mas ai estou tentando implementar o TLS na comunicação do Mikrotik com o freeRADIUS, mas não estou tendo sucesso. Ele consegue fazer as checagens do certificados mas não está autenticando o usuário no hotspot. Se eu desabilito o TLS, funciona de boa.

    A documentação do freeRADIUS é muito difícil e ruim, nem me atrevo a perguntar nada na mail list pois o Alan DeKok é muito rude com a galera. Acho que ele está tentando tomar o lugar do Torvalds! Hahaha

Deixe um comentário

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