Úvod
Firewalld je riešenie na správu firewallu, ktoré je k dispozícii pre mnohé distribúcie Linuxu. Slúži ako rozhranie pre systém filtrovania paketov iptables poskytovaný jadrom Linuxu. V tejto príručke sa dozviete, ako nakonfigurovať firewall pre váš server. Ukážeme vám tiež základy správy firewallu pomocou nástroja na správu firewall-cmd.
Základy Firewalld
FirewallD využíva koncepty zón a služieb, namiesto reťazcov a pravidiel iptables. V závislosti od zón a služieb, ktoré nakonfigurujete, môžete riadiť, aká prevádzka je povolená alebo zakázaná smerom do a zo systému. FirewallD je možné konfigurovať a spravovať pomocou nástroja príkazového riadka firewall-cmd.
Inštalácia a povolenie spustenia firewallu pri štarte
Na väčšine distribúcií Linuxu je už firewallD nainštalovaný. Ak ho však potrebujete nainštalovať sami, zadajte syntax nižšie:
|
1 |
sudo yum install firewalld |
Po nainštalovaní firewalld môžete službu povoliť a reštartovať server:
|
1 2 |
sudo systemctl enable firewalld sudo reboot |
Následne reštartujte server. Váš firewall bude povolený po úspešnom reštartovaní servera. Potom pomocou príkazu nižšie overte, či bola služba aktivovaná:
|
1 |
sudo firewall-cmd --state |

Výstup ukazuje, že predvolené nastavenie firewallu funguje.
Kontrola predvolených nastavení
Zónu vybranú serverom môžete skontrolovať pomocou tohto príkazu:
|
1 |
firewall-cmd --get-default-zone |

Overte aktívnu zónu zadaním:
|
1 |
firewall-cmd --get-active-zones |

Vytlačte konfiguráciu predvolenej zóny, aby ste zistili pravidlá priradené k verejnej oblasti, pomocou tejto syntaxe:
|
1 |
sudo firewall-cmd --list-all |

Výstup naznačuje, že táto zóna je predvolená aj aktívna. Ukazuje tiež, že k tejto zóne sú priradené rozhrania eth0 a eth1.
Kontrola alternatívnych zón
Okrem predvolených a aktívnych zón existujú aj ďalšie zóny, ktoré môžete preskúmať. Zadajte tento príkaz, aby ste videli všetky dostupné zóny:
|
1 |
firewall-cmd --get-zones |

Skontrolujte konkrétnu konfiguráciu priradenú k zóne pridaním parametra –zone= do príkazu –list-all:
|
1 |
sudo firewall-cmd --zone=home --list-all |

Zmena zóny rozhrania
Zónu rozhrania môžete jednoducho zmeniť pomocou možnosti –change-interface v kombinácii s možnosťou –change-interface. Nasledujúci príkaz priradí rozhranie eth1 k pracovnému priestoru (work):
|
1 |
sudo firewall-cmd --zone=work --change-interface=eth1 |
Zmeny môžete overiť zadaním:
|
1 |
sudo firewall-cmd --get-active-zones |
Zmena predvolenej zóny
Ak chcete zmeniť predvolenú zónu, použite parameter –set-default-zone nasledovaný názvom zóny, ktorú chcete nastaviť ako predvolenú. Napríklad na zmenu predvolenej zóny na start by ste mali spustiť nasledujúci príkaz:
|
1 |
sudo firewall-cmd --set-default-zone=home |
Následne môžete zmeny overiť pomocou:
|
1 |
sudo firewall-cmd --get-default-zone |
Nastavenie pravidiel pre vaše aplikácie
Prejdime si základy potrebné na definovanie výnimiek firewallu pre služby:
Pridanie služby do vašich zón
Najpriamejší spôsob je pridať potrebné porty alebo služby do zón, ktoré používate. Podobne môžete použiť možnosť –get-services na zobrazenie všetkých dostupných služieb:
|
1 |
firewall-cmd --get-services |

Službu pre zónu môžete aktivovať pomocou parametra –add-service =. Akcia cieľuje na predvolenú zónu alebo akúkoľvek zónu definovanú parametrom –zone =. V predvolenom nastavení je nakonfigurovaná iba aktuálna relácia firewallu. Trvalú konfiguráciu firewallu môžete nastaviť aktivovaním príznaku –permanent. Napríklad, ak prevádzkujete webový server, ktorý poskytuje bežnú HTTP prevádzku, môžete túto prevádzku povoliť pre rozhrania v našej zóne “public” pre túto reláciu zadaním:
|
1 |
sudo firewall-cmd --zone=public --add-service=http |
Ak chcete zmeniť predvolenú zónu, môžete parameter –zone = vynechať. Úspešnosť operácie môžete skontrolovať pomocou operácií –list-all alebo –list-services:
|
1 |
sudo firewall-cmd --zone=public --list-services |

