Portit ovat yksi tär­keim­mis­tä syistä siihen, että da­ta­pa­ke­tit löytävät tiensä haluttuun koh­tee­seen. Ne toimivat ra­ja­pin­toi­na tie­to­ko­nei­den ja jär­jes­tel­mä­pal­ve­lui­den tai ohjelmien välillä, ja niitä käyttävät TCP- ja UDP-verk­kopro­to­kol­lat. IP-osoitteen avulla käyt­tö­jär­jes­tel­mät pystyvät sel­vit­tä­mään, mille tie­to­ko­neel­le ja so­vel­luk­sel­le niiden on tarkoitus lähettää dataa.

Mitä on porttien skannaus? Lyhyt selitys

Porttien skannaus tar­koit­taa koh­den­net­tua prosessia, jossa tie­to­ko­ne­jär­jes­tel­män avoimia portteja tar­kis­te­taan eri­tyis­ten työ­ka­lu­jen avulla. Ennen kuin sy­ven­nym­me siihen, mitä porttien skannaus on, voi olla hyö­dyl­lis­tä tar­kas­tel­la ensin, mitä portit ovat. Portit toimivat ra­ja­pin­ta­na ak­tii­vis­ten ohjelmien ja in­ter­ne­tin välillä. Niitä käytetään ohjaamaan saapuvia ja lähteviä da­ta­pa­ket­te­ja oikeille so­vel­luk­sil­le, ja niitä hal­lin­noi­vat käyt­tö­jär­jes­tel­mät.

Huomio

Jotta sovellus voi kom­mu­ni­koi­da tietyn portin kautta, portti on avattava. Porttien avaaminen aiheuttaa kuitenkin riskin. Jos jollakin porttia käyt­tä­väl­lä so­vel­luk­sel­la on tie­to­tur­va-aukkoja, portti voi toimia po­ten­ti­aa­li­se­na hyök­käys­reit­ti­nä hyök­kää­jil­le. Hyök­käys­ris­kin mi­ni­moi­mi­sek­si sinun tulisi aina olla tietoinen siitä, mitkä portit jär­jes­tel­mäs­sä­si ovat auki ja mitkä so­vel­luk­set niihin liittyvät.

Sinun ei tarvitse olla kir­jau­tu­nee­na koh­de­jär­jes­tel­mään, jotta voit suorittaa siinä port­tis­kan­nauk­sen. Sinun tarvitsee vain olla yh­tey­des­sä siihen pai­kal­lis­ver­kon tai in­ter­ne­tin kautta. Port­tis­kan­ne­rien avulla voit lähettää erityisiä da­ta­pa­ket­te­ja testinä eri port­tei­hin. Saat vas­tauk­sia tai vir­heil­moi­tuk­sia, jotka käyt­tä­mä­si työkalu analysoi. Skan­naus­oh­jel­man toi­min­to­jen mukaan saat tietoa siitä, mitkä portit ovat auki ja mitkä kiinni. Saat myös tietoa siitä, mitä pal­ve­lui­ta ja/tai so­vel­luk­sia kyseiset portit käyttävät.

Porttien skannaus tarjoaa jär­jes­tel­män­val­vo­jil­le erittäin tehokkaan tavan seurata verkon da­ta­lii­ken­net­tä. Porttien skan­nauk­sen avulla voidaan tunnistaa mah­dol­li­set heik­kou­det ja pienentää jär­jes­tel­män hyök­käys­koh­tei­den määrää. Joissakin ta­pauk­sis­sa se voi auttaa jär­jes­tel­män­val­vo­jia rat­kai­se­maan konk­reet­ti­sia verkko-ongelmia. Lisäksi työkalut eivät vaikuta mer­kit­tä­väs­ti skan­nat­ta­vien jär­jes­tel­mien suo­ri­tus­ky­kyyn. Näin ollen niitä voidaan käyttää tur­val­li­suus­toi­men­pi­tei­siin ilman, että tarvitsee huolehtia ta­hat­to­mis­ta vai­ku­tuk­sis­ta jär­jes­tel­män suo­ri­tus­ky­kyyn.

