Võrgudiagnostika
Sisukord
tcpdump
Programm tcpdump kuulub OpenBSD tarkvara põhiosa koosseisu ning tema abil saab kuulata võrguseadmel pealt liiklust. Tulemust võib salvestada fail täies mahus või esitada ip paketti puudutavaid huvipakkuvaid andmeid programmi standardväljundisse. Oluline on tähele panna, et tcpdump kuulab pealt seadet, st sisenevad paketid paistavad nii nagu nad olid enne RDR-teisendust ning väljuvad paketid on sellised nagu nad on peale NAT-teisendust.
tcpdump programmiga saab filtreerida liiklust selliste tunnuste järgi
* protokoll (nt icmp, tcp, udp, arp) * andmevahetuse lähte ja sihtpunkti ip aadress * andmevahetuse lähte ja sihtpunkti port * ip paketi lippude järgi (nt salvestada vaid SYN pakette) * paketi liikumise suuna järgi (nt kahe punkti vahelise andmevahetuse puhul vaid ühes suunas liikuvaid pakette)
Kui näiteks on kahtlusi kas kaks arvutit, 192.168.10.210 ja 192.168.10.11 (vastav võrguseade olgu em0) näevad üksteist, siis tuleks arvutis 192.168.10.210 öelda
# ping 192.168.10.11 PING 192.168.10.11 (192.168.10.11): 56 data bytes 64 bytes from 192.168.10.11: icmp_seq=0 ttl=64 time=0.422 ms 64 bytes from 192.168.10.11: icmp_seq=1 ttl=64 time=0.306 ms
ning teises arvutis võrguseadmel em0 ICMP protokolli filtreerimiseks tuleb öelda
# tcpdump -nettti em0 icmp tcpdump: listening on em0, link-type EN10MB May 19 16:23:10.480585 00:0e:0c:ba:4b:3e 00:16:3e:6a:0c:4b 0800 98: 192.168.10.210 > 192.168.10.11: icmp: echo request May 19 16:23:10.480829 00:16:3e:6a:0c:4b 00:0e:0c:ba:4b:3e 0800 98: 192.168.10.11 > 192.168.10.210: icmp: echo reply May 19 16:23:11.490525 00:0e:0c:ba:4b:3e 00:16:3e:6a:0c:4b 0800 98: 192.168.10.210 > 192.168.10.11: icmp: echo request May 19 16:23:11.490639 00:16:3e:6a:0c:4b 00:0e:0c:ba:4b:3e 0800 98: 192.168.10.11 > 192.168.10.210: icmp: echo reply
Väljundis on näha paketi jälgimise aeg, kummagi poole MAC aadressid, osaliste ip aadresid, protokoll ning lisaks, et tegu on icmp echo pärginute ja vastustega. Saab järeldada, et võrguühendus arvutite vahel on olemas. St kuigi ping ise näitab väljundit annab teises arvutis võrgu pealtkuulamine täieliku kinnituse, et paketid just sinna välja jõuavad.
SYN pakettide jälgmiseks
# tcpdump -n -i em0 'tcp[13] & 2 != 0' and dst 10.0.6.180 and port 80
ping
Ping utiliidi abil saab hõlpasti veenduda, et kahe punkti vahel on füüsiliselt võrguühendus olemas. Ping kasutab andmevahetuseks ICMP (Internet Control Message Protocol) protokolli ja arusaadavalt ei tohi sellise kontrolli õnnestumiseks kahe punkti vahel olla ICMP protokolli kasutamine takistatud, täpsemini ICMP echo request ja ICMP echo reply sõnumite vahetamine.
Kasutamiseks tuleb ühes punktis öelda
# ping 192.168.10.11 PING 192.168.10.11 (192.168.10.11): 56 data bytes 64 bytes from 192.168.10.11: icmp_seq=0 ttl=64 time=3.922 ms 64 bytes from 192.168.10.11: icmp_seq=1 ttl=64 time=0.286 ms 64 bytes from 192.168.10.11: icmp_seq=2 ttl=64 time=0.274 ms 64 bytes from 192.168.10.11: icmp_seq=3 ttl=64 time=0.193 ms
Väljundist on näha, et pöördutud aadress vastab, vastused on järjekorras ja kadudeta saabunud ning vastuse saamise aeg on suhteliselt stabiilne. Võib järeldada, et võrk toimib.
traceroute
Traceroute utiliidi abil saab jälgida, millistest võrgusõlmedest käib kahe punkti vahel toimuv liiklus läbi. Traceroute kasutab andmevahetuseks vaikimisi UDP protokolli ning asjaolu, et kui IP pakett läbib võrgusõlme, siis vähendatakse päises olevat TTL väärtust ühe võrra kusjuures kui võrgusõlme jõuab pakett, mille TTL väärtus on üks, siis saadetakse tagasi ICMP vastus
icmp: time exceeded in-transit
UDP pakett saadetakse vaikimisi porti 33434 (eeldades, et sihtpunktiks olevas arvutis ei kuula seal teenust). Esimese paketi TTL on väärtusega 1 ning 'icmp: time exceeded in-transit' saadakse vaikelüüsilt. Järgmise paketi TTL seatakse 2 ning 'icmp: time exceeded in-transit' saadakse järgmises võrgu sõlmpunktis asuvalt ruuterilt jne kuni lõpuks UDP puhul saadakse sihtpunktilt vastuseks
icmp: 172.168.1.1 udp port 33443 unreachable
UDP asemel on võimalik kasutada ka ICMP või TCP protokolli, aga UDP annab praktikas kõige paremaid tulemusi. Toome näite kasutades ICMP protokolli kuna liiklust sisaldavas võrgus on tulemust nii parem näha ja esitada. Ütleme arvuti ühes promptis
# traceroute -n -q 1 -I cache.eenet.ee traceroute to cache.eenet.ee (193.40.133.134), 64 hops max, 40 byte packets 1 195.80.102.33 0.494 ms 2 213.184.51.121 0.418 ms 3 194.116.188.19 0.524 ms 4 193.40.133.187 4.724 ms 5 193.40.133.134 3.760 ms
ning kuulates samas arvutis liiklust pealt teises promptis näeme
# tcpdump -nttti em3 icmp tcpdump: listening on em3, link-type EN10MB May 19 18:12:08.419036 195.80.102.35 > 193.40.133.134: icmp: echo request [ttl 1] May 19 18:12:08.419459 195.80.102.33 > 195.80.102.35: icmp: time exceeded in-transit [tos 0xc0] May 19 18:12:08.419659 195.80.102.35 > 193.40.133.134: icmp: echo request May 19 18:12:08.419957 213.184.51.121 > 195.80.102.35: icmp: time exceeded in-transit [tos 0xc0] May 19 18:12:08.420152 195.80.102.35 > 193.40.133.134: icmp: echo request May 19 18:12:08.420582 194.116.188.19 > 195.80.102.35: icmp: time exceeded in-transit May 19 18:12:08.420760 195.80.102.35 > 193.40.133.134: icmp: echo request May 19 18:12:08.424455 193.40.133.187 > 195.80.102.35: icmp: time exceeded in-transit May 19 18:12:08.424638 195.80.102.35 > 193.40.133.134: icmp: echo request May 19 18:12:08.428660 193.40.133.134 > 195.80.102.35: icmp: echo reply
Vahel esineb traceroute väljundis real * märk, mis tähendab, et vaatlusalune võrgusõlm ei vastanud 'icmp: time exceeded in-transit' teatega või see teade ei jõudnud kohale
# traceroute -n -q 1 -I www.eenet.ee traceroute to www.eenet.ee (193.40.0.131), 64 hops max, 60 byte packets 1 84.50.96.137 58.500 ms 2 88.196.144.137 5.230 ms 3 90.190.153.17 4.325 ms 4 195.250.191.17 8.805 ms 5 * 6 194.116.188.19 9.124 ms 7 193.40.133.187 11.953 ms 8 193.40.0.131 11.744 ms
nmap
Programm nmap on populaarne võrgu kaardistamise vahend, mida võrguadministraatorid ja süsteemiadministraatorid armastavad kasutada teenuste kontrollimiseks, samuti diagnostikavahendina probleemide või kahtluste olemasolul. Lisaks tundub, et pahalased kasutavad sarnast võrgu kaardistamise vahendit ründe sihtmärkide kindlakstegemiseks. Nmap töö põhineb erinevate omadustega pakettide väljasaatmisel ning vastuste (sh saamatajätmise) analüüsil. Üldiselt võiks eristada kahte taset nmapi kasutamisel
- võrgus arvutite leidmine (ingl. k. host discovery)
- üksikute arvutite omaduste kindlakstegemine (nt millistel portidel pakutakse teenust) (ingl. k. port scanning)
Käesolev tekst on esitatud oma võrgu ja tulemüüride ning tcp/ip protokolli paremaks tundmaõppimiseks. Selle tekstiga ei julgustata võõraste võrkude uurimist.
võrgust arvutite leidmine
Võrgus arvutite kindlakstegemiseks on nmap'il kaks võtitit, -sL ja -sP
Selleks, et lihtsalt kuvada subnetis olevad ip aadressid koos pöördteisendustega, mingit skaneerimist ei toimu
# nmap -sL 192.168.1.0/24 Starting Nmap 4.53 ( http://insecure.org ) at 2008-06-23 22:30 EEST Host 192.168.1.0 not scanned Host sipsik.loomaaed.tartu.ee (192.168.1.1) not scanned Host www.loomaaed.tartu.ee (192.168.1.2) not scanned Host vaktsiin.loomaaed.tartu.ee (192.168.1.3) not scanned Host loomaaed.tartu.ee (192.168.1.4) not scanned Host 192.168.1.5 not scanned Host hilja.loomaaed.tartu.ee (192.168.1.6) not scanned .. Nmap done: 256 IP addresses (0 hosts up) scanned in 0.142 seconds
Selleks, et saada subnetis olevate arvutite mac aadresside nimekirja sobib öelda
# nmap -sP 192.168.1.0/24 -n Starting Nmap 4.53 ( http://insecure.org ) at 2008-06-23 23:03 EEST Host 192.168.1.1 appears to be up. MAC Address: 00:16:3E:1C:3C:B3 (Xensource) Host 192.168.1.2 appears to be up. MAC Address: 00:16:3E:2C:7E:DD (Xensource) Host 192.168.1.3 appears to be up. MAC Address: 00:18:F8:E5:F8:F2 (Cisco-Linksys) Host 192.168.1.4 appears to be up. MAC Address: 00:0C:42:07:1A:46 (Routerboard.com) Nmap done: 256 IP addresses (5 hosts up) scanned in 6.054 seconds
Kui nö teises aknas võrku kuulata, näeb, et nmap teeb subneti iga ip aadressi kohta arp päringu, väga efektiivne moodus arvuti olemasolu kindlakstegemiseks
# tcpdump -nettti fxp1 arp Jun 23 22:49:26.743432 00:02:55:ee:42:72 ff:ff:ff:ff:ff:ff 0806 42: arp who-has 192.168.1.1 (ff:ff:ff:ff:ff:ff) tell 192.168.1.254 Jun 23 22:49:26.743466 00:02:55:ee:42:72 ff:ff:ff:ff:ff:ff 0806 42: arp who-has 192.168.1.2 (ff:ff:ff:ff:ff:ff) tell 192.168.1.254 Jun 23 22:49:26.943286 00:02:55:ee:42:72 ff:ff:ff:ff:ff:ff 0806 42: arp who-has 192.168.1.3 (ff:ff:ff:ff:ff:ff) tell 192.168.1.254 Jun 23 22:49:26.943339 00:02:55:ee:42:72 ff:ff:ff:ff:ff:ff 0806 42: arp who-has 192.168.1.4 (ff:ff:ff:ff:ff:ff) tell 192.168.1.254 ..
Kui sedasi pöörduda mittelokaalse võrgu poole, siis nmap saadab icmp echo requesti ning tcp ack paketi porti 80 (mis tavaliselt ei saa tulemüüridest edasi, kuna ei kuulu ühenduse hulka) ning näitab samuti tulemust.
Lisaks saab -sP võtmega koos kasutada nn probe'isid (-PS, -PA jt) võtmeid, et vaikimisi käitumist muuta.
Üksikute arvutite omaduste kindlakstegemine
Lisaks võimaldab Nmap vaatlusaluse arvuti tcp/ip stackiga suhtlemisel saadud info põhjal kaudselt ennustada selle arvuti operatsioonisüsteemi
# nmap -A 192.168.0.239 Starting Nmap 4.53 ( http://insecure.org ) at 2008-04-10 23:12 EEST Interesting ports on 192.168.0.239: Not shown: 1711 closed ports PORT STATE SERVICE VERSION 22/tcp open ssh OpenSSH 4.7p1 Debian 2 (protocol 2.0) MAC Address: 00:11:25:85:64:34 (IBM) Device type: general purpose Running: Linux 2.6.X OS details: Linux 2.6.17 - 2.6.20 Uptime: 0.640 days (since Thu Apr 10 07:51:45 2008) Network Distance: 1 hop Service Info: OSs: Unix, Linux OS and Service detection performed. Please report any incorrect results at http://insecure.org/nmap/submit/ . Nmap done: 1 IP address (1 host up) scanned in 20.592 seconds
arping
tcpflow
Programm tcpflow abil on hea uurida rakenduskihile vastavate andmete liikumist võrgus, nt jälgida http päringud ja vastuseid. tcpflow salvestab käesolevasse kataloogi (ingl. k. current directory) tabatud liikluse automaatselt moodustatud failinimesid kasutades
# mkdir /tmp/ftp.aso.ee # cd /tmp/ftp.aso.ee # tcpflow -i rl0 host ftp.aso.ee # ls -l total 8 -rw-r--r-- 1 root wheel 104 Jun 13 10:22 084.050.096.138.50120-213.184.032.082.00080 -rw-r--r-- 1 root wheel 847 Jun 13 10:22 213.184.032.082.00080-084.050.096.138.50120
Failinimedes kasutatakse kasutatud pordinumbreid, päring
# cat 084.050.096.138.50120-213.184.032.082.00080 GET /README HTTP/1.0 User-Agent: Wget/1.11.2 Accept: */* Host: ftp.aso.ee Connection: Keep-Alive
ning vastus
# cat 213.184.032.082.00080-084.050.096.138.50 HTTP/1.1 200 OK Date: Fri, 13 Jun 2008 07:22:50 GMT Server: Apache Last-Modified: Mon, 05 Nov 2007 19:14:36 GMT ETag: "1c980fa-22e-53bd1f00" Accept-Ranges: bytes Content-Length: 558 Keep-Alive: timeout=15, max=100 Connection: Keep-Alive Content-Type: text/plain; charset=UTF-8 Welcome to the Estonian Informatics Center's FTP server! On this server are hosted following software distributions Debian GNU/Linux - /debian Ubuntu Linux - /pub/ubuntu Mandriva Linux - /pub/Mandrake X-Road System - /pub/x-tee Solaris CSW - /pub/csw OpenBSD - /pub/OpenBSD You can access data anonymously using http, ftp or rsync protocol and one of these domainnames: ftp.aso.ee ftp.ria.ee ftp.ee.debian.org If you have any comments or encounter problems using this archive, please send them via e-mail to ftpmaster_at_aso.ee.