Iptables

**Iptables** on Linux-kernelin sisäänrakennetun palomuurin, netfilterin käyttöliittymä. Iptables on standardinomaisesti mukana kaikissa moderneissa Linux-jakeluissa. Netfilter/iptables-projektin aloitti Rusty Russell vuonna 1998. Projekti valmistui marraskuussa 2000, jolloin netfilter liitettiin kernelin versioon 2.3.

Iptablesia käytetään komentoriviltä, mutta siihen on erikseen saatavissa myös graafisia käyttöliittymiä. Iptables luo netfilterille sääntöjä (), jotka kootaan *ketjuiksi* (*chain*). Ketjut muodostavat taulukoita (*tables*). Iptablesin käyttämiseen vaaditaan pääkäyttäjän (rootin) oikeudet.

Iptables on korvannut ipchainsin.
nftables on iptablesin seuraaja.

## Peruskäsitteitä

Pakettien käsittely perustuu sääntöihin (rule), joita voidaan muokata iptables-komennolla. Kussakin säännössä on tietyt ehdot, jotka määrittävät mihin paketteihin kyseistä sääntöä sovelletaan. Ehdot voivat määrittää esimerkiksi, että sääntöä sovelletaan paketteihin, jotka saapuvat tietystä IP-osoitteesta, tai jotka ovat matkalla tiettyyn porttiin. Lisäksi kussakin säännössä määritellään mikä toiminto suoritetaan kun paketti täsmää säännön ehtoihin. Yleensä toiminto on joko hylkääminen (DROP) tai hyväksyminen (ACCEPT).

Säännöt tallennetaan ketjuihin (chain). Kun paketti tulee käsiteltäväksi tiettyyn ketjuun, käydään ketjun sääntöjä järjestyksessä lävitse yksi kerrallaan, kunnes löytyy sääntö joka täsmää pakettiin.

Ketjut tallennetaan tauluihin (table). Oletuksena iptables käsittelee filter-taulua, jolla voidaan toteuttaa tavanomainen palomuuritoiminnallisuus. Muitakin tauluja on olemassa, mutta niiden käsittelyä voidaan pitää edistyneempänä käyttönä.

Säännöillä voidaan esimerkiksi määrittää, että tietystä IP-osoitteesta tai tiettyyn porttiin saapuvat paketit joko estetään tai päästetään läpi. Säännöillä voidaan myös määritellä edistyneempiä toimintoja, esimerkiksi voidaan estää uudet yhteydet tietystä IP-osoitteesta, jos yhteyksiä on jo samasta IP-osoitteesta auki liian monta.

## Yksinkertainen palomuuri

Iptablesin oletuksena käsittelemässä filter-taulussa on kolme sisäänrakennettua ketjua, INPUT, FORWARD ja OUTPUT. Kun ulkomaailmasta saapuu palvelimelle paketti, siihen sovelletaan INPUT-ketjussa olevia sääntöjä. Vastaavasti jos palvelimelta lähtee ulospäin paketti, siihen sovelletaan OUTPUT-ketjussa olevia sääntöjä. FORWARD-ketjun sääntöjä sovelletaan siinä tapauksessa, että paketti saapuu palvelimelle ulkoa päin, mutta sen lopullinen kohde on jokin toinen palvelin, eli paketti on vain kauttakulkumatkalla.

## Ongelmatilanteita

Joissakin jakeluissa käytössä olevat verkkoyhteyden hallintatyökalut saattavat aiheuttaa ongelmia, jos iptablesia käytetään käsin. Esimerkiksi Ubuntun käyttämä NetworkManager on tällainen.

Jakelun oma palomuuriasetusohjelma (esimerkiksi YaST openSUSEssa tai system-config-firewall Fedorassa) voi olla ristiriidassa käyttäjän oman iptables-skriptin kanssa. Käytännössä kannattaa joko poistaa palomuuriasetusohjelma kokonaan käytöstä tai ainakin huolehtia siitä, että sen tuottama iptables-skripti ajetaan käynnistyksen yhteydessä (init) ennen omaa skriptiä. Sama pätee luonnollisesti myös Firestarterin ja Shorewallin kaltaisiin ulkoisiin palomuuriasetustyökaluihin.

## Lähteet

## Aiheesta muualla

* Iptables-opas Gentoo-wikissä  
* Ubuntun iptables-opas 
* Artikkelin lähdeaineisto
* Ohjeita iptablesin muokkaamiseen