User Tools

Site Tools


lan_security:accueil

LAN Security

Je suis en train de mettre en place un deuxième (enfin, un autre SSID broadcasté par le meme AP) “réseau Wi-Fi” gratuit à tout le monde. Je vais d'ailleurs séparer le réseau “privé” du réseau public (VLANs et cie).
En gros, j'aurais:

  • eth0 LAN privé
  • eth0:43 VLAN public
  • eth1 WAN

Le truc, c'est que je veux être sur que personne tombera sur le LAN privé. J'ai donc fait un petit script qui va scanner périodiquement la table ARP de mon routeur et regarder quelles sont les adresses MAC qu'il connait faisant partie de mon LAN privé. Toutes les IPs étant “fixées” par DHCP, si un appareil inconnu arrive, celui-ci aura une IP dynamique, avec une MAC qui sera pas dans le fichier. Elle sera donc reportée.
Vous pouvez aussi, par exemple, créer un array avec les MACs authorisées, mais bon, j'avais deja ce fichier, alors pourquoi vouloir faire compliqué ?

#!/usr/bin/php
<?php
exec("/usr/sbin/arp -a | grep eth0$ > /dev/shm/macs");
$macs = file_get_contents('/dev/shm/macs');
$message = "";
 
$macsEx = explode("\n", $macs);
 
foreach($macsEx as $line)
{
        if(strlen($line) > 10)
        {
                $lineEx = explode(') at ', $line);
                $lineFinal = explode(' [', $lineEx[1]);
                $lineFinal = $lineFinal[0];
 
                $exists = exec("cat /etc/dhcp/dhcpd.conf | grep -i $lineFinal");
                if(strlen($exists) < 4) //wont exist for sure
                {
                        $message .= "Mac: $lineFinal not authorized!!\n";
                        $message .= $line;
                        $message .= "\n----\n";
                }
        }
}
 
if($message != "")
{
        $message .= date('l jS \of F Y h:i:s A');
        mail('MON MAIL', 'LAN Security!', $message);
        echo "ALERT!\n$message";
}
 
?>

Et à lancer avec cron:

*/10 * * * * /home/frank/securityLAN.php

Discussion

Enter your comment. Wiki syntax is allowed:
YGRDD
 
lan_security/accueil.txt · Last modified: 2012/10/20 11:35 by frank