Požarni zid v sistemu Linux ima ključno vlogo pri varovanju računalniškega sistema. Deluje kot ovira, nadzoruje in filtrira omrežni promet, da zaščiti sistem pred nepooblaščenim dostopom, napadi in drugimi grožnjami. Brez pravilno konfiguriranega požarnega zidu je lahko strežnik ranljiv za različne vrste kibernetskih napadov, kar ima resne posledice za varnost in zaupnost podatkov.
V tem članku si bomo ogledali dve glavni orodji za konfiguracijo požarnega zidu Linux: firewalld in iptables. Izvedli bomo primerjalno analizo njunih lastnosti, funkcionalnosti in prednosti. Poleg tega bomo podali podrobna navodila za nastavitev in uporabo vsakega od teh orodij ter razpravljali o najboljših praksah za zaščito vašega sistema s požarnim zidom na platformi Linux. Vsa dejanja bodo prikazana na virtualnem strežniku s korenskim dostopom.
Konfiguracija požarnega zidu v sistemu Linux
Firewalld (Firewall Daemon) je program za upravljanje požarnega zidu v operacijskih sistemih Linux. Ponuja uporabniški vmesnik za konfiguriranje pravil požarnega zidu, dovoljevanje ali blokiranje povezav omrežnih aplikacij. V večini strežniških distribucij je privzeto nameščen. Če Firewalld ni vnaprej nameščen, ga je mogoče namestiti neodvisno iz uradnih repozitorijev distribucije.
Za sisteme Red Hat (kot so RHEL, CentOS, Fedora) se namestitev izvede z ukazom:
yum install firewalld
Za Debian/Ubuntu:
apt-get install firewalld
Po namestitvi ga lahko takoj zaženemo in aktiviramo z ukazom:
systemctl start firewalld
Nato morate dodati storitev v zagon:
systemctl enable firewalld
Na tej točki priporočamo, da onemogočite ufw, saj sočasna uporaba tega orodja s požarnim zidom ali iptables ni priporočljiva. Preverite stanje:
systemctl status ufw
Če ga želite ustaviti, vnesite ukaz:
systemctl stop ufw
Za popolno deaktivacijo:
ufw disable
Po teh dejanjih lahko nadaljujete s konfiguracijo požarnega zidu.
Najprej je treba določiti cone zaupanja. Firewalld uporablja koncept con za določanje stopnje zaupanja za omrežne vmesnike. Vsakemu vmesniku je dodeljeno eno območje in pravila požarnega zidu se uporabljajo glede na območje. Seznam vseh razpoložljivih con odprete z ukazom:
firewall-cmd --get-zones
Običajno se uporabljajo 4 glavne cone:
- javno: To območje je za omrežja, ki se vam zdijo nevarna;
- Zasebno: Velja za domača omrežja ali druge zaupanja vredne omrežne povezave;
- notranja: Uporablja se za notranja omrežja, kot so tista znotraj organizacije ali omrežja podjetja;
- DMZ: To območje je mesto, kjer so običajno nameščeni strežniki, ki bi morali biti dostopni iz interneta.
Vendar je to le en primer. Svojo cono lahko dodate z ukazom:
firewall-cmd --permanent --new-zone=nameyourzone
Po dodajanju je potrebno ponovno nalaganje:
firewall-cmd --reload
Za brisanje cone se uporablja podobna metoda
firewall-cmd --permanent --delete-zone=nameyourzone
Po določitvi območij je potrebno omogočiti promet za potrebne storitve in vrata. Če želite omogočiti določeno storitev, uporabite ukaz:
firewall-cmd --zone=public --add-service=name
Kjer je ime ime storitve. Na primer, če želite dovoliti promet za Apache:
firewall-cmd --zone=public --add-service=http
Če želite določiti dovoljena vrata, uporabite ukaz:
firewall-cmd --zone=public --add-port=number/protocol
Na primer, standardna vrata 22 za SSH bi izgledala takole:
firewall-cmd --zone=public --add-port=22/tcp
Na tej stopnji so glavna pravila že ustvarjena. Nato določite, kako bo promet obdelan glede na vir, cilj, vrata in druga merila. Če želite dodati pravilo (na primeru javne cone):
firewall-cmd --zone=public rule
Če želite na primer dovoliti dohodni promet iz katerega koli vira do vrat 80 (HTTP):
firewall-cmd --zone=public --add-port=80/tcp --permanent
Če želite odstraniti pravilo:
firewall-cmd --permanent --remove-rule=rule_specification
Kjer je pravilo vrsta pravila (npr. vrata, storitve, bogato pravilo itd.), specifikacija_pravila pa je specifikacija samega pravila.
Ko spremenite konfiguracijo Firewalld, jih morate shraniti in uporabiti. Za shranjevanje sprememb uporabite ukaz:
firewall-cmd --runtime-to-permanent
Če želite uporabiti spremembe:
firewall-cmd --reload
Po končani nastavitvi lahko preverite izbrane parametre tako, da odprete seznam vseh pravil:
firewall-cmd --list-all
Če pride do težav, preverite dnevnike požarnega zidu z ukazom:
journalctl -u firewalld
Opomba: Obravnavali smo le splošni algoritem za vzpostavitev povezave. Orodje ima obsežno funkcionalnost. Za popolne informacije o vseh razpoložljivih možnostih lahko uporabite uradno dokumentacijo ali odprete pomoč:
firewall-cmd --help
Konfiguriranje iptables v sistemu Linux
Za razliko od Firewallda je iptables starejše, a še vedno pogosto uporabljeno orodje v Linuxu za upravljanje požarnega zidu. Zagotavlja bolj neposreden in prilagodljiv pristop k pravilom filtriranja paketov na ravni jedra Linuxa. Vendar pa iptables zahteva naprednejše znanje in izkušnje v primerjavi s Firewalldom, zaradi česar je manj dostopen za začetnike. Preverite vnaprej nameščeno različico orodja z ukazom:
iptables -V
Če orodje ni nameščeno, ga bo treba namestiti. Ukaz za namestitev na Ubuntu, Debian:
apt install iptables
Za sisteme Red Hat (npr. CentOS, Fedora):
yum install iptables
Ukaz za aktivacijo po namestitvi:
systemctl start iptables
Če želite dodati k zagonu, izvedite:
systemctl enable iptables
Pred začetkom konfiguracije iptables je pomembno razumeti, kako deluje. K temu pomaga sintaksa programa. Videti je takole:
iptables -t table action chain additional_parameters
Poglobimo se v vsako postavko.
Iptables ima štiri glavne tabele: filter, nat, mangle in raw . Vsaka je zasnovana za obdelavo določenih vrst paketov in ima svoje verige pravil:
- filter: To je najpogosteje uporabljena tabela, ki vsebuje pravila za filtriranje paketov. Uporablja se za sprejemanje odločitev o tem, ali dovoliti ali zavrniti pakete.
- nat: Ta tabela se uporablja za spreminjanje omrežnih naslovov in vrat v paketih. Pogosto se uporablja za nastavitev maskiranja (NAT).
- klopi: V tej tabeli lahko spreminjate glave paketov. Uporablja se za posebne paketne operacije, kot je označevanje.
- surovi: Ta tabela se uporablja za konfiguracijo pravil, ki veljajo, preden gredo skozi sistem za sledenje povezavi. Običajno se uporablja za nastavitev pravil, ki jih sistem za sledenje ne sme spreminjati, kot je izpuščanje paketov z določenih naslovov.
Vsaka tabela vsebuje niz verig. Verige so zaporedje pravil, ki se preverjajo zaporedno. Obstajajo tri vnaprej določene verige:
- INPUT (dohodni). Pravila v tej verigi določajo, kaj storiti s prejetimi paketi.
- IZHOD (odhodni). Ta veriga velja za vse pakete, ki jih vaš računalnik pošlje drugim napravam ali računalnikom v omrežju.
- NAPREJ (posredovanje). Pravila v tej verigi določajo, kaj storiti s posredovanimi paketi.
Končno ima vsaka veriga neko akcijo (cilj). V praksi se uporablja 5 glavnih dejanj:
- SPREJEMO: Dovolite, da paket preide skozi požarni zid.
- DROP: Zavrnite paket in ga zavrzite brez odgovora.
- ZAVRNITI: Zavrnite paket in pošljite pošiljatelju sporočilo o napaki ICMP.
- LOG: zabeležite paket v sistemski dnevnik in izvedite drugo dejanje (npr. SPREJMI ali IZVRŠI).
- NAZAJ: prenehajte preverjati pravila v trenutni verigi in se vrnite v klicno verigo (če je primerno).
Za začetek nastavitve odprite seznam obstoječih pravil z ukazom:
iptables -L
Kot vodnik za konfiguriranje Iptables si poglejmo praktične primere najpogosteje uporabljenih ukazov. Zaradi udobja bomo primere razdelili v 3 skupine, odvisno od določene verige.
VHOD VERIGE :
- Dovoli dohodni promet prek protokola TCP na vratih 80:
iptables -A INPUT -p tcp --dport 80 -j ACCEPT
2. Dovolite dohodni promet prek protokola UDP na vratih 22:
iptables -A INPUT -p udp --dport 22 -j ACCEPT
3. Blokirajte dohodni promet z določenega naslova IP:
iptables -A INPUT -s 192.168.1.100 -j DROP
IZHOD verige :
- Dovoli odhodni promet prek protokola TCP na vratih 443:
iptables -A OUTPUT -p tcp --dport 443 -j ACCEPT
2. Dovolite odhodni promet prek protokola UDP na vratih 80:
iptables -A OUTPUT -p udp --dport 80 -j ACCEPT
3. Blokirajte odhodni promet na določena vrata (na primer 21):
iptables -A OUTPUT -p tcp --dport 21 -j DROP
Veriga NAPREJ :
- Blokiraj posredovan promet iz določenega obsega naslovov IP:
iptables -A FORWARD -s 172.16.0.0/24 -j DROP
2. Blokirajte posredovanje paketov iz določenega omrežnega vmesnika:
iptables -A FORWARD -i eth1 -j DROP
3. Omejite število sočasnih povezav za določena vrata (v tem primeru 10 povezav na minuto na vratih 80):
iptables -A INPUT -p tcp --dport 80 -m limit --limit 10/minute -j ACCEPT
Kot lahko vidite, je v vsakem posameznem primeru uporabljen dodaten argument (ukaz). Če želite dobiti celoten seznam možnih argumentov in splošno podporo za funkcionalnost orodja, vnesite:
iptables -h
Če želite zagotoviti, da so nastavitve pravilne, znova vnesite ukaz za ogled seznama pravil:
iptables -L
Če želite izbrisati določeno pravilo, uporabite ukaz:
iptables -D chain rule_number
Na primer, če želite izbrisati pravilo številka 1 iz verige INPUT, bo ukaz videti takole:
iptables -D INPUT 1
Če želite izbrisati vsa pravila z enim ukazom:
iptables -F
Pomembno obvestilo : pravila iptables se po ponovnem zagonu sistema ali storitve ne shranijo samodejno. Če želite shraniti pravila, jih je treba dodati v konfiguracijsko datoteko in jih po ponovnem zagonu obnoviti. Pri tem vam lahko pomagata pripomočka iptables-save in iptables-restore . Če želite shraniti pravila, vnesite ukaz:
iptables-save > /etc/iptables/rules.v4
To shrani trenutna pravila iptables v datoteko rules.v4. Za obnovitev po ponovnem zagonu vnesite:
iptables-restore < /etc/iptables/rules.v4
Ta ukaz obnovi pravila iz datoteke rules.v4.
zaključek
Konfiguriranje požarnega zidu v sistemu Linux z uporabo požarnega zidu ali iptables je pomemben vidik zagotavljanja varnosti strežnika. Obe orodji nudita zanesljiv način za upravljanje omrežnega prometa in zaščito sistema pred nepooblaščenim dostopom in kibernetskimi napadi. Izbira med požarnim zidom in iptables je odvisna od posebnih potreb in preferenc uporabnika ob upoštevanju njune različne funkcionalnosti in prednosti.