Kaip įdiegti, konfigūruoti ir naudoti ugniasienę „CentOS“ ir „Ubuntu“


„Firewalld“ (užkardos demonas) yra „iptables“ paslaugos alternatyva, skirta dinamiškai valdyti sistemos užkardą palaikant tinklo (arba užkardos) zonas, ir suteikia „D-Bus“ sąsają konfigūracijoms valdyti. Tai lengva naudoti ir konfigūruoti, o dabar tai yra numatytasis ugniasienės valdymo įrankis RHEL/CentOS, „Fedora“ ir keliuose kituose „Linux“ paskirstymuose.

Šiame straipsnyje aptarsime, kaip sukonfigūruoti sistemos užkardą naudojant užkardą ir įdiegti pagrindinį paketų filtravimą „CentOS/RHEL 7“ ir „Ubuntu“.

„Firewalld“ pagrindai

Ugniasienę sudaro trys sluoksniai, kurie yra šie:

  • pagrindinis sluoksnis: atsakingas už konfigūracijos ir užpakalinių dalių tvarkymą (išvardyti toliau).
  • „D-Bus“ sąsaja: pagrindinė ugniasienės konfigūracijos keitimo ir kūrimo priemonė.
  • užnugariai: sąveikai su netfilter (natūralaus branduolio modulis, naudojamas užkardoms). Jie apima „iptables“, „ip6tables“, „ebtables“, „ipset“, „nft“, „linnftables“; tinklo valdytojas; ir moduliai.

Jis valdo užkardos taisykles įgyvendindamas tinklo/užkardos zonas, apibrėžiančias tinklo ryšių ar sąsajų patikimumo lygį. Kitos palaikomos ugniasienės funkcijos yra paslaugos, tiesioginė konfigūracija (naudojama tiesiogiai perduoti neapdorotą „iptables“ sintaksę), IPSets ir ICMP tipai.

Ugniasienė palaiko dviejų rūšių konfigūravimo aplinkas:

  • vykdymo laiko konfigūracija galioja tik tol, kol mašina bus perkrauta arba nepaleista užkardos tarnyba iš naujo
  • nuolatinė konfigūracija, kuri išsaugoma ir veikia nuolat.

Ugniasienės-cmd komandinės eilutės įrankis naudojamas tvarkyti vykdymo laiką ir nuolatinę konfigūraciją. Arba galite naudoti užkardos konfigūravimo grafinės vartotojo sąsajos (GUI) konfigūravimo įrankį, kad galėtumėte sąveikauti su deemonu.

Be to, „firewalld“ siūlo gerai apibrėžtą sąsają kitoms vietinėms tarnyboms ar programoms, kad būtų galima tiesiogiai prašyti pakeisti užkardos taisykles, jei jos veikia su root teisėmis.

Visuotinis „firewalld“ konfigūracijos failas yra /etc/firewalld/firewalld.conf, o užkardos funkcijos sukonfigūruotos XML formatu.

Svarbių užkardos funkcijų supratimas

Pagrindinis „firewalld“ bruožas yra tinklo/užkardos zonos. Kiekviena kita funkcija yra ribojama su zona. Ugniasienės zona apibūdina ryšio, sąsajos ar šaltinio adreso susiejimo patikimumo lygį.

Pagal numatytąją konfigūraciją pateikiama keletas iš anksto nustatytų zonų, surūšiuotų pagal numatytąjį zonų pasitikėjimo lygį nuo nepatikimų iki patikimų: „drop“, „block“, „public“, „external“, „dmz“, „work“, „home“, „internal“ ir „trusted“. Jie apibrėžiami failuose, saugomuose kataloge/usr/lib/firewalld/zone.

Galite sukonfigūruoti arba pridėti pasirinktines zonas naudodami CLI klientą arba tiesiog sukurti arba nukopijuoti zonos failą aplanke/etc/firewalld/zone iš esamų failų ir jį redaguoti.

