Ce script permet de relever le statut d'Apache2 (actif ou non), le nombre de requêtes en traitement, ainsi que le nombre total de requêtes effectuées depuis le dernier démarrage de l'application Apache2. Il utilise le langage PHP et cURL pour exécuter la requête vers le serveur SIMonitor.
En fixant une alarme sur le paramètre “Requête en traitement”, il devient possible de détecter des attaques de type DDoS. Par exemple, si votre serveur apache à l'habitude de traiter 30 requêtes par seconde, et que soudain, le serveur en traite plus de 200, il est probable que votre serveur soit attaqué.
Le script est déclaré comme tel dans SIMonitor:
Le script en lui même ressemble à:
<?php $id = 22; $pass = "XXXXXX"; $url = "http://simonitor.irincom.com/api/API.php"; exec('/usr/sbin/apachectl fullstatus', $output); $counts = $connection_seconds = $ip_counts = $vhost_counts = $url_counts = array(); foreach($output as $key => $line) { if(strstr($line, "currently being processed")){ $arr = explode(" ", $line); $currentlyProcessed = $arr[0]; } if(strstr($line, "Total accesses")){ $arr = explode(" ", $line); $totalAccesses = $arr[2]; } } if(isset($totalAccesses) && isset($currentlyProcessed)){ $isUp = 1; }else{ $totalAccesses = 0; $currentlyProcessed = 0; $isUp = 0; } $data = array( 'id'=>$id, 'password'=>$pass, 'params' => array( 'accestotal' => $totalAccesses, 'requeteentraitement' => $currentlyProcessed, 'statusapache' => $isUp, )); $ch = curl_init(); $datajson = json_encode($data); curl_setopt($ch, CURLOPT_URL, $url); curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "POST"); curl_setopt($ch, CURLOPT_POSTFIELDS, $datajson); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); curl_setopt($ch, CURLOPT_POST, 1); curl_setopt($ch,CURLOPT_HEADER, false); $result = curl_exec($ch); ?>