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.