Een pakket filter is een stukje software wat naar de header van pakketjes kijkt terwijl ze langskomen. In de header staat informatie over het pakketje en dat wordt onder andere gebruikt om het lot van het pakketje te bepalen. Meestal is dat ofwel doorlaten (accept), ofwel tegenhouden (drop).
Onder Linux zit het pakket filter in de kernel ingebouwd en dat biedt wat meer mogelijkheden voor wat er met de pakketjes kan gebeuren. Natuurlijk is het idee nog steeds hetzelfde: aan de hand van informatie over het pakketje wordt besloten wat ermee gebeurt.
Als je je Linux computer gebruikt om je interne netwerk aan het internet of een ander netwerk te hangen, krijg je de mogelijkheid om bepaalde pakketjes wel door te laten, en andere niet. Wil je niet dat je werknemers naar www.playboy.com gaan, dan kan dat met een pakket filter.
Als je Linux computer de grens is tussen het chaotische internet vol met crackers, hackers en scriptkiddies en je eigen veilige netwerkje, dan is het fijn om te weten dat je al dit slechts buiten kan sluiten met een pakket filter. Aangezien de meeste mensen alleen de connecties naar buiten willen maken en voorkomen dat er een connectie naar binnen wordt gemaakt, kan een pakket filter in veel situaties veiligheid bieden.
Als er iets vreemds gebeurd op je netwerk, zoals een machine die opeens allemaal pakketjes begint te versturen zonder reden, wil je er vast vanaf weten. Als je weet wat er gebeurt op je netwerk, kan je ingrijpen als het nodig is.
Linux had al een pakket filter sinds de 1.1 kernels. Deze eerste filters kwamen oorspronkelijk uit BSD en werden door Alan Cox in Linux ingevoerd. Toen kernel 2.0 uit kwam was er een nieuwe tool, door Jos Vos: ipfwadm was nu het programma om de filter regels mee in te stellen. In kernel 2.2 werd weer een nieuw programma ontwikkeld, namelijk ipchains. Nu is het zover dat de 2.4 kernels er zijn en nogmaals een nieuwe pakket filter hebben: iptables. Iptables brengt ook echt nieuwe opties met zich mee, die ipchains en ipfwadm niet hadden. Zo kan je nu ook regels maken op basis van de gebruiker die het pakketje verstuurd, of op basis van hoeveel connecties er al zijn.
Om het pakket filter te kunnen gebruiken moet je je kernel wel compilen met netfilter. Netfilter is het deel van de kernel wat iptables gebruikt om zijn regels te realiseren. Je hebt minimaal kernel 2.3.15 nodig, en je moet de optie CONFIG_NETFILTER aanschakelen.
Het programma iptables geeft aan de kernel door welke regels in werking moeten treden, en de kernel zorgt ervoor dat elk pakketje gecontroleerd wordt. Dit betekent echter wel dat als je de computer opnieuw opstart, de regels weer verloren gaan. Er zijn wel manieren om dit tegen te gaan, zie hiervoor Regels instellen bij het opstarten.
iptables vervangt ipfwadm en ipchains, maar met een speciale module kan je nog steeds je oude regels gebruiken onder iptables. Zie hiervoor Ipchains of ipfwadm gebruiken
Omdat de pakket filter regels in de kernel worden opgeslagen, zullen deze verloren gaan bij het opnieuw opstarten van de computer.
Er zijn twee manieren om dit te voorkomen. Er zijn twee programma's, namelijk iptables-save en iptables-restore die een set regels in een bestand kunnen opslaan. Je kan dan bij het opstarten van je computer de regels laden uit een bestandje.
Je kan ook de filter regels in een scriptje zetten en het scriptje elke keer laden bij het opstarten van de computer. In het scriptje staan dan de commando's die je ook gebruikte om de huidige regels in te stellen.