Radius - Freeradius com MySQL no Debian

Através deste artigo tento mostrar uma forma simples de se configurar o Freeradius com MySQL no Debian 3.1.

[ Hits: 187.639 ]

Por: Thalles Leonel em 19/07/2006


O que é RADIUS?



RADIUS é uma tecnológica empregada para autenticação, autorização e contabilidade para autorizar e validar recursos de rede e também manter registros de tempo, detalhes de conexão e duração de acesso em determinada rede, como hoje se faz através de autenticação a provedores de acesso a internet.

Softwares e tecnologia necessárias
  • Debian 3.1 (instalação default);
  • Acesso a internet banda larga.

    Próxima página

Páginas do artigo
   1. O que é RADIUS?
   2. Instalação
   3. Configuração
   4. Testes
Outros artigos deste autor

Instalando e Configurado a ferramenta Swat no Debian

VMWare Server no Debian Linux 4.0 (Etch) (i386 e AMD64)

Colinux com Debian - Linux Rodando Dentro do Windows

Leitura recomendada

Montando e desvendando redes no Linux

Arch Linux - Conexão 3G VIVO com modem Nokia CS-10

SuperDNS: Solução definitiva para DNS dinâmico

Freeradius - servidor radius eficiente e completo

Livestation - Assista TV em seu GNU/Linux

  
Comentários
[1] Comentário enviado por thallesleonel em 20/07/2006 - 10:25h

Correção Pagina 4 Artigo.

O link da da Freeradius é:

http://www.freeradius.org/

e não:

http://www.freeradius.com.br

[2] Comentário enviado por fabio em 20/07/2006 - 11:12h

Olá Thalles,

Corrigido!

Um abraço

[3] Comentário enviado por redlight em 26/01/2007 - 17:43h

O meu nao está conseguindo conectar ele retorna a seguinte msg: Re-sending Access-Request of id 120 to 10.0.0.220:1812
User-Name = "usuario01"
User-Password = "^{COMENTARIO}00\217?\276\220\273@\244\214\315\314\353p\360\253"
NAS-IP-Address = mca
NAS-Port = 0

sabe me dizer o que aconteceu?

[4] Comentário enviado por lavoie em 13/02/2007 - 13:48h

segui seu tutorial e deu certo, queria saber onde coloco a velocidade de cada usuario, se pude ajudar valeu


[5] Comentário enviado por metabolicbh em 14/09/2007 - 00:48h

Muito bom o tutorial. Gostaria de acrescentar um erro ao criar as tabelas.
No console do MySQL digite:
source /usr/share/doc/freeradius/examples/db_mysql.sql;

T+

[6] Comentário enviado por leandro_ls em 25/10/2007 - 15:34h

Cara adorei seu post ta bem simples e direto eu instalei tudo certinho mas na hora que eu faço o teste com o rad test ele so autentica se eu uso o ip localhost 127.0.0.1 se eu uso outros ips la no clients.conf ele nao funciona, sabe onde eu errei?

valew

[7] Comentário enviado por rafasysop em 03/11/2007 - 07:46h

?comentario=radtest rafael rafael12 127.0.0.1:1812 0 rafael12
Sending Access-Request of id 52 to 127.0.0.1 port 1812
User-Name = "rafael"
User-Password = "rafael12"
NAS-IP-Address = 255.255.255.255
NAS-Port = 0
Re-sending Access-Request of id 52 to 127.0.0.1 port 1812
User-Name = "rafael"
User-Password = "rafael12"
NAS-IP-Address = 255.255.255.255
NAS-Port = 0
rad_recv: Access-Reject packet from host 127.0.0.1:1812, id=52, length=20
rad_verify: Received Access-Reject packet from client 127.0.0.1 port 1812 with invalid signature (err=2)! (Shared secret is incorrect.)



Aconteceu este problema comigo e eu fiz td certinho, depois desabilitei o mysql e co lokei nos files do systema e da a mesma coisa limpei as regras iptables a nada ainda o cliente.conf ta com ip localhost e senha secret rafael12

[8] Comentário enviado por thallesleonel em 08/11/2007 - 07:54h

