Een klassieke firewall is statisch. Dat betekent dat elke wijziging aan de firewallregels een volledige herstart van de firewall vereist. Daardoor worden de kernelmodules voor de firewall opnieuw geladen en verliest de firewall zijn huidige toestand. Het gevolg: verbindingen worden afgebroken. Eén van de nieuwe projecten van Fedora is een dynamische firewall, die deze problemen niet heeft: firewalld, dat sinds Fedora 18 standaard ingeschakeld is.

Firewalld is een daemon die de firewall van de Linux-kernel dynamisch beheert en wijzigingen kan doorvoeren zonder de hele firewall te moeten herstarten. Het nadeel is dan wel dat alle firewallwijzigingen via deze daemon moeten gebeuren. Via D-Bus kunnen toepassingen aan firewalld informatie vragen over de huidige toestand van de firewall en ze kunnen op deze manier ook vragen om wijzigingen aan de firewallregels door te voeren.

Firewall-cmd

De D-Bus-interface is voor toepassingen bedoeld, maar als beheerder zul je firewalld vooral gebruiken via de commandline-tool firewall-cmd. Een service toestaan of weigeren gaat bijvoorbeeld als volgt:

# firewall-cmd --add-service=ssh

# firewall-cmd --remove-service=ssh

Om te zien welke services ondersteund zijn, vraag je dit als volgt op:

# firewall-cmd --get-services

Als je een bepaalde service slechts een bepaalde tijd wil toestaan, kan dat ook eenvoudig. Wil je Samba bijvoorbeeld slechts een minuut toestaan? Heel eenvoudig:

# firewall-cmd --add-service=samba --timeout=60

Wil je de firewall op een grafische manier configureren, gebruik dan firewall-config; het programma system-config-firewall ondersteunt firewalld niet. Het nieuwe applet dat je toegang geeft tot je firewallconfiguratie heet firewall-applet. Overigens zijn bovenstaande commando's voorbeelden voor een runtime configuratie, die na een reboot niet behouden blijft. Met de optie --permanent maak je je configuratiewijziging permanent. In firewall-config selecteer je hiervoor bij "Current View" de keuze "Permanent Configuration". Meer informatie over de mogelijkheden van firewalld vind je op de wiki van Fedora.

Zones

Firewalld definieert ook een aantal zones. Met een zone definieer je de mate van vertrouwen dat je hebt in netwerkverbindingen. De zone met het minste vertrouwen heet drop en laat alle inkomende netwerkpakketjes vallen; enkel uitgaand netwerkverkeer is dan mogelijk. Aan het andere uiterste heb je de zone trusted, die alle netwerkverbindingen toestaat. Daartussen heb je zones zoals public, external, dmz, work, home en internal, en deze zones kun je zelf naar je wensen aanpassen. In /etc/firewalld/zones vind je de standaardconfiguratie van de zones en in /lib/firewalld/zones komen je aangepaste zones te staan.

In firewall-config kun je je zones grafisch beheren, maar het kan ook met firewall-cmd. Wil je bijvoorbeeld zien wat je in welke zone kan, dan geef je het volgende commando:

# firewall-cmd --list-all-zones

Je firewallconfiguratie heeft ook altijd een standaardzone, die je kunt opvragen met firewall-cmd --get-default-zone. Alle opdrachten met firewall-cmd worden uitgevoerd op de standaardzone, tenzij je met de optie --zone= de zone specificeert. Stel dat je bijvoorbeeld inkomende ssh-verbindingen niet wil toestaan als je computer aan een publiek netwerk hangt, dan definieer je dat als volgt:

# firewall-cmd --zone=public --remove-service=ssh

In NetworkManager stel je dan in aan welke zone je netwerkverbinding toegekend wordt.

Statische firewall

De statische firewall is in Fedora overigens nog altijd beschikbaar. Je schakelt deze terug in met:

# lokkit --enabled

Je kunt perfect zowel firewalld als de statische firewall op één systeem hebben staan, maar je kunt uiteraard slechts één van de twee firewalls tegelijk ingeschakeld hebben. De ontwikkelaars plannen om in Fedora 20 de statische firewall niet meer te ondersteunen.