Kako instalirati, konfigurirati i koristiti Firewalld u CentOS-u i Ubuntuu


Firewalld (daemon vatrozida) alternativa je usluzi iptables za dinamičko upravljanje vatrozidom sustava s podrškom za zone mreže (ili vatrozida) i pruža D-Bus sučelje za upravljanje konfiguracijama. Jednostavan je za korištenje i konfiguraciju, a sada je zadani alat za upravljanje vatrozidom na RHEL/CentOS, Fedora i nekoliko drugih distribucija Linuxa.

U ovom članku raspravljat ćemo o tome kako konfigurirati vatrozid sustava s firewalld i implementirati osnovno filtriranje paketa u CentOS/RHEL 7 i Ubuntu.

Osnove o Firewalldu

Vatrozid sastoji se od tri sloja, a to su:

  • jezgreni sloj: odgovoran za rukovanje konfiguracijom i pozadinom (navedeno u nastavku).
  • D-Bus sučelje: primarni način mijenjanja i stvaranja konfiguracije vatrozida.
  • pozadine: za interakciju s netfilterom (nativni kernel modul koji se koristi za vatrozid). Oni uključuju iptables, ip6tables, ebtables, ipset, nft, linnftables; mrežni upravitelj; i moduli.

Upravlja pravilima vatrozida implementirajući mrežne/vatrozidne zone koje definiraju razinu povjerenja mrežnih veza ili sučelja. Ostale podržane značajke vatrozida uključuju usluge, izravnu konfiguraciju (koristi se za izravno prosljeđivanje sirove sintakse iptables), IPSets kao i ICMP vrste.

Vatrozid podržava dvije vrste konfiguracijskih okruženja:

  • runtime konfiguracija koja je učinkovita samo dok se stroj ponovno ne pokrene ili dok se usluga vatrozida ponovno ne pokrene
  • stalna konfiguracija koja se sprema i radi trajno.

Alat naredbenog retka firewall-cmd koristi se za upravljanje vremenom izvođenja i trajnom konfiguracijom. Alternativno, možete koristiti konfiguracijski alat za konfiguraciju grafičkog korisničkog sučelja (GUI) firewall-config za interakciju s demonom.

Uz to, firewalld nudi dobro definirano sučelje za druge lokalne usluge ili aplikacije za izravno traženje promjena pravila vatrozida, ako se izvode s root privilegijama.

Globalna konfiguracijska datoteka za firewalld nalazi se na /etc/firewalld/firewalld.conf, a značajke vatrozida su konfigurirane u XML formatu.

Razumijevanje važnih značajki Firewallda

Središnja značajka firewallda su zone mreže/vatrozida. Svaka druga značajka ograničena je na zonu. Zona vatrozida opisuje razinu povjerenja za vezu, sučelje ili vezanje izvorne adrese.

Zadana konfiguracija dolazi s nizom unaprijed definiranih zona sortiranih prema zadanoj razini povjerenja zona od nepouzdanih do pouzdanih: drop, block, public, external, dmz, work, home, interna i pouzdana. Definirani su u datotekama pohranjenim u direktoriju /usr/lib/firewalld/zones.

Možete konfigurirati ili dodati svoje prilagođene zone pomoću CLI klijenta ili jednostavno stvoriti ili kopirati datoteku zone u /etc/firewalld/zones iz postojećih datoteka i urediti je.

Još jedan važan koncept pod vatrozidom su usluge. Usluga je definirana pomoću portova i protokola; ove definicije predstavljaju danu mrežnu uslugu kao što je web poslužitelj ili usluga daljinskog pristupa. Usluge su definirane u datotekama pohranjenim u direktoriju /usr/lib/firewalld/services/ ili /etc/firewalld/services/.

Ako poznajete osnovne koncepte iptables/ip6tables/ebtables, također možete koristiti izravno sučelje (ili konfiguraciju) za izravan pristup vatrozidu. No, za one koji nemaju nikakvog znanja o iptables, možete upotrijebiti bogati jezik za stvaranje složenijih pravila vatrozida za IPv4 i IPv6.

Kako instalirati Firewalld paket u Linuxu

Na CentOS 7, paket firewalld dolazi unaprijed instaliran i možete ga potvrditi pomoću sljedeće naredbe.

rpm -qa firewalld

Na Ubuntu 16.04 i 18.04 možete ga instalirati pomoću zadanog upravitelja paketa kao što je prikazano.

