TCP Wrapper

Linux.fista
Siirry navigaatioon Siirry hakuun

TCP Wrapper käsittää ohjelman tcpd ja kirjaston libwrap, joilla rajoitetaan yhteydet koneen palvelimille mm. yhteyden ottavan koneen perusteella, ikään kuin palomuurilla. Asetustiedostoina ovat /etc/hosts.allow ja /etc/hosts.deny. Ohjelmaa tcpd käytetään inetd:n tai vastaavan yhteyksiä vastaanottavan "superpalvelimen" kautta, riipumatta palvelinohjelmasta. Kirjastoa libwrap käytetään kääntämällä palvelinohjelma käyttämään sitä suoraan.

Käyttö[muokkaa]

inetd & kumpp.[muokkaa]

/etc/inetd.conf sisältää rivejä tyyliin

nntp stream tcp nowait news /usr/sbin/tcpd /usr/sbin/leafnode

Tässä määrätään inetd:tä kuuntelemaan nntp-porttia (tcp 119), sallimaan useampia yhtaikaisia yhteyksiä (nowait) ja käyttäjänä news käynnistämään tcpd, joka puolestaan käynnistää itse palvelimen leafnode. Jos tcpd huomaa, että yhteys tietyltä koneelta ei ole sallittu, se ei käynnistäkään palvelinohjelmaa.

inetd:n kautta sopii käynnistää palvelimia, joita käytetään suhteellisen harvoin ja joiden käynnistäminen ei vie liikaa aikaa tai resursseja.

Muussa tapauksessa tämä lähestymistapa on epäkäytännöllinen, jolloin palvelin käynnistetään init-skripteistä (katso GNU/Linuxin käynnistysprosessi) ja palvelimen pitää itse huolehtia siitä, mitä yhteyksiä otetaan vastaan, usein käyttämällä libwrap-kirjastoa yhteyden alkuvaiheessa.

hosts.allow ja hosts.deny[muokkaa]

tcpd:tä tai libwrap-kirjastoa käyttävä ohjelma sallii yhteyden, jos se sallitaan tiedostossa /etc/hosts.allow tai jos sitä ei kielletä tiedostossa /etc/hosts.deny. Kotikoneilla yleensä kerrotaan sallittavat yhteydet allow-tiedostossa ja kielletään kaikki yhteydet deny-tiedostosssa:

# /etc/hosts.allow: list of hosts that are allowed to access the system.
ALL: 127.0.0.1
sshd:  minä@jokinkone.example.net .firma.example.fi EXCEPT UNKNOWN
sshd fingerd nntpd: 192.168.1. 192.168.2.
# /etc/hosts.deny: list of hosts that are _not_ allowed to access the system
ALL:ALL

Tässä sallitaan kaikki yhteydet koneelta itseltään (localhost eli loopback, 127.0.0.1), SSH-yhteydet tietyltä koneelta omalla tunnuksella sekä firman verkosta kysymättä tunnusta ja lopuksi yhteydet sshd-, finger- ja nyyssipalvelimeen kahdesta lähiverkosta. Kaikki muut yhteydet kielletään.

Palvelin määritellään avainsanalla ALL tai sillä nimellä, jona se käynnistetään (exec-kutsun argv[0]).

Pisteet verkkotunnuksen edessä ja ip-osoitteen lopussa tarkoittavat, että sääntö koskee koko aliverkkoa. Käyttäjätunnuksen käyttö vaatii toimivan identd-palvelun, joka kertoo tunnuksen. Käyttäjätunnuksena voi käyttää sanaa KNOWN, jolloin identd:n ei tarvitse kertoa itse tunnusta, mutta varmistaa, että yhteys on tältä koneelta. EXCEPT UNKNOWN tarkoittaa, että sääntö ei koske koneita, joiden nimipalvelimet eivät toimi oikein (katso alla).

ip-osoitteiden käyttö nimien sijaan on suositeltavaa, sillä nimi kysytään ip-osoitteen perusteella koneen oman verkon nimipalvelimelta ja on siten mahdollisesti yhteydenottajan hallinnassa. On mahdollista pyytää toinen nimipalvelukysely näin saadun nimen perustella käyttämällä koneen nimenä KNOWN, UNKNOWN tai PARANOID (tämän ominaisuuden voi myös kääntövaiheessa määritellä aina käytettäväksi), jolloin ongelma poistuu, mutta samalla evätään pääsy koneilta, joiden nimipalvelimia ei ole oikein säädetty, mm. suurelta osalta kuluttajaliittymistä, sekä muualtakin tiettyjen verkko-ongelmien aikana.

Vaihtoehtoja määrityksiin on hyvin monipuolisesti, esimerkiksi NIS-verkkoryhmien käyttö ja lokittaminen onnistuu suoraan. Katso manuaalisivu hosts_access(5).