Port­tis­kan­ne­rit ovat hyö­dyl­li­siä myös ko­ti­tie­to­ko­neil­le. Heti kun alat käyttää so­vel­luk­sia, jotka vaativat in­ter­ne­tyh­teyt­tä, portit avautuvat au­to­maat­ti­ses­ti, ellei palomuuri estä niiden avaamista. Port­tis­kan­naus auttaa sinua pitämään tilanteen hal­lin­nas­sa ja osoittaa portit, joita ei enää tarvita. Voit sitten sulkea ne tur­val­li­suus­ris­kien vä­hen­tä­mi­sek­si.

Miten porttien skannaus toimii?

Port­tis­kan­ne­rit tarjoavat monia erilaisia me­ne­tel­miä. Suurin osa niistä perustuu kuitenkin yh­teys­kes­kei­seen TCP-pro­to­kol­laan. Jotta port­tis­kan­nauk­sen aikana ta­pah­tu­via pe­rus­pro­ses­se­ja voi ymmärtää, on hyö­dyl­lis­tä tar­kas­tel­la TCP-yh­teyk­sien yleistä ra­ken­net­ta:

  • Tämä prosessi, jota kutsutaan myös kol­mi­vai­hei­sek­si kä­den­pu­ris­tuk­sek­si, alkaa siten, että asiakas lähettää SYN-paketin (synk­ro­noin­ti) koh­de­port­tiin.
  • Kun paketti saavuttaa so­vel­luk­sen, asiakas saa yh­dis­tel­mä­pa­ke­tin SYN/ACK (synk­ro­noin­ti/kuittaus), joka vahvistaa, että yhteys on muo­dos­tet­tu.
  • Kol­man­nes­sa ja vii­mei­ses­sä vaiheessa asiakas lähettää ACK-paketin (kuittaus), joka vahvistaa yhteyden ja mah­dol­lis­taa tie­don­siir­ron aloit­ta­mi­sen.

Jos yh­teys­yri­tys kohdistuu sul­jet­tuun porttiin, asiakas vas­taa­not­taa toisessa vaiheessa RST-paketin (nollaus), mikä lopettaa kä­den­pu­ris­tuk­sen.

Koska tietojen vaihto eri­lais­ten so­vel­lus­ten kanssa olisi vaikeaa ja aikaa vievää, porttien skannaus rajoittuu yk­sin­ker­tai­siin yh­tey­den­muo­dos­tus­yri­tyk­siin, kuten seuraavat skan­naus­me­ne­tel­mät osoit­ta­vat.

TCP-SYN-skannaus

TCP-SYN-skan­nauk­sen ta­voit­tee­na ei ole luoda täy­del­lis­tä TCP-yhteyttä. Tästä syystä tätä skan­naus­muo­toa kutsutaan yleisesti puoliksi avoimeksi port­tis­kan­nauk­sek­si. Port­tis­kan­ne­rin avulla tämä menetelmä lähettää ta­van­omai­sia SYN-paketteja yk­sit­täi­siin port­tei­hin ja odottaa vastausta koh­dei­sän­näl­tä. Jos isäntä lähettää takaisin SYN/ACK-paketin, se osoittaa, että kyseinen portti on auki ja yhteyden muo­dos­ta­mi­nen on mah­dol­lis­ta. Jos vastaus on RST-paketti, se tar­koit­taa, että portti on suljettu. Jos vastausta ei tule, syynä on to­den­nä­köi­ses­ti ylä­vir­taan si­joi­tet­tu pa­ket­ti­suo­da­tin (esim. palomuuri).

TCP-SYN-skan­nauk­set eivät näy ar­vioi­ta­vil­le so­vel­luk­sil­le, minkä vuoksi ne eivät tuota lo­ki­tie­to­ja. Tästä syystä niitä kutsutaan myös pii­lo­te­tuik­si skan­nauk­sik­si.

TCP-yh­teyss­kan­naus

Kun suoritat yh­teyss­kan­nauk­sen port­tis­kan­ne­ril­la­si, et itse asiassa luo ja lähetä da­ta­pa­ket­tia itse. Sen sijaan käytät connect-jär­jes­tel­mä­kut­sua. Tämä on käy­tet­tä­vis­sä lähes kaikissa käyt­tö­jär­jes­tel­mis­sä. Jos yhteyden muo­dos­tus­yri­tys onnistuu, se tar­koit­taa, että portti on auki. Jos yhteyden muo­dos­tus­yri­tys epä­on­nis­tuu, se tar­koit­taa, että portti on kiinni. Jos yhteys muo­dos­tet­tiin on­nis­tu­nees­ti (eli portti oli auki), näet so­vel­luk­sen lo­ki­tie­dos­tois­ta, että tätä skan­naus­tek­niik­kaa on käytetty. Tietoja käy­te­tyis­tä suo­da­tus­oh­jel­mis­ta ei kui­ten­kaan anneta. Jos sinulla ei ole oikeuksia lähettää raa­ka­da­ta­pa­ket­te­ja, TCP-yh­teyss­kan­naus voi olla hyö­dyl­li­nen vaih­toeh­to SYN-skan­nauk­sil­le.

TCP-FIN-, Xmas- ja Null-skan­nauk­set

Näiden kolmen porttien skan­naus­me­ne­tel­män avulla voit myös erottaa avoimet ja suljetut portit toi­sis­taan. Tässä käytetään kahta pe­rus­kon­sep­tia, jotka on kuvattu RFC 793-stan­dar­dis­sa:

  1. Suljetut portit tulisi aina vastata pa­ket­tei­hin (elleivät ne ole RST-paketteja) omalla RST-pa­ke­til­laan.
  2. Avoimien porttien tulisi sivuuttaa kaikki paketit, joita ei ole merkitty SYN-, RST- tai ACK-pa­ke­teik­si.

Kun skan­na­taan RCF-yh­teen­so­pi­via jär­jes­tel­miä, nämä skan­naus­me­ne­tel­mät hyö­dyn­tä­vät näitä pe­ri­aat­tei­ta omien pa­ket­tien­sa avulla:

  • Null-skannaus ei käytä mitään erityisiä mer­kin­tö­jä.
  • FIN-skan­nauk­sis­sa port­tis­kan­ne­ri lähettää FIN-paketteja (finish)
  • Xmas- skan­nauk­set käyttävät yh­dis­tel­mää FIN-, PSH- (push) ja URG-mer­kin­tö­jä (urgent), mikä saa paketit lois­ta­maan kuin jou­lu­kuusi.

Kaikki kolme skan­naus­me­ne­tel­mää toimivat samalla tavalla. RCF-sääntöjen mu­kai­ses­ti tes­ti­pa­ke­tit var­mis­ta­vat, että suljetut portit vastaavat RST-pa­ke­teil­la ja että avoimet portit eivät anna vastausta. Kaikki rei­tit­ti­met eivät lähetä vir­heil­moi­tus­ta, jos portti on suo­da­tet­tu, mikä voi tar­koit­taa, että kyseessä on suo­da­tet­tu portti, jos viestiä ei tule (sen lisäksi, että kyseessä voi olla avoin portti). Vaikka tämä menetelmä on paljon huo­maa­mat­to­mam­pi kuin SYN-skan­nauk­set, se ei vält­tä­mät­tä toimi oikein, jos jär­jes­tel­mät eivät noudata täysin RFC 793 -stan­dar­dia. Tunnettu esimerkki tästä on Windows.

UDP-skannaus