sudo apt install firewalld

Kako upravljati uslugom Firewalld u Linuxu

Firewalld je redovita systemd usluga kojom se može upravljati putem naredbe systemctl.

 
sudo systemctl start firewalld	#start the service for the mean time
sudo systemctl enable firewalld	#enable the service to auto-start at boot time
sudo systemctl status firewalld	#view service status

Nakon pokretanja usluge firewalld također možete provjeriti radi li daemon ili ne, pomoću alata firewall-cmd (u slučaju da nije aktivan, ova naredba će ispisati "not" trčanje”).

sudo firewall-cmd --state

Ako slučajno trajno spremite promjene, možete ponovno učitati vatrozid. Ovo će ponovno učitati pravila vatrozida i zadržati informacije o stanju. Trenutna stalna konfiguracija postat će nova konfiguracija vremena izvođenja.

sudo firewall-cmd --reload

Kako raditi sa zonama vatrozida u Firewalldu

Da biste dobili popis svih dostupnih zona i usluga vatrozida, pokrenite ove naredbe.

sudo firewall-cmd --get-zones
sudo firewall-cmd --get-services

Zadana zona je zona koja se koristi za svaku značajku vatrozida koja nije eksplicitno ograničena na drugu zonu. Možete dobiti zadani set zona za mrežne veze i sučelja pokretanjem.

sudo firewall-cmd --get-default-zone

Za postavljanje zadane zone, na primjer na vanjsku, koristite sljedeću naredbu. Imajte na umu da dodavanje opcije --permanent trajno postavlja konfiguraciju (ili omogućuje traženje informacija iz okoline stalne konfiguracije).

sudo firewall-cmd --set-default-zone=external
OR
sudo firewall-cmd --set-default-zone=external --permanent
sudo firewall-cmd --reload 

Zatim, pogledajmo kako dodati sučelje u zonu. Ovaj primjer pokazuje kako dodati bežični mrežni adapter (wlp1s0) u zonu home, koja se koristi u kućnim područjima.

sudo firewall-cmd --zone=home --add-interface=wlp1s0

Sučelje se može dodati samo jednoj zoni. Da biste ga premjestili u drugu zonu, koristite prekidač --change-interface kao što je prikazano ili ga uklonite iz prethodne zone pomoću prekidača –remove-interface, a zatim ga dodajte u novu zonu.

Pod pretpostavkom da se želite spojiti na javnu WI-FI mrežu, trebali biste premjestiti svoje bežično sučelje natrag u javnu zonu, ovako:

sudo firewall-cmd --zone=public --add-interface=wlp1s0
sudo firewall-cmd --zone=public --change-interface=wlp1s0

Možete koristiti više zona u isto vrijeme. Da biste dobili popis svih aktivnih zona s omogućenim značajkama kao što su sučelja, usluge, portovi, protokoli, pokrenite:

sudo firewall-cmd --get-active-zones

Vezano uz prethodnu točku, ako želite pronaći više informacija o određenoj zoni, tj. svemu dodanom ili omogućenom u njoj, koristite jednu od ovih naredbi:

sudo firewall-cmd --zone=home --list-all
OR
sudo firewall-cmd --info-zone public

Još jedna korisna opcija je --get-target, koja vam pokazuje cilj stalne zone. Cilj je jedno od sljedećeg: default, ACCEPT, DROP, REJECT. Možete provjeriti ciljanje različitih zona:

sudo firewall-cmd --permanent --zone=public --get-target  
sudo firewall-cmd --permanent --zone=block --get-target  
sudo firewall-cmd --permanent --zone=dmz --get-target  
sudo firewall-cmd --permanent --zone=external --get-target
sudo firewall-cmd --permanent --zone=drop --get-target

Kako otvoriti i blokirati portove u Firewalldu

Da biste otvorili port (ili kombinaciju port/protokol) u vatrozidu, jednostavno ga dodajte u zonu s opcijom --add-port. Ako izričito ne navedete zonu, ona će biti omogućena u zadanoj zoni.

Sljedeći primjer pokazuje kako dodati port 80 i 443 da biste omogućili ulazni web promet putem HTTP i HTTPS > protokoli, odnosno:

sudo firewall-cmd --zone=public --permanent --add-port=80/tcp --add-port=443/tcp

Zatim ponovno učitajte vatrozid i još jednom provjerite omogućene značajke u javnoj zoni, trebali biste moći vidjeti upravo dodane priključke.

