Linux palomuurina (iptables) sekä squid-proxy Linux-järjestelmät Winai Prathumwong TI10HJ 06.11.2012
2 Iptables (Netfilter) Johdanto Iptables on Linux-kernelin sisäänrakennetun palomuurin, Netfilter:in käyttöliittymä. Versiosta 2.4 lähtien, iptables on standardisoitu sisältymään kaikkiin Linux-distribuutioihin. Iptables käytetään IPv4 verkkoliikenteen hallintaan, manipulointiin, pakettien suodattamiseen ja NAT:in (Network Address Translation) konfiguroimiseen. Iptableskäyttöliittymä luo suodattamisen säännöt netfilter:ille. Iptables purkaa senhetkiset säännöt kernelistä, muuttaa niitä tai lisää niihin uusia, ja pakkaa säännöt takaisin kerneliin. Netfilter:ille säädetyt säännöt kootaan ketjuiksi, jotka muodostavat taulukoita. Historia Netfilter/iptables projektin aloitti Rusty Russell vuonna 1998. Rusty Russell oli myös iptables:in edeltävän ipchains:in projektin kehittäjä. Ipchains oli käytetyin verkkoliikenteen hallintaan ja palomuurikäyttöttöliittymä Linux 2.2 distribuutiossa. Ipchains perustuu Berkeley Sofware Distribution (BSD tai Berkeley Unix) käyttämään ipfirewall:iin, mutta ipchains:issa oli puutteita. Rusty Russell:in ja hänen tiiminsä (Netfilter Core Team) kehittämä iptables korvasi myöhemmin ipchains:in ja vuonna 2000 maaliskuussa se liitettiin Linux 2.3 distribuutioon. Iptables toi mukanaan mm. SPI (stateful packet inspection), palomuuri seuraa jokaista yhteyttä, joka pääsee läpi ja joissain tapauksissa tarkastaa datavirran sisällön ennakoidakseen miten toimia tietyissä protokollissa, ja pakettien suodattaminen MACosoitteen perusteella. Ipchains katsottiin vanhentuneeksi ja hitaaksi,jonka takia iptables syrjäytti sen ja otettiin käyttöön vakio palomuurikäyttöliittymänä.
3 Toiminta Iptables tutkii IP pakettien suodattamisen säännöt Linux kernel:in taulukoista. Jokainen taulukko sisältää sisäänrakennettua ketjuja ja voi myös sisältää käyttäjän määrittämät ketjut. Jokainen ketju on lista säännöistä, jotka voivat täsmätä tiettyihin paketteihin, jokainen sääntö määrittelee miten toimia paketin kanssa, joka täsmää säännön kanssa. Kun pakettia tarkastellaan, jos se ei vastaa tiettyä sääntöä, seuraava sääntö ketjussa tarkastetaan. Jos paketti vastaa jotain tiettyä sääntöä, se saa tietyn arvon riippuen ketjun säännöstä. Mahdollinen arvo, minkä paketti voi saada on ACCEPT, DROP, QUEUE, tai RETURN. Accept päästää paketin läpi. Drop paketti estetään. Queue paketti välitetään käyttäjätilaan (jos kernel tukee mahdollisuutta). Return pysäyttää paketin kulkemasta tietyssä ketjussa ja kutsuun seuraavaa sääntöä edellisessä ketjussa. Iptables:in sääntöketjut jaetaan viiteen luokkaan: INPUT, OUTPUT, FORWARD, PREROUTING ja POSTROUTING. Prerouting-ketjussa NAT suoritetaan ennen reititystä. Helpottaa paketin kohde IPosoitteen muuttamista yhteensopivammaksi palomuurin reititystaulun kanssa. Postrouting-ketjussa NAT suoritaan reitityksen jälkeen. Tarkoittaa sitä että ei ollut tarvetta Prerouting. Input-ketju suodattaa paketit, jotka ovat suunnattu palomuurille. Output-ketju suodattaa paketit, jotka saapuvat palomuurilta. Forward-ketju suodattaa paketit, jotka ovat suunnattu palvelimille, joiden käyttö on sallittu toisella NIC (Network Information Center) palomuurissa.
4 Paketin kulkukaavio seuraavasti iptables:in ketjuissa. 1. Saapuvat paketit käsitellään prerouting-ketjussa, missä ketju käyttää NAT:ia paketteihin ennen kuin mitään sääntöä tarkistellaan. 2. Reitityspäätös tehdään saapuvan paketin kohde ip-osoitteen mukaan. Inputketjussa paketin kohde ip osoite tarkastetaan, jos kohde ip osoite täsmää rajapinnan ip-osoitteeseen, paketti käsitellään input-ketjussa muussa tapauksessa paketti siirretään forward-ketjuun. Input-ketjussa tarkistetaan pakettiin liittyvät säännöt ja päätetään onko paketti sallittu. Jos paketti on sallittu, se lähetään output-ketjuun. 3. forward-ketjussa tarkistetaan pakettin liittyvät säännöt ja ohjataan oikeaan ketjuun. Paketti estetään jos sitä ei osata käsitellä ( tai ip-forward ei ole mahdollista.) 4. output-ketjussa suoritetaan pakettiin liittyvät sääntöjen tarkistukset. 5. viimeiseksi paketti käsitellään postrouting-ketjussa. Postrouting-ketjussa suoritetaan Nat paketille, kun säännöt pakettiin on sovellettu.
5 Squid-proxy Squid-proxy on välityspalvelin ja internet välimuistipalvelu sovellus. Squid-proxy on GPLlisenssin alainen julkaisema avoimen lähdekoodin sovellus, joka pohjautuu Unixkäyttöjärjestelmiin. Päämääräisesti käytetään HTTP ja FTP protokolliin, mutta Squidproxy:lla sisältää rajoitun tuen TSL, SSL, Internet Gopher ja HTTPS protokollille. Squid-proxy:lla on monta käyttötarkoitusta, kuten web palvelimen nopeuttaminen, web sivujen pyyntöjen välimuistiin tallentaminen ja liikenteen suodattamista. Web palvelimen nopeuttamissa Squid-proxy toimii koneen ja palvelimen välikätenä. Koneen lähettämät pyynnöt lähetetään välityspalvelin kautta palvelimelle ja välityspalvelin samalla tallentaa välimuistiin pyydetystä objektista. Jos sama kone tai eri koneet pyytävät samaa objektia ennen kuin objekti poistuu välityspalvelimen välimuistista, välityspalvelin voi välittömästi lähettää objektin koneelle, nopeuttaen lataamista ja samalla säästää kaistaa. Forward Proxy Squid-proxy tallentaa välimuistiin resursseja (esim. web sivut), jolloin seuraavalla kerralla kun käyttäjä pyytää tiettyä web sivuja, ne latautuvat välityspalvelmin välimuistista eikä alkuperäiseltä palvelimelta. Squid-proxy:lla on mahdollista disabloida tai muuttaa tiettyjä header-kenttiä koneen HTTP pyynnöistä, jolloin pystytään luomaan turvallisempi ja anonyymisempi yhteys.
6 Reverse Proxy Squid-proxy hakee resursseja koneen pyynnöstä yhdeltä tai useammalta palvelimelta, sitten haetut resurssit lähetetään koneelle, jolloin resurssit näyttävät tulleen itse palvelimelta. Proxy palvelin voi jakaa kuorman lähettämällä pyynnöt useammalle palvelimelle, jolloin jokainen palvelin voi hoitaa oman osuutensa kuormasta. Transparent proxy Välityspalvelin sieppaa viestinnän verkkokerroksen tasolla ilman tarvetta erilliselle palvelin konfiguraatiolle. Koneet eivät ole tietoisia välityspalvelimesta, näin ollen välityspalvelin on läpinäkyvä. Erittäin yleistä palveluntarjoajalle käyttää transparent välityspalvelinta, he sieppaavat koneiden pyyntöjä ja välimuistin palautuksia, minkä jälkeen näitä uudelleen käytetään. Palveluntarjoajat säästävät kaistaa ja samalla rahaa.
7 Lähteet : iptables (netfilter) = http://en.wikipedia.org/wiki/iptables http://www.giac.org/paper/gsec/3467/case-study-iptables-freeswanipsec/100714 http://linux.fi/wiki/iptables squid proxy = http://wiki.squid-cache.org/squidfaq/aboutsquid http://en.wikipedia.org/wiki/squid_%28software%29 http://whatis.techtarget.com/definition/squid-proxy-server