Nesta dica, saiba como autenticar o FreeRADIUS em Base de dados MySql. Vamos configurar de forma fácil e simples o FreeRADIUS, neste tutorial vamos utilizar a versão FreeRADIUS 3.2.0.
FreeRADIUS é o servidor que suporta o maior número de tipos de autenticação e, atualmente, é o único servidor RADIUS de código livre que suporta o protocolo EAP (Extensible Authentication Protocol).
Além disso, FreeRADIUS é o único que suporta virtualização, mantendo os custos de implantação e manutenção baixos. Seu desenho modular é fácil de entender, permitindo facilmente a inclusão ou remoção de módulos sem contudo afetar o desempenho, os requisitos de hardware, de memória ou a segurança do sistema.
A modularidade permite executar FreeRADIUS em sistemas embarcados ou em servidores com vários núcleos e com gigabytes de memória RAM.
Saiba como autenticar o FreeRADIUS em Base de dados MySql!
Primeiro vamos fazer o download da versão mais recente, observe que no momento da escrita deste artigo, a versão mais recente é a série 3.2.X, execute o comando abaixo para baixar a versão mais recente do FreeRADIUS:
wget -c ftp://ftp.freeradius.org/pub/freeradius/freeradius-server-3.2.0.tar.gz
Após o download vamos extrair o arquivo, para que depois possamos instalar, vamos usar o ROOT:
tar -vzxf freeradius-server-3.2.0.tar.gz
Após a extração uma pasta é criada contendo todos os scripts de instalação, vamos entrar nesta pasta via terminal:
cd freeradius-server-3.2.0
Vamos iniciar o processo de compilação/instalação do programa:
./configure --prefix=/usr --with-logdir=/var/log --with-radacctdir=/var/log/radacct --with-raddbdir=/etc/raddb
Depois execute:
make
Em seguida:
make install
Agora chegou a parte mais chata e delicada, vamos decidir qual portal vamos usar para o Radius:
nano /etc/services (Utilize o editor que desejar, no meu caso prefiro o nano)
No arquivo você encontrará o seguinte:
#radius 1645/udp #RADIUS authentication protocol (old) #radacct 1646/udp #RADIUS accounting protocol (old)
ou então você poderá encontrar algo como:
radius 1812/udp #RADIUS authentication protocol (IANA sanctioned) radacct 1813/udp #RADIUS accounting protocol (IANA sanctioned)
Recomendo utilizar as portas 1812 e 1813, lembre-se que você “deve” escolher as portas de conexão, não deixe todas comentadas, escolha a que desejar. É preciso escolher duas portas e lembre-se que essas portas seram configuradas nos clientes que vão acessar.
Agora, vamos iniciar um simples teste para saber se tudo foi instalado corretamente, rode o seguinte comando:
/usr/sbin/radiusd -X
Você deve receber algo parecido como:
Listening on accounting *:1813
Listening on proxy *:1814
Ready to process requests.
Agora vamos utilizar o diretório /etc/raddb lá estão todas as configurações que precisamos para rodar o Radius corretamente, agora vamos para a parte um pouco complicada, mas preste bem atenção.
Agora chegou a hora de configurar o Banco de dados que o Radius vai utilizar. Suba o seu MySql é importante que ele já esteja rodando neste momento.
Vamos entrar na pasta onde está o source do Freeradius:
cd src/modules/rlm_sql/drivers/rlm_sql_mysql
Vamos agora vamos editar o /etc/raddb/radiusd.conf e deixar conforme o exemplo abaixo para que a autenticação no mysql funcione 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
}
Criação de banco de dados MySQL
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
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');
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:
nano /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
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 saída de seu comando for parecida com a acima, provavelmente seu radius está funcionando corretamente.