6107 Operativsystemer og nettverk Labøving 5 Transportlaget: porter, forbindelser og pakkeformater Introduksjon I denne øvingen skal du studere TCP-protokollen og hvordan TCP etablerer og lukker forbindelser når protokollene på applikasjonslaget har behov for det. Du skal bruke analyseprogrammet WireShark for å fange trafikk og studere pakkehodet i TCP-pakkene som sendes. Hvis du ikke alt har installert WireShark finner du oppskriften i labøving 3a Analysere webtrafikk med Wireshark. Oppgave 1: TCP-porter og TCP-forbindelser fra SFTP 1. Logg inn på Linux-maskinen via Putty fra Windows. 2. Kjør Linux-kommandoen netstat ant som viser alle åpne TCP-porter/-forbindelser på maskinen: Forklar betydningen av hver kolonne i utlistingen: Hvor mange av portene/forbindelsene har tilstand ESTABLISHED? Hvilket portnummer har denne forbindelsen (ESTABLISHED) på tjenersiden? Hvilket portnummer har denne forbindelsen (ESTABLISHED) på klientsiden? Hvilken maskin er klient i denne forbindelsen? Hvilken protokoll og program er det som bruker denne forbindelsen? 3. Kjør kommandoen netstat -anu Hvilken betyr parameteren u? Hvorfor vises det ingen åpne porter/forbindelser nå? 4. Bruk FileZilla på Windows og koble opp en SFTP forbindelse mot Linux maskinen. 5. Kjør kommandoen netstat -ant på nytt på tjeneren Hvor mange av portene/forbindelsene har nå tilstand ESTABLISHED? Hvilken maskin er "Foreign Address" for den nye forbindelsen? Hva er portnummer på tjenersiden av den nye forbindelsen? Hvorfor er dette det samme som til forbindelsen i pkt.2? Hva er portnummer på klientsiden av SFTP-forbindelsen? 1
Hvorfor er dette forskjellig fra forbindelsen i pkt 2? 6. Start et Windows kommandovindu i admin-modus (Command Prompt (Admin)) 7. Kjør kommandoen netstat an p tcp og finn SFTP-forbindelsen i listen. (Let etter forbindelser med port 22 under Foreign Address) Hvilken tilstand (State) har TCP-forbindelsen? Hvilken maskin er "Foreign Address" her? Hva blir socketadressen til forbindelsen på tjenersiden? Hva blir socketadressen til forbindelsen på klientsiden? 8. Bruk menyvalget Server Disconnect i FileZilla for å bryte SFTP-forbindelsen. 9. Kjør netstat -ant på nytt på tjenersiden Finner du TCP-forbindelsen for SFTP i listen nå? Hvis du ikke ser den: Hvorfor? Hvis du ser den: Hvilken tilstand (State) har TCP-forbindelsen nå? 10. Bytt til FileZilla og logg inn på nytt (menyvalg Server Reconnect) 11. Kjør netstat -ant på tjeneren enda en gang. Hvilket portnummer har den nye (etablerte) forbindelsen på klientsiden? Hvorfor er dette forskjellig fra klientens portnr i pkt. 5. 12. Bytt til FileZilla, og bryt forbindelsen til tjeneren. Oppgave 2 TCP-porter og TCP-forbindelser fra HTTP 1. Kontroller at Apache-tjeneren på Linux-serveren lytter på port 80. (Hvis ikke, må du endre portnummer i filen /etc/apache2/ports.conf) 2. Gjør endring i filen /etc/apache2/apache2.conf slik at parameteren KeepAliveTimeout settes til 30 sekunder. 3. Restart Apache. 4. Svar på følgende på Linux maskinen: Hvor mange åpne TCP-porter finner du med portnr 80 på tjeneren? Hva er tilstanden (State) til disse TCP-porten(e)? 2
5. Start en nettleser på Windows-maskinen (f.eks. IE/Edge) og slå opp default webside på Apache tjeneren din. Hvor mange åpne TCP-porter finner du nå med portnr 80 på tjeneren? Hvor mange av disse går mot Windows-maskinen? Hvilke tilstand (State) har disse forbindelsen(e)? Kan du forklare dette (hva som har skjedd)? 6. Kjør netstat an p tcp fra kommandovinduet i Windows og svar på følgende: Hvor mange TCP-forbindelser har nettleseren etablert mot webtjeneren Apache? Hvilke tilstand (State) har denne/disse forbindelsen(e) på klientsiden? Hva er portnummeret på klientsiden for forbindelsen(e)? 7. Vent ca. 30 sekunder og kjør netstat -ant på nytt på Linux maskinen. Hva er tilstanden (State) til TCP-porten(e) med portnr 80 nå? 8. Kjør netstat -ant flere ganger inntil TCP-forbindelsen(e) mot Windows maskinen forsvinner. 9. Bytt til nettleseren på Windows og gjenoppfrisk (refresh) siden med F5. 10. Kjør netstat an p tcp på nytt på Windows maskinen Hva har skjedd når du refreshet websiden? Hvorfor har de nye forbindelsene et annet portnummer på klientsiden enn de du fant i pkt. 6? 3
Oppgave 3 Analysere SFTP/TCP-trafikk med Wireshark Bruk Windows-maskinen i denne oppgaven 1. Avslutt alle andre programmer og start Wireshark og FileZilla, men ikke logg inn med FileZilla. 2. Start en pakkefangst i Wireshark og gjør deretter følgende i FileZilla: Etabler en SFTP forbindelse til Ubuntutjeneren din Overfør en fil Windows-maskinen til Linux Koble ned SFTP sesjonen. 3. Avslutt pakkefangsten i Wireshark og lagre loggen i en fil med navn SFTP-trafikk. 4. Velg menyvalg Analyze Display filters og lag et nytt filter som kun viser pakker som inneholder IP-adressen til Linux-serveren. 5. Lukk filtervinduet, og velg å bruke filteret fra symbolet til venstre i filterlinjen: Etablering av forbindelse 6. Åpne TCP-pakkehodet på den første av TCP-pakkene og svar på følgende: Hva er avsenders portnummer i denne pakken? Hva er mottakers portnummer i denne pakken? Hva er sekvensnummeret i denne pakken? Hva er kvitteringsnummeret i denne pakken? Hvilke(t) bitflagg er satt i denne TCP-pakken? Hva betyr dette bitflagget? Hva er vindustørrelsen satt til i denne pakken? Obs! Bruk feltet Calculated window size 7. Åpne TCP-pakkehodet på den andre TCP-pakken og svar på følgende: Hva er avsenders portnummer i denne pakken? Hva er mottakers portnummer i denne pakken? 4
Hva er sekvensnummeret i denne pakken? Hva er kvitteringsnummeret i denne pakken? Hvilken pakke er denne en kvittering for? Hvilke bitflagg er satt i denne TCP-pakken? Forklar betydningen av bitflaggene: Hva er kalkulert vindustørrelse satt til i denne pakken? 8. Finn den tredje TCP-pakken og svar på følgende: Hva er avsenders portnummer i denne pakken? Hva er mottakers portnummer i denne pakken? Hvilke(t) bitflagg er satt i denne TCP-pakken? Hvilke funksjon har denne tredje pakken? Hvilken oppgave har disse tre pakkene (pkt. 6-8) til sammen? Hvilken maskin tok initiativ til å etablerte TCP-forbindelsen mellom de to maskinene? Overføring av data 9. Finn den første pakken etter at TCP-forbindelsen er etablert. Hvilken protokoll overtar etter at TCP-forbindelsen er etablert? Hvilket program er avsender av nyttelasten i denne pakken? 10. Finn SSH-meldingen som er svar fra tjeneren på pakken i pkt. 9? Er nyttelasten i denne pakken lesbar? Hva tror du pakkene med Client:/Server: Key Exchange Init brukes til? 11. Finner du noen pakker der du kan lese brukernavn og passordet som du logget inn med? 12. Marker den første av pakkene som har Client: Encrypted packet i kollonnen Info Hvilket lag i OSI modellen tror du SSH protokollen tilhører? Inneholder denne pakken nyttelast fra applikasjonslaget? Er innholdet i nyttelasten lesbar i WireShark? Hvorfor/ hvorfor ikke? 5
Nedkobling av TCP-forbindelse 13. Finn første TCP-pakke med FIN flagget satt (etter at SSH er ferdig med å overføre data). 14. Hvilken maskin har sendt denne pakken? Hva betyr FIN flagget? Hvilke flagg sender den andre maskinen som svar på denne pakken? Hvor mange TCP-pakker blir brukt for å koble ned TCP-forbindelsen? Oppgave 5 Analysere HTTP/TCP-trafikk med Wireshark 1. Start Wireshark og en webleser (f.eks. Edge eller Chrome) på Windows maskinen. 2. Slett midlertidige internett filer / historikk / logg i nettleseren. 3. Start en pakkefangst i Wireshark og fang pakker fram til pkt. 7. 4. Slå opp websiden på Apache-tjeneren din fra webleseren. 5. Bruk netstat -ant på tjenersiden for å sjekke status på TCP-forbindelsen som HTTP bruker. Hvor mange TCP-forbindelser finner du fra klienten til webtjeneren? 6. Kjør netstat -ant til disse forbindelsen(e) er borte. 7. Avslutt pakkefangsten i Wireshark og lagre loggen i en fil med navn HTTP-trafikk. 8. Bruk filteret som bare tar med pakker som inneholder IP-adressen til Linux-serveren. Hvor mange TCP-handshake finner du i listen? Hvis du finner mer enn ett TCP-handshake: Hva betyr det? 9. Finn den første pakken som inneholder HTTP, etter TCP-handshake pakkene Hva er innholdet (nyttelasten) i denne TCP-pakken? Hvilken maskin er avsender av denne pakken? Hva er portnummer til avsender av denne pakken? Hva er portnummer til mottaker av denne pakken? Hva er sekvensnummer i TCP-hodet til denne pakken? 10. Finn det første HTTP-svaret (HTTP-response) Hva er statuskoden i det første HTTP-svaret? 6
Hva er kvitteringsnummer i TCP-hodet i denne pakken? Hva er sekvensnummer i TCP-hodet til denne pakken? Hvor mange TCP-pakker med HTTP innhold blir totalt brukt for å sende html-koden? Tips: Se etter TCP-pakker fra tjeneren med Info-teksten «TCP segment of a reassembled PDU» Inneholder TCP-hodet noen sjekksum? 11. Finn det første av TCP-pakkene med HTTP-svaret Hva er sekvensnummer i TCP-hodet til denne pakken? Hvor mange byte nyttelast er totalt overført i dette HTTP-svaret? 12. Finn aller siste pakke som inneholder HTTP-nyttelast med fra tjeneren Hva er sekvensnummer i TCP-hodet til denne pakken? Hva er kvitteringsnummer i TCP-hodet til denne pakken? Hvor mange HTTP-forespørsler ble totalt brukt for å overføre alt innhold på websiden? Hvor mange byte med nyttelast fra HTTP-protokollen ble totalt overført fra tjener til klient? 13. Finn første TCP-pakke med FIN-flagget satt Hvilken maskin tar nå initiativ til nedkobling av TCP-forbindelsen(e) Hvor mange TCP-pakker blir brukt for nedkobling av hver TCP-forbindelse? 14. Se kolonnen Time i pakkelisten Hvor lang tid har det gått fra TCP-forbindelsen(e) ble etablert til de(n) ble koblet ned? Oppgave 6 UDP-porter 1. Installer Google Chrome på Windows-maskinen din, men ikke start Chrome 2. Bruk kommandovinduet i admin-modus i Windows og kjør kommandoen netstat an p udp Hvor mange åpne UDP-porter er det på maskinen? Hvorfor vises ingen adresser/portnummer i kolonnen Foreign Address? 3. Start Google Chrome og slå opp www.youtube.com og start en video 4. Kjør kommandoen netstat an p udp på nytt Er det flere åpne UDP-porter nå enn i pkt 2? Hvorfor vises fremdeles ingen adresser/portnummer i kolonnen Foreign Address? 7
5. Avslutt Google Chrome. Oppgave 7 Analysere UDP-trafikk med Wireshark 1. Bruk kommandovinduet i admin-modus i Windows og kjør kommandoen ipconfig /flushdns. (Dette tømmer det lokale DNS-bufferet i DNS-klienten.) 2. Start Chrome på nytt 3. Bruk WireShark og start en ny pakkefangst med et filter som bare viser UDP-protokollen 4. Slå opp www.youtube.com og start en ny video der. 5. Stopp videoen og pakkefangsten i WireShark etter 5-10 sekunder, og svar på følgende: Hvilke protokoller viser WireShark i kolonnen Protocol? Hvilken av disse protokollene tror du blir brukt for å overføre videoen? Bruk Google-søk og forklar hva protokollnavnet står for, hva slags protokoll det er og hvem som har utviklet den. Hvilket UDP-portnummer bruker denne protokollen på tjenersiden? Hvor store er typisk hver av UDP-pakkene som kommer fra tjenersiden? Hva kan du ellers si om nyttelasten som sendes med denne protokollen? 6. Filtrer listen slik at den bare viser DNS-protokollen. Finn en av DNS-pakkene og svar på følgende: Hvilken transportprotokoll bruker DNS? Hvilket portnummer bruker DNS på tjenersiden? Er DNS-pakkene kryptert? Oppgave 8 Flere TCP-verktøy 1. Installer verktøyet Microsoft TCPView fra denne lenken https://technet.microsoft.com/en-us/sysinternals/tcpview.aspx Eksperimenter med verktøyet og informasjonen du finner der. 2. Bruk Google for å finne flere TCP-verktøy (TCP tools) for Windows / Linux og test dem. 8