Võrgudiagnostika

Allikas: Kuutõrvaja
Redaktsioon seisuga 22. veebruar 2018, kell 16:53 kasutajalt Imre (arutelu | kaastöö) (Üksikute arvutite omaduste kindlakstegemine)

Sissejuhatus

Käesolev tekst on esitatud oma võrgu ja tulemüüride ning tcp/ip protokolli paremaks tundmaõppimiseks. Ühtlasi tutvustatakse programme, millega saab uurida, kas võrk töötab ning kui, siis kuidas see töötab. Näiteks hinnata andmevahetuskiirusi, kuulata Ethernetti pealt ja uurida millised pordid on serveritel lahti.

Ilmselt saab allpool esitatud õpetusi kasutada nii hea-kui kuritahtlikul eesmärgil, manitseme seda tegema mitte kuritahtlikult. Tavaliselt on tuvastatav, kust tehakse ping floodi või nmapiga masinad skanneeritakse.

Reeglina tuleb esitatud programme kasutada juurkasutajana. Näiteks toodud viiba järgi saab teada, kas programm on kasutatav ka tavakasutaja ($) või ainult juurkasutaja (#) õigustes.

Võrguseadmed

Käesoleva teksti tähenduses mõeldakse võrguseadme all arvuti füüsilist või loogilist võrguseadet, nt

  • füüsiline võrguseade - Linux puhul wlan0, eth0, eth1 jne; BSD puhul nt em0, bnx0 jne
  • lokaalne võrguseade - Linux puhul lo; BSD puhul lo1, lo2
  • sild - Linux puhul nt br0, br1; BSD puhul bridge0
  • VLAN seade - Linux puhul nt vlan513, BSD puhul vlan513

Võrguseadmete jälgimisel tuleb arvestada, et arvuti kohalik liiklus toimub üle lokaalse võrguseadme, kusjuures ka juhtumil kui arvuti eth0 seadmele on omistatud nt aadress 192.168.1.15 ning arvutist pöördutakse selle aadressi poole.

tcpdump

Programm tcpdump (kuulub paljude operatsioonisüsteemide tarkvara põhiosa koosseisu) abil saab nö 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 liiklust seadel, 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 standardsete 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 suurus

OpenBSD puhul lisanduvad järgmised võimalused

  • paketifiltri reegli number,
  • paketifiltri reegline määratud tegevus (pass, block, nat, rdr jt ning logitud liiklus)

Pakettide korjamise alustamiseks kindlalt võrguseadmelt

# tcpdump -i ed0

Oletame, et kahtlustame broadcast pakette ning seda, et nad aeglustavad võrgutööd:

# tcpdump -i ed0 broadcast

Uurime kahe masina vahelist liiklust

# tcpdump -i ed0 host klient and server

Veel täpsep on vaadata

# tcpdump -i ed0 src host klient and dnst host server

Kõigi arvuti võrguseadmete peal töötamiseks sobib öelda

# tcpdump -i any ...

ICMP

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äljundina esitatakse

  • paketi jälgimise aeg (-ttt, vt man tcpdump -t erinevaid variante)
  • kummagi poole MAC aadressid (-e)
  • paketi ethertype (-e, 0800 on ipv4 protokoll)
  • ip paketi suurus baitides
  • osaliste ip aadressid nimelahenduseta kujul (-n)
  • paketi sisulisemad andmed, antud juhul on tegu icmp echo pärginute ja vastustega

Antud juhul 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.

TCP

tcpdump võimaldab kasutada avaldisi, millega peab pakett klappima, nt SYN pakettide jälgmiseks

 # tcpdump -n -i em0 'tcp[13] & 2 != 0' and dst 10.0.6.180 and port 80

TCP liikluse tõlgendamine

22:05:25.828149 10.50.96.138.50215 > 10.184.32.82.80: S 1263958777:1263958777(0) win 5840 \
  <mss 1460,sackOK,timestamp 787576523 0,nop,wscale 6>  (DF)
22:05:25.845445 10.184.32.82.80 > 10.50.96.138.50215: S 1989118317:1989118317(0) ack 1263958778 win 5792 \
  <mss 1460,sackOK,timestamp 539529245 787576523,nop,wscale 6> (DF)
22:05:25.845896 10.50.96.138.50215 > 10.184.32.82.80: . ack 1 win 92 <nop,nop,timestamp 787576527 539529245> (DF)
22:05:25.845908 10.50.96.138.50215 > 10.184.32.82.80: P 1:134(133) ack 1 win 92 <nop,nop,timestamp 787576527 539529245> (DF)
22:05:25.856417 10.184.32.82.80 > 10.50.96.138.50215: . ack 134 win 108 <nop,nop,timestamp 539529249 787576527> (DF)
22:05:25.862904 10.184.32.82.80 > 10.50.96.138.50215: . 1:1449(1448) ack 134 win 108 <nop,nop,timestamp 539529249 787576527> (DF)
22:05:25.863286 10.50.96.138.50215 > 10.184.32.82.80: . ack 1449 win 137 <nop,nop,timestamp 787576532 539529249> (DF)
22:05:25.868800 10.184.32.82.80 > 10.50.96.138.50215: . 1449:2897(1448) ack 134 win 108 <nop,nop,timestamp 539529249 787576527> (DF)
22:05:25.869206 10.50.96.138.50215 > 10.184.32.82.80: . ack 2897 win 182 <nop,nop,timestamp 787576533 539529249> (DF)
22:05:25.878659 10.184.32.82.80 > 10.50.96.138.50215: . 2897:4345(1448) ack 134 win 108 <nop,nop,timestamp 539529253 787576532> (DF)
22:05:25.879036 10.50.96.138.50215 > 10.184.32.82.80: . ack 4345 win 227 <nop,nop,timestamp 787576536 539529253> (DF)
...

kus

  • esimene rida vastab ühenduse algatamise SYN paketile
  • mss 1460 - tcp maximum segment size väärtus, ütleb teisele poolele, kui suuri tcp pakette saata
  • sackOK - selective acknowledgement on ok paketi saatja jaoks
  • win 5840 - paketi saatja teatab paketi vastuvõtjale, et tal on puhvrit võtta ise pakette vastu 5840 baiti
  • win 92 - kuna alguses lepiti kokku wscale=6, siis 92 tähendab 92 * 2^6 = 5888 baiti
  • ack arv - loeb kui palju baite on paketi saatja teise poole käest vastu võtnud;
  • DF - kõigil pakettidel on seatud don't fragment
  • nop - not operating, sisuliselt kasutatakse paddinguks
  • 1449:2897(1448) - sulgudes olev väärtus on tcp paketi sisu suurus baitides
  • kasutades lisaks võtit -e esitatakse eraldi tulbas ethnerneti frame sees kantud protokolli nimi, nt ip ning vastava paketi suurus

ARP

Huvitav on tähele panna, et tcpdump tegeleb mitme protokolliga, nt ip (0800) ja arp (0806) protokolli pakettidega, mis on saadetud arp broadcast aadressile

 # tcpdump -nei re0 ether host ff:ff:ff:ff:ff:ff
 tcpdump: listening on re0, link-type EN10MB
 11:00:49.928582 00:0e:0c:b0:96:b6 ff:ff:ff:ff:ff:ff 0800 210: 192.168.10.10.631 > 192.168.10.255.631: udp 168 (DF)
 11:01:08.024422 00:16:3e:00:00:01 ff:ff:ff:ff:ff:ff 0800 249: 192.168.10.41.138 > 192.168.10.255.138: udp 207
 11:01:26.338380 00:1b:21:1d:f6:06 ff:ff:ff:ff:ff:ff 0806 60: arp who-has 192.168.10.254 tell 192.168.10.250

Kui tcpdump väljundit on vaja saata toru kaudu mõne teksti töötlevale programmile edasi on asjakohane kasutada lisaks -l võtit, mis puhverdab rea kaupa, nt

 # tcpdump -nlei re0 ether host ff:ff:ff:ff:ff:ff | grep 0806

Liikluse salvestamine faili

Selleks, et salvestada tulemus ka faili:

# tcpdump -i ed0 -w liiklus.log

Liikluse faili salvestamiseks sobib öelda nö tavalise MTU'ga (1,5 kBaiti) võrgus nt (-s 0 võti tähendab, et salvestatakse kõik paketi sisu suurusest hoolimata)

 # tcpdump -s 1600 -w /tmp/liiklus.log -i em0 host 10.0.6.180 and port 80

Selliselt salvestatud liikluse analüüsimiseks sobib öelda nt

# tcpdump -r /tmp/liiklus.log

IP

Kui IP kihis leiab aset pakettide fragmenteerumine, siis paistab see tcpdump väljundis nt selliselt

23:43:36.802989 10.100.0.161.32545 > 10.100.1.190.80: S 3394332515:3394332515(0) win 16384 \
  <mss 8960,nop,nop,sackOK,nop,wscale 0,nop,nop,timestamp 3055259272 0>
23:43:36.803982 10.100.1.190.80 > 10.100.0.161.32545: S 2791894032:2791894032(0) ack 3394332516 win 16384 \
  <mss 8960,nop,nop,sackOK,nop,wscale 0,nop,nop,timestamp 313564159 3055259272>
23:43:36.805275 10.100.0.161.32545 > 10.100.1.190.80: . ack 1 win 16384 <nop,nop,timestamp 3055259272 313564159>
23:43:36.805527 10.100.0.161.32545 > 10.100.1.190.80: P 1:67(66) ack 1 win 16384 <nop,nop,timestamp 3055259272 313564159>
23:43:36.809486 10.100.1.190.80 > 10.100.0.161.32545: . 1:1449(1448) ack 67 win 17896 \
  <nop,nop,timestamp 313564159 0> (frag 35143:1480@0+)
23:43:36.809503 10.100.1.190 > 10.100.0.161: (frag 35143:1480@1480+)
23:43:36.809515 10.100.1.190 > 10.100.0.161: (frag 35143:1480@2960+)
23:43:36.809527 10.100.1.190 > 10.100.0.161: (frag 35143:1480@4440+)
23:43:36.809539 10.100.1.190 > 10.100.0.161: (frag 35143:1480@5920+)
23:43:36.809554 10.100.1.190 > 10.100.0.161: (frag 35143:824@7400)
23:43:36.810014 10.100.1.190.80 > 10.100.0.161.32545: P 8193:9641(1448) ack 67 win 17896 \
  <nop,nop,timestamp 313564159 0> (frag 46914:1480@0+)
23:43:36.810030 10.100.1.190 > 10.100.0.161: (frag 46914:1480@1480+)
23:43:36.810045 10.100.1.190 > 10.100.0.161: (frag 46914:1452@2960)
23:43:36.810157 10.100.1.190.80 > 10.100.0.161.32545: F 12573:12573(0) ack 67 win 17896 <nop,nop,timestamp 313564159 0>
23:43:36.813600 10.100.0.161.32545 > 10.100.1.190.80: . ack 8193 win 16384 <nop,nop,timestamp 3055259272 313564159>
23:43:36.813856 10.100.0.161.32545 > 10.100.1.190.80: . ack 12574 win 12004 <nop,nop,timestamp 3055259272 313564159>
23:43:36.816244 10.100.0.161.32545 > 10.100.1.190.80: F 67:67(0) ack 12574 win 16384 <nop,nop,timestamp 3055259272 313564159>
23:43:36.817042 10.100.1.190.80 > 10.100.0.161.32545: . ack 68 win 17896 <nop,nop,timestamp 313564159 0>

kus

  • (frag 35143:1480@0+) - järgnevad IP fragmendid
  • (frag 35143:824@7400) - viimane IP fragment kuna järel + märk puudub

ICMP pakettide puhul on fragmenteerimist veel otsekohesem jälgida, öeldes ühes aknas

# ping -c 1 -s 6000 192.168.209.245
PING 192.168.209.245 (192.168.209.245): 6000 data bytes
6008 bytes from 192.168.209.245: icmp_seq=0 ttl=56 time=74.206 ms

võib võrku pealt kuulates paista midagi sellist

22:30:44.799162 84.50.96.138 > 192.168..209.245: icmp: echo request (frag 36688:1480@0+)
22:30:44.799168 84.50.96.138 > 192.168..209.245: (frag 36688:1480@1480+)
22:30:44.799175 84.50.96.138 > 192.168..209.245: (frag 36688:1480@2960+)
22:30:44.799180 84.50.96.138 > 192.168..209.245: (frag 36688:1480@4440+)
22:30:44.799187 84.50.96.138 > 192.168..209.245: (frag 36688:88@5920)
22:30:44.872529 192.168.209.245 > 84.50.96.138: icmp: echo reply (frag 42199:1480@0+)
22:30:44.872674 192.168.209.245 > 84.50.96.138: (frag 42199:1480@1480+)
22:30:44.872774 192.168.209.245 > 84.50.96.138: (frag 42199:1480@2960+)
22:30:44.872899 192.168.209.245 > 84.50.96.138: (frag 42199:1480@4440+)
22:30:44.872913 192.168.209.245 > 84.50.96.138: (frag 42199:88@5920)

ping

Kuulub enamuse operatsioonisüsteemide pakettide hulka

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.

Kasutades võtit -n ei püüa Ping lahendada nimesid, tihti seisneb võrgu nö mittetöötamine valesti konfigureeritud nimeserveris või nimeserveri mittekasutamises.

Pingimise intervalli võib ka vähendada järgnevalt:

# ping -i 0 -c 5 neti.ee 

Silmas tasub ainult sel juhul pidada järgnevaid asju:

  • flood ping (intervall 0) on masinate kiusamine, mõned tulemüürid võivad seda spetsiifiliselt detectida ja blokkida,
  • mida lühem intervall, seda hüplikumaks muutub tulemus, pendeldades rohkem 100% ja 0% vahel,
  • alla 1 sek intervalliga ping tuleb ruudu poolt käivitada.

traceroute

Samuti enamuse operatsioonisüsteemides leiduv programm

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

kus

  • väljundis esitatakse järjekorras kõigi võrgusõlmede aadressid, mida pakett läbib sihtpunkti jõudmiseks; täpsemalt, need on võrgusõlmpunktide traceroute kasutaja poolsete võrguseadmede aadressid
  • iga aadressi järel esitatakse vastuse tagasijõudmiseks kulunud aeg, kusjuures aeg esitatakse iga rea kohta eraldi st viimase rea aeg ei ole kõige aegade summa (antud juhul on see ka selgesti näha, et mingil põhjusel jõudis viimase hosti juurest vastus kiiremini tagasi kui eelviimasest)

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

TCP ja port 80 tracroute

# traceroute -n -q 1 -T www.eenet.ee -p 80
traceroute to www.eenet.ee (193.40.0.131), 30 hops max, 60 byte packets
 1  10.0.0.1  0.313 ms
 2  184.50.25.1  0.659 ms
 3  184.50.157.2  5.896 ms
 4  213.168.1.18  3.562 ms
 5  213.168.1.27  3.680 ms
 6  195.250.170.70  3.797 ms
 7  193.40.133.6  6.987 ms
 8  193.40.133.26  7.113 ms
 9  193.40.0.131  7.993 ms

tracepath

tracepath programmi abil saab teha kindlaks Path MTU väärtusi, paigaldamiseks tuleb Debian Lenny keskkonnas öelda

# apt-get install iputils-tracepath

Kasutamisene toimub selliselt

$ tracepath -n 192.168.1.4
 1:  192.168.10.10     0.062ms pmtu 1500
 1:  192.168.10.210    0.444ms 
 1:  192.168.10.210    0.220ms 
 2:  192.168.1.4       0.835ms reached
     Resume: pmtu 1500 hops 2 back 63

Kasulikud lisamaterjalid

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)

