firewalld

firewalld je utilita pro správu firewallu v linuxových operačních systémech. Chová se jako front-end pro framework Netfliter. Jako svůj backend používá v aktuální verzi nftables, dříve používal iptables. Je před instalován například v distribucích CentOS, Red Hat, Fedora a SUSE.

Zóny

Zóny jsou základním stavebním kamenem celého firewalld, použitá zóna nám určuje důvěrnost sítě. Ve firewalld nalezneme několik před konfigurovaných zón, veškeré zóny v systému si můžeme vypsat pomocí příkazu firewall-cmd --get-zones.

Předdefinované zóny

drop - nejnižší důvěryhodnost, veškerá příchozí komunikace bude zahozena

block - veškerá příchozí bude odmítnuta s icmp zprávou icmp-host-prohibited/icmp6 zprávou icmp6-adm-prohibited

Zóny kde ostatním počítačům nevěříte

public - vhodná pro veřejné sítě, pouze určitá příchozí komunikace bude propuštěna

external - určená pro externí sítě se zapnutou maškarádou, především pro routery, pouze určitá příchozí komunikace bude propuštěna

dmz - dle dokumentace “pro počítače ve vaší demilitarizované zóně”, cokoliv co to znamená

Zóny kde ostatním počítačům spíše věříte

work - určena pro domácí použití, pouze určitá příchozí komunikace bude propuštěna

home - určena pro firemní použití, pouze určitá příchozí komunikace bude propuštěna

internal - určena pro interní sítě, pouze určitá příchozí komunikace bude propuštěna

trusted - nejvyšší míra důvěryhodnosti, veškerá příchozí komunikace bude propuštěna

Atributy zón

target - <ACCEPT,REJECT,DROP> určuje co má firewall dělat s pakety, které nesplňují žádná pravidla

short - Název zóny

description - Popis zóny

interface - Umožňuje přiřadit určité síťové rozhraní k zóně

source - Umožňuje přiřadit určitý zdroj (IP adresa, MAC adresa) k zóně

service - Definuje povolené služby v dané zóně

port - Definuje povolené porty v dané zóně

protocol - Definuje povolené protokoly v dané zóně. Lze definovat protokoly ze souboru /etc/protocols

rule - Umožňuje do zóny přidat pokročilá pravidla

Služby

Služba je lokální seznam portů, destinací a modulů, které danou službu definují. Přinášejí nám jednodušší možnost blokovat/povolovat služby v síti. Ve firewalld je jich mnoho předdefinovaných, ale můžeme vytvářet i vlastní.

Atributy služeb

short - Název služby

description - Popis služby

port - Definuje port služby

protocol - Definuje protokol služby. lze definovat protokoly ze souboru /etc/protocols

source-port - Definuje zdrojový port služby

module - Definuje Netfilter moduly služby

destination - Definuje IP adresu destinace služby

Utilita firewall-cmd

Pomocí této utility budeme konfigurovat firewalld z příkazové řádky, existuje také GUI alternativa firewall-config, kterou si ukážeme později.

Základní příklady

firewall-cmd [příkaz]

--state Vrátí stav firewallu

--reload Znovu načte firewall, bez ztráty aktuální konfigurace

--complete-reload Kompletně restartuje firewall, znovu načte i konfiguraci, takže neuložená konfigurace v paměti bude ztracena

--runtime-to-permanent Uloží konfiguraci v paměti do permanentní konfigurace

--permanent Pokud vložíme před příkaz, změna se zapíše do trvalé konfigurace (vytvářet a upravovat služby/vytvářet a odebírat zóny je možné pouze v trvalé konfiguraci)

Práce se zónami

Základní příkazy pro práci se zónami

--get-default-zone Vypíše aktuální výchozí zónu

--set-default-zone=[zóna] Nastaví výchozí zónu

--get-active-zones Vypíše aktuálně používané zóny

--get-zones Vypíše všechny zóny v systému

--list-all-zones Vypíše všechny zóny v systému včetně jejich konfigurace

--permanent --delete-zone Vymaže zónu

--permanent --add-zone Vytvoří novou prázdnou zónu

Práce s rozhraními v zónách

--zone=[zóna] --list-interfaces Vypíše rozhraní, která jsou definovaná v dané zóně

--zone=[zóna] --add-interface=[rozhraní] Přidá do zóny rozhraní

--zone=[zóna] --remove-interface=[rozhraní] Odstraní ze zóny rozhraní

--zone=[zóna] --change-interface=[rozhraní] Změní zónu rozhraní (odstraní z původní zóny a přidá do nové zóny)

Práce se zdroji v zónách

--zone=[zóna] --list-sources Vypíše zdroje, které jsou definované v dané zóně

