Od CentoOS 7 se je pojavilo novo orodje za konfiguriranje pravil filtriranja prometa. firewalld. Priporočljivo je, da ga uporabite za upravljanje pravil iptables. V CentOS 8 namesto standardnega paketa za filtriranje iptables se zdaj uporablja okvir nftables in ko konfigurirate pravila požarnega zidu prek firewalld, dejansko konfigurirate nftables. V tem članku bomo razmislili o namestitvi, osnovnih konceptih in konfiguraciji požarnega zvoka na strežniku, ki poganja CentOS 8 (v CentOS 7 je vse isto).
Vsebina:
- Ključni pojmi, cone in pravila Firewallda
- Namestite in omogočite firewalld v CentOS-u
- Delajte s pravili firewalld
- Firewalld: Blokiranje IP, izjema
- Posredovanje pristanišča v firewalldu
Firewalld - požarni zid za zaščito strežnika pred neželenim prometom s podporo za dinamično upravljanje pravil (brez ponovnega zagona) in izvajanje obstojnih pravil požarnega zidu. Deluje kot vmesnik za iptables in nftables. FirewallD je mogoče uporabiti v skoraj vseh distribucijah Linuxa.
Ključni pojmi, cone in pravila Firewallda
Preden začnete namestitev in konfiguracijo firewalld, seznanili se bomo s pojmom con, ki se uporablja za določanje stopnje zaupanja v različne spojine. Za različne cone firewalld lahko uporabite različna pravila filtriranja, določite možnosti aktivnega požarnega zidu v obliki vnaprej določenih storitev, protokolov in vrat, posredovanje vrat in bogatih pravil.
Firewalld filtrira dohodni promet po območjih, odvisno od pravil, ki se nanašajo na cono. Če IP-naslov pošiljatelja zahteve je v skladu s pravili katere koli cone, paket bo poslan prek te cone. Če se naslov ne ujema z nobeno od con, konfiguriranih na strežniku, bo paket obdelal privzeto območje. Pri nameščanju firewalld prikliče se privzeto območje javnosti.
V firewalld-u obstajajo cone, kjer so dovoljenja za različne storitve že vnaprej nastavljena. Te nastavitve lahko uporabite ali ustvarite svoje cone. Seznam privzetih con, ki so ustvarjeni med namestitvijo firewallda (shranjen v / usr / lib / firewalld / conah / direktoriju):
padec | minimalna raven zaupanja. Vse dohodne povezave so blokirane brez odziva, dovoljene so le odhodne povezave; |
blok | cona je podobna prejšnji, toda ko se dohodne zahteve zavrnejo, se pošlje icmp-gostiteljsko prepovedano sporočilo za Ipv4 ali icmp6-adm sporočilo za Ipv6; |
javnosti | Predstavlja javna, nezaupanja omrežja. Izbrane vhodne povezave lahko omogočite posamezno; |
zunanji | zunanja omrežja, ko požarni zid uporabljate kot prehod. Konfigurirano je tako, da prikrije NAT, zato vaše notranje omrežje ostane zasebno, a dostopno; |
notranji | antonim zunanje cone. Gostitelj ima zadostno stopnjo zaupanja, na voljo so številne dodatne storitve; |
dmz | uporablja se za računalnike, ki se nahajajo v DMZ (izolirani računalniki brez dostopa do preostalega omrežja). Dovoljeni so le določeni vhodni priključki; |
delati | cona za delujoče stroje (večina računalnikov v omrežju je zaupanja vredna); |
domov | cona domačega omrežja. Zaupate lahko večini osebnih računalnikov, vendar so podprte le nekatere vhodne povezave; |
zaupati | Zaupajte vsem strojem v omrežju. Najbolj odprta od vseh razpoložljivih možnosti zahteva zavestno uporabo. |
V firewalld uporabljata se dva sklopa pravil - trajna in začasna. Začasna pravila delujejo, dokler se strežnik ne zažene. Privzeto pri dodajanju pravil v firewalld, pravila veljajo za začasna (čas izvajanja) Če želite stalno dodajati pravilo, morate uporabiti zastavico - stalna. Ta pravila bodo veljala po ponovnem zagonu strežnika..
Namestite in omogočite firewalld v CentOS-u
V CentOS 7/8 je firewalld privzeto nameščen pri nameščanju operacijskega sistema. Če ste ga izbrisali in želite namestiti firewalld, lahko uporabite standardni yum / dnf manager:
# yum namestite firewalld -y
- za Centos 7# dnf namestite firewalld -y
- za Centos 8
Do demona firewalld samodejno se je začel z zagonom strežnika, morate ga dodati v zagon:
# systemctl omogoči firewalld
In zaženite:
# systemctl start firewalld
Preverite stanje storitve:
# systemctl status firewalld
● firewalld.service - firewalld - dinamični demon požarnega zidu Naložen: naložen (/usr/lib/systemd/system/firewalld.service; omogočen; prednastavitev ponudnika: omogočeno) Aktivno: aktivno (deluje) od pon 2019-10-14 14:54 : 40 +06; Pred 22 leti Dokumenti: moški: firewalld (1) Glavni PID: 13646 (firewalld) CGroup: /system.slice/firewalld.service └─13646 / usr / bin / python2 -Es / usr / sbin / firewalld --nofork --nopid 14. oktober 14:54:40 server.vpn.ru systemd [1]: Začetek firewalld - dinamični požarni zid ... 14. oktober 14:54:40 server.vpn.ru systemd [1]: Začetek firewalld - dinamični požarni zid daemon.
Ali z ukazom:
# požarni zid-cmd - država
# požarni zid-cmd - država
tek
Delajte s pravili firewalld
Privzeta pravila:
Pred konfiguriranjem pravil firewalld morate preveriti, katero območje je privzeto uporabljeno:
# požarni zid-cmd - privzeto območje
Ker smo pravkar namestili in nismo konfigurirali firewalld-a, imamo privzeto območje javnosti.
Preverite jedro. Je tudi ena - javna:
# požarni zid-cmd - območja, ki so aktivna
javni vmesniki: eth0
Kot vidite, omrežni vmesnik eth0 nadzoruje območje. javnosti.
Prikaže se seznam omrežnih vmesnikov CentOS:# ip povezava kaže
Or# nmcli stanje naprave
Če si želite ogledati osnovna pravila, vnesite:
# požarni zid-cmd - seznam-vse
javni (aktivni) cilj: privzeti icmp-block-inverzija: brez vmesnikov: eth0 viri: storitve: dhcpv6-odjemalca ssh ports: protokoli: maskarada: ni naprej-ports: izvori ports: icmp-bloki: obogatena pravila:
Kot je razvidno iz seznama, so na to območje dodane običajne operacije, povezane s DHCP odjemalcem in ssh..
Razpoložljive cone
Če si želite ogledati seznam vseh con, morate zagnati ukaz:
# požarni zid-cmd --get-cone
Dobil sem naslednji seznam:
blok dmz spusti zunanje domače notranje javno zaupno delo
Če želite preveriti pravila določenega območja, dodajte oznako cone.
# požarni zid-cmd --zone = domača - seznam-vse
domači cilj: privzeti icmp-block-inverzija: ni vmesnikov: viri: storitve: dhcpv6-odjemalec mdns samba-client ssh pristanišča: protokoli: maskarada: ni naprej-portov: izvorni pristanišča: icmp-bloki: obogatena pravila:
Pravila vseh con si lahko ogledate z ukazom:
# požarni zid-cmd - seznam-vse-cone
Uvrstitev na seznam bo precej velika, saj je lahko veliko con.
Spremeni privzeto območje.
Privzeto so vsi omrežni vmesniki v območju javnosti, vendar jih je mogoče prenesti na katero koli območje z ukazom:
# požarni zid-cmd --zone = home -change-interface = eth0
Po parametru -cona = določite želeno cono.
Če želite spremeniti privzeto območje, uporabite ukaz:
# požarni zid-cmd --set-default-zone = home
Dodajanje pravil za aplikacije
Če želite odpreti vrata za aplikacijo, lahko izjemam dodate storitev. Prikažite seznam storitev, ki so na voljo:
# požarni zid-cmd --get-services
Rezultat bo vseboval veliko število storitev. Podrobnosti storitve so v xml datoteka. Te datoteke se nahajajo v imeniku / usr / lib / firewalld / storitve.
Na primer:
# cd / usr / lib / firewalld / storitve
# mačka smtp.xml
Pošta (SMTP) Ta možnost omogoča dohodno pošiljanje pošte SMTP. Če morate omogočiti oddaljenim gostiteljem, da se neposredno povežejo s strojem za dostavo pošte, omogočite to možnost. Tega vam ni treba omogočiti, če poštno sporočilo zbirate s strežnika ponudnika internetnih storitev s protokolom POP3 ali IMAP ali če uporabljate orodje, na primer fetchmail. Upoštevajte, da lahko nepravilno konfiguriran strežnik SMTP oddaljenim računalnikom dovoli uporabo vašega strežnika za pošiljanje neželene pošte.
Datoteka XML vsebuje opis storitve, protokol in številko vrat, ki se odprejo v firewalld-u.
Pri dodajanju pravil lahko uporabite parameter -dodatna storitev, Če želite odpreti dostop do določene storitve:
# požarni zid-cmd --zone = javni --add-service = http
uspeh
# požarni zid-cmd --zone = javni --add-service = https
uspeh
Po dodajanju pravil lahko preverite, ali so storitve dodane v določeno območje:
# požarni zid-cmd --zone = javni - seznam-storitve
dhcpv6-odjemalec http https ssh
Če želite ta pravila narediti trajna, morate pri dodajanju dodati parameter -stalna.
Če želite odstraniti storitev iz območja:
# požarni zid-cmd - stalni --zone = javni - odstrani-storitev = http
# požarni zid-cmd --zone = javni - stalni - seznam-storitve
dhcpv6-odjemalec https ssh test
Če želite storitvam dodati izjeme, lahko ustvarite datoteko xml sebe in ga izpolnite. Podatke lahko kopirate iz katere koli storitve, spremenite ime, opis in številko vrat.
Kopirajte datoteko smtp.xml v imenik za delo z uporabniškimi storitvami:
# cp /usr/lib/firewalld/services/smtp.xml / itd / firewalld / storitve
Spremenite opis storitve v datoteki.
Tudi datoteko xml je treba preimenovati z imenom vaše storitve. Po tem morate znova zagnati firewalld in preveriti, ali je naša storitev na seznamu:
# požarni zid-cmd --get-services
Poklical sem službo test in na seznamu se je pojavil:
syslog-tls telnet test tftp
Zdaj lahko ustvarjeno storitev dodate v katero koli cono:
# požarni zid-cmd --zone = javni --add-service = test - stalni
uspeh
# požarni zid-cmd --zone = javni - stalni - seznam-storitve
dhcpv6-odjemalec http https ssh test
Če na seznamu niste našli želene storitve, lahko z ukazom odprete želeno vrata na firewalld:
# požarni zid-cmd --zone = javni -add-port = 77 / tcp
- odprto vrata 77 tcp# požarni zid-cmd --zone = javni -add-port = 77 / udp
- odprto vrata 77 udp# požarni zid-cmd --zone = javni -add-port = 77-88 / udp
- odprto območje vrat 77-88 udp# požarni zid-cmd --zone = javni -list-pristanišča
- preverite seznam dovoljenih vrat
Blokiraj / dovolite odzive ICMP:
# požarni zid-cmd --zone = javni --add-icmp-block = odmeven odgovor
# firewall-cmd --zone = public --remove-icmp-block = odmeven odgovor
Izbriši dodana vrata:
# požarni zid-cmd --zone = public -remove-port = 77 / udp
- odstrani začasno pravilo 77 udp
# požarni zid-cmd - stalni --zone = javni -remove-port = 77 / udp
- odstranite obstojno pravilo
Dodajanje območij po meri
Lahko ustvarite svojo cono (poimenoval jo bom naše):
# požarni zid-cmd - trajna - nova cona = naša
Ko ustvarite novo cono, pa tudi po ustvarjanju storitve, morate znova zagnati firewalld:
# požarni zid-cmd - naloži
uspeh
# požarni zid-cmd --get-cone
blok dmz spusti zunanji dom notranje naše zaupanja vredno delo
Cona naše na voljo. Vanj lahko dodate storitve ali odprete določena vrata.
Firewalld: Blokiranje IP, izjema
V izjeme firewalld lahko dodate zaupanja vredne naslove IP ali blokirate neželene.
Če želite z izjemami dodati poseben naslov IP (na primer 8.8.8.8) na strežniku firewalld, uporabite ukaz:
# firewall-cmd --zone = public --add-rich-rule = 'družina pravil = "ipv4" vir vira = "8.8.8.8" sprejme "
Preverite območje in se prepričajte IP dodane izjemam iz pravila o bogatih pravilih:
# požarni zid-cmd --zone = javni - seznam-vse
javni (aktivni) cilj: privzeti icmp-block-inverzija: ni vmesnikov: izvori0: storitve: dhcpv6-odjemalec http https ssh testna pristanišča: protokoli: maskarada: brez vhodnih vrat: izvori-porti: icmp-bloki: obogatena pravila: družina pravil = "ipv4" izvorni naslov = "8.8.8.8" sprejme
Za blokiranje IP, treba zamenjati sprejeti naprej zavrniti:
# firewall-cmd --zone = public --add-rich-rule = 'družina pravil = "ipv4" vir vira = "8.8.4.4" zavrni "
# požarni zid-cmd --zone = javni - seznam-vse
javni (aktivni) cilj: privzeti icmp-block-inverzija: ni vmesnikov: izvori0: storitve: dhcpv6-odjemalec http https ssh testna pristanišča: protokoli: maskarada: brez vhodnih vrat: izvori-porti: icmp-bloki: obogatena pravila: družina pravil = "ipv4" izvorni naslov = "8.8.8.8" sprejme družino pravil = "ipv4" vir vira = "8.8.4.4" zavrni
Konkretno storitev lahko omogočite samo za zahteve z določenega naslova IP:
# požarni zid-cmd - stalna --add-rich-rule "družina pravil = izvorni naslov ipv4" = ime storitve 10.10.1.0/24 "=" https "sprejme"
Če morate nujno blokirati vse zahteve strežniku, uporabite ukaz panika:
# požarni zid-cmd --panic-on
Način panike lahko onemogočite bodisi z ukazom:
# požarni zid-cmd - izklopljen
Ali pa znova zaženite strežnik.
Konfiguracijo firewalld lahko blokirate tako, da lokalne storitve s korenskimi privilegiji ne morejo spremeniti pravil požarnega zidu, ki ste jih ustvarili:
# požarni zid-cmd - zaklepanje
Onemogoči način zaklepanja:
# požarni zid-cmd - zaklepanje
Posredovanje pristanišča v firewalldu
Pravilo za posredovanje vrat lahko ustvarite v firewalldu. Za posredovanje vrat 443 do 9090:
# požarni zid-cmd --zone = javni --add-forward-port = port = 443: proto = tcp: toport = 9090 - stalni
Če želite odstraniti pravilo za posredovanje vrat:
# požarni zid-cmd --zone = javni - odstranite-naprej-port = port = 443: proto = tcp: toport = 9090