Firewalld

Je nástroj pro dynamickou správu firewallu s podporou síťových zón, které definují úroveň důvěry síťových spojení. Podporuje rovněž IPv4, IPv6, ethernetové mosty a sady IP adres. Poskytuje také rozhraní pro přidávání pravidel přímo jako služby a aplikace. Více na domovské stránce projektu.

Kde jej najdeme?

Firewalld je použit v následujících linuxových distribucích jako základní nástroj správy firewallu:

Níže jsou aplikace a knihovny podporující firewalld:

Konfigurační soubory

Pro nastavení firewallu můžeme využít definice zón, služeb a sad IP adres. V /etc/firewalld/ najdeme tyto adresáře, které obsahují nastavení daných komponent. Důležité tedy pro nás jsou:

firewalld.conf

Obsahuje základní nastavení a definice firewallu, důležitá je pro nás řádka, kde definujeme výchozí zónu:

DefaultZone=public

ipsets/

Obsahem tohoto adresáře jsou sady IP adres, u kterých můžeme později určit zda budou blokovány anebo povoleny. Vytvořím si například soubor whitelist.xml, který bude sloužit k zápisu lokálních a povolených adres:

<ipset type="hash:net"> <description>Lokalni a povolene adresy</description> <entry>10.0.0.0/8</entry> <entry>192.0.0.0/8</entry> </ipset>

Pro blokování některých IP adres si vytvořím soubor blacklist.xml s obsahem adres:

<ipset type="hash:net"> <description>Blokovane adresy</description> <entry>22.0.0.0/8</entry> </ipset>

services/

Slouží pro konfigurační soubory jednotlivých služeb, můžeme využít stávající služby anebo vytvořit nový název služby s pravidly. Příklad pro službu SSH vypadá následovně, vytvořím soubor ssh.xml a do něj zapíši:

<service> <short>SSH</short> <description>Sluzba SSH</description> <port protocol="tcp" port="22"/> </service>

zones/

Obsahuje konfigurační soubory zón jako například public.xml, která má přísnější pravidla oproti ostatním. Obsahem takové zóny public pro službu SSH a lokální adresy definované v souboru whitelist.xml a blokované adresy zapsané v souboru blacklist.xml je:

<zone> <short>Public</short> <description>Zabezpecena pravidla firewallu, pouze vybrana prichozi spojeni jsou prijimana.</description> <rule family="ipv4"> <source ipset="whitelist"/> <service name="ssh"/> <accept/> </rule> <rule family="ipv4"> <source ipset="blacklist"/> <service name="ssh"/> <drop/> </rule> </zone>

Hodící se příkazy

Zobrazí aktuální nastavení firewallu:

firewall-cmd --list-all

Znovunahrání pravidel a firewallu:

firewall-cmd --reload

Nastavovací skript

Pro pohodlné nastavení firewallu jsem vytvořil skript, který provede patřičná nastavení:

Stáhnout konfigurační skript je možné zde: