Instalando o FreeRADIUS no Ubuntu 14.04

13 de jul de 2017 - Paulo Dias


O FreeRADIUS é um serviço para sistemas Unix like que permite realizar a autenticação, autorização e a contabilidade( AAA, Authentication, Authorization e Accounting ) de usuários de uma rede... Um exemplo de uso do FreeRADIUS é a integração com Mikrotik para fazer a autenticação dos usuários de um hotspot( Wi-Fi ).

Nesse artigo, vou mostrar apenas como instalar, configurar e testar o FreeRADIUS no Ubuntu 14.04. Para maiores informações sobre o que é o FreeRADIUS e o que ele pode fazer, acesse o site do projeto nessa URL: http://freeradius.org/.

Para começar, é necessário atualizar a lista do APT e instalar os pacotes do FreeRADIUS e do MySQL:

 
apt-get update 

apt-get install freeradius freeradius-mysql freeradius-utils mysql-server
 

Obs.: Todos os comandos devem ser realizados através do usuário root.

Obs.: Durante a instalação será necessário cadastrar uma senha para o usuário root do MySQL.

Com os pacotes instalados, primeiro é necessário configurar o MySQL. Execute o comando mysql_secure_installation e responda as perguntas conforme o seguinte exemplo:


mysql_secure_installation

#Mudar a senha do root? 
Change the root password? [Y/n] n

#Remover usuários anônimos?
Remove anonymous users? [Y/n] y

#Desabilitar acesso do root remotamente?
Disallow root login remotely? [Y/n] y

#Remover o banco de dados de teste?
Remove test database and access to it? [Y/n] y

#Atualizar a tabela de privilégios agora? 
Reload privilege tables now? [Y/n] y

Depois, crie um banco de dados e um usuário no MySQL para serem utilizados pelo FreeRADIUS:


mysql -u root -p -e "CREATE DATABASE radius" 

mysql -u root -p -e "CREATE USER 'usuario_radius'@'localhost' IDENTIFIED BY 'senha'"

mysql -u root -p -e "GRANT ALL PRIVILEGES ON radius.* TO 'usuario_radius'@'localhost'"

service mysqld restart

Esses comandos criam o banco de dados 'radius' e o usuário 'usuario_radius' com a senha 'senha'.

Com o banco de dados criado, é necessário adicionar as tabelas que serão usadas pelo FreeRADIUS. Isso pode ser feito importando o arquivo /etc/freeradius/sql/mysql/schema.sql e o arquivo /etc/freeradius/sql/mysql/nas.sql para o banco de dados. Para fazer isso, use os seguintes comandos:


mysql -u root -p radius < /etc/freeradius/sql/mysql/schema.sql

mysql -u root -p radius < /etc/freeradius/sql/mysql/nas.sql

Com o banco de dados pronto, é possível iniciar a configuração do FreeRADIUS. Como a configuração padrão é bastante abrangente, será necessário fazer apenas pequenas alterações nos arquivos disponibilizados pela instalação.

Primeiro, é necessário cadastrar as informações do banco no arquivo /etc/freeradius/sql.conf. Para o exemplo desse artigo, a configuração é a seguinte:

... inicio do arquivo ...

database = "mysql"
#
#  Which FreeRADIUS driver to use.
#
driver = "rlm_sql_${database}"

# Connection info:
server = "localhost"
#port = 3306
login = "radius"
password = "senha"
# Database table configuration for everything except Oracle
radius_db = "radius"

... final do arquivo ...

Ainda no arquivo /etc/freeradius/sql.conf, também é necessário habilitar a leitura dos clientes através do banco de dados, isso é feito retirando o # da frente da seguinte linha:

        #readclients = yes

Dando continuidade, o próximo passo é habilitar o modulo SQL do FreeRADIUS alterando o arquivo /etc/freeradius/radiusd.conf. Retire o # da frente dessa linha:

... inicio do arquivo ...

#       $INCLUDE sql.conf

... final do arquivo ...

Em seguida, é necessário ativar o uso do modulo SQL nas sessões authorize e accounting do arquivo /etc/freeradius/sites-available/default . Novamente, basta somente descomentar as linhas onde aparece a palavra sql( retire o # da frente dessas linhas ):

... inicio do arquivo ...

authorize {

...algumas linhas...

#       sql

...algumas linhas...
}

accounting {

...algumas linhas...

#       sql

...algumas linhas...

}

Com isso, o FreeRADIUS está funcionando e já pode ser testado localmente( a partir da máquina onde está instalado )... Porém, antes de fazer o teste, é necessário adicionar um usuário... Use o seguinte comando para criar o usuário 'paulo' com a senha 'dias':

mysql -u root -p -e "INSERT INTO radcheck( username, attribute, op, value ) VALUES ( 'paulo', 'User-Password', '==', 'dias' )" radius

Reinicie o serviço do FreeRADIUS e execute o comando radtest para testar a autenticação do usuário, assim:


service freeradius restart

radtest paulo dias 127.0.0.1 0 testing123 

Obs.: Nesse exemplo, o 'testing123' é o segredo( senha ) que o cliente localhost precisa enviar para utilizar o FreeRADIUS.

Se a saída do comando radtest, foi semelhante a essa abaixo, o FreeRADIUS foi configurado e está funcionando corretamente.


rad_recv: Access-Accept packet from host 127.0.0.1 port 1812, id=152, length=20

Como por padrão apenas o cliente localhost está cadastrado, para usar o FreeRADIUS em um roteador, será preciso cadastrá-lo como um cliente no banco de dados. Isso é feito com o seguinte comando:


mysql -u root -p -e "INSERT INTO nas( nasname, shortname, secret) VALUES ( '192.168.0.1', 'Roteador principal', 'segredo' ) " radius;

Onde '192.168.0.1' é o IP do cliente, 'Roteador principal' é uma identificação para o cliente e 'segredo' e a senha que esse cliente terá que enviar junto com as requisições para o FreeRADIUS.

Bom, por enquanto é isso, conforme o tempo permitir vou tentar adicionar mais artigos sobre o FreeRADIUS, se ficou alguma dúvida ou algo não funcionou, deixe um comentário...


Paulo Dias

Graduado no curso tecnólogo em análise e desenvolvimento de sistemas. Defensor do Software Livre e da democratização da informação. Possui as certificações Linux LPIC-1 e Java OCA. Atualmente exerce a função de coordenador técnico na área de telecomunicações.

Siga-me no Twitter