4 069
contributi
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. |