Kita svarbi užkardos sąvoka yra paslaugos. Paslauga apibrėžiama naudojant prievadus ir protokolus; šie apibrėžimai reiškia tam tikrą tinklo paslaugą, pvz., žiniatinklio serverį ar nuotolinės prieigos paslaugą. Paslaugos apibrėžiamos failuose, saugomuose kataloge/usr/lib/firewalld/services/arba/etc/firewalld/services /.

Jei žinote pagrindines „iptables“/„ip6tables“/„ebtables“ sąvokas, taip pat galite naudoti tiesioginę sąsają (arba konfigūraciją), kad galėtumėte tiesiogiai pasiekti ugniasienę. Bet tiems, kurie neturi jokių „iptables“ žinių, galite naudoti turtingą kalbą kurdami sudėtingesnes IPv4 ir IPv6 užkardos taisykles.

Kaip įdiegti „Firewalld“ paketą į „Linux“

„CentOS 7“ ugniasienės paketas yra iš anksto įdiegtas ir galite patikrinti naudodami šią komandą.

$ rpm -qa firewalld

„Ubuntu 16.04“ ir „18.04“ galite įdiegti naudodami numatytąjį paketų tvarkyklę, kaip parodyta.

$ sudo apt install firewalld

Kaip valdyti „Firewalld Service“ sistemoje „Linux“

„Firewalld“ yra įprasta „systemd“ paslauga, kurią galima valdyti naudojant komandą systemctl.

 
$ sudo systemctl start firewalld	#start the service for the mean time
$ sudo systemctl enable firewalld	#enable the service to auto-start at boot time
$ sudo systemctl status firewalld	#view service status

Paleidę „firewalld“ paslaugą, taip pat galite patikrinti, ar demonas veikia, ar ne, naudodami užkardą-cmd įrankį (jei ji nėra aktyvi, ši komanda išves „neveikia“).

$ sudo firewall-cmd --state

Jei visam laikui išsaugote pakeitimus, galite iš naujo įkelti užkardą. Tai užkraus užkardos taisykles ir išsaugos būsenos informaciją. Dabartinė nuolatinė konfigūracija taps nauja vykdymo laiko konfigūracija.

$ sudo firewall-cmd --reload

Kaip dirbti su užkardos zonomis

Norėdami gauti visų galimų užkardos zonų ir paslaugų sąrašą, vykdykite šias komandas.

$ sudo firewall-cmd --get-zones
$ sudo firewall-cmd --get-services

Numatytoji zona yra zona, naudojama kiekvienai ugniasienės funkcijai, kuri nėra aiškiai apribota kita zona. Paleisdami galite gauti numatytąją tinklo jungčių ir sąsajų zoną.

$ sudo firewall-cmd --get-default-zone

Norėdami nustatyti numatytąją zoną, pavyzdžiui, į išorinę, naudokite šią komandą. Atminkite, kad pridėjus parinktį - permanent konfigūracija nustatoma visam laikui (arba įgalinama pateikti užklausą dėl informacijos iš nuolatinės konfigūracijos aplinkos).

$ sudo firewall-cmd --set-default-zone=external
OR
$ sudo firewall-cmd --set-default-zone=external --permanent
$ sudo firewall-cmd --reload 

Toliau pažiūrėkime, kaip pridėti sąsają prie zonos. Šis pavyzdys rodo, kaip belaidžio tinklo adapterį (wlp1s0) pridėti prie namų zonos, kuri naudojama namų zonose.

$ sudo firewall-cmd --zone=home --add-interface=wlp1s0

Sąsają galima pridėti tik prie vienos zonos. Norėdami perkelti jį į kitą zoną, naudokite jungiklį --change-interface , kaip parodyta, arba pašalinkite jį iš ankstesnės zonos naudodami jungiklį -remove-interface, tada pridėkite jį prie naujos zonos.

Darant prielaidą, kad norite prisijungti prie viešojo WI-FI tinklo, belaidę sąsają turėtumėte perkelti atgal į viešąją zoną, kaip tai nurodyta:

