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 njihovih značilnosti, funkcionalnosti in prednosti. Poleg tega bomo zagotovili 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 a virtualni strežnik s korenskim dostopom.
Konfiguracija požarnega zidu v sistemu Linux
Požarni zid (Firewall Daemon) je program za upravljanje požarnega zidu v operacijskih sistemih Linux. Zagotavlja uporabniški vmesnik za konfiguriranje pravil požarnega zidu, omogočanje ali blokiranje povezav omrežnih aplikacij. V večini strežniških distribucij je privzeto vnaprej nameščen. Če Firewalld ni vnaprej nameščen, ga je mogoče namestiti neodvisno iz uradnih skladišč 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
Kje Ime je ime storitve. Če želite na primer omogočiti 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 (z uporabo javnega območje kot primer):
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
Kje izreči je vrsta pravila (npr. pristanišče, storitev, bogato pravilo itd.) in specifikacija_pravila 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: Pokrili smo samo splošni algoritem za nastavitev povezave. Orodje ima široko funkcionalnost. Za popolne informacije o vseh razpoložljivih možnostih lahko uporabite uradna dokumentacija ali odpri 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. Vsak je zasnovan 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.
Chain INPUT:
- 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
Chain IZHOD:
- 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
Chain 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 opozorilo: pravila iptables se ne shranijo samodejno po ponovnem zagonu sistema ali storitve. Če želite shraniti pravila, jih je treba dodati v konfiguracijsko datoteko in obnoviti po ponovnem zagonu. The iptables-save in iptables-restore pripomočki lahko pomagajo pri tem. Č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.