Proste monitorowanie serwera WWW za pomocą PHP
Napisał: Patryk Krawaczyński
17/02/2010 w Hacks & Scripts Brak komentarzy. (artykuł nr 225, ilość słów: 381)
P
HP może zostać wykorzystanie nie tylko do pisania dynamicznych aplikacji internetowych, ale również prostych skryptów, takich jak np. skrypt służący do monitorowania wybranej strony WWW, którego zadaniem jest powiadamianie poprzez e-mail w przypadku, gdy serwer WWW nie odpowiada lub szukana fraza na stronie nie została znaleziona.
Jego przydatność określają dwa przypadki. Pierwszym jest wiadomość, o tym, że serwer WWW, na którym jest ulokowana nasza strona jest niedostępny. Drugim jest proste sprawdzenie czy nasza strona w wyniku ataku nie została podmieniona (ang. website defacement). Poniższy skrypt wystarczy zapisać np. w pliku o nazwie monitor.php:
<?php function check($host, $find) { $fp = fsockopen($host, 80, $errno, $errstr, 10); if (!$fp) { echo "$errstr ($errno)\n"; } else { $header = "GET / HTTP/1.1\r\n"; $header .= "Host: $host\r\n"; $header .= "Connection: close\r\n\r\n"; fputs($fp, $header); while (!feof($fp)) { $str .= fgets($fp, 1024); } fclose($fp); return (strpos($str, $find) !== false); } } function alert($host) { mail('login@e-mail.com', 'Monitoring WWW', $host.' nie odpowiada.'); } $host = 'www.nfsec.pl'; $find = 'Grid Focus'; if (!check($host, $find)) alert($host); ?>
Funkcja check() przyjmuje dwa parametry. Pierwszym jest adres serwera WWW, którego dostępność chcemy sprawdzać (w przykładzie jest to nfsec.pl) oraz drugim jest wybrana fraza, której szukamy na monitorowanej stronie WWW. Jeśli serwer nie odpowie, lub wybrana fraza nie zostanie znaleziona – wówczas może świadczyć to o tym, że z serwer WWW jest przeładowany, czy wyłączony lub, co gorsza ktoś podmienił treść naszej strony w wyniku ataku. W takim przypadku zostanie wywołana funkcja alert(), która prześle odpowiednią wiadomość na wybrany adres e-mail.
Należy pamiętać, aby skrypt taki był uruchamiany z zewnętrznego (innego niż, ten na którym stoi nasza strona WWW) serwera monitorującego. Cykliczne (co godzinne) wywoływanie skryptu możemy osiągnąć dzięki wpisowi umieszczonemu w crontabie:
0 * * * * /usr/bin/php -q /htdocs/www/monitor.php
Plik monitor.php powinien posiadać prawa dostępu 644 (chmod 644 monitor.php).
Więcej informacji: Cats Who Code