FreeBSD + FreeRadius + MySQL
Neste artigo aprenderemos a criar um servidor PPPoE em FreeBSD com autenticação no FreeRadius consultando um banco de dados em MySQL. Será uma conexão com usuário e senha como a maioria dos provedores ADSL provêem, liberando um IP inválido para cada estação.
Parte 4: Instalando o FreeRadius
# cd /usr/ports/net/freeradius
# make config
Selecione as opções abaixo:
Options for freeradius 1.1.6
[X] KERBEROS With Kerberos support
[X] HEIMDAL With Heimdal Kerberos support
[ ] LDAP With LDAP database support
[X] MYSQL With MySQL database support
[ ] PGSQL With PostgreSQL database support
[ ] FIREBIRD With Firebird database support (EXPERIMENTAL)
[ ] SNMP With SNMP support
[ ] EDIR With Novell eDirectory support
[ ] NOPERL Do not require perl (use only if necessary)
[ ] EXPERIMENTAL Build experimental modules
# make install clean
Pronto, agora vamos configurar o FreeRadius:
Entre na pasta:
# cd /usr/local/etc/raddb/
Editando o arquivo clients.conf:
# ee clients.conf
Como usaremos o Freeradius + MySQL, não precisamos configurar o arquivo users. Colocaremos essas informações no próprio banco de dados.
Editanto o arquivo sql.conf.
Somente edite o começo do arquivo com as configurações do seu servidor:
# ee sql.conf
# make config
Selecione as opções abaixo:
Options for freeradius 1.1.6
[X] KERBEROS With Kerberos support
[X] HEIMDAL With Heimdal Kerberos support
[ ] LDAP With LDAP database support
[X] MYSQL With MySQL database support
[ ] PGSQL With PostgreSQL database support
[ ] FIREBIRD With Firebird database support (EXPERIMENTAL)
[ ] SNMP With SNMP support
[ ] EDIR With Novell eDirectory support
[ ] NOPERL Do not require perl (use only if necessary)
[ ] EXPERIMENTAL Build experimental modules
# make install clean
Pronto, agora vamos configurar o FreeRadius:
Entre na pasta:
# cd /usr/local/etc/raddb/
Editando o arquivo clients.conf:
# ee clients.conf
#####CLIENTS.CONF######
#########BEGIN#########
client 127.0.0.1 {
secret = senharadius
shortname = localhost
nastype = other
##########END##########
#####CLIENTS.CONF######
#########BEGIN#########
client 127.0.0.1 {
secret = senharadius
shortname = localhost
nastype = other
##########END##########
#####CLIENTS.CONF######
Como usaremos o Freeradius + MySQL, não precisamos configurar o arquivo users. Colocaremos essas informações no próprio banco de dados.
Editanto o arquivo sql.conf.
Somente edite o começo do arquivo com as configurações do seu servidor:
# ee sql.conf
sql {
# Tipo do banco de dados
driver = "rlm_sql_mysql"
# Informações da conexão
server = "IP_SERVER"
login = "USER"
password = "SENHA_BD"
# Nome do banco de dados
radius_db = "radius"
Editando o arquivo radiusd.conf
Procure pela linha "authorize"
Segue abaixo as novas opções para sql:
authorize {
preprocess
# auth_log
# attr_filter
chap
mschap
# digest
# IPASS
# suffix
# ntdomain
# eap
# files
sql
# etc_smbpasswd
# ldap
# daily
# checkval
}
# Sessão authentication
# responsável por conferir o tipo de autenticação usado
authenticate {
Auth-Type PAP {
pap
}
Auth-Type CHAP {
chap
}
Auth-Type MS-CHAP {
mschap
}
# digest
pam
# unix
# Auth-Type LDAP {
# ldap
# }
# eap
}
# Sessão Pre-accounting. Decide qual tipo de contabilidade usar
preacct {
# preprocess
# acct_unique
# home server as authentication requests.
# IPASS
# suffix
# ntdomain
#
# Read the 'acct_users' file
# files
}
# Sessao Accounting. Registra dados de contabilidade
accounting {
# detail
# daily
# unix
# radutmp
# sradutmp
# main_pool
sql
# pgsql-voip
}
# Controle de sessão quando se faz o controle de sessão para evitar conexões simultâneas (impede o nome de usuário de
# se conectar varias vezes de locais diferentes ao mesmo tempo com o mesmo login)
session {
# radutmp
sql
}
post-auth {
# main_pool
# reply_log
# sql
# Post-Auth-Type REJECT {
# insert-module-name-here
# }
}
pre-proxy {
# attr_rewrite
# pre_proxy_log
}
post-proxy {
# post_proxy_log
# attr_rewrite
# attr_filter
eap
}
# Tipo do banco de dados
driver = "rlm_sql_mysql"
# Informações da conexão
server = "IP_SERVER"
login = "USER"
password = "SENHA_BD"
# Nome do banco de dados
radius_db = "radius"
Editando o arquivo radiusd.conf
Procure pela linha "authorize"
Segue abaixo as novas opções para sql:
authorize {
preprocess
# auth_log
# attr_filter
chap
mschap
# digest
# IPASS
# suffix
# ntdomain
# eap
# files
sql
# etc_smbpasswd
# ldap
# daily
# checkval
}
# Sessão authentication
# responsável por conferir o tipo de autenticação usado
authenticate {
Auth-Type PAP {
pap
}
Auth-Type CHAP {
chap
}
Auth-Type MS-CHAP {
mschap
}
# digest
pam
# unix
# Auth-Type LDAP {
# ldap
# }
# eap
}
# Sessão Pre-accounting. Decide qual tipo de contabilidade usar
preacct {
# preprocess
# acct_unique
# home server as authentication requests.
# IPASS
# suffix
# ntdomain
#
# Read the 'acct_users' file
# files
}
# Sessao Accounting. Registra dados de contabilidade
accounting {
# detail
# daily
# unix
# radutmp
# sradutmp
# main_pool
sql
# pgsql-voip
}
# Controle de sessão quando se faz o controle de sessão para evitar conexões simultâneas (impede o nome de usuário de
# se conectar varias vezes de locais diferentes ao mesmo tempo com o mesmo login)
session {
# radutmp
sql
}
post-auth {
# main_pool
# reply_log
# sql
# Post-Auth-Type REJECT {
# insert-module-name-here
# }
}
pre-proxy {
# attr_rewrite
# pre_proxy_log
}
post-proxy {
# post_proxy_log
# attr_rewrite
# attr_filter
eap
}