Firewall v systéme Linux hrá dôležitú úlohu pri zabezpečení počítačového systému. Funguje ako bariéra, kontroluje a filtruje sieťovú prevádzku, aby chránila systém pred neoprávneným prístupom, útokmi a inými hrozbami. Bez správne nakonfigurovanej brány firewall by server mohol byť zraniteľný voči rôznym typom kybernetických útokov, čo by malo vážne následky na bezpečnosť a dôvernosť údajov.
V tomto článku sa pozrieme na dva hlavné nástroje na konfiguráciu Linuxového firewallu: firewalld a iptables. Vykonáme porovnávaciu analýzu ich vlastností, funkcionality a výhod. Okrem toho poskytneme podrobné pokyny na nastavenie a používanie každého z týchto nástrojov a prediskutujeme osvedčené postupy na zabezpečenie vášho systému pomocou firewallu na platforme Linux. Všetky akcie budú demonštrované na virtuálnom serveri s root prístupom.
Konfigurácia brány firewall v systéme Linux
Firewalld (Firewall Daemon) je program na správu firewallu v operačných systémoch Linux. Poskytuje používateľské rozhranie na konfiguráciu pravidiel firewallu, povoľovanie alebo blokovanie pripojení sieťových aplikácií. Je štandardne predinštalovaný vo väčšine serverových distribúcií. Ak Firewalld nie je predinštalovaný, je možné ho nainštalovať nezávisle z oficiálnych repozitárov distribúcie.
Pre systémy Red Hat (ako RHEL, CentOS, Fedora) sa inštalácia vykoná príkazom:
yum install firewalld
Pre Debian/Ubuntu:
apt-get install firewalld
Po inštalácii je možné ho okamžite spustiť a aktivovať príkazom:
systemctl start firewalld
Ďalej musíte službu pridať do spustenia:
systemctl enable firewalld
V tomto bode odporúčame vypnúť ufw, pretože súčasné používanie tohto nástroja s firewalld alebo iptables sa neodporúča. Skontrolujte stav:
systemctl status ufw
Ak to chcete zastaviť, zadajte príkaz:
systemctl stop ufw
Pre úplnú deaktiváciu:
ufw disable
Po týchto akciách môžete pokračovať v konfigurácii brány firewall.
Najprv je potrebné definovať dôveryhodné zóny. Firewalld používa koncepciu zón na určenie úrovne dôveryhodnosti sieťových rozhraní. Každému rozhraniu je priradená jedna zóna a na základe zóny sa uplatňujú pravidlá brány firewall. Zoznam všetkých dostupných zón sa otvorí príkazom:
firewall-cmd --get-zones
Zvyčajne sa používajú 4 hlavné zóny:
- Verejnosť: Táto zóna je určená pre siete, ktoré nepovažujete za bezpečné;
- Súkromný: Vzťahuje sa na domáce siete alebo iné dôveryhodné sieťové pripojenia;
- Interná: Používa sa pre interné siete, ako sú siete v rámci organizácie alebo podnikovej siete;
- DMZ: V tejto zóne sú zvyčajne umiestnené servery, ktoré by mali byť dostupné z internetu.
Toto je však len jeden príklad. Svoju vlastnú zónu môžete pridať pomocou príkazu:
firewall-cmd --permanent --new-zone=nameyourzone
Po pridaní je potrebné opätovné načítanie:
firewall-cmd --reload
Na vymazanie zóny sa používa podobná metóda
firewall-cmd --permanent --delete-zone=nameyourzone
Po definovaní zón je potrebné povoliť prevádzku pre potrebné služby a porty. Ak chcete povoliť určitú službu, použite príkaz:
firewall-cmd --zone=public --add-service=name
Kde názov je názov služby. Napríklad, ak chcete povoliť prevádzku pre Apache:
firewall-cmd --zone=public --add-service=http
Na definovanie povolených portov použite príkaz:
firewall-cmd --zone=public --add-port=number/protocol
Napríklad štandardný port 22 pre SSH by vyzeral takto:
firewall-cmd --zone=public --add-port=22/tcp
V tejto fáze sú už hlavné pravidlá vytvorené. Ďalej určte, ako bude spracovaná prevádzka v závislosti od zdroja, cieľa, portu a ďalších kritérií. Pridanie pravidla (na príklade verejnej zóny):
firewall-cmd --zone=public rule
Ak chcete napríklad povoliť prichádzajúce prenosy z ľubovoľného zdroja na port 80 (HTTP):
firewall-cmd --zone=public --add-port=80/tcp --permanent
Ak chcete odstrániť pravidlo:
firewall-cmd --permanent --remove-rule=rule_specification
Kde pravidlo je typ pravidla (napr. port, služba, rich-rule atď.) a špecifikácia_pravidla je špecifikácia samotného pravidla.
Po vykonaní zmien v konfigurácii Firewallu je potrebné ich uložiť a použiť. Ak chcete uložiť zmeny, použite príkaz:
firewall-cmd --runtime-to-permanent
Ak chcete použiť zmeny:
firewall-cmd --reload
Po dokončení nastavenia si môžete vybrané parametre overiť otvorením zoznamu všetkých pravidiel:
firewall-cmd --list-all
Ak sa vyskytnú nejaké problémy, skontrolujte protokoly brány firewall pomocou príkazu:
journalctl -u firewalld
Poznámka: Uviedli sme iba všeobecný algoritmus na nastavenie pripojenia. Nástroj má rozsiahlu funkcionalitu. Úplné informácie o všetkých dostupných možnostiach nájdete v oficiálnej dokumentácii alebo v otvorenej nápovede:
firewall-cmd --help
Konfigurácia iptables v systéme Linux
Na rozdiel od Firewalldu je iptables starší, ale stále široko používaný nástroj v Linuxe na správu firewallu. Poskytuje priamejší a flexibilnejší prístup k pravidlám filtrovania paketov na úrovni jadra Linuxu. iptables však vyžaduje pokročilejšie znalosti a skúsenosti v porovnaní s Firewalldom, čím sa stáva menej dostupným pre začiatočníkov. Skontrolujte predinštalovanú verziu nástroja pomocou príkazu:
iptables -V
Ak nástroj nie je nainštalovaný, bude potrebné ho nainštalovať. Príkaz na inštaláciu na Ubuntu, Debian:
apt install iptables
Pre systémy Red Hat (napr. CentOS, Fedora):
yum install iptables
Príkaz na aktiváciu po inštalácii:
systemctl start iptables
Ak chcete pridať do spustenia, vykonajte:
systemctl enable iptables
Pred spustením konfigurácie iptables je dôležité pochopiť, ako to funguje. Tomu napomáha syntax programu. Vyzerá to nasledovne:
iptables -t table action chain additional_parameters
Poďme sa ponoriť hlbšie do každej položky.
Iptables má štyri hlavné tabuľky: filter, nat, mangle a raw . Každá z nich je určená na spracovanie určitých typov paketov a má vlastné reťazce pravidiel:
- filtrovať: Toto je najčastejšie používaná tabuľka obsahujúca pravidlá filtrovania paketov. Používa sa na rozhodovanie, či povoliť alebo zakázať pakety.
- nat: Táto tabuľka sa používa na úpravu sieťových adries a portov v paketoch. Často sa používa na nastavenie maskovania (NAT).
- mangeľ: V tejto tabuľke môžete upraviť hlavičky paketov. Používa sa na špecializované operácie s paketmi, ako je označovanie.
- surový: Táto tabuľka sa používa na konfiguráciu pravidiel, ktoré platia predtým, ako prejdú cez systém sledovania pripojení. Zvyčajne sa používa na nastavenie pravidiel, ktoré by systém sledovania nemal upravovať, ako je napríklad zahadzovanie paketov z určitých adries.
Každý stôl obsahuje sadu reťazí. Reťazce sú postupnosťou pravidiel, ktoré sa kontrolujú postupne. Existujú tri preddefinované reťazce:
- INPUT (prichádzajúce). Pravidlá v tomto reťazci určujú, čo robiť s prichádzajúcimi paketmi.
- VÝSTUP (odchádzajúce). Tento reťazec sa vzťahuje na všetky pakety, ktoré váš počítač odosiela do iných zariadení alebo počítačov v sieti.
- FORWARD (preposielanie). Pravidlá v tomto reťazci určujú, čo robiť s preposlanými paketmi.
Nakoniec, každý reťazec má nejakú akciu (cieľ). V praxi sa používa 5 hlavných akcií:
- SÚHLASIŤ: Umožnite paketom prejsť cez bránu firewall.
- DROP: Odmietnite paket a zahoďte ho bez akejkoľvek odpovede.
- ODMIETNUŤ: Odmietnuť paket a odoslať odosielateľovi chybovú správu ICMP.
- Prihláste sa: Zapíšte paket do systémového denníka a vykonajte inú akciu (napr. ACCEPT alebo DROP).
- RETURN: Zastavte kontrolu pravidiel v aktuálnom reťazci a vráťte sa do volacieho reťazca (ak je to možné).
Ak chcete spustiť nastavenie, otvorte zoznam existujúcich pravidiel príkazom:
iptables -L
Ako návod na konfiguráciu Iptables sa pozrime na praktické príklady najčastejšie používaných príkazov. Pre pohodlie rozdelíme príklady do 3 skupín v závislosti od konkrétneho reťazca.
VSTUP reťazca :
- Povoliť prichádzajúcu komunikáciu cez protokol TCP na porte 80:
iptables -A INPUT -p tcp --dport 80 -j ACCEPT
2. Povoliť prichádzajúcu komunikáciu cez protokol UDP na porte 22:
iptables -A INPUT -p udp --dport 22 -j ACCEPT
3. Blokujte prichádzajúci prenos z konkrétnej adresy IP:
iptables -A INPUT -s 192.168.1.100 -j DROP
VÝSTUP reťazca :
- Povoliť odchádzajúce prenosy cez protokol TCP na porte 443:
iptables -A OUTPUT -p tcp --dport 443 -j ACCEPT
2. Povoliť odchádzajúce prenosy cez protokol UDP na porte 80:
iptables -A OUTPUT -p udp --dport 80 -j ACCEPT
3. Blokujte odchádzajúce prenosy na konkrétny port (napríklad 21):
iptables -A OUTPUT -p tcp --dport 21 -j DROP
Reťaz VPRED :
- Blokovať presmerovaný prenos z určitého rozsahu adries IP:
iptables -A FORWARD -s 172.16.0.0/24 -j DROP
2. Zablokujte preposielanie paketov zo špecifického sieťového rozhrania:
iptables -A FORWARD -i eth1 -j DROP
3. Obmedzte počet súčasných pripojení pre konkrétny port (v tomto príklade 10 pripojení za minútu na porte 80):
iptables -A INPUT -p tcp --dport 80 -m limit --limit 10/minute -j ACCEPT
Ako vidíte, v každom jednotlivom prípade sa používa ďalší argument (príkaz). Ak chcete získať úplný zoznam možných argumentov a celkovú podporu funkcií nástroja, zadajte:
iptables -h
Aby ste sa uistili, že sú nastavenia správne, znova zadajte príkaz a zobrazte zoznam pravidiel:
iptables -L
Ak chcete odstrániť konkrétne pravidlo, použite príkaz:
iptables -D chain rule_number
Napríklad, ak chcete odstrániť pravidlo číslo 1 z reťazca INPUT, príkaz bude vyzerať takto:
iptables -D INPUT 1
Ak chcete odstrániť všetky pravidlá jedným príkazom:
iptables -F
Dôležitá poznámka : pravidlá iptables sa po reštarte systému alebo služby neukladajú automaticky. Ak chcete pravidlá uložiť, je potrebné ich pridať do konfiguračného súboru a po reštarte obnoviť. S tým vám môžu pomôcť nástroje iptables-save a iptables-restore . Ak chcete pravidlá uložiť, zadajte príkaz:
iptables-save > /etc/iptables/rules.v4
Toto uloží aktuálne pravidlá iptables do súboru rules.v4. Ak chcete obnoviť po reštarte, zadajte:
iptables-restore < /etc/iptables/rules.v4
Tento príkaz obnoví pravidlá zo súboru rules.v4.
Záver
Konfigurácia brány firewall v systéme Linux pomocou brány firewalld alebo iptables je dôležitým aspektom zabezpečenia servera. Oba nástroje ponúkajú spoľahlivé prostriedky na riadenie sieťovej prevádzky a ochranu systému pred neoprávneným prístupom a kybernetickými útokmi. Voľba medzi firewallom a iptables závisí od špecifických potrieb a preferencií používateľa vzhľadom na ich rôznu funkčnosť a silné stránky.