Galera, vou fazer alguns testes e quando tiver solução coloco um post aqui.

[9] Comentário enviado por andrelz em 27/11/2007 - 07:58h

Muito bacana o tutorial Thales. Fiz a instalação e configuração e ao tentar autenticar no servidor, vendo o log do servidor apareceu esse erro:
Error: rlm_sql: Failed to create the pair: Unknown value bl-Van-Jacobsen-TCP-IP for attribute Framed-Compression

Alguém sabe dizer o que é isso? Já procurei nos radius.conf e no sql.conf e não achei nada. To dependendo disso para apresentar meu projeto final de graduação.
Abraço a todos.
André Luis

[10] Comentário enviado por thallesleonel em 27/11/2007 - 09:56h

Execute no mysql o seguinte comando que provavelmente não irá acontecer mais o erro:

delete * from radgroupreply where GroupName´= 'Discado' and Attribute = 'Framed-Compression' and Value = 'Van-Jacobsen-TCP-IP'

Att, Thalles Leonel

[11] Comentário enviado por andrelz em 28/11/2007 - 10:14h

E aí Thalles,

Só uma observação: Quando instalei o RADIUS e estava inserindo os dados na tabela radgroupreply no mysql eu não inclui nada sobre 'discado' usei apenas o grupo 'Bandalarga'.
usei o comando que vc sugeriu e não deu resultado.
Fiz o teste com o radtest e obtive o resultado de que está tudo ok.
acha que ainda posso tentar mais alguma coisa

Fico no aguardo.
Grato pela ajuda
André Luis

[12] Comentário enviado por carlosleonardo em 22/02/2008 - 16:59h

nao funfouuso o debian 4 e queria dicas por favor. quando starto o freeradus ele faz certinho sem erros mas quando starto o mysql ai baba checking for corrupt, not cleanly closed and upgarde needing tables... outra coisa quando fizer essa budega funcionar tenho umamaquina com o linux debian 4 eoutra com windows onde deixo as duas em rede pra estudo . funcionando quando entrar no no internet explorer verei uma tela de autenticação é isso. souleigo mas tometendo a cara ajuda ai vlw..........

[13] Comentário enviado por ribeiro_br em 10/04/2008 - 19:14h

Estou começando no linux e, a mais ou menos duas semanas estou tentando configurar o radius com o mysql, mas estou empacando nessa parte:

Criar a estrutura do banco de dados radius:

# gunzip /usr/share/doc/freeradius/examples/db_mysql.sql.gz
# mysql -u root radius < /usr/share/doc/freeradius/examples/db_mysql.sql

só que o arquivo db_mysql.sql.gz não existe no diretório. Alguem pode me dar uma luz!?

[14] Comentário enviado por fabriciomontelo em 15/07/2008 - 11:52h

OLá amigo, não estou conseguindo utilizar senhas criptografas no mysql, pois o freeradius não processa. Quando coloco senhas em formato de texto puro ai funciona. Existe algo a ser configurado no freeradius para que ele aceite senhas criptografadas?

Excelente artigo!

[15] Comentário enviado por noiseand em 16/10/2008 - 17:59h

Idem, estou com o mesmo problema.

Mesmo alterando no radiusd.conf para "encryption_scheme = crypt", "require_encryption = yes"
e "require_strong = yes", não consigo autenticar.

Abçs

[16] Comentário enviado por gzanatta00 em 29/10/2008 - 17:46h

aonde eu coloco o dictionary.mikrotik???

[17] Comentário enviado por mgn5005 em 06/11/2008 - 18:01h

Amigo boa tarde

Segui seu tutorial a risca porem quando eu faço o test com o radtest no log do radius sai o seguinte erro

rlm_sql (sql): No matching entry in the database for request from user


Voce poderia me ajudar?


Abraços

[18] Comentário enviado por GanG_ em 11/09/2009 - 11:05h

