você está aqui: Home  → Arquivo de Mensagens

Freeradius Autenticando usuários em base de dados no MySQL

Colaboração: Jean Carlos Oliveira Guandalini

Data de Publicação: 25 de Novembro de 2004

Você precisa de um servidor MySQL funcionando corretamente. Eu usei um Slackware 9.1 para fazer essa instalação.

Vamos lá!

Faça o Download da versão estável do freeradius de http://www.freeradius.org/getting.html Quando fiz esse tutorial a versão estável era: 1.0.1

  # wget ftp://ftp.freeradius.org/pub/radius/freeradius-1.0.1.tar.gz

Agora vamos descompactar o arquivo que baixamos

  # tar zxvf freeradius-1.0.1.tar.gz

Entre no diretório criado do freeradius

  # cd freeradius-1.0.1

Vamos compilar e instalar o programa

  # ./configure --prefix=/usr --with-logdir=/var/log --with-radacctdir=/var/log/radacct --with-raddbdir=/etc/raddb
  # make
  # make install

Agora vamos decidir qual porta usar para o radius

  # vi /etc/services

Você deve achar umas linhas assim:

  #radius         1645/udp   #RADIUS authentication protocol (old)
  #radacct        1646/udp   #RADIUS accounting protocol (old)

ou

  radius          1812/udp   #RADIUS authentication protocol (IANA sanctioned)
  radacct         1813/udp   #RADIUS accounting protocol (IANA sanctioned)

Descomente a linha que você irá usar para o radius, no meu caso usei as portas 1812 e 1813. Lembre-se que precisa ser duas portas. E não se deve deixar as 4 linhas descomentadas. Essas portas serão configuradas nos equipamentos que vão acessar o servidor de radius.

Faça um teste para ver se o radius está instalado corretamente:

  # /usr/sbin/radiusd -X

Se o resultado desse comando terminar com as linhas abaixo está tudo OK:

  Listening on authentication *:1812
  Listening on accounting *:1813
  Listening on proxy *:1814
  Ready to process requests.

Lembrando que as portas vão depender de qual você estiver usando no /etc/services de CRTL+C para terminar o radiusd

Os arquivos de configuração foram instalados em /etc/raddb, lá estão todos os arquivos necessários que iremos precisar para deixar o radius funcionando de acordo com o que é preciso.

Agora iremos criar o esquema do banco de dados que o radius vai utilizar para autenticação Se seu mysql não estiver rodando, inicie-o Entre na pasta onde está descompactado o source do freeradius e depois na pasta a seguir:

  # cd src/modules/rlm_sql/drivers/rlm_sql_mysql

Edite /etc/raddb/radiusd.conf e deixe conforme o exemplo abaixo para que a autenticação no mysql funcinoe corretamente:

  authorise {
          preprocess
          chap
          mschap
          #counter
          #attr_filter
          #eap
          suffix  
          sql
          #files
          #etc_smbpasswd
  }
   
  authenticate {
          authtype PAP {
                 pap
          }
          authtype CHAP {
                 chap
          }
          authtype MS-CHAP{
                 mschap
          }
          #pam
          #unix
          #authtype LDAP {
          #       ldap
          #}
  }
   
  preacct {      
          preprocess
          suffix
          #files
  }
   
  accounting {
          acct_unique
          detail
          #counter
          unix
          sql
          radutmp
          #sradutmp
  }
   
  session {
          radutmp
  }

Crie o banco de dados:

  # mysql -u root -p
  > CREATE DATABASE radius

E Agora jogue o arquivo db_mysql.sql para o MySQL

  # mysql -u root -p senhadorootnomysql radius < db_mysql.sql

Se tudo correr OK, a base de dados está completa e vazia.

Precisamos popular nosso banco de dados, para que funcione as conexões. Logue no mysql:

  # mysql -u root -p
  > use radius;

Nossa base de teste será que criaremos um grupo de usuários chamado discados com dois usuários teste1 e teste2, vamos supor que esses usuários se conectam em um RAS e depois é jogado para o radius de nosso servidor.

Primero vamos criar os usuários:

  > INSERT INTO ``usergroup``(``id``, ``UserName``, ``GroupName``) VALUES ('', 'usuario1', 'discado');
  > INSERT INTO ``usergroup``(``id``, ``UserName``, ``GroupName``) VALUES ('', 'usuario2', 'discado');

Acima criamos dois usuários no grupo discado.

Agora criaremos as senhas para esses usuários:

  > INSERT INTO ``radcheck``(``id``, ``UserName``, ``Attribute``, ``op``, ``Value``) VALUES('', 'usuario1', 'Password', '==', 'user1');
  > INSERT INTO ``radcheck``(``id``, ``UserName``, ``Attribute``, ``op``, ``Value``) VALUES('', 'usuario2', 'Password', '==', 'user2');

usuario1 ficou com a senha user1. usuario2 ficou com a senha user2.

Vamos atribuir o tipo de Autenticação Local:

  > INSERT INTO ``radgroupcheck``(``id``,``GroupName``,``Attribute``,``Op``, ``Value``) VALUES('','discado', 'Auth-Type', ':=', 'Local');

