MK-AUTH

"Bater" uma rede grande é sempre uma dor de cabeça. Pode ser menos dolorido se a rede for segmentada de forma lógica.

Uma abordagem complementar à lógica é a métrica. Ter uma métrica objetiva que substitua termos menos matemáticos como "muito", "pouco" e "pra caramba" é de suma importância. Estes termos não respondem bem a uma pergunta que tenha a palavra "quanto". A questão é o quê e como medir.

Agora vou abordar como medir e localizar pontos de desconexão na rede usando a base de dados do Freeradius. Uma simples consulta SQL é suficiente:

SELECT
count(radacctid) AS total,
username AS login,
nasipaddress AS ramal,
calledstationid AS VLAN,
callingstationid AS MAC,
SEC_TO_TIME(ROUND(avg(acctsessiontime))) AS tempo
FROM radacct
WHERE acctstarttime > NOW() - INTERVAL 1 DAY
GROUP BY login
HAVING count(radacctid) > 30
ORDER BY ramal, VLAN, MAC
LIMIT 20;

A consulta resulta em informações relevantes desde o início do dia corrente:

  • total de novas conexões no período;
  • login problemático;
  • ramal;
  • VLAN (vide segmentação da rede);
  • MAC Address (fornece informações sobre o equipamento); e
  • tempo médio de vida das conexões.

O texto resultante pode ser trabalhado numa planilha para uma tabulação mais fina, seja por ramal ou VLAN, e pode ajudar a localizar um possível ponto de falha na rede.

Exibições: 1177

Responder agora

Respostas a este tópico

Atualizei a consulta para que mostre um resultado mais coerente. A ordem das informações pode ser mudadas na linha que começa com "ORDER BY".

muito bom !!!

boa noite,

poderia posta mais informações de como fazer.

Obrigado

A instrução que passei é para usar na linha de comando do MySQL/MariaDB.

No webterminal shell é a opção "mysql". Formate o comando para que fique numa única linha antes de colar no webterminal.

LUA VIA RADIO COMERCIO E INFORMA disse:

boa noite,

poderia posta mais informações de como fazer.

Obrigado


Coloquei aqui no meu webterminal shell - opção mysql mas n deu retorno. a tela de saída continua preta
Marco de Freitas disse:

A instrução que passei é para usar na linha de comando do MySQL/MariaDB.

No webterminal shell é a opção "mysql". Formate o comando para que fique numa única linha antes de colar no webterminal.

LUA VIA RADIO COMERCIO E INFORMA disse:

boa noite,

poderia posta mais informações de como fazer.

Obrigado

Atualização. Agora com o nome do ramal no lugar do IP.

Anexos
Uma melhoria, agora exibindo endereço do cliente na listagem:

SELECT
count(r.radacctid) AS total,
r.username AS login,
nas.shortname AS ramal,
r.calledstationid AS VLAN,
r.framedipaddress as IPv4,
r.callingstationid AS MAC,
SEC_TO_TIME(ROUND(avg(acctsessiontime))) AS tempo,
ct.bairro,ct.endereco, ct.numero, ct.cidade
FROM radacct as r
INNER JOIN nas on r.nasipaddress = nas.nasname
INNER JOIN sis_cliente as ct on r.username = ct.login
WHERE r.acctstarttime > NOW() - INTERVAL 1 DAY
GROUP BY login
HAVING count(r.radacctid) > 24
ORDER BY ramal, VLAN, MAC;

Muito bacana, isso vai ajudar bastante no suporte pró-ativo por aqui!

Obrigado!!

Boa Noite, eu desenvolvi um add On que faz isso a um tempo atrás.

Faz tudo isso tudo e tambem exibe qual torre está conectado para distinguir mais fácil se o problema é geral.

<?php

// INCLUE FUNCOES DE ADDONS -----------------------------------------------------------------------
include('addons.class.php');

//CONEXAO DO BANCO
include('../conexao_mk.php');

// VERIFICA SE O USUARIO ESTA LOGADO --------------------------------------------------------------
session_name('mka');
if (!isset($_SESSION)) session_start();
if (!isset($_SESSION['mka_logado'])) exit('Acesso negado...');


?>
<!doctype html>
<html>
<head>
<meta charset="utf-8">
<title>MK - AUTH :: <?php echo $Manifest->{'name'}; ?></title>

