Porte er en af de vigtigste årsager til, at da­ta­pak­ker kan finde vej til deres ønskede desti­na­tion. De fungerer som græn­se­fla­der mellem computere og sy­stemtje­ne­ster eller pro­gram­mer og anvendes af net­værks­pro­tokol­ler­ne TCP og UDP. Sammen med IP-adressen kan ope­ra­tiv­sy­ste­mer­ne dermed finde ud af, hvilken computer og hvilket program de skal sende data til.

Hvad er po­rt­scan­ning? En kort for­kla­ring

Po­rt­scan­ning er en målrettet proces, hvor man ved hjælp af spe­ci­al­værk­tø­jer un­der­sø­ger, hvilke porte der er åbne i et com­pu­ter­sy­stem. Inden vi går nærmere ind på, hvad po­rt­scan­ning er, kan det være en god idé først at se på, hvad porte er. Porte fungerer som en græn­se­fla­de mellem aktive pro­gram­mer og in­ter­net­tet. De bruges til at vi­de­re­sen­de indgående og udgående da­ta­pak­ker til de rette pro­gram­mer og ad­mi­ni­stre­res af ope­ra­tiv­sy­ste­mer­ne.

Note

For at et program kan kom­mu­ni­ke­re via en port, skal denne være åben. At åbne porte udgør imid­ler­tid en risiko. Hvis et af de pro­gram­mer, der bruger porten, har sik­ker­heds­mæs­si­ge sår­bar­he­der, kan porten fungere som en potentiel indgang for angribere. For at minimere risikoen for et angreb bør du altid være opmærksom på, hvilke porte der er åbne på dit system, og hvilke pro­gram­mer der er knyttet til dem.

Du behøver ikke at være logget ind på mål­sy­ste­met for at kunne udføre en po­rt­scan­ning af det. Du skal blot være forbundet til det via et lokalt netværk eller in­ter­net­tet. Ved hjælp af po­rt­scan­ne­re kan du sende særlige da­ta­pak­ker som test til for­skel­li­ge porte. Du modtager derefter svar eller fejl­med­del­el­ser, som det værktøj, du bruger, ana­ly­se­rer. Afhængigt af scan­nings­pro­gram­mets funk­tions­om­fang kan du få op­lys­nin­ger om, hvilke porte der er åbne, og hvilke der er lukkede. Du kan også modtage data om, hvilke tjenester og/eller ap­pli­ka­tio­ner de respek­ti­ve porte bruger.

Po­rt­scan­ning giver sy­stemad­mi­ni­stra­to­rer et meget effektivt redskab til at overvåge da­ta­tra­fik­ken i et netværk. Ved hjælp af po­rt­scan­ning kan po­ten­ti­el­le sår­bar­he­der afdækkes, og systemets an­grebs­fla­de kan reduceres. I nogle tilfælde kan det hjælpe ad­mi­ni­stra­to­rer med at løse konkrete net­værks­pro­ble­mer. Derudover har værk­tø­jer­ne ingen mærkbar ind­fly­del­se på ydeevnen af de systemer, de scanner. Som følge heraf kan de bruges til sik­ker­heds­for­an­stalt­nin­ger uden at man behøver at bekymre sig om util­sig­te­de effekter på systemets ydeevne.

Po­rt­scan­ne­re er også nyttige til hjem­mecom­pu­te­re. Så snart du begynder at bruge pro­gram­mer, der kræver en in­ter­net­for­bin­del­se, åbnes der au­to­ma­tisk porte, medmindre din firewall for­hin­drer dette. En po­rt­scan­ning kan hjælpe dig med at bevare over­blik­ket og vise dig, hvilke porte der ikke længere er brug for. Du kan derefter lukke dem for at mindske sik­ker­heds­ri­si­ci­e­ne.

Hvordan fungerer po­rt­scan­ning?

Po­rt­scan­ne­re benytter mange for­skel­li­ge metoder. De fleste af disse in­vol­ve­rer dog den for­bin­del­ses­o­ri­en­te­re­de protokol TCP. For at forstå de grund­læg­gen­de processer, der finder sted under en po­rt­scan­ning, er det nyttigt at se nærmere på den generelle struktur i TCP-for­bin­del­ser:

  • Denne proces, der også kaldes et trevejs-håndtryk, begynder med, at klienten sender en SYN-pakke (syn­kro­ni­se­ring) til desti­na­tions­por­ten.
  • Når pakken når frem til en ap­pli­ka­tion, modtager klienten en kom­bi­ne­ret SYN/ACK-pakke (syn­kro­ni­ser/bekræft), som bekræfter, at for­bin­del­sen er oprettet.
  • I det tredje og sidste trin sender klienten en ACK-pakke (be­kræf­tel­se), som etablerer for­bin­del­sen, så da­ta­ud­veks­lin­gen kan begynde.

