Z37. Aplikacja do monitorowania serwera oraz usług w sieciach IP

Transkrypt

Z37. Aplikacja do monitorowania serwera oraz usług w sieciach IP
Z37. Aplikacja do monitorowania serwera oraz usług w sieciach IP (netstat, DNS, top, czas, geolokalizacja)
Przykładowe polecenia użyte w tej instrukcji zakładają, że Twój hosting jest na serwerze z rodziny UNIX, jeśli jest on na serwerze z MS Windows
niektóre polecenia należy zamienić ich odpowiednikami m.in. traceroute należy zastąpić poleceniem tracert.
Cyklicznie monitorowanie usług działających na danym serwerze - portów TCP oraz UDP, na których on nasłuchuje, aktywnych połączeń sieciowych
TCP i wiele innych badań można realizować (jak w zadaniu nr 1) z poziomu innych komputerów w sieci IP, można też to realizować z poziomu tego
samego komputera. Jedną z takich metod jest użycie polecenia netstat, które można wywołać z wiersza poleceń w systemach UNIX-owych oraz
Windows.
1.
2.
3.
4.
5.
6.
Pod adresem https://github.com/netstat-php/netstat_php opisano skrypt netstat.php, udostępniający uproszczoną funkcjonalność klasycznej
aplikacji netstat. Skopiuj zawartość tego skryptu ze strony https://fam.tuwien.ac.at/~schamane/sysadmin/netstat/netstat.php i przetestuj ją
na własnym hostingu. Rozbuduj program tak, aby wykryć działanie także innych usług, o których wiadomo, że działają na Twoim hostingu.
Zastanów się, dlaczego działanie niektórych usług może być na takim serwerze ukryte, sprawdź które usługi nie są widoczne przy tej metodzie
sprawdzania. Zweryfikuj swoje wnioski skanując swój hosting z wykorzystaniem programu LANGuard lub z pomocą rozbudowanej wersji
programu nmap lub za pomocą innej aplikacji o podobnych możliwościach.
Przetestuj na swoim hostingu skrypt phpinfo(), po przejrzeniu jego raportu wymień porty, o których można powiedzieć, że są otwarte:
<?php
echo phpinfo();
?>
Zweryfikuj, czy serwer hostingowy identyfikuje Cię jako konkretnego użytkownika, gdy pracujesz na nim, po tym jak się wcześniej zalogowałeś
do swojego hostingu, sprawdź czy ta sama nazwa użytkownika będzie wyświetlona, jeśli wpiszesz swój adres URL na sąsiednim komputerze.
<?php
echo exec('whoami');
?>
Sprawdź, czy jesteś w stanie wyświetlić podstawowe informacje dotyczące obciążenia serwera hostingowego, jego RAM, ilości procesów, itd.
<?php
exec('TERM=xterm /usr/bin/top n 1 b i', $top, $error );
echo nl2br(implode("\n",$top));
if ($error){
exec('TERM=xterm /usr/bin/top n 1 b 2>&1', $error );
echo "Error: ";
exit($error[0]);
}
?>
Wyświetl listę plików z prawami w katalogu html_public/z2 swojego hostingu z poziomu skryptu php. Jeśli w katalogu tym jest tylko jeden
skrypt – skopiuj tam jakiś plik i zmień jego prawa na -rw-rw-rw-.
<?php
$output = shell_exec('ls -al');
echo "<pre>$output</pre>";
?>
Przetestuj następujące skrypty dotyczące m.in. DNS
<?php
$result = dns_get_record("wp.pl");
print_r($result);
?>
<?php
$ip = gethostbyname('wp.pl');
echo $ip;
?>
<?php
$ip = $_SERVER["REMOTE_ADDR"];
echo $ip;
?>
<?php
$hostname = gethostbyaddr("8.8.8.8");
echo $hostname;
?>
<?php
$hostname = gethostbyaddr($_SERVER['REMOTE_ADDR']);
echo $hostname;
?>
7.
Przetestuj skrypt wyświetlający datę i godzinę
<?php
$time=time();
$time2=date("r",$time);
echo ' Current Time: '. $time .' - ' .$time2;
?>
8.
Geolokalizacja – technologia ta wykorzystuje różne mechanizmy – lokalne lub scentralizowane bazy danych, stąd efekty jej działania mogą być
różne, czasami nieprawidłowe, a błędy mogą sięgać wielu kilometrów:
a. Przetestuj aplikacje webowe wyświetlające węzły w sieci Internet, przez które przechodzą dane podczas testu, zwróć uwagę, że
czasami wyświetlane są błędne dane.
b. Wykonaj kolejny test tym samym narzędziem po 10 sekundach, zwróć uwagę, że czasami droga, przez którą przechodzą dane
całkowicie się zmienia.
http://www.yougetsignal.com/tools/visual-tracert/
http://www.monitis.com/traceroute/
https://www.ip2location.com/free/traceroute
c. Zweryfikuj dane dotyczące swojej bieżącej geolokalizacji, zwróć uwagę, że nie zawsze wyświetlone są pełne i poprawne informacje
https://ipinfo.io/
d. Sprawdź inne narzędzia:
http://ipinfo.info/index.php przy opcji "My public IP Address": wybierz more... -> http://ipinfo.info/html/privacy-check.php
e. Sprawdź kolejne narzędzia:
https://www.ip2location.com/free.asp
9.
Geolokalizacja z wykorzystaniem php. Przetestuj poniższy skrypt i porównaj efekty jego działania z aplikacjami przetestowanymi wcześniej.
<?php
$ipaddress = $_SERVER["REMOTE_ADDR"];
function ip_details($ip) {
$json = file_get_contents("http://ipinfo.io/{$ip}/geo");
$details = json_decode($json);
return $details;
}
$details = ip_details($ipaddress);
echo $details -> region;
echo $details -> country;
echo $details -> city;
echo $details -> loc;
echo $details -> ip;
?>
echo "<br>";
echo "<br>";
echo "<br>";
echo "<br>";
echo "<br>";
10. Geolokalizacja z wykorzystaniem BD
GeoIP Legacy City Database Installation Instructions
http://dev.maxmind.com/geoip/legacy/install/city/
http://geolite.maxmind.com/download/geoip/database/GeoLiteCountry/GeoIP.dat.gz
http://geolite.maxmind.com/download/geoip/database/GeoLiteCity.dat.gz
Ustalanie lokalizacji na podstawie IP
http://dev.maxmind.com/geoip/legacy/downloadable/
https://github.com/maxmind/geoip-api-php/releases
11. Wykonaj aplikację zbudowaną z kombinacji ww. skryptów zaproponowaną przez Wykładowcę. Każda grupa laboratoryjna realizuje inną
kombinację.
12. Zgłoś wykonanie zadania prezentując stronę, z której można za pomocą linków uruchomić wszystkie stworzone skrypty.