This chapter focuses on packet filtering basics, explains various options available with iptables
commands, and explains how filtering rules can be preserved between system reboots.
Belangrijk
Het standaard firewall mechanisme in 2.4 en latere kernels is iptables
, maar iptables
kan niet gebruikt worden als ipchains
al draait. Als ipchains
aanwezig is tijdens het opstarten, geeft de kernel een fout en wordt iptables
niet opgestart.
De functionaliteit van ipchains
wordt niet getroffen door deze fouten.
De Linux kernel gebruikt Netfilter om pakketten te filteren en staat toe dat sommige van hen ontvangen of doorgelaten worden, terwijl gestopt worden. Deze functionaliteit is ingebouwd in de Linux kernel, en heeft drie ingebouwde tabellen of regel lijsten, namelijk de volgende:
filter
— De standaard tabel voor het afhandelen van netwerk pakketten.
nat
— Wordt gebruikt om pakketten te veranderen die een nieuwe verbinding maken en wordt gebruikt voor Network Address Translation (NAT).
mangle
— Wordt gebruikt voor specifieke soorten pakket verandering.
Elke tabel heeft een groep van ingebouwde ketens, welke overeenkomen met de acties die netfilter
uitvoert op de pakketten.
De ingebouwde ketens voor de filter
tabel zijn de volgende:
INPUT — Wordt toegepast op netwerk pakketten die bestemd zijn voor de host.
OUTPUT — Wordt toegepast op lokaal aangemaakte pakketten.
FORWARD — Wordt toegepast op netwerk pakketten die door de host geleid worden.
De ingebouwde ketens voor de nat
tabel zijn de volgende:
PREROUTING — Verandert netwerk pakketten als ze binnenkomen.
OUTPUT — Verandert lokaal aangemaakte pakketten voordat ze verzonden worden.
POSTROUTING — Verandert netwerk pakketten voordat ze verzonden worden.
De ingebuwde ketens voor de mangle
tabel zijn de volgende:
INPUT — Verandert netwerk pakketten die bestemd zijn voor de host.
OUTPUT — Verandert lokaal aangemaakte pakketten voordat ze verzonden worden.
FORWARD — Verandert netwerk pakketten die door de host geleid worden.
PREROUTING — Verandert binnenkomende netwerk pakketten voordat ze verder geleid worden.
POSTROUTING — Verandert netwerk pakketten voordat ze verzonden worden.
Elk netwerkpakket dat wordt ontvangen of verstuurd door een Linux systeem wordt onderworpen aan tenminste een tabel. Een pakket kan echter onderworpen zijn aan meerdere regels binnen elke tabel voordat het aan het einde van de keten verschijnt. De structuur en het doel van deze regels kan anders zijn, maar gewoonlijk proberen ze een pakket te identificeren als het komt van of gaat naar een bepaald IP adres, of een verzameling van adressen, bij het gebruik van een bepaalde protocol of netwerk service.
Opmerking
Standaard worden firewall regels opgeslagen in de /etc/sysconfig/iptables
of /etc/sysconfig/ip6tables
bestanden.
De iptables
service start voor elke andere aan DNS gerelateerde service als een Linux systeem wordt opgestart. Cit betekent dat firewall regels alleen naar numerieke IP adressen (bijvoorbeeld, 192.168.0.1) kunnen refereren. Domein namen (bijvoorbeeld, host.example.com) veroorzaken in zulke regels fouten.
Als een pakket overeenkomt met een bepaalde regel in een van de tabellen wordt, onafhankelijk van hun bestemming, een doel of actie op hen uitgevoerd. Als de regel een ACCEPT
doel voor een overeenkomend pakket specificeert, slaat het pakket de rest van de regel controles over en wordt het toegestaan om te vervolgen naar zijn bestemming. Als een regel een DROP
doel specificeert, wordt dat pakket toegang tot het systeem geweigerd en er wordt niets terug gestuurd naar de host die het pakket verzond. Als de regel een QUEUE
doel specificeert, wordt het pakket doorgegeven naar de gebruikersruimte. Als de regel het optionele REJECT
doel specificeerde, wordt het pakket geweigerd, maar een fout pakket wordt terug gestuurd naar de verzender van het pakket.
Elke keten heeft een standaard tactiek voor ACCEPT
, DROP
, REJECT
, of QUEUE
. Als geen van deze regels inb de keten van toepassing is op het pakket, dan wordt het pakket behandeld overeenkomstig de standaard tactiek.
Het iptables
commando configureert deze tabellen, en zet zo nodig ook nieuwe tabellen op.