Hvis der oprettes for­bin­del­se til en lukket port, modtager klienten en RST-pakke (reset) i det andet trin, hvilket afslutter hånd­tryk­ket.

Da det ville være van­ske­ligt og tids­kræ­ven­de at udveksle data med for­skel­li­ge typer ap­pli­ka­tio­ner, er po­rt­scan­ning begrænset til enkle forsøg på at oprette for­bin­del­ser, som de følgende scan­nings­me­to­der viser.

TCP-SYN-scanning

Formålet med en TCP-SYN-scanning er ikke at oprette en fuld­stæn­dig TCP-for­bin­del­se. Derfor kaldes denne type scanning ofte en halvåben po­rt­scan­ning. Ved hjælp af po­rt­scan­ne­ren sender denne metode typiske SYN-pakker til enkelte porte og afventer et svar fra målværten. Hvis værten sender en SYN/ACK-pakke tilbage, indikerer det, at den på­gæl­den­de port er åben, og at det er muligt at oprette en for­bin­del­se. Hvis svaret er en RST-pakke, betyder det, at porten er lukket. Hvis der ikke kommer noget svar, kan dette sand­syn­lig­vis spores tilbage til et pak­ke­fil­ter (f.eks. en firewall), der er placeret opstrøms.

TCP-SYN-scan­nin­ger er ikke synlige for de ap­pli­ka­tio­ner, der testes, og genererer derfor ingen logdata. Derfor kaldes de også for »stealth-scan­nin­ger«.

TCP-for­bin­del­ses­scan­ning

Hvis du udfører en connect-scanning med din po­rt­scan­ner, genererer og sender du ikke selv da­ta­pak­ken. I stedet bruger du sy­stem­kal­det connect. Dette findes på næsten alle ope­ra­tiv­sy­ste­mer. Hvis et for­bin­del­ses­for­søg lykkes, betyder det, at porten er åben. Hvis for­bin­del­ses­for­sø­get mislykkes, betyder det, at porten er lukket. Hvis en for­bin­del­se blev oprettet (dvs. en port var åben), vil du kunne se, at denne scan­nings­tek­nik blev brugt i ap­pli­ka­tio­nens logfiler. Der vil dog ikke blive givet op­lys­nin­ger om de fil­tre­rings­pro­gram­mer, der blev brugt. Hvis du ikke har ret­tig­he­der­ne til at sende rå da­ta­pak­ker, kan TCP-connect-scan­nin­gen være et nyttigt al­ter­na­tiv til SYN-scan­nin­ger.

TCP-FIN-, Xmas- og Null-scan­nin­ger

Disse tre metoder til po­rt­scan­ning giver dig også mulighed for at skelne mellem åbne og lukkede porte. Her anvendes to grund­læg­gen­de begreber, som er beskrevet i RFC 793:

  1. Lukkede porte bør altid svare på pakker (så længe det ikke er RST-pakker) med deres egen RST-pakke.
  2. Åbne porte skal ignorere alle pakker, der ikke er markeret som SYN, RST eller ACK.

Når der scannes efter RCF-kom­pa­tib­le systemer, udnytter disse scan­nings­me­to­der disse prin­cip­per ved hjælp af deres egne pakker:

  • Null-scan­nin­gen bruger ingen særlige mar­ke­rin­ger.
  • Ved FIN-scan­nin­ger sender po­rt­scan­ne­ren FIN-pakker (finish)
  • Xmas- scan­nin­ger bruger en kom­bi­na­tion af FIN-, PSH- (push) og URG-mar­ke­rin­ger (urgent), hvilket får pakkerne til at lyse op som et juletræ.

Alle tre scan­nings­me­to­der fungerer på samme måde. I henhold til RCF-reglerne sikrer test­pak­ker­ne, at lukkede porte svarer med RST-pakker, og at åbne porte ikke re­tur­ne­rer noget svar. Ikke alle routere sender fejl­med­del­el­ser, hvis en port er filtreret, hvilket kan betyde, at der er tale om en filtreret port, hvis der ikke vises nogen med­del­el­se (ud over mu­lig­he­den for, at det kan være en åben port). Og selvom denne metode er langt mere diskret end SYN-scan­nin­ger, fungerer den muligvis ikke korrekt, hvis sy­ste­mer­ne ikke over­hol­der RFC 793 fuld­stæn­digt. Et frem­træ­den­de eksempel på dette er Windows.