sudo firewall-cmd --reload
sudo firewall-cmd --info-zone public

Blokiranje ili zatvaranje porta u vatrozidu jednako je jednostavno, jednostavno ga uklonite iz zone pomoću opcije --remove-port. Na primjer, za zatvaranje priključaka 80 i 443 u javnoj zoni.

sudo firewall-cmd --zone=public --permanent --remove-port=80/tcp --remove-port=443/tcp

Umjesto korištenja porta ili kombinacije port/protokol, možete koristiti naziv usluge kojem je port dodijeljen kao što je objašnjeno u sljedećem odjeljku.

Kako otvoriti i blokirati usluge u Firewalldu

Da biste otvorili uslugu u vatrozidu, omogućite je pomoću opcije --add-service. Ako je zona izostavljena, koristit će se zadana zona.

Sljedeća naredba će trajno omogućiti http uslugu u javnoj zoni.

sudo firewall-cmd --zone=public --permanent --add-service=http 
sudo firewall-cmd --reload 

Opcija --remove-service može se koristiti za onemogućavanje usluge.

sudo firewall-cmd --zone=public --permanent --remove-service=http 
sudo firewall-cmd --reload 

Kako omogućiti i onemogućiti maskiranje IP-a pomoću Firewallda

IP maskiranje (poznato i kao IPMASQ ili MASQ) je NAT (Prijevod mrežne adrese) mehanizam u Linux umrežavanju koji omogućuje vašim hostovima u mreži, s privatnim IP adresama, da komuniciraju s Internetom koristeći javnu IP adresu dodijeljenu vašem Linux poslužitelju (IPMASQ gateway).

To je preslikavanje jedan prema više. Promet s vaših nevidljivih hostova drugim će računalima na internetu izgledati kao da dolazi s vašeg Linux poslužitelja.

Možete omogućiti IP maskiranje u željenoj zoni, na primjer javnoj zoni. Ali prije nego što to učinite, prvo provjerite je li maskiranje aktivno ili ne (“ne” znači da je onemogućeno, a “da” znači drugačije).

sudo firewall-cmd --zone=public --query-masquerade
sudo firewall-cmd --zone=public --add-masquerade

Tipičan slučaj upotrebe maskiranja je izvođenje prosljeđivanja porta. Pod pretpostavkom da želite SSH s udaljenog stroja na host u vašoj internoj mreži s IP-om 10.20.1.3, na kojem sshd demon sluša na portu 5000.

Možete proslijediti sve veze na port 22 na vašem Linux poslužitelju na predviđeni port na vašem ciljnom hostu izdavanjem:

sudo firewall-cmd --zone=public --add-forward-port=port=22=proto=tcp:toport=5000:toaddr=10.20.1.3

Da biste onemogućili maskiranje u zoni, koristite prekidač --remove-masquerade.

sudo firewall-cmd --zone=public --remove-masquerade

Kako omogućiti i onemogućiti IMCP poruku u Firewalldu

ICMP (Internet Control Message Protocol) poruke su ili zahtjevi za informacijama ili odgovori na zahtjeve za informacijama ili u uvjetima pogreške.

Možete omogućiti ili onemogućiti ICMP poruke u vatrozidu, ali prije toga prvo navedite sve podržane vrste icmp-a.

sudo firewall-cmd --get-icmptypes

Za dodavanje ili uklanjanje željene vrste bloka.

sudo firewall-cmd --zone=home --add-icmp-block=echo-reply
OR
sudo firewall-cmd --zone=home --remove-icmp-block=echo-reply

Možete vidjeti sve icmp tipove dodane u zonu korištenjem prekidača --list-icmp-blocks.

sudo firewall-cmd --zone=home --list-icmp-blocks

Kako koristiti izravno sučelje za prosljeđivanje sirovih iptables naredbi

Firewall-cmd također nudi izravne opcije (--direct) za izravniji pristup vatrozidu. Ovo je korisno za one s osnovnim znanjem o iptables.

Važno: Izravne opcije trebali biste koristiti samo kao posljednje sredstvo kada nije moguće koristiti redovne opcije firewall-cmd koje su gore objašnjene.

Ovdje je primjer kako proslijediti neobrađeno pravilo iptables pomoću prekidača --add-rules. Ova pravila možete jednostavno ukloniti zamjenom --add-rule s --remove-rule:

sudo firewall-cmd --direct --add-rule ipv4 filter IN_public_allow 0 -m tcp -p tcp --dport 80 -j ACCEPT

Za više informacija o iptables pogledajte ovaj vodič: Kako postaviti Iptables vatrozid za omogućavanje udaljenog pristupa uslugama u Linuxu.

Ako niste upoznati sa sintaksom iptables, možete se odlučiti za firewalldov “bogati jezik” za stvaranje složenijih pravila vatrozida na lako razumljiv način kao što je objašnjeno u nastavku.

Kako koristiti Rich Language u Firewalldu

Bogati jezik (poznat i kao bogata pravila) koristi se za dodavanje složenijih pravila vatrozida za IPv4 i IPv6 bez poznavanja sintakse iptables.

Proširuje značajke zone (usluga, port, icmp-block, maskarade i forward-port) koje smo pokrili. Podržava izvorne i odredišne adrese, bilježenje, radnje i ograničenja za zapisnike i radnje.

--add-rich-rule koristi se za dodavanje bogatih pravila. Ovaj primjer pokazuje kako dopustiti nove IPv4 i IPv6 veze za uslugu http i zapisnik 1 po minuti korištenjem revizije:

sudo firewall-cmd --add-rich-rule='rule service name="http" audit limit value="1/m" accept'

Za uklanjanje dodanog pravila zamijenite opciju --add-rich-rule s --remove-rich-rule.

sudo firewall-cmd --remove-rich-rule='rule service name="http" audit limit value="1/m" accept'

Ova značajka također omogućuje blokiranje ili dopuštanje prometa s određene IP adrese. Sljedeći primjer pokazuje kako odbiti veze s IP-a 10.20.1.20.

sudo firewall-cmd --zone=public --add-rich-rule='rule family="ipv4" source address="192.168.0.254" reject'

Kako omogućiti i onemogućiti Panic Mode u Firewalldu

Način panike je poseban način rada pod vatrozidom u kojem se svi dolazni i odlazni paketi odbacuju, a aktivne veze će isteći nakon aktiviranja.
Ovaj način rada možete omogućiti u hitnim situacijama kada postoji prijetnja vašem mrežnom okruženju.

Za upit o režimu panike, koristite opciju --query-panic.

sudo firewall-cmd --query-panic

Kako biste omogućili način panike, koristite opciju --panic-on. Možete provjeriti radi li pomoću naredbe ping kao što je prikazano. Budući da je paket ispušten, naziv www.google.com ne može se razriješiti, stoga se prikazuje pogreška.

sudo firewall-cmd --panic-on
ping -c 2 www.google.com

Kako biste onemogućili način panike, koristite opciju --panic-off.

sudo firewall-cmd --panic-off

Kako zaključati Firewalld

Zapamtite, spomenuli smo pod osnovama o vatrozidu da lokalne aplikacije ili usluge mogu promijeniti konfiguraciju vatrozida ako rade s root privilegijama. Možete kontrolirati koje aplikacije mogu zahtijevati promjene vatrozida tako da ih navedete na popisu dopuštenih zaključavanja.

Ova značajka je prema zadanim postavkama isključena, možete je omogućiti ili onemogućiti pomoću prekidača --lockdown-on ili --lockdown.

sudo firewall-cmd --lockdown-on
OR
sudo firewall-cmd --lockdown-off

Imajte na umu da se preporučuje omogućiti ili onemogućiti ovu značajku uređivanjem glavne konfiguracijske datoteke, jer firewall-cmd možda neće postojati na popisu dopuštenih zaključavanja kada omogućite zaključavanje.

sudo vim /etc/firewalld/firewalld.conf

Pronađite parametar Lockdown i promijenite mu vrijednost iz no (znači isključeno) u yes (znači uključeno).

Lockdown=yes

Da biste ovu postavku učinili trajnom, ponovno učitajte vatrozid.

sudo firewall-cmd --reload
Sažetak

Firewalld je jednostavna zamjena za uslugu iptables, koja koristi iptables kao backend. U ovom smo članku pokazali kako instalirati firewalld paket, objasnili važne značajke firewallda i raspravljali o tome kako ih konfigurirati u runtime i stalnim konfiguracijskim okruženjima.

Ako imate pitanja ili komentara, slobodno nas kontaktirajte putem obrasca za komentare u nastavku. Za više informacija možete pogledati stranicu s priručnikom za firewall (man firewalld) ili dokumentaciju za firewall na web stranici projekta.