Nmap ei kuulu enamuse operatsioonisüsteemi baaskonfiguratsiooni ning tuleb eelnevalt paketihalduse vahenditega paigaldada

Nt Debian v. 7 Wheezy puhul sobib öelda, et ei paigaldatakse hulka Recommends olekus pakette

# apt-get --no-install-recommends install nmap

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.

Nmap programmi võrgust arvutite leidmise protseduuri väljundi saab salvestada faili, et seda seejärel üksikute arvutite omaduste kindlakstegemiseks kasutada, näiteks selliselt, -oG võtme kasutamisel salvestatakse väljund võimalikult nö grep'itavas formaadis

 # nmap -sP 192.168.1.0/24 -oG /tmp/nmap-192.168.1.0-24.log

Üksikute arvutite omaduste kindlakstegemine

Üksikute arvutite omaduste all mõeldaks seda, millises olekus on tema erinevad pordid, näiteks

  • open - pordil töötab rakendus
  • closed - pordile ei ole ligipääs takistatud, aga rakendust ei tööta (tavaliselt saadab arvuti nmapile vastuseks RST paketi)
  • filtered - nmap ei saa kindlaks teha pordi olekut (kas open või closed) kuna vaatlusaluses endas või tema eest töötab paketifilter

Tegemaks kindlaks, kas failis /tmp/192.168.1.0-24.log sisalduvatel ip aadressidel vastab SYN paketile 22 port tuleb näiteks öelda

 # nmap -p T:22 -sS -iL /tmp/nmap.log -PN -oG -
  • -oG - tundub, et väljund on sedasi pisut paremini loetav kui vaikimisi
  • -PN - nmap ei soorita taustal nn host discovery't, kui tcpflow abil liiklust jälgida, on pilt selgem