$ sudo firewall-cmd --zone=public --add-interface=wlp1s0
$ sudo firewall-cmd --zone=public --change-interface=wlp1s0

Vienu metu galite naudoti daugybę zonų. Norėdami gauti visų aktyvių zonų su įgalintomis funkcijomis, tokiomis kaip sąsajos, paslaugos, prievadai, protokolai, sąrašą, paleiskite:

$ sudo firewall-cmd --get-active-zones

Kalbant apie ankstesnį punktą, jei norite rasti daugiau informacijos apie tam tikrą zoną, t. Y. Viską, kas joje pridėta ar įgalinta, naudokite vieną iš šių komandų:

$ sudo firewall-cmd --zone=home --list-all
OR
$ sudo firewall-cmd --info-zone public

Kita naudinga parinktis yra --get-target , rodanti nuolatinės zonos taikinį. Taikinys yra vienas iš šių: numatytasis, PRIIMTI, NURODYTI, ATMETTI. Galite patikrinti įvairių zonų tikslą:

$ sudo firewall-cmd --permanent --zone=public --get-target  
$ sudo firewall-cmd --permanent --zone=block --get-target  
$ sudo firewall-cmd --permanent --zone=dmz --get-target  
$ sudo firewall-cmd --permanent --zone=external --get-target
$ sudo firewall-cmd --permanent --zone=drop --get-target

Kaip atidaryti ir blokuoti uostus

Norėdami atidaryti ugnį (arba uosto/protokolo derinį) ugniasienėje, tiesiog pridėkite jį zonoje naudodami parinktį --add-port . Jei aiškiai nenurodysite zonos, ji bus įgalinta numatytojoje zonoje.

Šiame pavyzdyje parodyta, kaip pridėti 80 ir 443 prievadus, kad būtų leidžiamas susietas interneto srautas per HTTP ir HTTPS protokolus:

$ sudo firewall-cmd --zone=public --permanent --add-port=80/tcp --add-port=443/tcp

Tada iš naujo įkelkite „firewalld“ ir dar kartą patikrinkite įgalintas viešosios zonos funkcijas, turėtumėte matyti ką tik pridėtus prievadus.

$ sudo firewall-cmd --reload
$ sudo firewall-cmd --info-zone public

Užblokuoti ar uždaryti ugniasienės prievadą yra taip pat paprasta, tiesiog pašalinkite jį iš zonos naudodami parinktį --remove-port . Pavyzdžiui, uždaryti 80 ir 443 uostus viešojoje zonoje.

$ sudo firewall-cmd --zone=public --permanent --remove-port=80/tcp --remove-port=443/tcp

Užuot naudoję prievadą arba prievado/protokolo derinį, galite naudoti paslaugos pavadinimą, kuriam priskirtas uostas, kaip paaiškinta kitame skyriuje.

Kaip atidaryti ir užblokuoti paslaugas

Norėdami atidaryti paslaugą užkardoje, įgalinkite ją naudodami parinktį --add-service . Jei zona nenurodoma, bus naudojama numatytoji zona.

Ši komanda visam laikui įgalins http paslaugą viešojoje zonoje.

$ sudo firewall-cmd --zone=public --permanent --add-service=http 
$ sudo firewall-cmd --reload 

Parinktį --remove-service galima naudoti norint išjungti paslaugą.

$ sudo firewall-cmd --zone=public --permanent --remove-service=http 
$ sudo firewall-cmd --reload 

Kaip įjungti ir išjungti IP maskavimą naudojant užkardą

IP maskavimas (taip pat žinomas kaip IPMASQ arba MASQ) yra NAT (tinklo adresų vertimo) „Linux“ tinklo mechanizmas, leidžiantis jūsų tinklo kompiuteriams su privačiais IP adresais bendrauti su internetu naudojant jūsų „Linux“ serverio (IPMASQ šliuzo) priskirtą viešąjį IP. adresas.

Tai žemėlapis „vienas prie daugelio“. Srautas iš nematomų pagrindinių kompiuterių bus rodomas kitiems interneto kompiuteriams, tarsi jis būtų gautas iš jūsų „Linux“ serverio.

