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 --withradacctdir=/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 #radacct
1645/udp 1646/udp
#radius authentication protocol (old) #radius accounting protocol (old)
radius radacct
1812/udp 1813/udp
#radius authentication protocol (iana sanctioned) #radius accounting protocol (iana sanctioned)
ou
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 ``value``) > insert ``value``)
into ``radcheck``(``id``, ``username``, ``attribute``, ``op``, values('', 'usuario1', 'password', '==', 'user1'); into ``radcheck``(``id``, ``username``, ``attribute``, ``op``, 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.