Opa também tinha visto e fiquei com duvida no seu hotspot....o que seria o perfil senha?
abraçoo
Opa também tinha visto e fiquei com duvida no seu hotspot....o que seria o perfil senha?
abraçoo
Amigo o perfil senha serve para usuário que estão usando a senha priovisória (1234), ai de tempo em tempo ele redireciona para uma página de aviso para troca de senha.
deixei meu mikrotik aberto e pegaram minha senha do change ip e trocaram, sacanagem vc age com boa fé e te sacaneiam !
Como registro os ip que acessam meu mikrotik sei que foi um destes ip que fez isto:
189.104.28.112
189.68.46.222
189.104.20.175
189.92.158.102
189.68.38.35
Ah entendi amigo...mais você ja redirenciona pra uma pagina que o propio usuario faz a mudança da senha e te envia por e-mail? como é esse esquema?
vlww
*Ah, infelizmente existem pessoas que não são profissional amigo, ao invés de usar a sua boa vontade de oferecer ajuda mostrando seu serviço, aproveitam para destruir um trabalho sem ao menos ter motivo....esses com certeza não terao muito sucesso.
grande abraço
Neste caso a página tem o email em que ele deve enviar a senha de sua preferência
uso hotspot com ip fixo e radius...
amarro o MAC x Login X IP sem problemas
vamos lá...
1º
Configurar o mysql na Tabela radgroupreply para acessar o arquivo perl:
------------------------------------------------------------------------------
GroupName: nome_do_grupo_dos_seus_usuários (ex: radio)
Attribute: Exec-Program-Wait
op: ==
Value: /etc/raddb/lib3.pl %u %i %C %n %{request:Framed-IP-Address}
PS.: acima temos o caminho do arquivo...é a unica coisa q tem q mudar
--------------------------------------------------------------------------------------------
2º
criar o arquivo lib3.pl (ou o nome que vcs derem acima no caminho passado)
#touch /etc/raddb/lib3.pl
3º
editar o arquivo criado acima
#pico /etc/raddb/lib3.pl (o texto abaixo vai dentro desse arquivo)
---------------------- recorte aqui --------------------------
#!/usr/bin/perl
use POSIX qw(strftime);
use Unix::Syslog qw(:macros :subs);
use DBI;
my $servidor = "localhost";
my $servidor_porta = "3306";
my $servidor_usuario = "usuario_BD";
my $servidor_senha = "senha_BD";
my $servidor_db = "medianeira";
my $servidor_db_radius = "radius";
my $tabela_login = "radcheck";
my $tabela_cont = "contratos";
my $tabela_multi = "contratos_users_radius";
my $tabela_mac = "contratos_macs";
my $tabela_mac_intruso = "contratos_macs_erros";
my $tabela_ip_intruso = "contratos_ips_erros";
my $codigo_erro = "1";
my $codigo_erro_mac = "1";
my $codigo_erro_ip = "1";
sub erro_permitido()
{
openlog(Pemitidos, LOG_PID, LOG_INFO);
syslog(LOG_INFO, "Login=$ARGV[0] MAC=$ARGV[1] IP=$ARGV[4]\n");
closelog;
}
sub erro_bloqueado()
{
openlog(Bloqueados, LOG_PID, LOG_INFO);
syslog(LOG_INFO, "Login=$ARGV[0] MAC PC=$ARGV[1] IP PC=$ARGV[4]\n");
closelog;
}
if (($ARGV[2] eq 'Mikrotik132') || ($ARGV[2] eq 'Mikrotik145') || ($ARGV[2] eq 'Mikrotik194'))
{
# Conecta banco medianeira para verificar mac na tabela contratos_macs
$dbh = DBI->connect("DBI:mysql:database=$servidor_db;host=$servidor;port=$servidor_porta", $servidor_usuario, $servidor_senha);
$pega_mac = $dbh->prepare("SELECT mac FROM $tabela_mac WHERE UserName=\"$ARGV[0]\" LIMIT 1");
$pega_mac->execute;
if(@row = $pega_mac->fetchrow_array)
{
$pega_mac->finish;
$dbh->disconnect;
if ($row[0] =~ /$ARGV[1]/)
{
$codigo_erro_mac = "0";
# Conecta banco medianeira para verificar ip na tabela contratos
$dbh = DBI->connect("DBI:mysql:database=$servidor_db;host=$servidor;port=$servidor_porta", $servidor_usuario, $servidor_senha);
$pega_ip = $dbh->prepare("SELECT c.ip,c.id FROM $tabela_cont c,$tabela_multi m WHERE ((c.login_radio=\"$ARGV[0]\") OR (c.multi_users=1 AND m.login_radius=\"$ARGV[0]\" AND m.idContrato=c.id)) LIMIT 1");
$pega_ip->execute;
if(@row = $pega_ip->fetchrow_array)
{
$pega_ip->finish;
$dbh->disconnect;
# Comparar ip passado com o do banco
if ($row[0] =~ /$ARGV[4]/)
{
$codigo_erro_ip = "0";
}
else
{
$ip_selecionado = $row[0];
if($ip_selecionado == "0" || $ip_selecionado == "")
{
# Conecta banco medianeira e insere ip na tabela de erros
$dbh = DBI->connect("DBI:mysql:database=$servidor_db;host=$servidor;port=$servidor_porta", $servidor_usuario, $servidor_senha);
$grava = $dbh->prepare("UPDATE $tabela_cont SET ip=\"$ARGV[4]\" WHERE id=\"$row[1]\" ");
$grava->execute;
$grava->finish;
$dbh->disconnect;
$codigo_erro_ip = "0";
}
else
{
# Conecta banco medianeira e insere ip na tabela de erros
$dbh = DBI->connect("DBI:mysql:database=$servidor_db;host=$servidor;port=$servidor_porta", $servidor_usuario, $servidor_senha);
$grava = $dbh->prepare("INSERT INTO $tabela_ip_intruso (UserName,ip_pc,ip_banco,data) VALUES (\"$ARGV[0]\",\"$ARGV[4]\",\"$ip_selecionado\",SYSDATE())");
$grava->execute;
$grava->finish;
$dbh->disconnect;
$codigo_erro_ip = "1";
}
}
}
}
else
{
$mac_selecionado = $row[0];
# Conecta banco medianeira e insere mac na tabela de erros
$dbh = DBI->connect("DBI:mysql:database=$servidor_db;host=$servidor;port=$servidor_porta", $servidor_usuario, $servidor_senha);
$grava = $dbh->prepare("INSERT INTO $tabela_mac_intruso (UserName,mac_pc,mac_banco,data) VALUES (\"$ARGV[0]\",\"$ARGV[1]\",\"$mac_selecionado\",SYSDATE())");
$grava->execute;
$grava->finish;
$dbh->disconnect;
$codigo_erro_mac = "1";
}
}
else
{
$pega_mac->finish;
$dbh->disconnect;
# Conecta banco medianeira para verificar mac na tabela contratos_macs
$dbh = DBI->connect("DBI:mysql:database=$servidor_db;host=$servidor;port=$servidor_porta", $servidor_usuario, $servidor_senha);
$grava = $dbh->prepare("INSERT INTO $tabela_mac VALUES (\"\",\"$ARGV[0]\",\"$ARGV[1]\")");
$grava->execute;
$grava->finish;
$dbh->disconnect;
#Possibilidade se inserção ou verificação de IP
$codigo_erro_mac = "0";
$codigo_erro_ip = "0";
}
}
if ($codigo_erro_mac != "0" || $codigo_erro_ip != "0")
{
$mensagem_erro = "MAC ou IP inválidos";
erro_bloqueado();
}
else
{
erro_permitido();
}
if ($codigo_erro_mac == "0" && $codigo_erro_ip == "0")
{
$codigo_erro = "0";
}
exit($codigo_erro);
--------------------- recorte aqui --------------------------
my $tabela_login = "radcheck";
-> padrão dos radius
my $tabela_cont = "contratos";´
-> contem vários campos com dados, os mais importantes são:
-----> login_radio
-----> ip
my $tabela_multi = "contratos_users_radius";
-> campos:
----->id
----->idContrato
----->login_radius
----->senha_radius
my $tabela_mac = "contratos_macs";
-> campos:
----->id
----->UserName
----->mac - formato: xx:xx:xx:xx:xx:xx
my $tabela_mac_intruso = "contratos_macs_erros";
-> campos:
----->id
----->UserName
----->mac_pc
----->mac_banco
----->data
my $tabela_ip_intruso = "contratos_ips_erros";
-> campos:
----->id
----->UserName
----->ip_pc
----->ip_banco
----->data
Algumas observações:
- Se o login ex: testelogin, quando for logar nao for localizado um mac, na tabela 'contratos_mac', o script cadastra automaticamente no banco o mac, pois supoe-se que o primeiro login é feito no cliente com a prescença do técnico do provedor (pelo menos aqui é assim, fica a critério de cada).
- A verificação de login X mac X ip, só é feita após o login ter ocorrido, entao nao estamos verificando o login e senha, q está no banco radius, provável na tabela radcheck, supomos que isto já esteja sendo usado e em funcionamento.
- Bug: Se um ip fizer login e vier pro script pra verificação, e for ele ex: 192.168.1.111, e no banco de dados estiver 192.168.1.1, é provável que deixa passar, (pois ele usa if ($row[0] =~ /$ARGV[4]/) que é como se fosse um like do mysql, mas em perl) é um erro q já estou vendo pra trocar, fica a critério de cada um mexer no script, e tmb por conta próprio o uso ou nao do script, nao me responsabilizo por nda...
- existe tmb uma forma de amarrar via banco de dados, preferi usar script pois tenho logs de tudo, no syslog do linux e tmb no banco de dados.
Existe uma forma de amarrar tal login pra ele sempre pegar o mesmo ip pra quem usa dhcp e controla os usuários no radius, segue:
na tabela radcheck:
UserName: logindocliente (ex: joaodossantos)
Attribute: Framed-IP-Address
op: ==
Value: ipdocliente (ex: 192.168.50.50)
toda vez que o cliente joaodossantos logar ele pegara esse ip cadastrado acima...
Bom, me desculpe por tantas linhas, mas é presciso, desculpe os erros, e estamos ae pra dicas e críticas...espero ter ajudado alguém, assim como tantos me ajudaram já...
Obrigado e passar bem...
Última edição por Mr_Dom; 10-02-2009 às 11:19.
Ufa ! quanta informação, valeu cara, mas não uso radius, será que ainda tem jeito ?
Cara ja que você citou do radius...você teria algum tutorial passo a passo de como instalar e configurar?
vlww
ta na hands ( Mikrotik + Freeradius + Mysql + Hotspot ( Casando MAC/IP/Login/Senha ) )
se quiser usar o google tmb...ajuda bastante..hehehe
freeradius + mikrotik - Google Search
flws...qq coisa posta ae...t+
malsss cara nao havia visto este topico...vlww