Sedasi on näiteks ka hea kontrollida, kas oma synproxy režiimis käivitatud tulemüür ikka toimib nõuetekohaselt.

Nmap võimaldab vaatlusaluse arvuti tcp/ip stackiga suhtlemisel saadud info põhjal kaudselt ennustada selle arvuti operatsioonisüsteemi ning portidel kuulavate tarkvarade versioonid

 # 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

TCP handshake'i tegemiseks sobib kasutada, nn connect scan

 # nmap -p T:443 -sT -PN 192.168.0.239

Lisaks saab seada tcp paketi lippe ka näidates vajalikud lipud otse, nt seada SYN ja ACK, korrektselt seadistatud tulemüürist selline pakett läbi minna ei tohiks

# nmap -p T:80 --scanflags SYNACK -PN 192.168.0.239

IP aadressiga seotud portide vahemiku tcp handshake skaneerimine

# nmap -p T:22-100 -sT -Pn 192.168.0.111

kus

  • -p T:22-100 - portide vahemik ja TCP (tegelikult -T on ta niikuinii antud juhul ja selle võiks ka ära jätta)
  • -Pn - mitte pingida, st saadetakse vaid tcp syn jne pakette
  • -sT - tcp handshake skaneerimine

Mitme ip aadressi puhul

# nmap -p T:22-100 -sT -Pn 192.168.0.111-116 -o /var/tmp/nmap-20180222.log

Võrgust teatud omadustega arvutite otsimine

# nmap -PS -p 443 192.168.2.200-245

kus

  • -PS - tcp syn
  • -p 443 - port
  • 192.168.2.200-245 - ip vahemik

Turvavigade kontroll

Tööks vajalikud huvitavad failid asuvad kaustas nmap/scripts/smb-check-vulns.nse nt FreeBSD's /usr/local/share/nmap/scripts/

Ideepoolest peaks töötama ka käsk