Galite įjungti IP maskavimą pageidaujamoje zonoje, pavyzdžiui, viešojoje zonoje. Bet prieš tai atlikdami pirmiausia patikrinkite, ar maskavimasis aktyvus, ar ne („ne“ reiškia jo neįgalųjį, o „taip“ reiškia kitaip).

$ sudo firewall-cmd --zone=public --query-masquerade
$ sudo firewall-cmd --zone=public --add-masquerade

Tipiškas maskavimo būdas yra uosto persiuntimas. Darant prielaidą, kad norite SSH iš nuotolinio kompiuterio į pagrindinio kompiuterio vidinį tinklą su IP 10.20.1.3, kurio sshd deemonas klausosi 5000 prievado.

Galite persiųsti visas jungtis į 22 „Linux“ serverio prievadą į numatytą tikslinio kompiuterio prievadą:

$ sudo firewall-cmd --zone=public --add-forward-port=port=22=proto=tcp:toport=5000:toaddr=10.20.1.3

Norėdami išjungti maskavimą zonoje, naudokite jungiklį --remove-maskered .

$ sudo firewall-cmd --zone=public --remove-masquerade

Kaip įgalinti ir išjungti IMCP pranešimą užkardoje

ICMP („Internet Control Message Protocol“) pranešimai yra informacijos užklausos arba atsakymai į informacijos užklausas arba klaidos sąlygomis.

Galite įjungti arba išjungti ICMP pranešimus užkardoje, tačiau prieš tai pirmiausia išvardykite visus palaikomus „icmp“ tipus.

$ sudo firewall-cmd --get-icmptypes

Norėdami pridėti ar pašalinti norimo tipo bloką.

$ sudo firewall-cmd --zone=home --add-icmp-block=echo-reply
OR
$ sudo firewall-cmd --zone=home --remove-icmp-block=echo-reply

Visus zonoje pridėtus icmp tipus galite peržiūrėti naudodami jungiklį --list-icmp-blocks .

$ sudo firewall-cmd --zone=home --list-icmp-blocks

Kaip naudoti tiesioginę sąsają perduoti neapdorotas „iptables“ komandas

Ugniasienė-cmd taip pat suteikia tiesiogines parinktis ( --direction ), kad galėtumėte gauti tiesioginę prieigą prie užkardos. Tai naudinga tiems, kurie turi pagrindinių žinių apie „iptables“.

Svarbu: tiesiogines parinktis naudokite tik kraštutiniu atveju, kai neįmanoma naudoti įprastų užkardos cmd parinkčių, paaiškintų aukščiau.

Čia pateikiamas pavyzdys, kaip perduoti neapdorotą „iptables“ taisyklę naudojant jungiklį --add-rules . Šias taisykles galite lengvai pašalinti, pakeisdami --add-rule į --remove-rule :

$ sudo firewall-cmd --direct --add-rule ipv4 filter IN_public_allow 0 -m tcp -p tcp --dport 80 -j ACCEPT

Norėdami gauti daugiau informacijos apie „iptables“, žr. Šį vadovą: Kaip nustatyti „Iptables“ užkardą, kad įgalintumėte nuotolinę prieigą prie „Linux“ paslaugų.

Jei nesate susipažinę su „iptables“ sintakse, galite pasirinkti „firewalld“ „turtinę kalbą“, kad kurtumėte sudėtingesnes užkardos taisykles lengvai suprantamu būdu, kaip paaiškinta toliau.

Kaip naudoti turtingą kalbą užkardoje

Raiškioji kalba (dar vadinama turtingosiomis taisyklėmis) naudojama norint pridėti sudėtingesnių IPv4 ir IPv6 užkardos taisyklių, nežinant „iptables“ sintaksės.

Tai praplečia zonos ypatybes (paslaugas, uostą, icmp bloką, maskaradą ir uosto priekį), kurias aprėpėme. Jis palaiko šaltinių ir paskirties adresus, registravimą, veiksmus ir žurnalų bei veiksmų apribojimus.