<link href="../../../estilos/mk-auth.css" rel="stylesheet" type="text/css" />
<link href="../../../estilos/font-awesome.css" rel="stylesheet" type="text/css" />
<link href="../../../estilos/jquery-ui.css" rel="stylesheet" type="text/css" media="screen" />

<script src="../../../scripts/vue.js"></script>
<script src="../../../scripts/jquery.js"></script>
<script src="../../../scripts/jquery-ui.js"></script>
<script src="../../../scripts/mk-auth.js"></script>

</head>

<body>
<?php include('../../../topo.php');

?>
<center>
<br>
VERS&Atilde;O ADDON: <?php echo $Manifest->{'version'}; ?>
<br>
AUTOR ADDON: <?php echo $Manifest->{'author'}; ?>
<br><br>
<form action='<?php echo $_SERVER['PHP_SELF']; ?>' method='post'>
<table width="255" border="0" cellspacing="0" cellpadding="0">
<tbody>
<tr>
<th width="164" scope="row">Dia:</th>
<td width="85"><input name="txtdia" type="text" id="txtdia" size="04" maxlength="2" value="<?php if ($_POST['txtdia'] != '') { echo $_POST['txtdia']; } else { echo date("d"); } ?>"></td>
</tr>
<tr>
<th scope="row">Mes:</th>
<td><input name="txtmes" type="text" id="txtmes" size="04" maxlength="2" value="<?php if ($_POST['txtmes'] != '') { echo $_POST['txtmes']; } else { echo date("m"); } ?>"></td>
</tr>
<tr>
<th scope="row">Ano:</th>
<td><input name="txtano" type="text" id="txtano" size="08" maxlength="4" value="<?php if ($_POST['txtano'] != '') { echo $_POST['txtano']; } else { echo date("Y"); } ?>"></td>
</tr>
<tr>
<th colspan="2" scope="row"><input name="pesquisar" type="submit" id="pesquisar" value="Pesquisar"></th>
</tr>
</tbody>
</table>
</form>

<?
if(isset($_POST['txtdia']))

{


$sqls = " select username, sis_cliente.nome,sis_cliente.ssid , count(1) as total_queda
from radacct
join sis_cliente
on radacct.username = sis_cliente.login
where year(acctstarttime) = ".$_POST['txtano']."
and month(acctstarttime) = ".$_POST['txtmes']."
and day(acctstarttime) = ".$_POST['txtdia']."
and radacct.framedipaddress not like '10.3.3.%' group by username HAVING COUNT(*) > 3 ";

echo "<br>DATA: ".$_POST['txtdia']."/".$_POST['txtmes']."/".$_POST['txtano']."<br><br>";
$query = mysql_query($sqls);

echo "
<table width='100%' border='1' cellpadding='0' cellspacing='0'>
<tbody>
<tr>
<td width='300'>Nome</td>
<td width='300'>Usuario</td>
<td width='300'>Base</td>
<td width='80'>Total de quedas</td>
</tr>
";
while ($row = mysql_fetch_assoc($query)):

//echo $row['username']." - ".$row['nome']." - ".$row['total_queda']."<br>";
echo " <tr>
<td>".$row['nome']."</td>
<td>".$row['username']."</td>
<td>".$row['ssid']."</td>
<td>".$row['total_queda']."</td>
</tr>";

endwhile;

echo "</tbody></table>";
}
?>


</center>
</body>
</html>

<?php include('../../../baixo.php'); ?>

Rodrigo como adiciona ao mk auth? Tem como disponibilizar o arquivo e dizer em qie pasta do sistema deve colocar?

Rodrigo Foureaux disse:

Boa Noite, eu desenvolvi um add On que faz isso a um tempo atrás.

Faz tudo isso tudo e tambem exibe qual torre está conectado para distinguir mais fácil se o problema é geral.

<?php

// INCLUE FUNCOES DE ADDONS -----------------------------------------------------------------------
include('addons.class.php');

//CONEXAO DO BANCO
include('../conexao_mk.php');

// VERIFICA SE O USUARIO ESTA LOGADO --------------------------------------------------------------
session_name('mka');
if (!isset($_SESSION)) session_start();
if (!isset($_SESSION['mka_logado'])) exit('Acesso negado...');