UDP-skan­nauk­sis­sa lä­he­te­tään tyhjiä UDP-otsikoita, joissa ei ole dataa, kaikkiin avoimiin port­tei­hin. Jos palvelu vastaa UDP-paketilla, kyseinen portti on auki. Jos port­tis­kan­ne­ri vas­taa­not­taa rei­tit­ti­mel­tä vir­heil­moi­tuk­sen ”Port un­reac­hable” (tyyppi 3, koodi 3), se tunnistaa portin sul­je­tuk­si. Muut vir­heil­moi­tuk­set kertovat käyt­tä­jil­le, että porttien es­tä­mi­ses­tä ovat vastuussa pa­ket­ti­suo­dat­ti­met. UDP-port­ti­tes­tauk­sen ongelmana on sen vaatima valtava määrä aikaa. Tämä johtuu siitä, että monissa jär­jes­tel­mis­sä vir­heil­moi­tus­ten lä­het­tä­mi­nen voi kestää pitkään tur­val­li­suus­syis­tä. Lisäksi monet näistä jär­jes­tel­mis­tä vastaavat port­tei­hin vain sa­tun­nai­ses­ti. Linux-ytimen rajoittaa ra­port­tien määrää se­kun­nis­sa, mikä tar­koit­taa, että 65 535 portin täy­del­li­nen skannaus kestäisi noin 18 tuntia.

Mitä port­tis­kan­ne­rei­ta on olemassa?

Tarjolla on monia erilaisia skan­ne­rei­ta, jotka eroavat toi­sis­taan tar­joa­mien­sa toi­min­to­jen laajuuden suhteen. Suurin osa näistä työ­ka­luis­ta on saa­ta­vil­la il­mais­oh­jel­mi­na tai avoimen läh­de­koo­din so­vel­luk­si­na. Monet niistä si­säl­tä­vät pe­rin­tei­siä ko­men­to­ri­vioh­jel­mia, joita voidaan käyttää eril­lis­ten graa­fis­ten käyt­tö­liit­ty­mien kautta. Lisäksi on olemassa monia verk­ko­poh­jai­sia rat­kai­su­ja, joiden avulla käyttäjät voivat skannata portteja suoraan se­lai­mes­sa. DNS Toolsin port­tis­kan­ne­rin kaltaiset palvelut ovat omi­nai­suuk­sil­taan ra­joi­tet­tu­ja ja tarjoavat vain mah­dol­li­suu­den tarkistaa yk­sit­täi­siä portteja. Tästä syystä ne sopivat hyvin hen­ki­lö­koh­tais­ten tie­to­ko­nei­den pikaisiin tar­kis­tuk­siin.

Netcat

Netcat (lyhenne: nc) jul­kais­tiin vuonna 1996 ni­mi­mer­kil­lä ”Hobbit” tunnetun ni­met­tö­män ke­hit­tä­jän toimesta. Alun perin Unix-alus­toil­le kehitetty ohjelma on nykyään saa­ta­vil­la useina versioina esi­mer­kik­si Windows-jär­jes­tel­mil­le, ja siitä on olemassa myös laa­jen­nuk­sia, kuten GNU Netcat, OpenBSD Netcat, Cryptcat ja Netcat6 (tukee myös IPv6-pro­to­kol­laa), jotka si­säl­ty­vät ole­tuk­se­na moniin Linux-ja­ke­lui­hin. Ko­men­to­ri­vi­työ­ka­lun pe­rus­ver­sio on suun­ni­tel­tu en­si­si­jai­ses­ti tietojen lä­het­tä­mi­seen tai lu­ke­mi­seen TCP- ja UDP-verk­ko­yh­teyk­sien kautta. Sitä voidaan kuitenkin käyttää myös yk­sin­ker­tai­siin porttien skan­naus­teh­tä­viin. Tämän avulla käyttäjät voivat tarkistaa mää­ri­te­tyn jär­jes­tel­män porttien 20–30 tilan yk­sin­ker­tai­sil­la ko­men­noil­la, kuten:

