IPTables, chains & rules
![]() | Dit artikel gaat over de IPTables concepten van tables (tabellen), chains (kettingen) en rules (regels) en hoe deze worden toegepast om een computer met Linux te gebruiken als een firewall. We zullen hier niet de IPTables hiëroglyfen die nodig zijn om een firewall samen te stellen bespreken. Dit artikel gebruikt een schema als een referentiekader om IPTables te introduceren met een niet-technische benadering. In management termen is deze presentatie vereenvoudigd (dummied-down). |
Om de gebruiker te introduceren in de fascinerende en soms complexe wereld van Netfilter, IPTables hebben we een uitgangspunt nodig. Als netwerkpersoon, vind ik comfort in de fysieke wereld van computer netwerken en niet de virtuele wereld van programmeren. Als centraal punt in deze discussie zal een multi-homed (meerdere netwerkkaarten) PII 233MHZ MMX, 130Meg RAM GA-586TX2 Gigabyte moederbord met twee D-Link 538TX fast Ethernet Adapters als platform dienen.
Sorry daarvoor. I herinner me dat we iets hadden gezegd over het zo eenvoudig mogelijk houden van deze bespreking. Laten we die regel nog eens proberen. Als uitgangspunt in deze bespreking zullen we een personal computer (PC) met twee netwerkkaarten (NIC, Network Interface Card) gebruiken. Een NIC is verbonden met een hub (niet weergegeven) voor toegang tot het thuis netwerk, de andere NIC is aangesloten op een ADSL modem voor toegang tot het Internet netwerk. Figuur 1 geeft de opstelling weer.

Hier is een korte introductie tot IPTables, zoals gevonden op de ondersteunende website www.netfilter.org. Netfilter en IPTables vormen het framework in de 2.4.x kernel, die pakket filtering, Network Adress Translation (NAT, het vertalen van netwerk adressen) en andere packet bewerkingen mogelijk maakt.
Humm... Laat me iets verder ingaan op wat informatie die in bovenstaande definitie is opgenomen.
- Packets (pakketen) zijn de protocol data units (PDU, data eenheden) die gevonden worden om de netwerk laag van het OSI model. Deze term leidt tot enige verwarring wanneer deze wordt gebruikt om PDU's te beschrijven die zich op de media (kabel) of fysieke laag bevinden. PDU's die over de kabel reizen worden frames genoemd. Packets zijn opgenomen in frames. Een eenvoudige uitleg kan gevonden worden op
www.linuxjournal.com/article.php?sid=6446.
Door bekend te zijn met de opbouw van een packet, is het mogelijk om de inhoud te te controleren en regels (rules) te maken om te selecteren op de inhoud van packets.
- Network Adress Translation (NAT) is een standaard die een netwerk in staat stelt om een set IP adressen te gebruiken voor het verplaatsen van data pakketten binnen het lokale netwerk (LAN) en een tweede set IP adressen voor het externe verkeer op het Internet. De firewall in figuur 1 functioneerd als een adres-vertalings apparaat tussen de adressen op de thuis zijde van het netwerk en adressen aan de Internet kant.
- Mangling stelt een kernel in staat om de inhoud van specifieke header velden te veranderen.
- Netfilter is een set haken binnen in de netwerk stack van de kernel,die de kernel modules in staat stelt callback functies te registreren op het moment dat er pakket langs zo'n haak gaat. IPTables is een tabel structuur voor de definitie van regel sets die de kernel haken gebruikt om packets te testen alvorens ze naar een specifiek netwerk worden doorgestuurd.
Om IPTables te begrijpen is een IPTables gids handig. IPTables is opgebouwd uit drie blokken, zoals weergegeven in figuur 2; tables (tabellen), chains (schakels) en rules (regels). Een regel is een operatie die wordt uitgevoerd op een pakket, een chain is een verzameling regels en een table is een verzameling chains.
De Oekraïnsche gemeenschap heeft een traditioneel speelgoed dat een bubba pop wordt genoemd. Een houten popje wordt in een andere houten pop geplaatst, welke op zijn beurt in een houten pop wordt geplaatst enzovoort (In Nederland zijn deze poppen ook bekend onder de naam "baboeschka"). Deze analogie kan gebruikt worden om het IPTables formaat zichtbaar te maken.

IPTables heeft drie tabellen; filter, nat en mangle. Deze drie tabellen bevatten acht systeem chains. De filter tabel heeft de volgende chains: input (inkomend), forward (doorsturen) en output (uitvoer). De nat tabel heeft de chains prerouting (voorbereidend) en postrouting (nazorg). De mangle tabel bevat de chains preouting, input en output. Er is nog een chain buiten deze drie tabellen, genaamd de user (gebruiker) chain.
Figuur 3is grafische weergave van hoe een pakket door IPTables vloeit, over het netwerk dat aan het begin van het artikel werd besproken. De beheerder van de firewall heeft de mogelijkheid om alle, sommige of geen van de IPTables structuren voor de interfaces van de computer te gebruiken: IPTables functionaliteit is wat de computer als firewall laat functioneren.

