Você está na página 1de 5

freeradius autenticando usu�rios em base de dados no mysql

colabora��o: jean carlos oliveira guandalini

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.