Registrare i log di Iptables in MySQL: differenze tra le versioni

Riga 78: Riga 78:
Ad ogni tentetivo di scansione dovreste ritrovarvi nel vostro database MySQL delle entry marcate con il prefisso scelto, per una facile identificazione.
Ad ogni tentetivo di scansione dovreste ritrovarvi nel vostro database MySQL delle entry marcate con il prefisso scelto, per una facile identificazione.
==Lettura delle informazioni raccolte==
==Lettura delle informazioni raccolte==
Registrare i log di <code>iptables</code> in un database MySQL significa ritrovarsi dopo qualche tempo con le tabelle del database popolate di record in cui i dati relativi all’indirizzo IP sorgente sono memorizzati come numeri interi. Ad esempio:
<pre>
mysql> select Distinct(ip_saddr), tcp_dport from ulog;
+------------+-----------+
| ip_saddr  | tcp_dport |
+------------+-----------+
| 2537620586 |      445 |
| 2537620586 |      139 |
| 2537649241 |      445 |
+------------+-----------+
3 rows in set (0.00 sec)
</pre>
Per poter interpretare i risultati è conveniente effettuare una conversione di questi indirizzi da interi alla classica forma "dotted quad".<br/>
Lo script seguente in PHP effettua proprio questa conversione:
<pre>
<?php
function int2ip($dec)
{
  // Necessario se dechex(ip sotto forma di intero)
  // è più grande di 7fffffff
  if($dec > 2147483648)
  {
      $result = dechex($dec - 2147483648);
      $part1 = dechex($dec / 268435456);
      $part2 = substr($result,-7);
      $hex = $part1.str_pad($part2, 7, "0000000", STR_PAD_LEFT);
  }
  else
  {
      $hex =dechex($dec);
  }
  // Spezza la cifra esadecimale in un quartetto di interi.
  $part1 = hexdec( substr($hex, 0, 2) );
  $part2 = hexdec( substr($hex, 2, 2) );
  $part3 = hexdec( substr($hex, 4, 2) );
  $part4 = hexdec( substr($hex, 6, 2) );
  //
  // Ricombina il quartetto di interi nel formato stringa
  // di un indirizzo ip.
  $ip = sprintf("%s.%s.%s.%s", $part1, $part2, $part3, $part4);
  return($ip);
}
$res_ip=int2ip($argv[1]);
print $res_ip;
?>
</pre>
Potete utilizzare lo script semplicemente da linea di comando:
<pre>
# php int2ip.php 2537649241
151.65.116.89
</pre>
oppure inserire questo script in una pagina da raggiungere via browser, per visualizzare in formato HTML le entry del database <code>ulogd</code> e, magari, per introdurre anche funzioni di ricerca e di filtro.