Als een pakket de firewal binnenkomt via interface eth0, is de eerste chain de mangle tabel, prerouting chain (mangle/prerouting). Zoals je hebt gelezen, stelt de mangle tabel de kernel in staat om de inhoud van specifieke pakket header velden te wijzigen. De regels in deze chain ondersteunen deze operatie.
Na mangle/prerouting, komen de packets bij nat/prerouting. Zoals eerder genoemd, wordt nat gebruikt voor het IP adres omzetting van een netwerk naar een ander. De regels hierin veranderen het doel IP adres of poort.
Route is geen tabel, chain of regel die in de vorige bespreking was vergeten. Het route pad controleerd het doel IP adres van de pakketten en routeerd deze naar filter/input als het adres overeenkomt met die van de firewall host of naar filter/forward voor alle andere.
Filter/input controleerd alle pakketten die binnenkomen op de firewall. Deze bevat regels die bepalen of een pakket wordt geaccepteerd of geblokkeerd. Eenvoudig gezegd is het een pakket-filter.
Sommige proccessen op de firewall kunnen de interfaces gebruiken om te communiceren met apparaten of services op andere netwerken. Zo zou de computer die dienst doet als firewall ook een service voor Network Time Protocol kunnen draaien. Deze service heeft geen invoer van gebruikers nodig om te functioneren. Er is wel een communicatie pad nodig naar een gezamelijke tijd-bron.
Mangle/output vervult een vergelijkbare functie als mangled/prerouting. Op dit punt passeren alleen pakketten die zijn gegenereerd op de firewall mangle/output.
Filter/output behandeld pakketten die van buiten de firewall host komen. Hij bevat regels die vaststellen of een pakket geaccepteerd of geblokkeerd wordt. Simpel gezegd is dit een packet-filter.
Verderop in het pad controleerd filter/forward de pakketten die werden doorgestuurd vanaf het externe netwerk naar het lan netwerk. De belangrijkste functie: karakteristieken van een pakket bekijken en bepalen of deze geblokkeerd of geaccepteerd moet worden.
Nat/postrouting is het laatste punt het in het pad voor pakketten. Nat/postrouting bevat regels om het bron IP adres of bron poort van een pakket te wijzigen.
Als hulp voor de lezer nemen we deze lijst en vereenvoudigen we het.
| List of tables |
Mangle/prerouting: Zelden gebruikt Nat/prerouting called: Prerouting Filter/forward called: Forward Nat/postrouting called: Postrouting Filter/input called: Input Mangle/input: Zelden gebruikt Mangle/output: Zelden gebruikt Filter/output: Output |
Een chain die niet in het schema is genoemd is de user chain. User chains zijn geaccosieerd met alle tables. Pakketten worden naar een user chain verplaatst als ze door een chain gaan die een "j" actie bevat. Ik heb vaak de neiging om de "j" actie een jump (sprong) te noemen omdat je van een naar een user chain "jumped" na het passeren van de regel.
De praktijk is altijd mijn geel-stenen pad geweest bij het ontwarren van de mysteries van IPTables. Net als Dorothy in de Tovenaar van Oz, had ik assistentie van drie bronnen op mijn reis; Red Hat Linux Firewalls van Bill McCarty, Linux Firewalls van Robert L. Ziegler en een aantal artikelen op het Internet. Mijn volgende trip was naar de computer boekhandel zal me de kans geven Ziegler's tweede uitgave van Linux Firewalls te bekijken. Zijn eerste boek concentreerde zich op IPChains, een van de voorlopers van IPTables. Uit de boekbesprekingen begrijp ik dat zijn tweede boek de IPTables gids is.
Terwijl een lap grijs haar, indicatief voor mijn 40+ jaren, zich op mijn hoofd vormt, denk ik aan hoe de afgelopen vijf jaar me voldoende kennis heeft opgeleverd om deze interpretatie van IPTables te schrijven. "Kompleet met tekeningen" zoals mijn collega's zouden zeggen. De tot nog toe opgedane kennis is een veel benodigde fundering die gebruikt kan worden om de commando hiëroglieven te onderzoeken en een firewall met IPTables op te zetten.
Auteur Profiel:
De auteur van dit artikel is een voormalig college insturcteur en Netwerk specialist voor een Regionale Telecommunicatie bedrijf in Canada. Samen met systeembeheerders is hij verantwoordelijk voor de zorg en operationele ondersteuning van systemen in de telecommunicatie wolk. Hij geeft en volgt nog steeds netwerk theorie lezingen. Zijn formele training electronica technologie ontwerp, gecombineerd met educatie achtergrond leveren waardevolle eigenschappen voor het bereiken van een doel, wat het leren over computers en netwerken makkelijker maakt.
Sean D. Conway CET