Keď overíte, že všetko funguje podľa očakávania, s najväčšou pravdepodobnosťou budete chcieť zmeniť trvalé pravidlá firewallu, aby bola vaša služba dostupná aj po reštarte. Zmenu v našej zóne “public” môžeme vykonať natrvalo zadaním syntaxe:
|
1 2 3 4 |
sudo firewall-cmd --zone=public --permanent --add-service=http výstup: success |
Či to bolo úspešné, môžete skontrolovať pridaním príznaku –permanent k operácii –list-services. Pre všetky trvalé operácie (–permanent) musíte použiť sudo:
|
1 2 3 4 |
sudo firewall-cmd --zone=public --permanent --list-services výstup: dhcpv6-client http ssh |
Vaša zóna “public” teraz povoľuje HTTP prevádzku na porte 80. Toto môžete pridať do aktuálnej relácie a sady trvalých pravidiel pomocou príkazu nižšie:
|
1 2 3 |
sudo firewall-cmd --zone=public --add-service=https sudo firewall-cmd --zone=public --permanent --add-service=https |
Ak neexistujú žiadne služby, ktoré by vyhovovali vašim požiadavkám, máte dve vynikajúce možnosti, ako túto situáciu vyriešiť:
- Otvorenie portu pre vaše zóny
Najjednoduchší spôsob, ako pridať podporu pre vašu konkrétnu aplikáciu, je otvoriť porty používané v každej zóne. Je to také jednoduché, ako určiť port alebo rozsah portov a príslušný protokol pre porty, ktoré potrebujete otvoriť. Napríklad, ak vaša aplikácia beží na porte 5000 a používa TCP, môžete ju pridať do zóny “public” pre túto reláciu pomocou parametra –add-port =. Protokoly môžu byť TCP alebo UDP:
|
1 2 3 4 |
sudo firewall-cmd --zone=public --add-port=5000/tcp výstup: success |
Ak chcete skontrolovať, či bola operácia úspešná, použite operáciu –list-ports:
|
1 2 3 4 |
sudo firewall-cmd --zone=public --list-ports Výstup: 5000/tcp |
Môžete tiež zadať rozsah pre sériové rozhranie oddelením počiatočného a koncového portu v rozsahu spojovníkom. Napríklad, ak vaša aplikácia používa UDP porty 4990 až 4999, môžete ich otvoriť v zóne “public” zadaním:
|
1 |
sudo firewall-cmd --zone=public --add-port=4990-4999/udp |
Po otestovaní ich pravdepodobne budeme chcieť pridať do trvalého firewallu. Môžete to urobiť zadaním nasledujúceho:
|
1 2 3 |
sudo firewall-cmd --zone=public --permanent --add-port=5000/tcp sudo firewall-cmd --zone=public --permanent --add-port=4990-4999/udp sudo firewall-cmd --zone=public --permanent --list-ports |

- Definovanie služby
Služba je kolekcia portov s priradeným názvom a popisom. Služby sa spravujú jednoduchšie ako porty, vyžaduje si to však trochu počiatočnej práce. Najjednoduchší spôsob, ako začať, je skopírovať existujúci skript (v / usr / lib / firewalld / services) do adresára /etc/firewalld/services. Môžete napríklad skopírovať definíciu služby SSH a použiť ju v definícii služby “example” nasledovne. Názov súboru bez prípony XML určuje názov služby v zozname služieb firewallu:
|
1 |
sudo cp /usr/lib/firewalld/services/ssh.xml /etc/firewalld/services/example.xml |
V tomto bode môžete upraviť definíciu v skopírovanom súbore:
|
1 |
sudo vi /etc/firewalld/services/example.xml |
Najprv súbor obsahuje definíciu SSH, ktorú ste skopírovali:
|
1 2 3 4 5 6 |
<?xml version="1.0" encoding="utf-8"?> <service> <short>SSH</short> <description>Secure Shell (SSH) is a protokol for prihlasovanie do a spúšťanie príkazov na vzdialených počítačoch. To poskytuje zabezpečenú šifrovanú komunikáciu. If you plánujete on pristupovať k svojmu počítaču na diaľku cez SSH cez a firewallom chránené rozhranie, povoľte túto možnosť. Musíte mať the openssh-server balík nainštalovaný aby táto možnosť bola be užitočná.</description> <port protocol="tcp" port="22"/> </service> |
Väčšina tejto definície pozostáva z metadát. Musíte zmeniť krátky názov služby v značkách <short>. Toto je čitateľný názov služby. Predstavte si, že pre našu službu “example” musíme otvoriť port 7777 pre TCP a 8888 pre UDP. Existujúcu definíciu môžete zmeniť prechodom do režimu INSERT stlačením klávesu i:
|
1 2 3 4 5 6 7 |
<xml version="1.0" encoding="utf-8"?> <service> <short>Príklad služby</short> <description>Toto je len an príklad služby. It Pravdepodobne by sa nemala't be používať na a reálnom systéme.</description> <port protocol="tcp" port="7777"/> <port protocol="udp" port="8888"/> </service> |
Potom stlačte kláves ESC a napíšte: x pre uloženie a zatvorenie súboru. Potom zadajte príkaz nižšie na reštartovanie firewallu, aby ste mali prístup k novej službe;
|
1 |
sudo firewall-cmd --reload |
Potom použite príkaz nižšie na získanie zoznamu dostupných služieb:
|
1 |
firewall-cmd --get-services |