?>
<!doctype html>
<html>
<head>
<meta charset="utf-8">
<title>MK - AUTH :: <?php echo $Manifest->{'name'}; ?></title>

<link href="../../../estilos/mk-auth.css" rel="stylesheet" type="text/css" />
<link href="../../../estilos/font-awesome.css" rel="stylesheet" type="text/css" />
<link href="../../../estilos/jquery-ui.css" rel="stylesheet" type="text/css" media="screen" />

<script src="../../../scripts/vue.js"></script>
<script src="../../../scripts/jquery.js"></script>
<script src="../../../scripts/jquery-ui.js"></script>
<script src="../../../scripts/mk-auth.js"></script>

</head>

<body>
<?php include('../../../topo.php');

?>
<center>
<br>
VERS&Atilde;O ADDON: <?php echo $Manifest->{'version'}; ?>
<br>
AUTOR ADDON: <?php echo $Manifest->{'author'}; ?>
<br><br>
<form action='<?php echo $_SERVER['PHP_SELF']; ?>' method='post'>
<table width="255" border="0" cellspacing="0" cellpadding="0">
<tbody>
<tr>
<th width="164" scope="row">Dia:</th>
<td width="85"><input name="txtdia" type="text" id="txtdia" size="04" maxlength="2" value="<?php if ($_POST['txtdia'] != '') { echo $_POST['txtdia']; } else { echo date("d"); } ?>"></td>
</tr>
<tr>
<th scope="row">Mes:</th>
<td><input name="txtmes" type="text" id="txtmes" size="04" maxlength="2" value="<?php if ($_POST['txtmes'] != '') { echo $_POST['txtmes']; } else { echo date("m"); } ?>"></td>
</tr>
<tr>
<th scope="row">Ano:</th>
<td><input name="txtano" type="text" id="txtano" size="08" maxlength="4" value="<?php if ($_POST['txtano'] != '') { echo $_POST['txtano']; } else { echo date("Y"); } ?>"></td>
</tr>
<tr>
<th colspan="2" scope="row"><input name="pesquisar" type="submit" id="pesquisar" value="Pesquisar"></th>
</tr>
</tbody>
</table>
</form>

<?
if(isset($_POST['txtdia']))

{


$sqls = " select username, sis_cliente.nome,sis_cliente.ssid , count(1) as total_queda
from radacct
join sis_cliente
on radacct.username = sis_cliente.login
where year(acctstarttime) = ".$_POST['txtano']."
and month(acctstarttime) = ".$_POST['txtmes']."
and day(acctstarttime) = ".$_POST['txtdia']."
and radacct.framedipaddress not like '10.3.3.%' group by username HAVING COUNT(*) > 3 ";

echo "<br>DATA: ".$_POST['txtdia']."/".$_POST['txtmes']."/".$_POST['txtano']."<br><br>";
$query = mysql_query($sqls);

echo "
<table width='100%' border='1' cellpadding='0' cellspacing='0'>
<tbody>
<tr>
<td width='300'>Nome</td>
<td width='300'>Usuario</td>
<td width='300'>Base</td>
<td width='80'>Total de quedas</td>
</tr>
";
while ($row = mysql_fetch_assoc($query)):

//echo $row['username']." - ".$row['nome']." - ".$row['total_queda']."<br>";
echo " <tr>
<td>".$row['nome']."</td>
<td>".$row['username']."</td>
<td>".$row['ssid']."</td>
<td>".$row['total_queda']."</td>
</tr>";

endwhile;

echo "</tbody></table>";
}
?>


</center>
</body>
</html>

<?php include('../../../baixo.php'); ?>

salva esse codigo que coloquei ai como arquivo exemplo: index.php , e coloca dentro de /opt/mk-auth/admin/addons/

depois acessa em:

http://seuendereco/admin/addons/index.php

Muito Obrigado Rodrigo, vai ajudar muito aqui. Por mais pessoas iguais a você neste forum 

Rodrigo Foureaux disse:

salva esse codigo que coloquei ai como arquivo exemplo: index.php , e coloca dentro de /opt/mk-auth/admin/addons/

depois acessa em:

http://seuendereco/admin/addons/index.php

Responder à discussão

RSS

parcerias

© 2019   Criado por Pedro Filho.   Ativado por

Badges - Divulgar  |  Relatar erro no site  |  Termos de serviço