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 brány firewall systému Linux: firewalld a iptables. Urobíme porovnávaciu analýzu ich vlastností, funkčnosti a výhod. Okrem toho poskytneme podrobné pokyny na nastavenie a používanie každého z týchto nástrojov, ako aj preberieme najlepšie postupy na zabezpečenie vášho systému pomocou brány firewall na platforme Linux. Všetky akcie budú demonštrované na a virtuálny server s prístupom root.
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 brány firewall, povoľovanie alebo blokovanie pripojení sieťových aplikácií. Vo väčšine serverových distribúcií je štandardne predinštalovaný. Ak Firewalld nie je predinštalovaný, možno ho nainštalovať nezávisle od 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. Ak chcete napríklad povoliť návštevnosť 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ž vytvorené hlavné pravidlá. Ďalej určite, ako sa bude spracovávať návštevnosť v závislosti od zdroja, cieľa, portu a ďalších kritérií. Ak chcete pridať pravidlo (pomocou verejnosť zóna ako príklad):
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 vládnuť je typ pravidla (napr. port, služba, bohaté pravidlo atď.) a špecifikácia_pravidiel 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: Zaoberali sme sa len všeobecným algoritmom nastavenia pripojenia. Nástroj má rozsiahle funkcie. Pre úplné informácie o všetkých dostupných možnostiach môžete použiť oficiálna dokumentácia alebo otvorte pomoc:
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á svoje 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.
Reťaz INPUT:
- 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
Reťaz VÝKON:
- 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 FORWARD:
- 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 neuložia automaticky. Na uloženie pravidiel je potrebné ich pridať do konfiguračného súboru a po reštarte obnoviť. The iptables-uložiť a iptables-restore utility môžu s tým pomôcť. 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.