--add-rich-rule naudojama norint pridėti turtingų taisyklių. Šiame pavyzdyje parodyta, kaip leisti naujus „IPv4“ ir „IPv6“ ryšius tarnybai „http“ ir registruoti 1 per minutę naudojant auditą:

$ sudo firewall-cmd --add-rich-rule='rule service name="http" audit limit value="1/m" accept'

Norėdami pašalinti pridėtą taisyklę, pakeiskite parinktį --add-rich-rule į --remove-rich-rule .

$ sudo firewall-cmd --remove-rich-rule='rule service name="http" audit limit value="1/m" accept'

Ši funkcija taip pat leidžia blokuoti arba leisti srautą iš konkretaus IP adreso. Šis pavyzdys rodo, kaip atmesti ryšius iš IP 10.20.1.20.

$ sudo firewall-cmd --zone=public --add-rich-rule='rule family="ipv4" source address="192.168.0.254" reject'

Kaip įjungti ir išjungti panikos režimą užkardoje

Panikos režimas yra specialus režimas po užkarda, kuriame visi įrišti ir išsiųsti paketai yra išmesti, o aktyvūs ryšiai pasibaigs, kai jie bus suaktyvinti.
Šį režimą galite įjungti avarinėmis situacijomis, kai kyla grėsmė jūsų tinklo aplinkai.

Norėdami pateikti užklausą panikos režimui, naudokite parinktį --query-panic .

$ sudo firewall-cmd --query-panic

Norėdami įjungti panikos režimą, naudokite parinktį --panic-on . Galite patikrinti, ar jis veikia, naudodami komandą „ping“, kaip parodyta. Kadangi paketas numetamas, pavadinimo www.google.com negalima išspręsti, todėl rodoma klaida.

$ sudo firewall-cmd --panic-on
$ ping -c 2 www.google.com

Norėdami išjungti panikos režimą, naudokite parinktį --panic-off .

$ sudo firewall-cmd --panic-off

Kaip užrakinti užkardą

Atminkite, kad pagrindinėje dalyje apie „firewalld“ minėjome, kad vietinės programos ar paslaugos gali pakeisti užkardos konfigūraciją, jei jos veikia su root teisėmis. Galite valdyti, kurios programos gali pateikti užklausą dėl užkardos pakeitimų, tada nurodydami uždarymo baltąjį sąrašą.

Ši funkcija pagal numatytuosius nustatymus yra išjungta. Ją galite įjungti arba išjungti naudodamiesi jungikliu - lockdown-on arba --lockdown .

$ sudo firewall-cmd --lockdown-on
OR
$ sudo firewall-cmd --lockdown-off

Atminkite, kad šią funkciją rekomenduojama įgalinti arba išjungti redaguojant pagrindinį konfigūracijos failą, nes ugniasienės cmd gali nebūti užrakinimo baltame sąraše, kai įgalinsite užraktą.

$ sudo vim /etc/firewalld/firewalld.conf

Raskite parametrą „Lockdown“ ir pakeiskite jo reikšmę iš no (reiškia išjungta) į yes (reiškia įjungta).

Lockdown=yes

Norėdami, kad šis nustatymas būtų nuolatinis, įkelkite užkardą.

$ sudo firewall-cmd --reload

„Firewalld“ yra lengvai naudojamas „iptables“ paslaugos pakaitalas, kuris naudoja „iptables“ kaip vidinę programą. Šiame straipsnyje mes parodėme, kaip įdiegti „firewalld“ paketą, paaiškinome svarbiausias „firewalld“ funkcijas ir aptarėme, kaip jas konfigūruoti vykdymo ir nuolatinės konfigūracijos aplinkose.

Jei turite klausimų ar komentarų, susisiekite su mumis naudodamiesi žemiau esančia komentaro forma. Norėdami gauti daugiau informacijos, žiūrėkite „firewalld“ vadovo puslapį („man firewalld“) arba „firewalld“ dokumentaciją projekto svetainėje.