Mikrotik + Freeradius + Mysql + Hotspot ( Casando MAC/IP/Login/Senha )
Ola pessoal... acabei de montar meu sistema utilizando mikrotik + freeradius + mysql + hotspot... como tive um pouco de dificuldade para faze-lo funcionar e tive que procurar em varios forums gringos... venho aqui compartilhar com a galera passo a passo o que foi feito para funcionar nesse esquema.
Lembrando que o freeradius voce vai instalar em uma maquina separada... ja que nao se pode instalar e nem vem instalado o radius no mikrotik.
Primeiramente faça download do Freeradius
wget ftp://ftp.freeradius.org/pub/radius/...s-1.1.7.tar.gz
Vamos agora compilar o freeradius.
./configure --prefix=/usr/local/radius --with-rlm-mysql-lib-dir=/usr/local/lib/mysql --with-rlm-mysqlinclude-dir=/usr/local/include/mysql --enable-ltdl-install
make
make install
Freeradius esta instalado no /usr/local/radius
Agora vamos configurar o banco de dados...
Esteja certo que seu mysqld esteja instalado e rodando.
para adicionar a base de dados do radius no seu mysql faca o seguinte:
mysql -u root -p
vai pedir a senha ... vc loga no mysql..
agora vamos criar o banco:
CREATE DATABASE radius;
apos digite exit para sair do mysql.
agora vamos importar a base de dados do mysql para seu banco chamado radius:
mysql -u root -p radius < /usr/local/radius/share/doc/freeradius/examples/mysql.sql
Com isso suas tabelas vao ser criadas... agora vamos criar um usuario:
primeiro vamos alimentar a tabela radcheck nessa tabela vai ficar o nome do usuario e a senha de autenticacao do radius:
mysql -u root -p
use radius;
INSERT INTO radcheck (UserName, Attribute, Value) VALUES ("fulano", "Password", "senha");
Valores opcionais... esses sao para quem querem checar tambem pelo radius... o IP do cliente e o MAC... assim casando IP - Mac - Login - Senha:
INSERT INTO radcheck (UserName, Attribute, Value) VALUES ("fulano", "Calling-Station-ID", "00:11:22:33:44:55");
INSERT INTO radcheck (UserName, Attribute, Value) VALUES ("fulano", "Framed-IP-Address", "192.168.0.20");
Pronto... agora vamos inserir atributos no radreply... na maneira que configurei meu radius... resolvi nao usar os grupos do radius... e sim do proprio mikrotik... a frente voces vao entender.
INSERT INTO radreply (UserName, Attribute, Value) VALUES ("fulano", "Mikrotik-Group", "128k");
Pronto... terminarmos de cadastrar um cliente no radius.... o valor 128k equivale ao grupo que vamos criar no mikrotik daqui a pouco.
Muito Importante:
É necessario que vc coloque na lista de dictionarys do radius o dictionary do mikrotik faça o download do dictionary do mikrotik:
cd /usr/local/radius/share/freeradius
wget http://www.mikrotik.com/Documentatio...onary.mikrotik
vi dictionary
Apos a ultima entrada de Include adicione esse novo include.
$INCLUDE dictionary.mikrotik
entre na pasta de configuracoes do freeradius
cd /usr/local/radius/etc/raddb
Agora vamos editar os arquivos de configuracao:
edite o arquivo clients.conf
adicione duas entrada uma com o ip do mikrotik... e outra com ip da sua maquina... voce vai entender na hora que chegar a configuracao dos realms.
Exemplo:
client 200.200.200.200 {
secret = (senha que vc escolher para acesso do mikrotik)
shortname = mikrotik
nastype = other
}
client 200.200.200.1 {
secret = (senha que vc escolher para acesso do proxy (realm))
shortname = radius
nastype = other
}
agora vamos editar o radiusd.conf
na parte authorize ficam ativas as opcoes:
preprocess, chap, mschap, suffix, eap, sql
na parte preacct ficam ativas as opcoes:
preprocess, acct_unique, suffix
na parte accounting ficam ativas as opcoes:
detail, unix, sql, radutmp
na parte session ficam ativas as opcoes:
radutmp, sql
na parte post-auth ficam ativas as opcoes:
sql
pronto... terminamos de editar o radiusd.conf
Agora vamos configurar o seu realm... que seria o que vem depois da @ no login do cliente... tendo em vista que muitos provedores utilizam o login do cliente igual o do email para seguirem um padrao.
edite o arquivo proxy.conf
e adicione uma entrada no final assim:
realm seudominio.com.br {
type = radius
authhost = 200.200.200.1 ( ip da maquina aonde vc esta instalando o freeradius)
accthost = 200.200.200.1 ( ip da maquina aonde vc esta instalando o freeradius)
secret = senha ( senha que vc colocou no seu clients.conf )
}
Pronto seu servidor radius ja esta todo configurado agora... vamos rodar ele em modo debug.... pra ver se ocorre algum erro e caso nao ocorra na inicializacao.... podemos ver se o usuario esta autenticando.
Vamos configurar agora o mikrotik.
Voce vai criar um hotspot como qualquer outro.... tem varios posts no forum ensinando como criar certinho nao vou entrar em detalhes aqui....
Va em IP - Hotspot
Na Aba Servers Clique em Profile
de 2 clicks no profile que seu servidor hotspot esta utilizando.
Clique na aba Radius
ative a opcao Use Radius
e deixe ativa a opcao accounting e mude de wireless para ethernet.
agora... no menu principal clique em Radius
clique no sinal de + e adicione um radius.
Em Service deixe somente ativo o hotspot
Em Address coloque o ip do seu servidor radius
Em Secret Coloque a senha que voce configurou para acesso do ip do seu mikrotik
Em Realm Coloque seu dominio... que vc utilizou no proxy.conf
Agora... vamos criar os grupos do hotspot
IP - Hotspot - Users
clique em Profiles
adicione um novo profile ( grupo )
preencha assim:
Name: 128k
Shared Users: 1
Rate Limit: 128k/128k
pronto.... seu grupo esta criado... com banda de 128k
uma ideia nessa parte eh vc tb criar grupos para aviso de debito .... vc coloca uyma banda tipo 64... e ativa a opcao advertise. nao vou explicar sobre o advertise porque voces podem encontrar muita coisa no forum
aqui tenho um grupo para o aviso.. e outro para o bloqueio... no de bloqueio coloco a banda dele ativo o session timeout ai o mikrotik fica derrubando ele... da a mensagem de corte do advertise e apos derruba o cliente.
Pronto.... Seu mikrotik esta prontinho para autenticar por radius... com controle de mac / ip / login / senha e de quebra... voce pode controlar tudooo por banco de dados.
Amigos... esse é o primeiro tutorial que escrevo... caso tenha esquecido algo por favor me perdoem.... se estiver algo errado por favor espero que tenham paciencia e possam me corrigir.
Agradeco a todos do forum... pois muito aprendi por aqui e quero agora compartilhar minhas aventurar com voces.
Abracos.
Glauber Mattar
radius não autentica pppoe
Ae galera, instalei meu servidor radius,(estou usando pppoe-server) porem não esta autenticando, eu n sei mais o que faço para funcionar, eu executo ele em modo debug, e inicia blz, mais quando vou conectar da erro. Olhe:
rad_recv: Access-Request packet from host 192.168.10.1:42948, id=84, length=258
Service-Type = Framed-User
Framed-Protocol = PPP
NAS-Port = 120
NAS-Port-Type = Ethernet
User-Name = "[email protected]"
Calling-Station-Id = "00:19:21:8D:66:FC"
Called-Station-Id = "PPPoE-WinXP"
NAS-Port-Id = "Local"
MS-CHAP-Domain = "netexpress.com.br"
MS-CHAP-Challenge = 0xc74ceaf7d0b2c5514ce2a0d191e1833b
MS-CHAP2-Response = 0x01003ef5ea2cc2dd9309fc2d1edad45c3b14000000000000 0000c6cb688188e9e7c15379f1958dd1afb27abcb866208f5c df
NAS-Identifier = "Eletron Luz"
NAS-IP-Address = 192.168.10.1
Mikrotik-Realm = "netexpress.com.br"
Processing the authorize section of radiusd.conf
modcall: entering group authorize for request 0
modcall[authorize]: module "preprocess" returns ok for request 0
modcall[authorize]: module "chap" returns noop for request 0
rlm_mschap: Found MS-CHAP attributes. Setting 'Auth-Type = mschap'
modcall[authorize]: module "mschap" returns ok for request 0
rlm_realm: Looking up realm "netexpress.com.br" for User-Name = "[email protected]"
rlm_realm: Found realm "netexpress.com.br"
rlm_realm: Adding Stripped-User-Name = "iure"
rlm_realm: Proxying request from user iure to realm netexpress.com.br
rlm_realm: Adding Realm = "netexpress.com.br"
rlm_realm: Preparing to proxy authentication request to realm "netexpress.com.br"
modcall[authorize]: module "suffix" returns updated for request 0
radius_xlat: '[email protected]'
rlm_sql (sql): sql_set_user escaped user --> '[email protected]'
radius_xlat: 'SELECT id, UserName, Attribute, Value, op FROM radcheck WHERE Username = '[email protected]' ORDER BY id'
rlm_sql (sql): Reserving sql socket id: 4
rlm_sql (sql): User [email protected] not found in radcheck
radius_xlat: 'SELECT radgroupcheck.id,radgroupcheck.GroupName,radgroupc heck.Attribute,radgroupcheck.Value,radgroupcheck.o p FROM radgroupcheck,usergroup WHERE usergroup.Username = '[email protected]' AND usergroup.GroupName = radgroupcheck.GroupName ORDER BY radgroupcheck.id'
radius_xlat: 'SELECT radgroupreply.id,radgroupreply.GroupName,radgroupr eply.Attribute,radgroupreply.Value,radgroupreply.o p FROM radgroupreply,usergroup WHERE usergroup.Username = '[email protected]' AND usergroup.GroupName = radgroupreply.GroupName ORDER BY radgroupreply.id'
rlm_sql (sql): User [email protected] not found in radgroupcheck
rlm_sql (sql): Released sql socket id: 4
rlm_sql (sql): User not found
modcall[authorize]: module "sql" returns notfound for request 0
modcall: leaving group authorize (returns updated) for request 0
Sending Access-Request of id 0 to 192.168.10.5 port 1812
Service-Type = Framed-User
Framed-Protocol = PPP
NAS-Port = 120
NAS-Port-Type = Ethernet
User-Name = "iure"
Calling-Station-Id = "00:19:21:8D:66:FC"
Called-Station-Id = "PPPoE-WinXP"
NAS-Port-Id = "Local"
MS-CHAP-Domain = "netexpress.com.br"
MS-CHAP-Challenge = 0xc74ceaf7d0b2c5514ce2a0d191e1833b
MS-CHAP2-Response = 0x01003ef5ea2cc2dd9309fc2d1edad45c3b14000000000000 0000c6cb688188e9e7c15379f1958dd1afb27abcb866208f5c df
NAS-Identifier = "Eletron Luz"
NAS-IP-Address = 192.168.10.1
Mikrotik-Realm = "netexpress.com.br"
Proxy-State = 0x3834
--- Walking the entire request list ---
Waking up in 6 seconds...
rad_recv: Access-Request packet from host 192.168.10.5:1814, id=0, length=244
Service-Type = Framed-User
Framed-Protocol = PPP
NAS-Port = 120
NAS-Port-Type = Ethernet
User-Name = "iure"
Calling-Station-Id = "00:19:21:8D:66:FC"
Called-Station-Id = "PPPoE-WinXP"
NAS-Port-Id = "Local"
MS-CHAP-Domain = "netexpress.com.br"
MS-CHAP-Challenge = 0xc74ceaf7d0b2c5514ce2a0d191e1833b
MS-CHAP2-Response = 0x01003ef5ea2cc2dd9309fc2d1edad45c3b14000000000000 0000c6cb688188e9e7c15379f1958dd1afb27abcb866208f5c df
NAS-Identifier = "Eletron Luz"
NAS-IP-Address = 192.168.10.1
Mikrotik-Realm = "netexpress.com.br"
Proxy-State = 0x3834
Processing the authorize section of radiusd.conf
modcall: entering group authorize for request 1
modcall[authorize]: module "preprocess" returns ok for request 1
modcall[authorize]: module "chap" returns noop for request 1
rlm_mschap: Found MS-CHAP attributes. Setting 'Auth-Type = mschap'
modcall[authorize]: module "mschap" returns ok for request 1
rlm_realm: No '@' in User-Name = "iure", looking up realm NULL
rlm_realm: No such realm "NULL"
modcall[authorize]: module "suffix" returns noop for request 1
radius_xlat: 'iure'
rlm_sql (sql): sql_set_user escaped user --> 'iure'
radius_xlat: 'SELECT id, UserName, Attribute, Value, op FROM radcheck WHERE Username = 'iure' ORDER BY id'
rlm_sql (sql): Reserving sql socket id: 3
radius_xlat: 'SELECT radgroupcheck.id,radgroupcheck.GroupName,radgroupc heck.Attribute,radgroupcheck.Value,radgroupcheck.o p FROM radgroupcheck,usergroup WHERE usergroup.Username = 'iure' AND usergroup.GroupName = radgroupcheck.GroupName ORDER BY radgroupcheck.id'
radius_xlat: 'SELECT id, UserName, Attribute, Value, op FROM radreply WHERE Username = 'iure' ORDER BY id'
radius_xlat: 'SELECT radgroupreply.id,radgroupreply.GroupName,radgroupr eply.Attribute,radgroupreply.Value,radgroupreply.o p FROM radgroupreply,usergroup WHERE usergroup.Username = 'iure' AND usergroup.GroupName = radgroupreply.GroupName ORDER BY radgroupreply.id'
rlm_sql (sql): Released sql socket id: 3
rlm_sql (sql): No matching entry in the database for request from user [iure]
modcall[authorize]: module "sql" returns notfound for request 1
modcall: leaving group authorize (returns ok) for request 1
rad_check_password: Found Auth-Type MS-CHAP
auth: type "MS-CHAP"
Processing the authenticate section of radiusd.conf
modcall: entering group MS-CHAP for request 1
rlm_mschap: No User-Password configured. Cannot create LM-Password.
rlm_mschap: No User-Password configured. Cannot create NT-Password.
rlm_mschap: Told to do MS-CHAPv2 for iure with NT-Password
rlm_mschap: FAILED: No NT/LM-Password. Cannot perform authentication.
rlm_mschap: FAILED: MS-CHAP2-Response is incorrect
modcall[authenticate]: module "mschap" returns reject for request 1
modcall: leaving group MS-CHAP (returns reject) for request 1
auth: Failed to validate the user.
Delaying request 1 for 1 seconds
Finished request 1
Going to the next request
Waking up in 6 seconds...
rad_recv: Access-Request packet from host 192.168.10.1:42948, id=84, length=258
Ignoring duplicate packet from client mikrotik:42948 - ID: 84, due to outstanding proxied request 0.
--- Walking the entire request list ---
Waking up in 1 seconds...
rad_recv: Access-Request packet from host 192.168.10.1:42948, id=84, length=258
Ignoring duplicate packet from client mikrotik:42948 - ID: 84, due to outstanding proxied request 0.
Sending Access-Reject of id 0 to 192.168.10.5 port 1814
Proxy-State = 0x3834
Waking up in 1 seconds...
rad_recv: Access-Reject packet from host 192.168.10.5:1812, id=0, length=24
Proxy-State = 0x3834
Processing the post-proxy section of radiusd.conf
modcall: entering group post-proxy for request 0
modcall[post-proxy]: module "eap" returns noop for request 0
modcall: leaving group post-proxy (returns noop) for request 0
Delaying request 0 for 1 seconds
Finished request 0
Going to the next request
Waking up in 1 seconds...
--- Walking the entire request list ---
Waking up in 1 seconds...
--- Walking the entire request list ---
Sending Access-Reject of id 84 to 192.168.10.1 port 42948
Waking up in 3 seconds...
--- Walking the entire request list ---
Cleaning up request 1 ID 0 with timestamp 470770c9
Waking up in 1 seconds...
--- Walking the entire request list ---
Cleaning up request 0 ID 84 with timestamp 470770ca
Nothing to do. Sleeping until we see a request.
Me ajudem