UDP-scanning

Ved UDP-scan­nin­ger sendes tomme UDP-headere uden data til alle ledige porte. Hvis en tjeneste svarer med en UDP-pakke, er den på­gæl­den­de port åben. Modtager po­rt­scan­ne­ren fejl­med­del­el­sen »Port un­rea­chab­le« fra routeren (type 3, kode 3), re­gi­stre­rer den porten som lukket. Andre fejl­med­del­el­ser in­for­me­rer brugerne om, at det er pak­ke­fil­tre, der blokerer portene. Problemet med UDP-porttest er den enorme mængde tid, det kræver. Dette skyldes, at det for mange systemer kan tage lang tid at udsende fejl­med­del­el­ser af sik­ker­heds­mæs­si­ge årsager. Desuden svarer mange af disse systemer kun sporadisk på porte. Linux-kernen begrænser antallet af rapporter pr. sekund, hvilket betyder, at det ville tage omkring 18 timer at scanne 65.535 porte fuldt ud.

Hvilke po­rt­scan­ne­re findes der?

Der findes mange for­skel­li­ge scannere, der adskiller sig fra hinanden med hensyn til deres funk­tions­om­fang. De fleste af disse værktøjer er til­gæn­ge­li­ge som freeware eller open source -løsninger. Mange af disse in­de­hol­der klassiske kom­man­do­linje­pro­gram­mer, der kan bruges via separate grafiske græn­se­fla­der. Derudover findes der mange online-løsninger, der giver brugerne mulighed for at scanne porte direkte i en browser. Tjenester som po­rt­scan­ne­ren fra DNS Tools er be­græn­se­de med hensyn til deres funk­tio­ner og tilbyder kun mu­lig­he­den for at kon­trol­le­re in­di­vi­du­el­le porte. Af denne grund er de velegnede til at udføre hurtige kon­trol­ler på per­son­li­ge computere.

Netcat

Netcat (forkortet: nc) blev udgivet af en anonym udvikler kendt som »Hobbit« i 1996. Pro­gram­met blev op­rin­de­ligt udviklet til Unix-platforme, men der findes nu mange portede versioner til systemer som Windows samt andre ud­vi­del­ser som GNU Netcat, OpenBSD Netcat, Cryptcat og Netcat6 (som også un­der­støt­ter IPv6), der som standard er in­klu­de­ret i mange Linux-di­stri­bu­tio­ner. Den grund­læg­gen­de version af kom­man­do­linje­værk­tø­jet er primært designet til at sende eller læse data via TCP- og UDP-net­værks­for­bin­del­ser. Det kan dog også bruges til enkle po­rt­scan­nings­op­ga­ver. Dette giver brugerne mulighed for at kon­trol­le­re status for port 20 til 30 på et spe­ci­fi­ce­ret system med enkle kom­man­do­er som:

nc -zv localhost 20-30
bash

For at kon­trol­le­re UDP-porte skal du bruge den ekstra parameter*-u*. Du kan også bruge vært­s­nav­net eller IP-adressen på et eksternt system (hvis du kender den) i stedet for localhost.

Nmap

Et be­ty­de­ligt mere kraft­fuldt værktøj, der er særligt nyttigt til po­rt­scan­ning, er Network Mapper, ofte kaldet Nmap. Nmap er udviklet til Unix-lignende systemer, er li­cen­se­ret under GPL og har været til­gæn­ge­ligt til Windows-systemer siden 2000 (dog med visse be­græns­nin­ger). Det betyder, at TCP-Connect-scan­nin­ger tager ufor­holds­mæs­sigt lang tid, og at scanning af ens egne sy­stem­por­te kun er mulig via indirekte veje. Generelt kan Nmap betjenes via en kom­man­do­linje. Zenmap har derimod en højty­den­de grafisk bru­ger­græn­se­fla­de, der gør det nemt for brugerne at anvende net­værks­værk­tø­jet.