# nmap --script-updatedb
Starting Nmap 4.85BETA7 ( http://nmap.org ) at 2009-09-15 00:33 EEST
NSE script database updated successfully.
Nmap done: 0 IP addresses (0 hosts up) scanned in 0.23 seconds

Salvestame nmapi töö faili mis meie subneti nimeline ning viime läbi SYN skänni pordile 445 ning käivitame SMB vigade kontrollimiseks mõeldud NSE skripti ja teeme seda kõigile arvutitele 192.168.1.0/24 võrgus.

nmap -oA 192168-filename -sS -p445 --script smb-check-vulns.nse 192.168.1.0/24

Tulemused võivad välja näha näiteks järgnevad

Interesting ports on kasutaja.zoo.tartu.ee (192.168.1.5):
PORT    STATE SERVICE
445/tcp open  microsoft-ds
MAC Address: 00:03:0D:51:E5:CA (Uniwill Computer)

Host script results:
|_ smb-check-vulns: This host is likely vulnerable to MS08-067 (it
stopped responding during the test)

Skriptide poole pöördudes võib kasutada ka järgmist lähenemist:

nmap --script "http-*"

Mis laadib kõik skriptid millede nimi agab httpd- reaga, näiteks http-auth ja http-open-proxy

Või siis laadime kõik skriptid, välja arvatud intrusive kategooriast:

nmap --script "not intrusive"

Vaikimisi kategoriseeritud default ja safe kataloogi.

nmap --script "default or safe"

nping

nmap paketi koosseisu kuulub nping programm, mis on natuke sarnane oma võimlustelt hping ja pingile.

TODO

ncat

nmap paketi koosseisu kuulub ncat programm, mis on natuke sarnane oma võimalustelt netcat programmile.

arping

Erinevalt programmist ping, mis saadab võrku ip pakette (ethertype 0x0800) tekitab arping arp pakette (ethertype 0x0806). Kui ühes aknas pingida/arpingida ja teises jälgida liiklust, siis paistavad erinevused sellised

Tuleb eelnevalt paigaldada operatsioonisüsteemi pakihalduse vahendite abil

 # ping 192.168.10.251
 # tcpdump -nettti em0 arp or icmp
 Jun 24 13:27:08.032376 00:0e:0c:ba:4b:3e 00:0c:42:07:1a:45 0800 98: 192.168.10.210 > 192.168.10.251: icmp: echo request
 Jun 24 13:27:08.032511 00:0c:42:07:1a:45 00:0e:0c:ba:4b:3e 0800 98: 192.168.10.251 > 192.168.10.210: icmp: echo reply
 # arping 192.168.10.251
 # tcpdump -nettti em0 arp or icmp
 Jun 24 13:27:10.069533 0c:80:18:03:00:00 ff:ff:ff:ff:ff:ff 0806 42: arp who-has 192.168.10.251 tell 192.168.10.210
 Jun 24 13:27:10.069644 00:0c:42:07:1a:45 0c:80:18:03:00:00 0806 60: arp reply 192.168.10.251 is-at 00:0c:42:07:1a:45

Ssmpingiga multicasti toimimise testimine

Multicast ehk multiedastus võimaldab ühe saatekorraga edastada sama infot korraga valitud arvutite rühmale. Seda ei tohi segi ajada broadcastiga, mis edastab paketi absoluutselt kõigile võrgus olevatele masinatele. Multicasti töötamise jaoks on switchis tarvilik IGMP (Internet Group Management Protocol) tugi (snooping ja query). Ruuteril on tarvilik "multicast routing" tuge. Multiedastust kasutatakse laialdaselt audio-video ülekandmiseks ja clustri nodede sünkroniseerimiseks. Rumalad ja mittemanageeritavad switchid võivad multiedastus teated edastada kui broadcasti kõigisse switchi portidesse ja tekitada seega võrgus üleliigst liiklust. IGMP Snoopingu halvaks küljeks on aga suurem switchi protsessori ja mälu kasutus.

http://et.wikipedia.org/wiki/Multiedastus http://en.wikipedia.org/wiki/Multicast

Kahe masina vahel multicasti tesitmine ssmpingi abil. Paigaldamiseks

# apt-get install ssmping

Esimeses masinas

# ssmpingd

Teises masinas

# ssmping -I eth0 <IP aadress>

Tulem võiks näha välja järgnev

asmping joined (S,G) = (*,224.0.2.234)
pinging 192.168.8.6 from 192.168.8.5
  unicast from 192.168.8.6, seq=1 dist=0 time=0.221 ms
  unicast from 192.168.8.6, seq=2 dist=0 time=0.229 ms
multicast from 192.168.8.6, seq=2 dist=0 time=0.261 ms
  unicast from 192.168.8.6, seq=3 dist=0 time=0.198 ms
multicast from 192.168.8.6, seq=3 dist=0 time=0.213 ms
  unicast from 192.168.8.6, seq=4 dist=0 time=0.234 ms
multicast from 192.168.8.6, seq=4 dist=0 time=0.248 ms
  unicast from 192.168.8.6, seq=5 dist=0 time=0.249 ms
multicast from 192.168.8.6, seq=5 dist=0 time=0.263 ms
  unicast from 192.168.8.6, seq=6 dist=0 time=0.250 ms
multicast from 192.168.8.6, seq=6 dist=0 time=0.264 ms
  unicast from 192.168.8.6, seq=7 dist=0 time=0.245 ms
multicast from 192.168.8.6, seq=7 dist=0 time=0.260 ms

Nii unicast kui multicast tunduvad töötavat.

Võime testida ka mõne kaugema serveri pihta:

# ssmping ssmping.uninett.no
ssmping joined (S,G) = (2001:700:0:4501:158:38:0:230,ff3e::4321:1234)
pinging S from 2001:bb8:2001:2:21b:21ff:fe65:54c9
  unicast from 2001:700:0:4501:158:38:0:230, seq=1 dist=14 time=39.017 ms
  unicast from 2001:700:0:4501:158:38:0:230, seq=2 dist=14 time=38.840 ms
  unicast from 2001:700:0:4501:158:38:0:230, seq=3 dist=14 time=38.950 ms
  unicast from 2001:700:0:4501:158:38:0:230, seq=4 dist=14 time=38.704 ms
--- 2001:700:0:4501:158:38:0:230 statistics ---
4 packets transmitted, time 3564 ms
unicast:
  4 packets received, 0% packet loss
   rtt min/avg/max/std-dev = 38.704/38.877/39.017/0.269 ms
multicast:
   0 packets received, 100% packet loss

Viimase näite puhul multicast üle ipv6 ei paista töötavat. Unicast aga küll..

Ethtool

Selleks, et vaadata ühenduse parameetreid ning seda, kas võrgukaarti on ühendatud kaabel või ei ole on olemas töövahend ethtool. Üsna sageli võib olla segadus, et serveril on 4+ võrguseadet ning raske öelda kuidaspidi on udev nad jaganud

# apt-get install ethtool

Kasutamine

# ethtool eth0

Ja sealt antud infost saab vaadata nt välja

Link detected: yes

Rohkema info omandamiseks

# ethtool -i eth5
driver: i40e
version: 1.2.37
firmware-version: f4.22.27454 a1.2 n4.25 e143f
bus-info: 0000:06:00.1
supports-statistics: yes
supports-test: yes
supports-eeprom-access: yes
supports-register-dump: yes
supports-priv-flags: yes

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

Tuleb eelnevalt paigaldada operatsioonisüsteemi vahendite abil

 # 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.

tcpdump abil salvestatud faile saab uurida

$ tcpflow -r failinimi.pcap

hping

Programm hping võimaldab konstrueerida ja võrku saata igasuguseid pakette ja sobib seetõttu hästi nt võrgusõlmede testimiseks. Tarkvarast on kolm populaarset versiooni, hping, hping2 ja hping3. Näiteks SYN paketi tekitamiseks tuleb öelda

Tuleb eelnevalt paigaldada operatsioonisüsteemi vahendite abil

 # hping -S -c 4 -p 80 192.168.10.12
 HPING farm.loomaaed.tartu.ee (em0 192.168.10.12): S set, 40 headers + 0 data bytes
 len=46 ip=192.168.10.12 ttl=56 DF id=60008 sport=80 flags=SA seq=0 win=5840 rtt=9.4 ms
 len=46 ip=192.168.10.12 ttl=56 DF id=53433 sport=80 flags=SA seq=1 win=5840 rtt=9.8 ms
 len=46 ip=192.168.10.12 ttl=56 DF id=39504 sport=80 flags=SA seq=2 win=5840 rtt=9.5 ms
 len=46 ip=192.168.10.12 ttl=56 DF id=54821 sport=80 flags=SA seq=3 win=5840 rtt=9.5 ms

kus võtmed

  • -S - konstrueerida SYN pakett
  • -c 4 - saata viis paketti
  • -i arv - saata intervalliga arv sekundit, vaikimisi ühe sekundise intervalliga
  • -p - pordile 80

Näiteks nii saab nö tavalist ICMP pingi sooritada öeldes paketi src aadressiks 192.168.12.144

 # hping3 -1 -a 192.168.12.144 192.168.11.145

Fragmenteeritud IP pakettide genereerimiseks sobib öelda

# hping3 -d 5400 -E /tmp/50M -S -c 3 -p 80 192.168.10.12 -m 200

kus

  • -d paketi andmeosa suurus
  • -E - mida kasutada andmeosa täitmiseks
  • -m - mtu suurus

netcat

Programm netcat võimaldab hõlpsasti testida võrku, või vahetda arvutite ning programmide vahel infot. Sarnane tuntub programmile socket. Ühes arvutis tuleb ta käivitada porti kuulama öeldes, näiteks faili /tmp/filename.out kopeerimiseks

Tuleb osades operatsioonisüsteemides paigaldada, nt OpenBSD's on ta olemas

 # nc -l -p 1010 > /tmp/filename.out

ja teisest pöörduda

 # nc teise.arvuti.ip.aadress 1010 < /tmp/filename.out

Linuxi peal töötab sedasi lihtne server

 # while true ; do cat /tmp/http.txt  | nc -l -p 1500 head --bytes 2000 >>/tmp/requests ; date >>/tmp/requests ; done

Hädapärast saab netcati vahendusel vahendada ka arvutite vahel ja skriptide vahel infot näiteks kuulame 1001 porti ühes masinas

abiks käsk testimisel ka

nc -l -p 1001 | awk -F"," '{print $2}'

Syslogiga suhtlemine

$ echo '<0>message' | nc -w 1 -u  192.168.102.114 514

Whois teenuse kasutamine (20131116 - tundub, et päris nii see alati ei tööta)

$ echo "loomaaed.tartu.ee" | netcat 193.40.0.12 43
The registry database contains only .EE, .COM.EE, .PRI.EE, .FIE.EE,
.ORG.EE and .MED.EE domains.

Registrant:
   Tartu Loomaaed
   Looma tee 1
   TEL 1234 5678
   FAX 8765 4321

   Domain Name: loomaaed.tartu.ee

   Contacts:
     Priit Kask priit@loomaaed.tartu.ee
..

Netcat abil saab hõlpsasti demonstreerida kui lihtne on nö pordile shelli külge ühendada (see on üks põhjus, miks tuleb pigem paketifiltriga kasutamata pordid blokeerida), serveris öelda

$ nc -l -p 8443 -e /bin/bash

ja kliendis

$ nc 192.168.10.10 8443
/sbin/route -n
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
0.0.0.0         192.168.10.254  0.0.0.0         UG    0      0        0 eth0
192.168.10.0    0.0.0.0         255.255.255.0   U     0      0        0 eth0

Mingi määratluse järgi jagatakse turvaauke local ja remote alla kuuluvateks. Tihtipeale annavad local augud rohkem võimalusi ja neide parandamisse suhtutaks kergekäelisemalt. Kui selline shell on kasutada, siis arusaadavalt saab eemalt ligi local aukudesse (nt kävitada spetsiaalselt ettevalmistatud faile jms).

Tundub, et uuemal ajal sobib öelda

$ cat /tmp/f | /bin/sh -i 2>&1 | nc -l 127.0.0.1 8443 > /tmp/f

Võrgukiiruse primitiivseks testimine sobib öelda, iseäralik antud juhul on et mõõdetakse puhast võrgukiirust, kohalike ketaste io ei sega

netcat-server$ nc -l -p 6000 > /dev/null
netcat-klient$ nc 192.168.10.189 6000 < /dev/zero

ja liikluse kiiruse hindamiseks öelda ükskõik kummas arvutis

# tcpstat -i eth0 -o "Time:%S\tn=%n\tavg=%a\tstddev=%d\tBaitspersecond=%B\n" -f "tcp and host 192.168.10.189 and port 6000" 1
Time:1463902007 n=11782 avg=1044.15     stddev=672.42   Baitspersecond=12302148.00
Time:1463902008 n=11603 avg=1046.16     stddev=671.66   Baitspersecond=12138628.00
Time:1463902009 n=11367 avg=1056.14     stddev=667.52   Baitspersecond=12005096.00
Time:1463902010 n=11652 avg=1051.81     stddev=669.35   Baitspersecond=12255700.00
Time:1463902011 n=11514 avg=1053.25     stddev=668.74   Baitspersecond=12127072.00

Lisaks peaks jälgima võrguliidestel toimuvat liiklus vigade osas, nt (errors, dropped jt)

# ifconfig 
eth0      Link encap:Ethernet  HWaddr 00:1c:c0:38:97:a9  
          inet addr:192.168.10.8  Bcast:192.168.10.255  Mask:255.255.255.0
          inet6 addr: fe80::21c:c0ff:fe38:97a9/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:47321279 errors:0 dropped:0 overruns:0 frame:0
          TX packets:42781684 errors:0 dropped:0 overruns:0 carrier:0

IPerf

IPerf http://www.noc.ucf.edu/Tools/Iperf/ tarkvaraga saab mõõta kahe arvuti vahelise võrguühenduse jõudlust.

TCP

Vaikimisi kasutatakse TCP protokolli, näide: kaks masinat klient 192.168.1.2 ja server 192.168.1.3

Server

# iperf -s
------------------------------------------------------------
Server listening on TCP port 5001
TCP window size: 85.3 KByte (default)
------------------------------------------------------------
[  4] local 192.168.1.3 port 5001 connected with 192.168.1.2 port 32054
[ ID] Interval       Transfer     Bandwidth
[  4]  0.0-10.0 sec    826 MBytes    692 Mbits/sec

klient

# iperf -c 192.168.1.3
------------------------------------------------------------
Client connecting to 192.168.1.2, TCP port 5001
TCP window size: 32.5 KByte (default)
------------------------------------------------------------
[  3] local 192.168.1.2 port 32054 connected with 192.168.1.3 port 5001
[ ID] Interval       Transfer     Bandwidth
[  3]  0.0-10.0 sec   826 MBytes   693 Mbits/sec

Soovides täpsemat andmehulka ette anda tuleb täpsustada kasutades võtit '-l'

Vaikimisi kestab test 10 sekundit, soovides seda ajaakent suurendada tuleb kasutada võtit '-t'

# iperf -t 60 -c 192.168.1.3

Täpsem jooksev statistika

# iperf -c 192.168.1.2 -w 400k -P 2 -i 1
Client connecting to 192.168.1.2, TCP port 5001
TCP window size:   400 KByte
------------------------------------------------------------
[ ID] Interval       Transfer     Bandwidth
[SUM]  0.0- 1.0 sec  1.06 GBytes  9.07 Gbits/sec
[SUM]  1.0- 2.0 sec  1.08 GBytes  9.30 Gbits/sec
[SUM]  2.0- 3.0 sec  1.15 GBytes  9.89 Gbits/sec
[SUM]  3.0- 4.0 sec  1.15 GBytes  9.89 Gbits/sec
[SUM]  4.0- 5.0 sec  1.15 GBytes  9.89 Gbits/sec
[SUM]  5.0- 6.0 sec  1.15 GBytes  9.89 Gbits/sec
[SUM]  6.0- 7.0 sec  1.15 GBytes  9.89 Gbits/sec
[SUM]  7.0- 8.0 sec  1.15 GBytes  9.89 Gbits/sec
[SUM]  8.0- 9.0 sec  1.15 GBytes  9.89 Gbits/sec
[SUM]  9.0-10.0 sec  1.15 GBytes  9.89 Gbits/sec
[SUM]  0.0-10.0 sec  11.4 GBytes  9.75 Gbits/sec 

Vaikimisi kestab test 10 sekundit -t parameetriga saab muuta, lisaks saab muuta -i parameetriga statistika kuvamise intervalli.

UDP

UDP protokolli kasutamiseks tuleb lisaks kasutada kliendi ja serveri poolel lisaks suvandit -u, kusjuures UDP puhul on kiiruse piirang vaikimisi 1 Mbit/s. Kiirust saab täpsustada suvandiga -b 1000M, nt

# iperf -s -u
# iperf -c 192.0.0.118 -t 600 -i 10 -l 1472 -b 20M -u

IPv6

IPv6 kasutamiseks tuleb serveri ja kliendi poolel lisaks kasutada suvandit, nt

server # iperf -V -s -u
klient # iperf -V -c 2a02:98:0:a07::a00:7bf -t 600 -i 10 -l 1452 -b 20M -u

kus

  • ipv6 puhul on ip paketi kapsli overhead 40 baiti (erinevalt ipv4 20 baidist)
  • udp kapsli overhead on 8 baiti
  • -l 1452 puhul ei toimu veel fragmentimist, suurema väärtuse puhul tekivad tõenäoliselt fragmenditud paketid

netstrain

Programm netstrain paigaldamine toimub paketist

võimaldab tekitada ja jälgida võrgus tcp koormust. Ühes arvutis tuleb netstraind käivitada

 # netstraind -4 1010 
 NetStrain 3.0  (c) 2002 Christoph Pfisterer <cp@chrisp.de>
 Listening on 0.0.0.0 port 1010 using IPv4...
 One-shot server waiting for connection
 Incoming connection from 172.16.3.254 port 5606

ning teisest pöörduda

 # netstrain -4 172.16.3.251 1010 both 
 NetStrain 3.0  (c) 2002 Christoph Pfisterer <cp@chrisp.de>
 Looking up hostname 172.16.3.251...
 Connecting to 172.16.3.251 port 1010 using IPv4...
 Connected
 sent:      6450M,   10589.2K/s total,   10586.8K/s current
 recv'd:    6252M,   10264.4K/s total,   10286.5K/s current

ipcalc ja ipv6calc

ipcalc on paketist paigaldatav pisike utiliit, millega saab nö võrke arvutada. Näiteks küsida milline on kaheksane subnet kuhu kuulub ip aadress 192.168.2.201

 # ipcalc 192.168.2.201/29
 address   : 192.168.2.201   
 netmask   : 255.255.255.248 (0xfffffff8)
 network   : 192.168.2.200   /29
 broadcast : 192.168.2.207   
 host min  : 192.168.2.201   
 host max  : 192.168.2.206   
 hosts/net : 6

sipcalc

sipcalc (IP subnet calculator) programmiga saab arvutada IPv4 ja IPv6 võrguaadresse, nt

$ sipcalc -a 2a01:88:0:21::2 
-[ipv6 : 2a01:88:0:21::2] - 0

[IPV6 INFO]
Expanded Address        - 2a01:0088:0000:0021:0000:0000:0000:0002
Compressed address      - 2a01:88:0:21::2
Subnet prefix (masked)  - 2a01:88:0:21:0:0:0:2/128
Address ID (masked)     - 0:0:0:0:0:0:0:0/128
Prefix address          - ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff
Prefix length           - 128
Address type            - Aggregatable Global Unicast Addresses
Network range           - 2a01:0088:0000:0021:0000:0000:0000:0002 -
                          2a01:0088:0000:0021:0000:0000:0000:0002

[V4INV6]
Expanded v4inv6 address - 2a01:0088:0000:0021:0000:0000:0.0.0.2
Compr. v4inv6 address   - 2a01:88:0:21::0.0.0.2

[IPV6 DNS]
Reverse DNS (ip6.arpa)  -
2.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.1.2.0.0.0.0.0.0.8.8.0.0.1.0.a.2.ip6.arpa.

httping

httping programmiga saab esitada http päringuid eesmärgiga jälgida veebiserveri vastuste andmist, kusjuures nt on võimalik täpsustades, kas esitatakse GET või HEAD päringuid või millise sagedusega päringuid esitatakse. Nt võiks toimuda programmi kasutamine selliselt

 $ httping -s -S -i 2 -r -g http://www.loomaaed.tartu.ee/loomafail.cgi
 PING www.loomaaed.tartu.ee:80 (http://www.loomaaed.tartu.ee/loomafail.cgi):
 connected to www.loomaaed.tartu.ee:80, seq=0 time=11.99+501.00=512.99 ms 200 OK
 connected to www.loomaaed.tartu.ee:80, seq=1 time=10.20+475.94=486.14 ms 200 OK
 connected to www.loomaaed.tartu.ee:80, seq=2 time=9.71+471.03=480.74 ms 200 OK
 connected to www.loomaaed.tartu.ee:80, seq=3 time=10.88+420.74=431.62 ms 200 OK
 connected to www.loomaaed.tartu.ee:80, seq=4 time=9.99+336.93=346.92 ms 200 OK

kus on kasutatud võtmeid

  • -s - esitab http päringu vastuse nn http koodi, st 200, 403, 404, 500 jne
  • -S - esitab vastuses eraldi tcp ühenduse moodustamiseks ja vastuse saamiseks kulunud aja
  • -i - päringuid esitamise intervall sekundites
  • -r - nimelahendus sooritatakse vaid üks kord
  • -g - esitatakse GET päringuid, vaikimisi esitatakse HEAD päringuid

Üks abiks httping programmi kasutusjuht võiks olla näiteks veebikoha koormustesti ajal jälgida milline nö tavakasutaja jaoks võiks kõnealuse veebikoha kättesaadavus.

https teenuse jälgimiseks sobib öelda

 $ httping -G -l -g "/index.html" -h 192.168.10.12
  • -l - pöörduda https abil

tcpstat

Vahel on selle programmi kasutamine muutnud süsteemi ebastabiilseks, tõenäoliselt on seoses konkreetselt kasutuses oleva riistvaraga. Muidu aga võimaldab ta jälgida tingimustele vastava andmevahetuse kiirust

 # tcpstat -i vlan13 -o "Time:%S\tn=%n\tavg=%a\tstddev=%d\tBaitspersecond=%B\n" -f "tcp and host 192.168.110.149" 10

kus

  • -i - võrguseade
  • -o - väljundi formaat
  • -f - nö tcpdump formaadis filter
  • 10 - väljundi esitamise intervall, kusjuures kui andmeid ei ole, siis intervalli möödudes nö nulle ei esitata

tcptrace

tcptrace on üks paljudest programmidest, millega esitada salvetatud võrguliikluse kohta ülevaatlikke andmeid, võimalik, et programmi kõige olulisem väärtus on pedagoogiline väärtus

 $ tcptrace -l tt.log
 1 arg remaining, starting with 'tt.log'
 Ostermann's tcptrace -- version 6.6.1 -- Wed Nov 19, 2003
 
 54 packets seen, 54 TCP packets traced
 elapsed wallclock time: 0:00:00.007053, 7656 pkts/sec analyzed
 trace file elapsed time: 0:00:02.787589
 TCP connection info:
 1 TCP connection traced:
 TCP connection 1:
       host a:        moraal.auul:52081
       host b:        ftp.loomaaed.tartu.ee:22
       complete conn: yes
       first packet:  Sat Oct 10 12:56:15.713740 2009
       last packet:   Sat Oct 10 12:56:18.501330 2009
       elapsed time:  0:00:02.787589
       total packets: 54
       filename:      tt.log
  a->b:                              b->a:
    total packets:            30           total packets:            24      
    ack pkts sent:            29           ack pkts sent:            24      
    pure acks sent:           14           pure acks sent:            7      
    sack pkts sent:            0           sack pkts sent:            0      
    dsack pkts sent:           0           dsack pkts sent:           0      
    max sack blks/ack:         0           max sack blks/ack:         0     
    ..
    data xmit time:        2.547 secs      data xmit time:        2.547 secs 
    idletime max:         1141.1 ms        idletime max:         1151.3 ms   
    throughput:             1291 Bps       throughput:             1072 Bps

Wireshark

Tarkvara Wireshark eelised avalduvad tema ülevaatlikkust võimaldavas graafilises kasutajaliideses, kus on võimalus

  • liiklust filtreerida nt otspunktide ip aadresside, protokolli vms parameetrite alusel
  • saab hõlpsasti eristada liiklusest tcp sessioone
  • saab ülevaatlikult näha paketi kapseldust OSI kihtide mõttes

Lihtne wiresharki kasutusjuhus tööarvutis

Käivita wireshark programm. Vajuta nupule "List available capture interfaces..." (tööriistariba kõige vasakpoolsem nupp) ja seejärel võib alustada pakettide püüdmist soovitud võrguaadressil. Pakettide püüdmise lõpetab nupp "Stop the running live capture".

Kui võrguliiklust on palju, võib wiresharki väljund tulla liiga kirju. Otsitava informatsiooni väljafiltreerimiseks võib kasutada erinevaid filtreid (trükkida Wiresharki filtriribale):

  • ip.addr == 192.168.1.253 - Näitab ainult pakette, mis kas pärinevad või on suunatud antud aadressile
  • tcp.port == 22 - Näitab ainult pakette, mis kas pärinevad või on suunatud TCP porti 22
  •  !(udp.port == 80) - näitab ainult pakette, mille src ega dst pooles ei esine port 80

Erinevaid filtreid saab kombineerida loogiliste tehetega: &&, ||, !

Wireshark kasutamist on keerukamatel juhtudel mõistlik korraldada nii, et tulemüüris/serveris salvestatakse liiklus tcpdump abil faili ning see fail kopeeritakse töökohaarvutisse kuhu on paigaldatud Wireshark. Wireshark kasutajaliides näeb välja selline, antud juhul on kuulatud pealt liiklust tulemüürist ftp.aso.ee arvutiga

 # tcpdump -n -i eth0 -s 1600 -w /tmp/ftp.aso.ee.log host ftp.aso.ee

Seejärel on käivitatud wireshark

 linux$ wireshark ftp.aso.ee.log

Wiresharkis on filtreeritud välja ainult liiklus ftp.aso.ee arvutiga (kui seda praktiliselt pole ka vaja filtreerida, kuna ainult seda kuulatigi tcpflow'ga). Allolevalt pildilt on näha kuidas Wireshark esitab väljundit kolmas üksteise kohal paiknevas raamis

  1. ülemises raamis on esitatud filtreeritud 10 paketti, järjekorranumber, aeg, lähte ja siht aadress, protokoll ja muu info
  2. keskmises raamis esitatakse ülemises raamis ära märgitud paketi kapseldatud koosseis, on näha ISO kihid kusjuures wireshark interpreteerib lisaks paketi nn payloadis olevaid andmeid
  3. alumises raamis on esitatud paketi sisu kõrvuti kahes tulbas, 16nd süsteemis ning võimalusel vastavad ascii sümbolid, kusjuures keskmises raamis märgitule on ära vastav osa ära tähistatud

Wireshark-ftp.aso.ee.log-1.gif

Näiteks võib antud juhul jälgida kuidas ühenduse loomiseks ja lõpetamiseks on vahetatud vastavalt kolm ja kolm paketti, ning sisuliste andmete vahetamiseks on kokku saadetud neli paketti. Välja arvatud erijuhud üldiselt ongi nii, et andmevahetusel osapooled saadavad üksteisele samas suurusjärgus pakette, isegi kui tegu on sisuliselt ühesuunalise andmevahetusega. Ja eriliselt võiks antud juhul tähele panna, et tcp ühenduse sees saadetakse andmeid mõlemas suunas.

Antud juhul kuuluvad juba tcpdump abil salvestatud ühte tcp sessiooni, kuid wiresharkil on võimalus suuremat hulgast pakettidest välja filtreerida ka ühe tcp sessiooni. Selleks tuleb ülemises raamis valida mingi paketi peal olles hiire parema nupuga avanevast hüpikmenüüst 'Follow TCP Stream' ning esitakse sessioonis toimunud http get päringu sisu ja vastuse sisu

Wireshark-ftp.aso.ee.log-2.gif

editcap ja mergecap kasutamine

editcap programmiga saab varem salvestatud pcap formaadis faili osadeks jagada, nt pakettide arvu järgi, tulemusena tekivad osad* nimelised failid

# editcap -c 100 tcp.log osad

mergecap programmiga saab pcap formaadis osad ühendada kokku üheks failiks, nt

# mergecap -w tcp-kokkuyhendatud.log osad*

capinfos

Salvestatud pcap faili kohta saab küsida capinfos programmiga, nt

# capinfos tcp.log 
File name:           tcp.log
File type:           Wireshark/tcpdump/... - libpcap
File encapsulation:  Ethernet
Number of packets:   1000
File size:           590818 bytes
Data size:           592758 bytes
Capture duration:    6 seconds
Start time:          Sat Oct 22 20:06:11 2011
End time:            Sat Oct 22 20:06:16 2011
Data byte rate:      106709.45 bytes/sec
Data bit rate:       853675.63 bits/sec
Average packet size: 592.76 bytes
Average packet rate: 180.02 packets/sec

RSA võtmevahetusega SSL liikluse dekrüptimine

tcpbench

OpenBSD nn baas sisaldab tcpbench utiliiti, mille abil saab otsekoheselt testida kahe OpenBSD arvuti vahelist võrguühendust. Utiliidi kasutamisel hakkab klient serverisse kopeerima maksimaalse võimaliku suurusega tcp pakette, tegevuse käigus esitavad klient ja server programmi väljundis toimuvat andmevahetust iseloomustavat infot

 server# tcpbench -s 
    pid   elapsed_ms          bytes         Mbps 
  25537         1009       20811800      165.009 
  25537         2009       20610544      165.049 
  25537         3013       20230168      161.197 
  25537 closed by remote end
 klient#  tcpbench 192.168.10.8                  
    pid   elapsed_ms          bytes         Mbps 
   2628         1026       20990016      163.665 
   2628         2008       20460296      166.683 
   2628         3037       20230168      157.433 
 ^Ctcpbench: Terminated by signal 2

ssldump

ssldump võimaldab SSL/TLS liiklust analüüsida, tarkvara paigaldamiseks tuleb öelda Debian keskkonnas

 # apt-get install ssldump

FreeBSD's asub pakett net/ssldump

ja kasutamiseks nt

 # ssldump -i eth0 -d port 993
 New TCP connection #1: moraal.auul(49305) <-> smtp.loomaaed.tartu.ee(993)
 1 1  0.0100 (0.0100)  C>S  Handshake
       ClientHello
         Version 3.1 
         resume [32]=
           9c 5e 98 a5 0c 7a e1 f6 59 70 cb 42 ff 7e d0 2c 
           0c d6 03 57 34 e5 01 74 4e 4f fb 70 3b a5 61 02 
         cipher suites
         Unknown value 0xc00a
         TLS_RSA_WITH_RC4_128_MD5
         TLS_RSA_WITH_RC4_128_SHA
         TLS_RSA_WITH_3DES_EDE_CBC_SHA
         ...
         compression methods
                   NULL
 1 2  0.0342 (0.0242)  S>C  Handshake
       ServerHello
        Version 3.1 
         session_id[32]=
           9c 5e 98 a5 0c 7a e1 f6 59 70 cb 42 ff 7e d0 2c 
           0c d6 03 57 34 e5 01 74 4e 4f fb 70 3b a5 61 02 
         cipherSuite         Unknown value 0x35
         compressionMethod                   NULL
 1 3  0.0342 (0.0000)  S>C  ChangeCipherSpec
 1 4  0.0342 (0.0000)  S>C  Handshake
 1 5  0.0349 (0.0006)  C>S  ChangeCipherSpec
 1 6  0.0349 (0.0000)  C>S  Handshake
 1 7  0.0443 (0.0094)  S>C  application_data
 1 8  0.0450 (0.0006)  C>S  application_data
 1 9  0.0546 (0.0095)  S>C  application_data
 ..

kust on näha

  • C>S, S>C - vastavalt kliendilt serveri ja serverilt kliendi suunal toimuv liiklus
  • ClientHallo, ServerHallo, jt - kliendi ja serveri vahel toimub SSL ühenduse parameetrite kokkuleppimine
  • application_data - antud juhul jääb ssldump jaoks sisuline andmevahetus ligipääsemata

Kui lisaks on kasutada ssl võtmed, siis saab teatud juhtumitel ka liikluse sisu debugida, nt https puhul

 # cat www.loomaaed.tartu.ee.key www.loomaaed.tartu.ee.crt > www.pem
 # ssldump -i eth0 -d -k www.pem port 443
 ..
 1 10 0.0849 (0.0341)  C>S  application_data
     ---------------------------------------------------------------
     GET /text.html HTTP/1.1
     Host: 192.168.10.53
     User-Agent: Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.0.14) \
       Gecko/2009091010 Iceweasel/3.0.6 (Debian-3.0.6-3)
     Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
     Accept-Language: en-us,en;q=0.5
     Accept-Encoding: gzip,deflate
     Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7
     Keep-Alive: 300
     Connection: keep-alive
     Pragma: no-cache
     Cache-Control: no-cache
    
     ---------------------------------------------------------------
 1 11 0.0857 (0.0007)  S>C  application_data
     ---------------------------------------------------------------
     HTTP/1.1 200 OK
     Date: Fri, 23 Oct 2009 06:32:59 GMT
     Server: Apache/2.2.9 (Debian) mod_jk/1.2.26 mod_ssl/2.2.9 OpenSSL/0.9.8g
     Vary: Accept-Encoding
     Content-Encoding: gzip
     Content-Length: 266
     Keep-Alive: timeout=15, max=100
     Connection: Keep-Alive
     Content-Type: text/html; charset=iso-8859-1

Seejuures tuleb veebiserveris kasutada sobivat SSLCipherSuite väärtust, nt selline töötab nö natuke

 SSLCipherSuite RSA:-HIGH:MEDIUM:-EXP:-DH

Kasutatud järgnevusele 'RSA:-HIGH:MEDIUM:-EXP:-DH' vastavaid väärtusi näeb

 # openssl ciphers -v 'RSA:-HIGH:MEDIUM:-EXP:-DH'
 DES-CBC-SHA             SSLv3 Kx=RSA      Au=RSA  Enc=DES(56)   Mac=SHA1
 RC4-SHA                 SSLv3 Kx=RSA      Au=RSA  Enc=RC4(128)  Mac=SHA1
 RC4-MD5                 SSLv3 Kx=RSA      Au=RSA  Enc=RC4(128)  Mac=MD5 
 NULL-SHA                SSLv3 Kx=RSA      Au=RSA  Enc=None      Mac=SHA1
 NULL-MD5                SSLv3 Kx=RSA      Au=RSA  Enc=None      Mac=MD5 
 DES-CBC-MD5             SSLv2 Kx=RSA      Au=RSA  Enc=DES(56)   Mac=MD5 
 RC2-CBC-MD5             SSLv2 Kx=RSA      Au=RSA  Enc=RC2(128)  Mac=MD5 
 RC4-MD5                 SSLv2 Kx=RSA      Au=RSA  Enc=RC4(128)  Mac=MD5

Lisaks saab ssldump jaoks kaustada tcpdump abil kogutud pcap faili (eriti see on -s 0 võtmega salvestatud)

$ ssldump -r failinimi.pcap

ICMP redirect

Olgu selliste ruutingutega olukord

                                 ....
                                  |
                                 _|_   tulemüür
                                |   |  vaikelüüs, kus on kirjeldatud staatiline ruuting 192.168.201.0/24 -> 192.168.2.201
                                |___|  192.168.2.1
       192.168.2.0/24             |
  --|-------------------|--------------|--
   _|_                 _|_             
  |   | 192.168.2.30  |   |  192.168.2.201
  |___| host-1        |___|  ruuter-2
                        |
                        |    192.168.201.0/24
                   -----|-------------------------|---
                                                 _|_
                                                |   | 192.168.201.30
                                                |___| host-2

ICMP redirect http://en.wikipedia.org/wiki/ICMP_Redirect_Message sõnumiga juhatab tulemüür host-1 pöörduma host-2 poole läbi ruuter-2 seadme.

09:42:25.399922 192.168.2.1 > 192.168.2.30: icmp: redirect 192.168.201.30 to host 192.168.2.201

Parasjagu kehtivad redirectid ei ole paista linux hostis ei nö tavalistes arp ega route andmebaasides, vaid

# cat /proc/net/rt_cache

Sissekande kustutamiseks tuleb vastav ruuting eemaldada ja tagasi tekitada, näiteks.

ARP flux

Olgu üks arvuti on oma kahe füüsiliste võrguseadmega ühendatud sama etherneti peale ning seal ethernetis on veel teisi arvuteid

           --|--|---------------------------|----------------
     eth0   _|__|_   eth1                  _|_             
10.0.2.30  |      |  192.168.2.30         |   |  192.168.2.201
           |______|                       |___|
         
            host-1                        host-2

Tundub, et reeglina käituvad 2011 aastal Linux distributsioonide tuumad selliselt, et joonisel kujutatud ühenduse puhul vastab host-2 poolt aadressile 192.168.2.30 tehtud arp päringule host-1 kahe arp vastusega, kummagi ethernet seadme mac aadressiga, kusjuures host-2 kasutab esimesena kohale jõudnud vastust järgnevaks andmevahetuseks. Selline olukord põhjustab selles mõttes segadust, et kui host-1 võrguseadmed on sarnaste omadustega, siis vahel kasutab host-2 ühe ja vahel teise ethernet seadme mac aadressi ning liiklus käib vastavalt läbi ühe või teise host-1 võrguseadme (lisaks võib ka nii olla, et ühes suunas liiguvad paketid läbi host-1 eth0 ja teises suunas läbi eth1 seadme). Kui host-1 peal ei ole paketifiltrit seadistatud, siis seal töötavate rakenduste jaoks andmevahetus töötab, kuid nt võrgu debugimine on raskendatud.

Selleks, et host-2 arp päringule vastaks host-1 vaid selle mac aadressiga, millele vastava võrguseadme kaudu toimuks ip mõttes korrektne ruuting sobib öelda host-1 arvutis

# sysctl -w net.ipv4.conf.all.arp_filter=1

Kasulikud lisamaterjalid

tcpkill

tcpkill programmi abil saab ühenduse osapoolele saata sobiva RST paketi eesmärgiga ühendus lõpetada, tarkvara paigaldamiseks tuleb nt Debian Lenny keskkonnas paigaldada pakett dsniff

# apt-get install dsniff

ja kasutamiseks öelda

# tcpkill -i eth0 port 80 and host ftp.loomaaed.tartu.ee

Tulemusena jääb tcpkill käima arvuti eth0 seadmel ja tegeleb näidatud regulaaravaldisega klappivate ühendustega.

lsof

Kasutaja priit (-u priit) programmiga Firefox (-c firefox-bin) seotud võrguühenduste (-i) esitamine

$ lsof -n -a -u priit -c firefox-bin -i
COMMAND     PID USER    FD   TYPE  DEVICE SIZE NODE NAME
firefox-b 22322 priit   51u  IPv4 1870238       TCP 192.168.10.10:53360->113.184.32.83:https (ESTABLISHED)
firefox-b 22322 priit   72u  IPv4 1870025       TCP 192.168.10.10:35441->74.125.43.100:www (ESTABLISHED)
firefox-b 22322 priit   73u  IPv4 1870035       TCP 192.168.10.10:53903->74.125.10.213:www (ESTABLISHED)

kus

  • -n - mitte teisendada ip aadresse nimedeks
  • -a - järgnevad muud suvandid loogiliselt korrutada
  • PID - protsessi ID

Pordile vastava protsessi küsimine

# lsof -i :514
COMMAND  PID     USER   FD   TYPE             DEVICE SIZE/OFF NODE NAME
syslogd 6628 _syslogd    4u  IPv4 0xfffffe803f51d000      0t0  UDP *:syslog

Kasulikud lisamaterjalid

strace

strace kasutusala on laiem, kuid seoses võrguga on tal samuti rakendus, nt esitada jooksvalt protsessiga seotud võrgu syscallid, 4940 on w3m brauseri protsess

# strace -e trace=network -p 4940
...
socket(PF_NETLINK, SOCK_RAW, 0)         = 4
bind(4, {sa_family=AF_NETLINK, pid=0, groups=00000000}, 12) = 0
getsockname(4, {sa_family=AF_NETLINK, pid=4940, groups=00000000}, [12]) = 0
...

Arpwatch

Võimaldab jälgidan võrgus liikuvaid ARP teateid ning avastada ARP tabeli mürgitamisjuhtumeid

Koduleht

arbi mürgitamise täpselt toimimine ja selle takistamine

Mõned võrguhaldurile abiks skriptid

Ettercap

Ettercap http://ettercap.sourceforge.net/ tarkvara võimaldab kohtvõrgus korraldada MITM tüüpi ründeid ja seejuures kontrollida kui tundlik kohtvõrk on selliste rünnete suhtes sh kas need avastatakse. Ettercap kasutab oma tööks põhiliselt arp-mürgitamist (ingl. k. arp poisoning). Tarkvara paigaldamiseks on tavaliselt piisav paigalda operatsioonisüsteemi paketihaldusvahenditega ettercap nimeline pakett. Ettercap programmi saab käivitada kolme erineva kasutajaliidesega

  • käsurealt -ettercap -T
  • curses liidesega - ettercap -C
  • gtk gui liidesega - ettercap -G

Kasulikud lisamaterjalid

Scapy

Scapy http://www.secdev.org/projects/scapy/ abil saab töötada pakettidega. Tarkvarale on tehtud Python keeles ja sellele on iseloomulik, et saab nö programmeerimise võtteid kasutades nt koostada sobiva sisuga paketi ja saata võrku; seejärel saab käsitleda sarnaselt vastuseks tulnud paketti. Scapy sisaldab mitmeid lisasid, nt saab lasta esitada graafiliselt traceroute tulemuse. Tarkvara paigaldamiseks sobib paigaldada nt Debian Squeeze all pakett python-scapy

# apt-get install python-scapy

Lisaks on vajalikud

# apt-get install tcpdump graphviz imagemagick

Interaktiivselt käivitamiseks tuleb öelda

# scapy
...
Welcome to Scapy (2.1.0)
>>> res,unans = traceroute(["www.eesti.ee", "www.eenet.ee"],dport=[80,443],maxttl=20,retry=-2)
..
>>> res.graph()

Tulemusena esitatakse sarnane pilt

Scapy-1.gif

Scapy sisaldab mitmeid funktsioone, millega pakette moodustada, neid välja saata ning vastuseid lugeda

  • ICMP paketi saatmine
>>> send(IP(dst="192.168.10.123")/ICMP())
  • DNS päringu esitamine
>>> sr(IP(dst="10.192.0.53")/UDP()/DNS(rd=1,qd=DNSQR(qname="www.loomaaed.tartu.ee")))
  • etteantud subnetti kuuluva juhusliku src aadressiga pakettide saatmine
>>> send(IP(src=RandIP("192.168.10.0/24"), dst="10.192.0.53")/TCP(dport=80,flags="S"), loop=1)

Socat

  • Pordi edasisuunamine
# socat TCP-LISTEN:8888,fork TCP:192.168.1.4:80
  • pordi edasisuunamine lokaalselt (mida tavaliselt tehakse paketifiltri abil)
# socat TCP-L:2323 TCP:localhost:22
  • unixi soketi ühendamine interneti soketiga, kuulaku unix soketil MySQL ning peab saama hakata pöörduma MySQL poole üle võrgu arvuti mõnel ip aadressil, port 3308
# socat -v tcp-l:3308,bind=192.168.10.10,reuseaddr,fork unix:/var/run/mysqld/mysqld.sock
  • remote shell (nt sellepärast võiks pigem olla serverite pordid tulemüürist vaikimisi blokeeritud), EXEC täidetakse kliendi pöördumisel
server:~$ socat TCP-LISTEN:2323,reuseaddr,fork EXEC:/bin/bash

ja vastav klient

$ socat STDIO TCP:server-loomaaed:2323
hostname -f
server.loomaaed
...
  • PostgreSQL soketi suunamine üle võrgu
tookohaarvuti$ socat "UNIX-LISTEN:/tmp/.s.PGSQL.5432,reuseaddr,fork" \
  EXEC:'ssh postgres@192.168.1.105 socat STDIO UNIX-CONNECT\:/var/run/postgresql/.s.PGSQL.5432'

kasutamiseks öelda, kusjuures EXEC täidetakse, st ssh ühendus käivitatakse alles psql kliendi abil pöördumisel

tookohaarvuti$ psql -h /tmp -U postgres

Faili sisu esitamiseks üle võrgu, kasutamiseks nt netcat abil pöörduda

$ socat -u FILE:/opt/suricata/var/log/suricata/eve.json,ignoreeof TCP4-LISTEN:12345,fork,reuseaddr

Kasulikud lisamaterjalid

vnstat

Tarkvara paigaldamiseks sobib öelda nt

# apt-get install vnstat

Kasutamine paistab välja nt selline

# vnstat -l
Monitoring eth0...    (press CTRL-C to stop)

  rx:        0 kbit/s     1 p/s          tx:        0 kbit/s     0 p/s^C

 eth0  /  traffic statistics

                           rx         |       tx
--------------------------------------+------------------
  bytes                   385.08 MiB  |      990.42 MiB
--------------------------------------+------------------
          max           88.19 Mbit/s  |   227.04 Mbit/s
      average           57.36 Mbit/s  |   147.52 Mbit/s
          min               0 kbit/s  |        0 kbit/s
--------------------------------------+------------------
  packets                    4588718  |         3670125
--------------------------------------+------------------
          max             128266 p/s  |      102612 p/s
      average              83431 p/s  |       66729 p/s
          min                  1 p/s  |           0 p/s
--------------------------------------+------------------
  time                    55 seconds

kus

  • rx, tx - vastavalt saabumised ja väljumised
  • bytes, packet - andmete mahu ja pakettide arvu järgi

iptstate

iptstate kasutab kerneli conntrack sistemat ja esitab võrguliikluse kohta andmeid, tarkvara paigaldamiseks

# apt-get install iptstate

Kasutamiseks peab olema laaditud nt ip_conntrack moodul

# modprobe ip_conntrack

Käivitamiseks öelda

# iptstate

ja paistab sarnane pilt

TODO

Tundub, et samad andmed on teksti kujul esitatavad selliselt

# cat /proc/net/ip_conntrack

tcptrack

Programm tcptrack annab top väljundi sarnase ülevaate toimuvatest tcp ühendustest. Paigaldamiseks sobib öelda

# apt-get install tcptrack

Kasutamiseks nt

# tcptrack -i eth0 -r 10 port 80

ja paistab selline pilt

TODO

conntrack

# modprobe nf_conntrack_ipv4
# conntrack -p tcp --dport 80 -E -e NEW | pv -l -i 1 -r > /dev/null

Kasulikud lisamaterjalid