vyuka:cviceni:y36sps:semestralky:hlopkm1

Marcel Hlopko

Zadání: Generátor topológie siete pomocou ICMP Echo, (ping, traceroute) a NMap

Cieľom práce bude vytvoriť skript, ktorý pomocou týchto nástrojov oskenuje daný segment siete, vytvorí hierarchiu, ziska fqdn a oskenuje porty. Výsledok sa uloží na disk (v nejakej forme).

Schválení: NE

Program, ktorý by dokázal rýchlo a efektívne oskenovať veľkú sieť, môže mať veľa využití. Monitorovanie behu, zisťovanie dostupnosti, logovanie a ladenie. Aj keď existujú hotové open source riešenia, napríklad NMap, môže byť zaujímavé sa bližšie pozrieť na túto problematiku.

Čo môžme využiť

  • Ping - jednoduchý program využívajúci ICMP Echo request. Slúži na zistenie, či je host živý alebo vypnutý. Podporujú ho skoro všetky zariadenia. Ping Broadcastu je veľmi účinný spôsob, ako rýchlo zistiť všetkých živých hostov v podsieti, no nie je často podporovaný (napr. windows defaultne ignoruje broadcast ping)
  • Traceroute - program slúžiaci na zistenie presnej cesty medzi dvoma zariadeniami na sieti. Využíva pakety s TTL postupne od 30..1 a takto postupne získa info (ICMP TIME_EXCEEDED odpoveď) o všetkých medziuzloch.
  • SNMP - najsilnejšia zbraň. Pomocou SNMP môžme rýchlo a jednoducho ziskať takmer čokoľvek budeme potrebovať. Málokto má však na svojom pracovnom počítači bežiaceho SNMP Agenta.
  • DNS - príkaz ls - slúži na manuálny zone transfer. Takto by sme mohli získať veľa informácií, no máloktorý DNS server dovoluje ls, alebo prípadne axfr dotaz programu dig

Čo použijeme

Kôli jednoduchosti zvolíme ping doplnený traceroute. Pingom získame zoznam živých hostov, a pomocou traceroute určíme hierarchické usporiadanie. Pomocou príkazu host získame fqdn a pomocou nmap zoznam otvorených portov. Na SNMP mi nikto neodpovedal, a routovacie tabuľky mi tiež nikto nechcel dať :)

Ako to použijeme

Budeme sa snažiť zistiť topológiu celej siete ČVUT (147.32.*). Najprv prejdeme všetky siete typu 147.32.*.1 (predpokladáme 24 bitovú masku a teda čo sa nám ozve, bude pravdepodobne router) Ak bude host živý, otestujeme celú podsieť 147.32.n.1-254. Ak je host off, skúsime adresu 147.32.n.129 (predpoklad 25 bitovej masky) a ak bude živý, otestujeme celú podsieť 147.32.n.129-254. Ak nie, skúsime ešte adresy 147.32.n.65 a 147.32.n.193 (26 bitová maska) a prípadne ich podsiete.

Takto vygenerovaný zoznam adries prejdeme príkazom host, ktorý získa fqdn, a príkazom nmap, ktorý získa zoznam voľných portov. Na záver traceroute zistí usporiadanie siete.

Čo sme dostali

Ukážkový skript najprv vytvorí zoznam živých hostov vo forme súboru. Tento súbor sa prejde, a pre každý host sa vytvorí súbor, do ktorého sa zapíše fqdn, voľné porty, a zoznam adries, ktoré sú v rovnakej podsieti.

Výkonnosť

Rýchlosť skriptu je silne obmedzená čakaním na timeout u príkazu ping, ktorý sa nedá nastaviť na hodnotu menšiu ako 1s. Čo znamená v najhoršom prípade, keď bude vypnuté celé ČVUT, 17 minút len ping. V najrýchlejšej verzi sa dá tento čas skrátiť na necelú minútu, má to ale za následok vyťaženie procesora na 100% a vytvorenie 2552 procesov na pozadí a ping toho istého množstva počítačov. To isté sa týka príkazu traceroute, ktorý čaká 1 sekundu na každom uzle. Rýchlosť teda môže byť zvýšena za cenu vyššej záťaže stroja a siete.

Výsledky

V sobotu ráno o 10:00, keď som skript testoval, bolo na ČVUT online 3913 zariadení, test trval XXX minút a vygeneroval XXX kb textových súborov.

  • vyuka/cviceni/y36sps/semestralky/hlopkm1.txt
  • Last modified: 2009/06/04 22:19
  • by hlopkm1_fel.cvut.cz