Estou tendo problemas na hora de autenticar com um AP da d`link,
segue o erro

alguem pode me ajudar ?


rad_recv: Access-Request packet from host 192.168.2.50 port 1042, id=0, length=198
Message-Authenticator = 0xf38c7c1b67c64de1873270e3038c3603
Service-Type = Framed-User
User-Name = "gang{COMENTARIO}00"
Framed-MTU = 1488
Called-Station-Id = "00-1B-11-C8-34-D9:Testing_radius"
Calling-Station-Id = "00-90-4B-9D-F1-10"
NAS-Identifier = "D-Link Access Point"
NAS-Port-Type = Wireless-802.11
Connect-Info = "CONNECT 54Mbps 802.11g"
EAP-Message = 0x020000090167616e67
NAS-IP-Address = 192.168.2.50
NAS-Port = 1
NAS-Port-Id = "STA port # 1"
+- entering group authorize
++[preprocess] returns ok
++[chap] returns noop
++[mschap] returns noop
rlm_realm: No '@' in User-Name = "gang", looking up realm NULL
rlm_realm: No such realm "NULL"
++[suffix] returns noop
rlm_eap: EAP packet type response id 0 length 9
rlm_eap: No EAP Start, assuming it's an on-going EAP conversation
++[eap] returns updated
++[unix] returns updated
++[files] returns noop
++[expiration] returns noop
++[logintime] returns noop
rlm_pap: Found existing Auth-Type, not changing it.
++[pap] returns noop
rad_check_password: Found Auth-Type EAP
auth: type "EAP"
+- entering group authenticate
rlm_eap: EAP Identity
rlm_eap: processing type md5
rlm_eap_md5: Issuing Challenge
++[eap] returns handled
Sending Access-Challenge of id 0 to 192.168.2.50 port 1042
EAP-Message = 0x0101001604106c6b730323bc68dfb61a3a0e8ad9f145
Message-Authenticator = 0x00000000000000000000000000000000
State = 0x9362934593639757ebfd9ef20ca49b69
Finished request 0.
Going to the next request
Waking up in 4.9 seconds.
rad_recv: Access-Request packet from host 192.168.2.50 port 1042, id=0, length=198
Sending duplicate reply to client User/16 port 1042 - ID: 0
Sending Access-Challenge of id 0 to 192.168.2.50 port 1042
Waking up in 2.0 seconds.
Cleaning up request 0 ID 0 with timestamp +89
Ready to process requests.

[19] Comentário enviado por wpereiratecno em 03/11/2009 - 09:10h

Senhores, quero dar minha contribuição ao VOL, em função desse artigo do Thalles Leonel.

Antes de dizer que algo funciona ou não, nessa ou naquela distribuição, é importante considerar, além da distribuição GNU/Linux ou BSD-like usada, as versões dos programas também.

No meu cenário eu tenho:
- Debian GNU/Linux lenny x86_64 kernel 2.6.26-2-amd64 (isso tudo significa Debian 64 bits)
- Freeradius 2.0.4
- MySQL 5.0.51a


Algumas considerações:


1. Eu não criei os tipos de autenticação para a tabela radgroupcheck e mesmo assim funcionou (aliás, é altamente recomendável não usar o atributo Auth-Type);
2. Na tabela radcheck o Attribute pode ser 'Crypt-Password' (que dá uma segurança maior);
3. Edite o arquivo /etc/freeradius/sites-enabled/default e, além de descomentar as linhas de sql recomendadas pelo Thalles, descomente a linha unix (isso fará com que o freeradius autentique via MySQL e não via /etc/passwd);
4. No mesmo arquivo /etc/freeradius/sites-enabled/default comente a linha radutmp, conforme abaixo:

# Session database, used for checking Simultaneous-Use. Either the radutmp
# or rlm_sql module can handle this.
# The rlm_sql module is *much* faster
session {
# radutmp

5. Na tabela radgroupreply, a coluna Prio não estava criada, então eu precisei criar com o comando ALTER TABLE radgroupreply ADD Prio VARCHAR(1); (rodei na base de dados criada o script de schema.sql e essa coluna Prio não foi criada, por isso a criei manualmente).

6. Nas propriedades de conexão da tabela radgroupreply, o Attribute Framed-Compression aceita tanto o Value Van-Jacobsen-TCP-IP quanto Van-Jacobson-TCP-IP (mas o recomendado pela IETF na RFC 1144 é o segundo).

7. Não esquecer de descomentar a linha $INCLUDE sql.conf do arquivo /etc/freeradius/radiusd.conf


Algumas recomendações:


1. Além do usuário root da base de dados MySQL, crie um usuário adicional, com privilégio USAGE e com senha diferente da do root, pois será necessário informar esses dados no arquivo /etc/freeradius/sql.conf, na sessão # Connection info; portanto, não é muito seguro deixar a senha do root nesse arquivo. Veja a seguir:

# Connection info:
server = "localhost"
login = "usuario_adicional"
password = "senha_usuario_adicional"

2. Verifique sempre se os serviços mysql e freeradius estão rodando. Se não estiverem, faça /etc/init.d/mysql start e /etc/init.d/freeradius start (você pode preferir automatizar essa tarefa com a ferramenta update-rc.d).

3. Algumas verificações que podem ser feitas para garantir que está tudo configurado corretamente:

a. ifconfig eth0 (comando para verificar o IP da interface eth0)
b. editar o arquivo /etc/hostname (para verificar se o nome do servidor está correto)
c. editar o arquivo /etc/hosts (para verificar se o IP e o hostname estão correspondendo)


HORA DE ALEGRIA:


Após toda a instalação e configuração, teste com o radtest:
Entre na pasta /etc/freeradius
Digite: radtest {username} {password} {hostname:port} 10 {radius_secret}

Se retornar a mensagem...

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

...então é HORA DE ALEGRIA! Vamos sorrir e cantar! Funcionou! Aproveite para ir tomar um café sossegado : )

Obs.: o IP privado 10.0.0.1 foi usado para efeito didático apenas, portanto, esse IP será o do seu servidor onde está rodando o freeradius.

Agradeço o apoio inestimável dos colegas Boni, Ettore, Tati, Roberto e Sidinei; e a confiança do parceiro Rogério Herrera, por me confiar esse desafio.

Um grande abraço a todos e sucesso!

Wagner Pereira
wpereiratecnologia@gmail.com
twitter: @wpereiratecno

[20] Comentário enviado por lf_sm em 21/04/2010 - 11:27h

Olá

Estou necessitando instalar uma solulão onde terei uma VPN com GRE, cujo tenho que autenticar os usuarios no Radius e fornecer os IPS.
Pode me dar uma dica de como vincular as informações vindas da internet pela VPN/GRE para chegar ao Radius?
E como fazer um DHCP para a rede que se autentica no Radius?

[21] Comentário enviado por impacto em 04/09/2010 - 10:54h

Alguem mim da uma ajuda
Quando eu coloco o comando (freeradius -X ) ele apareçe este erro.

ERROR: Failed to open socket: cannot bind socket: Address already in use
/etc/freeradius/radiusd.conf[210]: Error binding to port for 0.0.0.0 port 1812

[22] Comentário enviado por removido em 04/07/2011 - 15:07h

NO meu tbm apareceu isso

[23] Comentário enviado por lf_sm em 04/07/2011 - 15:30h

No caso deste erro, olhe se o serviço do freeradius não está iniciado.
ps aux |grep freeradius
caso esteja,
killall -9 freeradius
após isso freeradius -X


espero ter ajudado

[24] Comentário enviado por marcospxd em 08/10/2012 - 16:25h

Eai Thalles

Instalei certinho o freeradius e mysql, mas na hora de entra no arquivo radius.conf não encontro ele dentro de /etc/freeradius só encontrei o arquivo radiusd.conf ! podes me ajudar ?


[25] Comentário enviado por betowassolowski em 07/12/2013 - 08:13h

fiz a instalação porem quando digito

# freeradius -X

nada acontece se tento instalar e fala que ja esta instalado,desculpe-me se for muito banal este problema mas so iniciante.

[26] Comentário enviado por pauloedson em 03/05/2017 - 22:30h

olá thalles! obrigado pelas informações! tira-me uma dúvida.:

01.: na linha (/etc/freeradius/clients.conf) vc acrescentou "client 10.1.1.200". por acaso, esse IP eh de onde?! da rede de sua casa... trabalho?!

02.: o que vem a ser o "shortname = testesomente" ?!


Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts