Mis on portide skannimine?
Pordid on üks peamisi põhjusi, miks andmepaketid suudavad jõuda soovitud sihtkohta. Need toimivad liidestena arvutite ja süsteemiteenuste või programmide vahel ning neid kasutavad TCP- ja UDP-võrguprotokollid. Koos IP-aadressiga suudavad operatsioonisüsteemid kindlaks teha, millisele arvutile ja millisele rakendusele andmed tuleb saata.
Mis on portide skannimine? Lühike selgitus
Portide skannimine tähendab arvutisüsteemi avatud portide sihipärast kontrollimist spetsiaalsete tööriistade abil. Enne kui süveneme sellesse, mis on portide skannimine, võiks olla kasulik vaadata esmalt, mis on portid. Portid toimivad liidesena aktiivsetele programmidele ja internetile. Neid kasutatakse sissetulevate ja väljaminevate andmepakettide suunamiseks õigetesse rakendustesse ning neid haldavad operatsioonisüsteemid.
Selleks et rakendus saaks teatud pordi kaudu suhelda, peab see olema avatud. Portide avamine kujutab endast aga ohtu. Kui mõnel pordi kasutaval rakendusel on turvaauke, võib see port olla ründajatele potentsiaalseks sissetungipunktiks. Rünnakuohu minimeerimiseks peaksite alati teadma, millised pordid on teie süsteemis avatud ja millised rakendused nendega seotud on.
Portide skannimiseks ei pea te sihtsüsteemis sisse logima. Piisab sellest, kui olete sellega ühendatud kohaliku võrgu või interneti kaudu. Portiskannerite abil saate saata eri portidele testina spetsiaalseid andmepakette. Seejärel saate vastused või veateated, mida kasutatav tööriist analüüsib. Sõltuvalt skannimisprogrammi funktsioonidest saate teavet selle kohta, millised pordid on avatud ja millised suletud. Samuti saate andmeid selle kohta, milliseid teenuseid ja/või rakendusi vastavad pordid kasutavad.
Portide skannimine pakub süsteemiadministraatoritele väga tõhusat vahendit võrguliikluse jälgimiseks. Portide skannimise abil on võimalik tuvastada võimalikke nõrkusi ja vähendada süsteemi rünnakupinda. Mõnel juhul võib see aidata administraatoritel lahendada konkreetseid võrguprobleeme. Lisaks ei avalda need tööriistad märkimisväärset mõju skannitavate süsteemide jõudlusele. Seetõttu saab neid kasutada turvameetmetena, ilma et oleks vaja muretseda süsteemi jõudlusele avaldatava soovimatu mõju pärast.
Portide skannerid on kasulikud ka koduarvutite puhul. Niipea kui hakkate kasutama rakendusi, mis vajavad internetiühendust, avatakse pordid automaatselt, välja arvatud juhul, kui teie tulemüür takistab nende avamist. Portide skannimine aitab teil olukorda ülevaatlikult jälgida ja näitab pordid, mida enam vaja ei ole. Seejärel saate need sulgeda, et vähendada turvariske.
Kuidas toimib portide skannimine?
Portide skannerid pakuvad palju erinevaid meetodeid. Enamik neist hõlmab siiski ühendusele orienteeritud TCP-protokolli. Et mõista portide skannimise käigus toimuvaid põhilisi protsesse, on kasulik tutvuda TCP-ühenduste üldise struktuuriga:
- Seda protsessi, mida tuntakse ka kolmepoolse käepigistuse nime all, alustab klient, saates sihtporti SYN-paketi (sünkroniseerimine).
- Kui pakett jõuab rakenduseni, saab klient kombineeritud SYN/ACK-paketi (sünkroniseerimine/kinnitus), mis kinnitab, et ühendus on loodud.
- Kolmandas ja viimases etapis saadab klient ACK-paketi (kinnitus), mis loob ühenduse ja võimaldab andmevahetuse alustamist.
Kui ühendatakse suletud pordiga, saab klient teises etapis RST-paketi (taastamine), mis lõpetab käepigistuse.
Kuna andmete vahetamine erinevat tüüpi rakendustega oleks keeruline ja aeganõudev, piirdub portide skannimine lihtsate ühenduse loomise katsetega, nagu näitavad järgmised skannimismeetodid.
TCP-SYN-skannimine
TCP-SYN-skannimise eesmärk ei ole täieliku TCP-ühenduse loomine. Seetõttu nimetatakse seda tüüpi skannimist tavaliselt poolavatud portide skannimiseks. Portiskannerit kasutades saadab see meetod tüüpilisi SYN-pakette üksikutele portidele ja ootab sihtmasinalt vastust. Kui masin saadab tagasi SYN/ACK-paketi, tähendab see, et vastav port on avatud ja ühenduse loomine on võimalik. Kui vastuseks on RST-pakett, tähendab see, et port on suletud. Kui vastust ei tule, võib selle põhjuseks olla ülesvoolu asuv pakettfilter (nt tulemüür).
TCP-SYN-skannimised ei ole hinnatavate rakenduste jaoks nähtavad ning seetõttu ei tekita need mingeid logiandmeid. Seetõttu nimetatakse neid ka varjatud skannimisteks.
TCP-ühenduste skannimine
Kui teete oma pordiskanneriga ühendusskannimise, ei loo ega saada te andmepaketti tegelikult ise. Selle asemel kasutate süsteemikõnet „connect“. See on saadaval peaaegu igas operatsioonisüsteemis. Kui ühenduse loomine õnnestub, tähendab see, et port on avatud. Kui ühenduse loomine ebaõnnestub, tähendab see, et port on suletud. Kui ühendus loodi edukalt (st port oli avatud), näete rakenduse logifailides, et kasutati seda skannimismeetodit. Siiski ei pakuta teavet kasutatud filtreerimisprogrammide kohta. Kui teil pole õigusi toorandmepakettide saatmiseks, võib TCP-ühendusskaneerimine olla kasulik alternatiiv SYN-skannimisele.
TCP-FIN-, jõulude- ja null-skannid
Need kolm pordiskannimise meetodit võimaldavad eristada avatud ja suletud pordid. Siin kasutatakse kahte põhimõistet, mis on dokumenteeritud RFC 793-s:
- Suletud pordid peaksid pakettidele (kui need ei ole RST-paketid) alati vastama omaenda RST-paketiga.
- Avatud pordid peaksid ignoreerima kõiki pakette, mis ei ole märgitud SYN, RST või ACK-pakettidena.
RCF-standardile vastavate süsteemide skannimisel kasutavad need skannimismeetodid neid põhimõtteid, kasutades omaenda pakette:
- Null-skannimine ei kasuta mingeid erimärke.
- FIN-skannimisel saadab portiskanner FIN-pakette (lõpetus)
- Xmas-skannid kasutavad FIN-, PSH- (push) ja URG-märgistuste (urgent) kombinatsiooni, mis paneb paketid särama nagu jõulupuu.
Kõik kolm skannimismeetodit toimivad ühtmoodi. RFC-reeglite kohaselt tagavad testpaketid, et suletud pordid vastavad RST-pakettidega ja avatud pordid ei anna mingit vastust. Kõik ruuterid ei saada veateateid, kui port on filtreeritud, mis võib tähendada, et kui teadet ei ilmu, on tegemist filtreeritud portiga (lisaks võimalusele, et tegemist võib olla avatud portiga). Kuigi see meetod on palju diskreetsem kui SYN-skannimine, ei pruugi see korralikult töötada, kui süsteemid ei järgi täielikult RFC 793 standardit. Selle silmapaistev näide on Windows.
UDP-skannimine
UDP-skannimisel saadetakse kõikidele vabadele portidele tühjad UDP-pealkirjad, milles puuduvad andmed. Kui teenus vastab UDP-paketiga, on vastav port avatud. Kui portiskanner saab ruuterilt veateate „Port unreachable“ (tüüp 3, kood 3), loeb ta porti suletuks. Muud veateated annavad kasutajatele teada, et portide blokeerimise põhjuseks on pakettfiltrid. UDP-portide testimise probleemiks on sellega seotud tohutu ajakulu. Seda seetõttu, et paljude süsteemide puhul võib turvalisuse põhjustel veateadete väljastamine võtta kaua aega. Lisaks vastavad paljud neist süsteemidest portidele vaid harva. Linuxi tuum piirab teadete arvu sekundis, mis tähendab, et 65 535 porti täielikuks skannimiseks kuluks umbes 18 tundi.
Milliseid pordiskannereid on olemas?
On olemas palju erinevaid skannereid, mis erinevad üksteisest pakutavate funktsioonide poolest. Enamik neist tööriistadest on saadaval tasuta tarkvar ana või avatud lähtekoodiga versioonidena. Paljud neist sisaldavad klassikalisi käsureaprogramme, mida saab kasutada eraldi graafiliste liideste kaudu. Lisaks on olemas palju veebilahendusi, mis võimaldavad kasutajatel skannida porte otse brauseris. Sellised teenused nagu DNS-tööriistade portiskanner on funktsioonide poolest piiratud ja pakuvad ainult võimalust kontrollida üksikuid porte. Seetõttu sobivad need hästi kiireks kontrollimiseks personaalarvutites.
Netcat
Netcat (lühend: nc) avaldas 1996. aastal anonüümne arendaja, keda tuntakse nime all „Hobbit”. Alguses kirjutati see Unixi platvormidele, kuid nüüdseks on olemas palju versioone sellistele süsteemidele nagu Windows, samuti mitmed laiendused, nagu GNU Netcat, OpenBSD Netcat, Cryptcat ja Netcat6 (toetab ka IPv6-i), mis on paljudes Linuxi distributsioonides vaikimisi kaasas. Käsurea tööriista põhiline versioon on mõeldud peamiselt andmete saatmiseks või lugemiseks TCP- ja UDP-võrguühenduste kaudu. Seda saab aga kasutada ka lihtsate portide skannimise ülesannete jaoks. See võimaldab kasutajatel kontrollida määratud süsteemi portide 20–30 staatust lihtsate käskudega, nagu:
nc -zv localhost 20-30bashUDP-portide kontrollimiseks on vaja lisaparameetrit*-u*. Localhosti asemel võid kasutada ka välise süsteemi hostinime või IP-aadressi (kui see on sulle teada).
Nmap
Oluliselt võimsam tööriist, mis on eriti kasulik portide skannimiseks, on Network Mapper, mida sageli nimetatakse Nmapiks. Unix-laadsetele süsteemidele loodud Nmap on GPL-litsentsi all ja on olnud saadaval ka Windows-süsteemidele alates 2000. aastast (kuigi teatud piirangutega). See tähendab, et TCP-ühenduse skannimine võtab ebaproportsionaalselt palju aega ning oma süsteemi portide skannimine on võimalik vaid kaudsete viiside kaudu. Üldiselt saab Nmap’i kasutada käsurealt. Zenmapil on aga võimas graafiline kasutajaliides, mis võimaldab kasutajatel võrgutööriista hõlpsasti kasutada.
Nmapi looja Gordon Lyon ja Nmap arendustiim vastutavad programmi ja selle pordiskannimisfunktsioonide edasiarendamise eest. Eelkõige sellised tehnoloogiad nagu operatsioonisüsteemi tuvastamine (st sihtmasina operatsioonisüsteemi äratundmine) ja pordite taga peituvate teenuste tuvastamine teevad Nmapist ühe populaarsemaid pordiskannerite lahendusi. Järgmises tabelis on esitatud selle programmi pakutavad erinevad meetodid:
| Portide skannimise meetodid | Nmap-käsk | Kirjeldus |
|---|---|---|
| TCP-ühendusskaneerimine | nmap -sT host | Klassikaline kontroll mitteadministraatoritele |
| TCP Syn-skann | nmap -sS host | Kiired, märkamatu kontrollimeetodid administraatoritele. |
| TCP FIN-/XMAS-/Null-skann | nmap -sF host nmap -sX host nmap -sN host | Meetodid, mis võimaldavad vältida tulemüüre |
| TCP ping -skann | nmap -sP host | Traditsiooniliste portide skannimise jaoks; aitab kontrollida hosti kättesaadavust. |
| TCP ACK-skann | nmap -sA host | Määrab kindlaks kättesaadavad pordid, kuid ei tee vahet avatud ja suletud pordide vahel |
| TCP Window skann | nmap -sW host | Võrreldav ACK-skannimisega; suudab tuvastada mõned avatud ja suletud pordid. |
| TCP Maimon-skaneerimine | nmap -sM host | FIN- ja ACK-skannide kombinatsioon. |
| TCP ooteseade | nmap -sI zombie host host | Kõige vähem märgatav, kõige keerulisem ja seetõttu aeglaseim skannimismeetod; töötab kolmanda arvuti kaudu, mida Nmap nimetab „zombieks”. |
| UDP-skaneerimine | nmap -sU host | Ühenduseta UDP-portide skannimismeetodid |
| SCTP algskannimine | nmap -sY host | Portide skannimine SCTP-ga, alternatiiv TCP-le ja UDP-le |
| IP-protokolli skannimine | nmap -sO host | Pordi skannimist ei toimu; kontrollitakse, millist IP-põhist protokolli sihtsüsteem toetab |
Nmap’i ametlikult veebilehelt saate alla laadida nii Nmap’i kui ka selle kasutajaliidese Zenmap oma operatsioonisüsteemi jaoks. Saadaval on nii praegune (stabiilne) versioon kui ka beetaversioon (arendusversioon).
Miks portide skannimine ei ole alati seaduslik
Portide kontrollimine ei ole alati seaduslik. Niipea kui tehakse katseärakasutada turvaauku (termin, mida küberjulgeoleku spetsialistid kasutavad turvaprobleemi või -lünka ära kasutamise kohta), võivad selle eest vastutav isik või rühm sattuda silmitsi võimalike õiguslike tagajärgedega.
Siiski on ebaselge, milline on õiguslik olukord juhul, kui arvutisüsteem seiskub intensiivse pordiskannimise tõttu. Ühendusnõuete suure sageduse tõttu võivad sellised jälgimismeetodid tekitada sihtsüsteemile probleeme, mis mõnikord viivad süsteemi kokkujooksmiseni. Lisaks võivad rünnaku sihtmärgiks oleva süsteemi administraatorid saada ründajate tegevusest teada juba enne süsteemi kokkujooksmist ja tõlgendada neid tegevusi rünnaku esimeste sammudena.
Sellistel juhtudel on oluline arvestada võimalike õiguslike tagajärgedega. Kui sihtmärgiks olevat süsteemi koormatakse tahtlikult üle, võib seda käsitada DDoS-rünnakuna, mille tagajärjel võib rünnaku ohver pöörduda kohtusse.
Tuleb alati veenduda, et teil on õigus süsteemi pordiskannimist läbi viia, ning kasutada seda meetodit ainult turvalisuse eesmärgil, mitte lihtsalt uudishimu rahuldamiseks. Siin käsitletud pordiskannimise meetodid rõhutavad, kui oluline on jälgida nii oma süsteemi pordid ja võrgus olevaid arvuteid kui ka neid kasutavaid teenuseid.