Freeradius 2.x no Debian Lenny (Tutorial)
Freeradius 2.x no Debian Lenny (Tutorial)
Bom gente, como tive muita dificuldade em implementar o freeradius da primeira vez que montei meu primeiro server no provedor aqui, ainda nesta epoca com o freeradius 1.x.
Agora na versão atual as dificuldades aumentaram, pois os desenvolvedores do freeradius colocaram os arquivo de configuração espalhados no diretório do freeradius.
Bom pra começar vamos preparar o terreno para instalação do freeradius.
Passo 1: Edite o arquivo /etc/apt/source.list e adicione o seguinte source.
deb ftp://ftp.br.debian.org/debian/ lenny main contrib
Salve o arquivo e rode o seguinte comando.
#apt-get update
para que possa atualizar nosso repositório com o novo source.
Passo 2: Faça a instalação do freeradius.
#apt-get install freeradius freeradius-mysql
Passo 3: Veja que já instalamos o freeradius vamos partir para a configuração propriamente dita. Mas antes vejamos onde fica os arquivo responsavés pelo funcionamento e configuração do freeradius.
/etc/freeradius = pasta padrão onde foi feita a instalação do freeradius.
/etc/freeradius/clients.conf = arquivo de texto contendo todos os NAS do freeradius, isso quer dizer, em meu caso meus aps com Mikrotik.
/etc/freeradius/users = arquivo de texto contendo os clientes em si, podendo ser usado tanto com hotspot, dhcp e ppoe.
/etc/freeradius/sql.conf = possui a configuração com variaveis para conexão com banco de dados, ao final desse arquivo faz a chamada a um outro arquivo, que é responsavel pela autenticação e contabilidade dos clientes.
/etc/freeradius/radius.conf = principal arquivo de configuração do radius, o qual não irei entrar em detalhe, mais sugiro para os iniciantes, ler o seguinte artigo ( Linux: Freeradius - servidor radius eficiente e completo [Artigo] ).
/etc/freeradius/sql/banco/ = diretório com arquivos de configuração do freeradius, também de suma importância, pois em um deles esta todas as SQL que serão usadas para o funcionamente do freeradius com MySQL e também script para criação do banco.
/etc/freeradius/sites-enabled = arquivo contendo configurações utéis do freeradius, sendo um complemento do radius.conf.
/usr/share/freeradius/ = pasta onde estão os arquivos de dictionary do freeradius, nesta nova versão já esta incluso o dictionary do mikrotik, não necessitando adiciona-lo, apesar de que eu nunca precisei adicionar esse dictionary, pois ele sempre esteve la, por default.
Existe outros arquivos dentro do diretório do freeradius, porém foge do escopo desse tutorial, para quem quizer se aprofundar pode visitar o site do freeradius.org que encontrará mais informações.
Edite o arquivo /etc/freeradius/sites-enabled/default
Na sessão authorize deixe as seguintes opções:
- preprocess,
- chap,
- mschap,
- suffix,
- eap,
- sql.
Na sessão preacct:
- preprocess,
- acct_unique,
- suffix.
Na sessão accouting:
Na sessão session:
Na sessão post-auth:
Pronto default configurado.
Nesse ponto se você rodar o radius em modo debug irá lhe retornar um erro, tal como:
/etc/freeradius/sites-enabled/default[152]: Failed to find module "sql".
/etc/freeradius/sites-enabled/default[62]: Errors parsing authorize section.
Deu um sufoco, mais com muita força e esperança( rsrs ) consegui resolver.
O erro acontece devido ao módulo do SQL que não está sendo reconhecido, mais depois de perder longas noite de sono, descobri que isso causado por um comentário da linha 1321 do meu radius.conf que estava assim.
#$INCLUDE sql.conf
retire o comentário dela ficando assim:
$INCLUDE sql.conf
Bom tinha resolvido um problema, mais me surgiu outro, o famoso:
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
O que na verdade não considero um erro e sim uma aviso ( apesar do ERRO com letras maiúsculas ). O freeradius está nos avisando que possui um outro processo escutando na porta 1821, engraçado não é, pois e a mesma porta que está ouvindo o freeradius, sendo que acabei de instalar o Linux agora, achei estranho e fui em busca de respostar, notei em um outro servidor meu, que possui o freeradius porém em sua versão 1.7, instalado através dos fontes que era necessário startar o processo manualmente, senão ninguém conseguia autenticar nele. Sempre que reiniciava o servidor, deveria rodar o comando radius pra poder começar a operar efetivamente, apartir daí já não rodava em modo debug mais, e me apresentava o mesmo erro, fui então que notei que o freeradius não rodava dois processos ao mesmo tempo sendo em modo debug um segundo processo a ouvir a mesma porta. Porém na versão 2.x, instalada apartir do apt não era necessário fazer todo esse processo manual, o freeradius já startava automaticamente depois de sua instalação, e é onde gera esse erro, pois ao rodar o freeradius em debug estará gerando um segundo processo a ouvir na mesma porta, ocasionando o conflito. Para ver em modo debug então deveria matar o processo pra poder funcionar. Daí pra frente ficou fácil.
Passo 4: Com o MySQL instalando crie o banco que terá os dados do freeradius, com os seguintes comandos.
#mysql -u root -p
digite a senha: senhadomysql
mysql> CREATE DATABASE radius;
mysql>quit;
#mysql -u root -p radius < /etc/freeradius/sql/mysql/schema.sql
Passo 5: Configure o arquivo /etc/freeradius/sql.conf
server=”localhost” //endereço do servidor MySQL.
login=”root”// usuário do MySQL
senha=”senha”//senha do MySQL
radius_db=”radius” //database criando anteriormente com o MySQL
Com isso termina as configurações do Freeradius, espero ter ajudado ao pessoal que tenha alguma dúvida e me coloco a disposição para qualquer dúvida, e só posta e o mais breve estarei respondendo.
Sugiro continuar a leitura dos seguinte post ( https://under-linux.org/f96721-mikro...ip-login-senha ) para implementação com Mikrotik mais Hotspot.
Existe material de sobre na internet para tais configurações e só com uma boa busca no google que encontrará mais material..
Um grande abraço a todos e sucesso.
[email protected]
Freeradius 2.x no Debian Lenny (Tutorial)
Senhores, quero dar minha contribuição ao Under-Linux, em função desse artigo do Juliano.
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
[email protected]
twitter: @wpereiratecno
Re: Freeradius 2.x no Debian Lenny (Tutorial)
Re: Freeradius 2.x no Debian Lenny (Tutorial)
Poxa que bom, eu to testar to do Debian Lenny instalado em VM aqui. Parabens, uma dica poste no seu blog, ficaria bem legal.
Re: Freeradius 2.x no Debian Lenny (Tutorial)
Citação:
Postado originalmente por
mktguaruja
Poxa que bom, eu to testar to do Debian Lenny instalado em VM aqui. Parabens, uma dica poste no seu blog, ficaria bem legal.
Vlw pela força, vou fazer um post mais bem elaboradado e deixa-lo disponivel para todosno blog, pois terá uma melhor disponibilidade.
Grande Abraço.