Criando as propriedades das conexões:

  > INSERT INTO ``radgroupreply``(``id``,``GroupName``, ``Attribute``, ``Op``, ``Value``, ``Prio``) VALUES('', 'discado', 'Framed-Compression', ':=', 'Van-Jacobsen-TCP-IP', '');
  > INSERT INTO ``radgroupreply``(``id``,``GroupName``, ``Attribute``, ``Op``, ``Value``, ``Prio``) VALUES('', 'discado', 'Framed-Protocol', ':=', 'PPP', '');
  > INSERT INTO ``radgroupreply``(``id``,``GroupName``, ``Attribute``, ``Op``, ``Value``, ``Prio``) VALUES('', 'discado', 'Service-Type', ':=', 'Framed-User', '');
  > INSERT INTO ``radgroupreply``(``id``,``GroupName``, ``Attribute``, ``Op``, ``Value``, ``Prio``) VALUES('', 'discado', 'Framed-MTU', ':=', '1500', '');

Precisamos agora configurar o arquivo dos clientes do radius, que pode ser nosso "RAS" imaginário. Mas poderia ser qualquer aparelho que iria mandar a autenticação para nosso radius.

Edite o arquivo /etc/raddb/clients.conf: # vi /etc/raddb/clients.conf

Vamos ao final do arquivo, poderemos verificar que no arquivo inteiro, tem vários exemplos de configuração. Colocaremos assim:

  client 192.168.0.1 {
  	secret = senhateste
  	shortname = teletubies
  	nastype = other
  }

Coloque o ip de sua máquina(procure não colocar o ip do localhost, pois já tem uma configuração no clients.conf do 127.0.0.1 se não tiver outro ip, muda configuração do 127.0.0.1 no clients.conf), coloca um secret que será a comunicação com o cliente do radius e o servidor e o tipo de equipamento que está sendo cliente, no nosso caso como iremos testar de nossa máquina mesmo, vamos colocar other, mas poderia ser um portslave, cisco, tc, max40xx... e por aí vai. Olhando o arquivo você vai ver que tem muito mais configurações para fazer nesse quesito de clientes, mas não irei me aprofundar nisso.

Ok, configuração básica feita, podemos testar para ver se está tudo funcionando. Digite:

  # radiusd

Isso fará com que o radius inicie. veja se o radius está rodando:

  # ps aux radiusd

Se não estiver tente dar uma olhada nos logs ver o que pode ter saído errado, e qualquer coisa refaça todo o tutorial.

Vamos fazer nosso teste de autenticação.

  # radtest usuário1 user1 192.168.0.1:1812 0 senhateste

Esse comando tem a seguinte sintaxe: radtest nomeusuario senhausuario ipdoserverradius:porta portadeconexao secretdoradius

  Sending Access-Request of id 25 to 192.168.0.1:1812
          User-Name = "usuario1"
          User-Password = "user1"
          NAS-IP-Address = 192.168.0.1
          NAS-Port = 0
  rad_recv: Access-Accept packet from host 192.168.0.1:1812, id=25, length=44
          Service-Type = Framed-User
          Framed-Protocol = PPP
          Framed-Compression = Van-Jacobson-TCP-IP
          Framed-MTU = 1500

Se a saida de seu comando for parecida com a acima, provavelmente seu radius está funcionando corretamente.

Este tutorial foi o mais básico possivel, procurando mostrar somente as configurações mínimas para um funcionamento, em breve irei fazer uma continuação deste, com mais explicações sobre recursos e features do freeradius.



 

 

Veja a relação completa dos artigos de Jean Carlos Oliveira Guandalini

Opinião dos Leitores

Jefferson
21 Jan 2017, 09:44
Olá Elano,

É possível terceirizar o serviço de Radius sim. Eu utilizo o http://www.radnuvem.com.br para configurar uma rede Wi-FI com WPA2-Enterprise, cada usuário possui sua própria senha. Uso o plano mais barato e configuro em dois APs do escritório.

Você tem a opção de contratar um servidor virtual e você mesmo faz a configuração, como mostrado neste artigo, mas sai mais caro. Pago 24 reais de RadNuvem.

Um abraço!
Alcione Ferreira
07 Dez 2016, 10:34
Estou precisando fazer o freeradius autenticar apenas informando o e-mail da pessoa, tem como fazer isso?

Até agora não achei uma forma, estou pensando em alguma solução mas se tiver algo que possa ser feito, ou que já é usado eu agradeço.

Att.
Marcos
22 Ago 2012, 16:57
Há o Webmin para gerenciar pela Web
Elano Silva
27 Nov 2011, 07:59
Há como tercerizar o serviço de Radius?
Tem como contratar um serviço de radius na nuvem?
É dificil manter uma maquina com Radius instalado.

Alguem conhece algum serviço do tipo na web? procurei e nao achei.
William
21 Jul 2011, 11:29
Bom dia,
Gostaria de saber os ports firewall Radius No Brasil saidas (1812,1813,1814 TCP),se eles estão bloqueados ou não?

Wiliiam
Tel:21-82097013
*Nome:
Email:
Me notifique sobre novos comentários nessa página
Oculte meu email
*Texto:
 
  Para publicar seu comentário, digite o código contido na imagem acima
 


Powered by Scriptsmill Comments Script