nc -zv localhost 20-30
bash

UDP-porttien tar­kis­ta­mi­nen edel­lyt­tää li­sä­pa­ra­met­ria*-u*. Voit myös käyttää ulkoisen jär­jes­tel­män isän­tä­ni­meä tai IP-osoitetta (jos tiedät sen) local­hos­tin sijaan.

Nmap

Huo­mat­ta­vas­ti te­hok­kaam­pi työkalu, joka on erityisen hyö­dyl­li­nen porttien skan­nauk­ses­sa, on Network Mapper, jota kutsutaan usein nimellä Nmap. Unix-tyyp­pi­sil­le jär­jes­tel­mil­le suun­ni­tel­tu Nmap on GPL-li­sen­soi­tu, ja se on ollut saa­ta­vil­la Windows-jär­jes­tel­mil­le vuodesta 2000 lähtien (tosin ra­joi­tuk­sin). Tämä tar­koit­taa, että TCP-yhteyden muo­dos­ta­mi­seen pe­rus­tu­vat skan­nauk­set vievät suh­teet­to­man paljon aikaa ja että oman jär­jes­tel­män porttien skannaus on mah­dol­lis­ta vain epä­suo­rien reittien kautta. Yleensä Nmapia voidaan käyttää ko­men­to­ri­vil­tä. Zenmap puo­les­taan tarjoaa suo­ri­tus­ky­kyi­sen graafisen käyt­tö­liit­ty­män, jonka avulla käyttäjät voivat käyttää verk­ko­työ­ka­lua helposti.

Nmapin luoja Gordon Lyon ja Nmapin ke­hit­tä­jä­tii­mi vastaavat ohjelman ja sen port­tis­kan­nauso­mi­nai­suuk­sien jat­ko­ke­hi­tyk­ses­tä. Eri­tyi­ses­ti tekniikat kuten käyt­tö­jär­jes­tel­män tunnistus (eli koh­de­pal­ve­li­men käyt­tö­jär­jes­tel­män tun­nis­ta­mi­nen) ja porttien takana piilevien pal­ve­lui­den lukeminen tekevät Nmapista yhden suo­si­tuim­mis­ta port­tis­kan­naus­rat­kai­suis­ta. Seu­raa­vas­sa tau­lu­kos­sa esitetään ohjelman tarjoamat mo­ni­puo­li­set me­ne­tel­mät:

Porttien skan­naus­me­ne­tel­mät Nmap-komento Kuvaus
TCP-yh­teyss­kan­naus nmap -sT isäntä Pe­rin­tei­nen tarkistus muille kuin jär­jes­tel­män­val­vo­jil­le
TCP Syn-skannaus nmap -sS isäntä Nopeat, huo­maa­mat­to­mat tar­kas­tus­me­ne­tel­mät jär­jes­tel­män­val­vo­jil­le.
TCP FIN-/XMAS-/Null-skannaus nmap -sF isäntä nmap -sX isäntä nmap -sN isäntä Me­ne­tel­mät, joilla voidaan kiertää pa­lo­muu­rit
TCP -ping -skannaus nmap -sP host Pe­rin­tei­siin port­tis­kan­nauk­siin; auttaa tar­kis­ta­maan isännän saa­ta­vuu­den.
TCP ACK-skannaus nmap -sA host Määrittää toi­mi­te­tut portit, mutta ei erota avoimia ja sul­jet­tu­ja portteja toi­sis­taan
TCP-ik­ku­nas­kan nmap -sW isäntä Vastaava kuin ACK-skannaus; pystyy tun­nis­ta­maan joitakin avoimia ja sul­jet­tu­ja portteja.
TCP Maimon-skannaus nmap -sM host FIN- ja ACK-skan­naus­ten yh­dis­tel­mä.
TCP-le­po­ti­las­kan­naus nmap -sI zombie host host Huo­maa­mat­to­min, mo­ni­mut­kai­sin ja siten hitain skan­naus­me­ne­tel­mä; suo­ri­te­taan kolmannen tie­to­ko­neen kautta, jota Nmap kutsuu nimellä ”zombie”.
UDP-skannaus nmap -sU host Skan­naus­me­ne­tel­mät yh­tey­det­tö­mil­le UDP-porteille
SCTP-aloi­tuss­kan­naus nmap -sY host Port­tis­kan­naus SCTP:llä, vaih­toeh­to TCP:lle ja UDP:lle
IP-pro­to­kol­lan skannaus nmap -sO host Ei port­tis­kan­naus­ta; tarkistaa, mitä IP-pohjaisia pro­to­kol­lia koh­de­jär­jes­tel­mä tukee

Voit ladata sekä Nmapin että Zenmap-käyt­tö­liit­ty­män käyt­tö­jär­jes­tel­mäl­le­si Nmapin vi­ral­li­sil­ta verk­ko­si­vuil­ta. Saa­ta­vil­la on sekä nykyinen (vakaa) versio että bee­ta­ver­sio (ke­hi­tys­vai­hees­sa oleva versio).

Miksi porttien skannaus ei ole aina laillista

Porttien tar­kis­ta­mi­nen ei ole aina laillista. Heti kun yritetään hyödyntäähaa­voit­tu­vuut­ta (termi, jota ky­ber­tur­val­li­suu­den am­mat­ti­lai­set käyttävät vii­ta­tes­saan tie­to­tur­va-aukon tai -puutteen hyö­dyn­tä­mi­seen), tästä vastuussa oleva henkilö tai ryhmä voi joutua koh­taa­maan mah­dol­li­sia oi­keu­del­li­sia seu­raa­muk­sia.

On kuitenkin epäselvää, mikä on oi­keu­del­li­nen tilanne, kun tie­to­ko­ne­jär­jes­tel­mä pysähtyy in­ten­sii­vi­sen port­tis­kan­nauk­sen vuoksi. Yh­teys­pyyn­tö­jen suuren määrän vuoksi tällaiset seu­ran­ta­me­ne­tel­mät voivat aiheuttaa haasteita koh­de­jär­jes­tel­mäl­le, mikä voi toisinaan johtaa jär­jes­tel­män kaa­tu­mi­seen. Lisäksi koh­de­jär­jes­tel­män yl­lä­pi­tä­jät saattavat havaita hyök­kää­jän toimet ennen kaa­tu­mis­ta ja tulkita ne hyök­käyk­sen en­sim­mäi­sik­si vaiheiksi.

Täl­lai­sis­sa ta­pauk­sis­sa on tärkeää ottaa huomioon mah­dol­li­set oi­keu­del­li­set seu­raa­muk­set. Jos koh­de­jär­jes­tel­mää yli­kuor­mi­te­taan tahallaan, sitä voidaan pitää DDoS-hyök­käyk­se­nä, mikä voi johtaa siihen, että hyök­käyk­sen kohde ryhtyy oi­keus­toi­miin.

Sinun tulee aina varmistaa, että sinulla on lupa suorittaa port­tis­kan­naus jär­jes­tel­mäs­sä, ja käyttää tätä me­ne­tel­mää ai­noas­taan tie­to­tur­va­tar­koi­tuk­siin, ei pel­käs­tään ute­liai­suu­des­ta. Tässä kä­si­tel­lyt port­tis­kan­naus­me­ne­tel­mät ko­ros­ta­vat, kuinka tärkeää on pitää silmällä oman jär­jes­tel­män portteja ja verkkoon kyt­ket­ty­jä tie­to­ko­nei­ta sekä niihin yhteyttä käyttäviä pal­ve­lui­ta.

Siirry pää­va­lik­koon