--zone=[zóna] --add-source=[zdroj] Přidá zdroj do zóny

--zone=[zóna] --remove-source=[zdroj] Odebere zdroj ze zóny

--zone=[zóna] --change-source=[zdroj] Přesune zdroj do jiné zóny (odstraní z původní zóny a přidá do nové)

Práce se službami v zónách

--zone=[zóna] --add-service Přidá službu do zóny

--zone=[zóna] -–remove-service Odebere službu ze zóny

Práce s porty a protokoly

--zone=[zóna] -–add-port Přidá port do zóny

--zone=[zóna] --remove-port Odebere port ze zóny

--zone=[zóna] --add-protocol Přidá protokol do zóny

--zone=[zóna] --remove-protocol Odebere protokol ze zóny

Nouzový mód

--panic-on Okamžitě zablokuje komunikaci na síti, vhodné například při útoku na síť

--panic-off Odblokuje komunikaci na síti

Práce se službami

--permanent --new-service=[služba] Vytvoří novou službu

--permanent --remove-service=[služba] Odstraní službu ze systému

Konfigurace služby

--permanent --service=[služba] --set-description=[popisek] Nastaví službě popisek

--permanent --service=[služba] --set-short=[název] Nastaví službě název

--permanent --service=[služba] --add-port=[port] Přidá službě port

--permanent --service=[služba] --add-protocol=[protokol] Přidá službě protokol

--permanent --service=[služba] --add-source-port=[zdrojový port] Přidá službě zdrojový port

--permanent --service=[služba] --add-module=[modul] Přidá službě modul

--permanent --service=[služba] --set-destination=[destinace] Přidá službě destinaci

Ukázka konfigurace

Příklad změny zóny a otevření služby a portu

Nyní si ukážeme jednoduchý příklad, kde si přenastavíme zónu našeho počítače na home, povolíme službu vnc-server a port 666.

Nejdříve si zkontrolujeme, jaké aktivní zóny máme v systému, to učiníme následujícím příkazem:

firewall-cmd --get-active-zones

A výstup programu je následující

FedoraWorkstation
       interfaces: ens160

Z výstupu programu můžeme vidět, že naše síťové rozhraní se nachází v zóně FedoraWorkstation, my bychom, ale chtěli naše rozhraní umístit do zóny home, využijeme tedy následující příkaz a přesuneme rozhraní ens160 do zóny home

firewall-cmd --zone=home --change-interface=ens160

Nyní přidáme pravidlo pro službu a port.

firewall-cmd --zone=home —-add-service=vnc-server
firewall-cmd --zone=home —-add-port=666/tcp

Zda se vše do zóny správně přidalo si můžeme jednoduše ověřit pomocí následujícího příkazu:

firewall-cmd --zone=home --list-all

V našem případě výstup vypadá takto:

home (active)
      target: default
       icmp-block-inversion: no
       interfaces: ens160
       sources:
       services: dhcpv6-client mdns samba-client ssh vnc-server
       ports: 666/tcp
       protocols:
       forward: yes
       masquerade: no
       forward-ports:
       source-ports:
       icmp-blocks:
       rich rules:

Na závěr, pokud jsem s konfigurací spokojení, uložíme vše trvale, pomocí následujícího příkazu:

firewall-cmd --runtime-to-permanent

Příklad vytvoření nové služby

Nejdříve začneme příkazem na vytvoření prázdné služby, tu si například pojmenujeme nasesluzba

firewall-cmd --permanent --new-service=nasesluzba

Následně do služby doplníme všechny potřebné informace:

firewall-cmd --permanent --service=nasesluzba --set-description="Nase testovaci sluzba"
firewall-cmd --permanent --service=nasesluzba --set-short="Nase sluzba"
firewall-cmd --permanent --service=nasesluzba --add-port=666/tcp

Debugging firewalld

Pro debugování firewalld je možné použít přepínač --debug například pomocí tohoto příkladu je možné spustit firewalld pro debugging:

firewalld --nofork --debug

Utilita firewall-config

Tato utilita funguje stejně jako firewall-cmd, pouze s rozdílem, že obsahuje grafické rozhraní. Utilitu můžeme spustit zadáním firewall-config do terminálu. Po spuštění se nám zobrazí obrazovka, která vypadá přibližně takto:

V levo nalezneme aktivní rozhraní a zdroje ke kterým jsou přiřazena, zde také toto přiřazení můžeme změnit. V horní části můžeme měnit, zda pracujeme s konfigurací v paměti nebo s trvalou konfigurací. Napravo poté můžeme upravovat atributy zón a služeb.

results matching ""

    No results matching ""