Táto služba je teraz dostupná vo vašej zóne.
Vytvorenie vlastných zón
Hoci preddefinované zóny budú pravdepodobne pre väčšinu používateľov postačujúce, môže byť užitočné definovať si vlastné zóny, ktoré lepšie popisujú ich funkciu.
Pri pridávaní zóny ju pridajte do trvalých nastavení firewallu. Potom môžete vykonať reload, aby sa nastavenia preniesli do vašej relácie. Napríklad môžete vytvoriť dve skôr spomínané zóny zadaním:
|
1 2 |
sudo firewall-cmd --permanent --new-zone=publicweb sudo firewall-cmd --permanent --new-zone=privateDNS |
Pomocou tohto príkazu môžete potvrdiť, že sa nachádzajú vo vašej trvalej konfigurácii:
|
1 |
sudo firewall-cmd --permanent --get-zones |

Znova načítajte firewall, aby sa tieto nové zóny preniesli do aktívnej konfigurácie:
|
1 2 3 4 5 |
sudo firewall-cmd --reload firewall-cmd --get-zones výstup: block dmz drop external home internal privateDNS public publicweb trusted work |
Teraz môžete priradiť príslušné služby a porty vašim zónam. Napríklad pre zónu “publicweb” by ste mohli chcieť pridať služby SSH, HTTP a HTTPS:
|
1 2 3 |
sudo firewall-cmd --zone=publicweb --add-service=ssh sudo firewall-cmd --zone=publicweb --add-service=http sudo firewall-cmd --zone=publicweb --add-service=https |

Taktiež môžete pridať službu DNS do vašej zóny “privateDNS” pomocou tohto príkazu:
|
1 2 |
sudo firewall-cmd --zone=privateDNS --add-service=dns sudo firewall-cmd --zone=privateDNS --list-all |

Ďalej môžete zmeniť svoje rozhrania na tieto nové zóny, aby ste ich otestovali:
|
1 2 3 |
sudo firewall-cmd --zone=publicweb --change-interface=eth0 sudo firewall-cmd --zone=privateDNS --change-interface=eth1 |
Otestujte konfiguráciu, aby ste zistili, či funguje. Ak vám tieto hodnoty vyhovujú, musíte pridať rovnaké pravidlá do trvalej konfigurácie. Môžete to urobiť opätovným použitím pravidiel s indikátorom —permanent:
|
1 2 3 4 5 6 7 |
sudo firewall-cmd --zone=publicweb --permanent --add-service=ssh sudo firewall-cmd --zone=publicweb --permanent --add-service=http sudo firewall-cmd --zone=publicweb --permanent --add-service=https sudo firewall-cmd --zone=privateDNS --permanent --add-service=dns |
Po trvalom použití týchto pravidiel môžete reštartovať sieť a znova načítať službu firewallu:
|
1 2 3 |
sudo systemctl restart network sudo systemctl reload firewalld |
Skontrolujte, či boli zóny priradené správne:
|
1 |
firewall-cmd --get-active-zones |

Okrem toho sa uistite, že obe zóny majú správnu službu:
|
1 2 3 4 |
sudo firewall-cmd --zone=publicweb --list-services výstup: http https ssh |
|
1 2 3 4 5 |
sudo firewall-cmd --zone=privateDNS --list-services výstup: dns |
Ak chcete nastaviť jednu zo svojich zón ako predvolenú pre ostatné rozhrania, musíte toto správanie nakonfigurovať pomocou parametra –set-default-zone= pomocou tohto príkazu:
|
1 |
sudo firewall-cmd --set-default-zone=publicweb |
Záver
V tomto bode ste úspešne vytvorili svoje vlastné zóny. Mali by ste mať základné znalosti o správe služby firewalld vo vašom systéme CentOS pre každodenné použitie. Dobré pochopenie služby firewalld vám umožní naplno využiť jej silu a flexibilitu.
Príjemnú prácu s počítačom!


Komentáre
Zatiaľ žiadne komentáre. Buďte prvý.