You are here: TUTWiki>Tietoturva/Tutkielmat>JarvenpaaT?>2005-11

Tomi Kelo:

Port Knocking

Johdanto

Port Knocking, ´porttien koputtelu`, on tekniikka, joka mahdollistaa autentikoinnin eli käyttäjän tunnistamisen suljettujen porttien kautta. Tässä työssä keskitytään palvelin-asiakas- malliin, jossa asiakkaan tarvitsee autentikoituakseen palvelimelle tietää ´salainen koputus`, jonka jälkeen palvelin avaa tarvittavan portin asiakkaalle.

Nykyisessä TCP/IP-maailmassa palvelimien tulee pystyä usein tarjoamaan erilaisia palveluja, esimerkkeinä SSH, POP ja IMAP. Palvelimen tulee kuunnella tiettyjä portteja (edellä mainituissa yleensä 22, 110 ja 143) voidakseen toimia, toisin sanoen palvelimen täytyy pitää tiettyjä portteja aina auki, mikä mahdollistaa myös tunkeutumisyritykset auki olevien porttien kautta. Port Knocking pienentää edellä mainittua riskiä, koska portteja tarvitsee pitää auki vain palvelun ´suorittamisen` ajan.

Kuinka tämä on mahdollista? Mitkä ovat PK:n edut, mahdollisuudet, heikkoudet ja millaisiin ympäristöihin PK:ta voidaan käytännössä soveltaa? Voidaanko Port Knockingia käyttää myös pahaan? Muun muassa näihin kysymyksiin tullaan tässä harjoitustyössä vastaamaan.

Määritelmä

Port Knockingilla tarkoitetaan yleisesti tiedonsiirtoa, jossa informaatio saapuu suljettuihin portteihin kohdistuvien yhteyspyyntöjen muodossa, ja jossa oikea yhteyspyyntöjen sekvenssi laukaisee tapahtuman vastaanottajan päässä eli asiakkaan täytyy lähettää vastaanottajalle oikeita paketteja oikeisiin portteihin oikeassa järjestyksessä. Vastaanottaja ei lähetä operaation missään vaiheessa kuittausta lähettäjälle.

Tässä työssä keskitytään Port Knockingin tapaukseen, jossa toimijat ovat asiakas (client) ja palvelin (server). Tässä yhteydessä PK:lla tarkoitetaan kahden tietokoneen välistä tietoliikennettä, missä informaatio on koodattu porttinumerosekvensseiksi. Tästä sekvenssistä käytetään termiä koputus (knock). Ennen kuin informaatio koodataan, voidaan informaatioon soveltaa luonnollisesti myös muita tietoturvallisuutta lisääviä mekanismeja kuten informaation kryptausta. Tässä tilanteessa Port Knocking tuokin luonnollisesti järjestelmän turvamalliin vain yhden suojakerroksen lisää.

Asiakas-palvelin -mallin tapauksessa palvelin tarjoaa ulospäin julkiseen verkkoon vain suljetut portit ja tarkkailee portteihin kohdistuvia yhteysyrityksiä, toisin sanoen kuuntelee porttien
koputtelua. Yhteys avataan tässä tapauksessa seuraavan protokollan mukaisesti:
1. Asiakas aloittaa lähettämällä yksinkertaisimmillaan TCP:n SYN-paketteja koputuksen määräämiin portteihin.
2. Palvelin kuuntelee koputuksia, mutta ei kuitenkaan lähetä missään vaiheessa kuittauksia asiakkaalle.
3. Kun palvelin havaitsee oikean koputuksen, se käynnistää palvelimen prosessin (server-side process) eli palvelin voi esimerkiksi avata oikeat portit ja asiakas voi siten muodostaa yhteyden ja käyttää haluttua palvelua.

Laillista koputusta ja palvelimen prosessia ei ole tarkasti määritelty, vaan ne on tarkoituksella jätetty vapaasti implementoitaviksi. Esimerkiksi palvelimen prosessilla voidaankin tarkoittaa dynaamista palomuurin sääntöjen muokkausta tai muita hallinnollisia toimenpiteitä. (Mukailtu lähteestä [1].)

Tässä harjoitustyössä käytetään Port Knockingista jatkossa termiä porttien koputtelu.

Porttien koputtelu - edut ja mahdollisuudet

Tässä osiossa esitellään kaksi porttien koputtelun käytöstä saatavaa etua: Porttien koputtelun avulla voidaan pienentää hyökkäysriskiä ja toisaalta mahdollistaa luotetut yhteydet myös epäluotettavista verkoista muun muassa etätyön tapauksessa.

Porttien koputtelu - toteutustavat ja haavoittuvuudet

Staattinen koputus
Piilotettu koputus (covert knock)
Dynaaminen koputus
Kertakoputus (one-time-knock)

Porttien koputtelu - käyttö pahaan

Tässä osiossa esitellään kuinka haittaohjelmien kirjoittajat voivat käyttää porttien koputtelua omiin tarkoituksiinsa.

Porttien koputtelu - käyttötarkoitukset ja soveltuvuus erilaisiin ympäristöihin

Porttien koputtelu tarjoaa mielenkiintoisen mekanismin, jonka avulla voidaan pienentää avointen porttien kautta tapahtuvien hyökkäysten riskejä. Koska porttien koputtelusta saatava tietoturvaetu perustuu nimenomaan siihen, että portit avataan vain tarpeen mukaan, porttien koputtelu ei sovellu jatkuva-aikaisen palvelun, kuten www-palvelun, tai yleisemmin suurten käyttäjämäärien palvelujen tarjoamiseen. Koputusten tarkkailun vaatima prosessointiaika rajaa myös pienen laskentakapasiteetin järjestelmät soveltuvuusalueen ulkopuolelle.

Parhaiten porttien koputtelu soveltuu pienten, ei-jatkuva-aikaisten järjestelmien autentikaatiomekanismiksi. Esimerkiksi yrityksen palvelimelle voidaan tarjota SSH-yhteys, jonka käyttöön tarvittava portti avataan vain tarpeen mukaan. Näin pystytään välttämään suuri osa kyseessä olevan portin kautta tapahtuvien hyökkäyksistä yksinkertaisesti siksi, että portti on kiinni valtaosan ajasta.

Lähteet

  • 4. Port Knockning 2005. PortKnocking?.org [verkkosivusto]. [viitattu 2.11.2005]. Saatavissa: http://portknocking.org .
  • 5. RFC 2289. 1998. A One-Time Password System. Julkaisussa: The Internet Engineering Task Force [verkkotietokanta]. Julkaistu helmikuussa 1998 [viitattu 17.11.2005]. Saatavissa: http://www.ietf.org/rfc/rfc2289.txt .


-- TeroJarvenpaa? - 19 Sep 2009
Print version |  PDF  | History: r4 < r3 < r2 < r1 | 
Topic revision: r4 - 06 Sep 2010 - 12:36:45 - MarkoHelenius
 

TUTWiki

Copyright © by the contributing authors. All material on this collaboration platform is the property of the contributing authors.
Ideas, requests, problems regarding TUTWiki? Send feedback