Nmap-skaberen, Gordon Lyon, og Nmap-ud­vik­ler­tea­met står for den videre udvikling af pro­gram­met og dets po­rt­scan­nings­funk­tio­ner. Især tek­no­lo­gi­er som OS-fin­ger­af­tryk (dvs. gen­ken­del­se af en målhosts ope­ra­tiv­sy­stem) og iden­ti­fi­ka­tion af tjenester, der gemmer sig bag porte, gør Nmap til en af de mest populære løsninger inden for po­rt­scan­ning. Ne­den­stå­en­de tabel viser de mange for­skel­li­ge metoder, som pro­gram­met byder på:

Metoder til po­rt­scan­ning Nmap-kommando Be­skri­vel­se
TCP-for­bin­del­ses­scan­ning nmap -sT host Klassisk kontrol for ikke-ad­mi­ni­stra­to­rer
TCP Syn-scanning nmap -sS host Hurtige, ube­mær­ke­de in­spek­tions­me­to­der for ad­mi­ni­stra­to­rer.
TCP FIN-/XMAS-/Null-scanning nmap -sF host nmap -sX host nmap -sN host Metoder, der kan omgå firewalls
TCP -ping -scanning nmap -sP host Til tra­di­tio­nel­le po­rt­scan­nin­ger; hjælper med at kon­trol­le­re en hosts til­gæn­ge­lig­hed.
TCP ACK-scanning nmap -sA host Bestemmer leverede porte, men skelner ikke mellem åbne og lukkede porte
TCP-vindues-scanning nmap -sW host Svarer til ACK-scan­nin­gen; kan ve­ri­fi­ce­re nogle åbne og lukkede porte.
TCP Maimon-scanning nmap -sM host Kom­bi­na­tion af FIN- og ACK-scan­nin­ger.
TCP-idle-scanning nmap -sI zombie host host Den mindst synlige, mest komplekse og dermed langs­om­ste scan­nings­me­to­de; kører via en tredje computer, der af Nmap betegnes som en ‘zombie’.
UDP-scanning nmap -sU host Scan­nings­me­to­der til for­bin­del­ses­lø­se UDP-porte
SCTP init-scanning nmap -sY host Po­rt­scan­ning med SCTP, et al­ter­na­tiv til TCP og UDP
IP-protokol-scanning nmap -sO host Ingen po­rt­scan­ning; kon­trol­le­rer, hvilket IP-baseret protokol der un­der­støt­tes på mål­sy­ste­met

Du kan downloade både Nmap og bru­ger­græn­se­fla­den Zenmap til dit ope­ra­tiv­sy­stem på Nmaps of­fi­ci­el­le hjem­mesi­de. Både den aktuelle (stabile) version og en be­ta­ver­sion (ud­vik­lings­ver­sion) er til­gæn­ge­li­ge.

Hvorfor po­rt­scan­ning ikke altid er lovligt

Det er ikke altid lovligt at scanne porte. Så snart der gøres forsøg pået exploit (et udtryk, som cy­ber­sik­ker­hed­s­eks­per­ter bruger om ud­nyt­tel­se af en sik­ker­heds­fejl eller et sik­ker­heds­hul), kan den person eller gruppe, der står bag, risikere juridiske kon­se­kven­ser.

Det er dog mindre klart, hvordan den juridiske situation ser ud, når et com­pu­ter­sy­stem går ned på grund af intensiv po­rt­scan­ning. På grund af det store antal for­bin­del­ses­an­mod­nin­ger kan sådanne over­våg­nings­me­to­der udgøre en ud­for­dring for mål­sy­ste­met, hvilket i nogle tilfælde kan føre til, at systemet går ned. Desuden kan ad­mi­ni­stra­to­rer­ne af det system, der er målet for angrebet, blive op­mærk­som­me på an­gri­ber­nes ak­ti­vi­te­ter inden ned­brud­det og tolke hand­lin­ger­ne som de første skridt i et angreb.

I sådanne tilfælde er det vigtigt ikke at udelukke juridiske kon­se­kven­ser. Hvis det angrebne system bevidst over­be­la­stes, kan det betragtes som et DDoS-angreb, hvilket kan føre til, at offeret for angrebet vælger at anlægge sag.

Du bør altid sikre dig, at du har til­la­del­se til at udføre en po­rt­scan­ning på et system, og kun anvende metoden af sik­ker­heds­mæs­si­ge årsager og ikke blot for at til­freds­stil­le din nys­ger­rig­hed. De po­rt­scan­nings­me­to­der, der beskrives her, un­der­stre­ger, hvor vigtigt det er at holde øje med dit eget systems porte og net­værkscom­pu­te­re samt de tjenester, der har adgang til dem.

Gå til ho­ved­me­nu­en