Palomuurin määrittäminen ja hallinta CentOS-järjestelmässä 8

palomuuri on menetelmä saapuvan ja lähtevän verkkoliikenteen seurantaan ja suodattamiseen. Se toimii määrittelemällä joukon turvallisuussääntöjä, jotka määrittävät, sallitaanko tai estetäänkö tietty liikenne. Oikein määritetty palomuuri on yksi tärkeimmistä kokonaisjärjestelmän tietoturvan näkökohdista.

CentOS 8-aluksia, joilla on FirewallD-niminen palomuurideemoni. Se on täydellinen ratkaisu D-Bus-käyttöliittymällä, jonka avulla voit hallita järjestelmän palomuuria dynaamisesti.

tässä opetusohjelmassa puhutaan CentOS 8: n palomuurin määrittämisestä ja hallinnasta. Kerromme myös firewalldin peruskäsitteistä.

Edeltävät opinnot #

palomuuripalvelun määrittäminen edellyttää, että käyttäjä on kirjautunut pääkäyttäjäksi tai käyttäjäksi sudo-oikeuksilla.

Basic Firewalld Concepts #

firewalld käyttää käsitteitä vyöhykkeet ja palvelut. Määrittämiesi vyöhykkeiden ja palveluiden perusteella voit hallita, mitä liikennettä järjestelmään saa tai estää ja sieltä pois.

Firewalld voidaan konfiguroida ja hallita firewall-cmd-komentorivityökalun avulla.

CentOS 8: ssa iptables on korvattu nftablesilla FirewallD-taustaprosessin oletustaustana.

Firewalldin vyöhykkeet #

vyöhykkeet ovat ennalta määriteltyjä sääntökokonaisuuksia, joissa määritellään niiden verkkojen luottamustaso, joihin tietokone on yhteydessä. Voit määrittää verkkoliitännät ja lähteet vyöhykkeelle.

alla on Firewalldin toimittamat vyöhykkeet järjestyksessä vyöhykkeen luottamustason mukaan epäluotettavasta luotettuun:

  • pudota: Kaikki saapuvat yhteydet pudotetaan ilman ilmoitusta. Vain lähtevät yhteydet ovat sallittuja.
  • lohko: kaikki saapuvat yhteydet hylätään icmp-host-prohibited viestillä IPv4 ja icmp6-adm-prohibited IPv6n: lle. vain lähtevät yhteydet ovat sallittuja.
  • Julkinen: käytettäväksi epäluotettavissa yleisissä tiloissa. Et luota verkon muihin tietokoneisiin, mutta voit sallia valitut saapuvat yhteydet.
  • ulkoinen: käytetään ulkoisissa verkoissa, joissa Nat-naamiointi on käytössä, kun järjestelmä toimii yhdyskäytävänä tai reitittimenä. Vain valitut saapuvat yhteydet ovat sallittuja.
  • sisäinen: käytettäväksi sisäisissä verkoissa, kun järjestelmä toimii yhdyskäytävänä tai reitittimenä. Verkon muihin järjestelmiin luotetaan yleisesti. Vain valitut saapuvat yhteydet ovat sallittuja.
  • dmz: käytetään demilitarisoidulla vyöhykkeellä sijaitsevissa tietokoneissa, joilla on rajoitettu pääsy muuhun verkkoon. Vain valitut saapuvat yhteydet ovat sallittuja.
  • työ: käytetään työkoneissa. Verkon muihin tietokoneisiin luotetaan yleisesti. Vain valitut saapuvat yhteydet ovat sallittuja.
  • koti: käytetään kotikoneissa. Verkon muihin tietokoneisiin luotetaan yleisesti. Vain valitut saapuvat yhteydet ovat sallittuja.
  • luotettu: kaikki verkkoyhteydet hyväksytään. Luota kaikkiin verkon tietokoneisiin.

Firewall services #

Firewalld services ovat ennalta määriteltyjä sääntöjä, joita sovelletaan tietyllä alueella ja joissa määritellään tarvittavat asetukset, jotta saapuva liikenne voidaan sallia tiettyyn Palveluun. Palveluiden avulla voit helposti suorittaa useita tehtäviä yhdessä vaiheessa.

palvelu voi sisältää esimerkiksi määritelmiä porttien avaamisesta, huolintaliikenteestä ja muusta.

Firewalld Runtime and Permanent Settings #

Firewalld käyttää kahta erillistä konfiguraatiosarjaa, runtime ja permanent configuration.

runtime-konfiguraatio on varsinainen suorituskokoonpano, eikä se säily uudelleenkäynnistyksessä. Kun firewalld-taustaprosessi käynnistyy, se lataa pysyvän kokoonpanon, josta tulee runtime-konfiguraatio.

oletusarvoisesti, kun tehdään muutoksia Firewalld-asetuksiin käyttäen firewall-cmd – apuohjelmaa, muutokset kohdistetaan runtime-asetuksiin. Jos haluat tehdä muutoksista pysyviä, lisää --permanent – asetus komentoon.

molempien konfiguraatiosarjojen muutosten soveltamiseksi voidaan käyttää jompaakumpaa seuraavista menetelmistä:

  1. muuta runtime-asetuksia ja tee siitä pysyvä:

    sudo firewall-cmd <options>sudo firewall-cmd --runtime-to-permanent
  2. muuta pysyviä asetuksia ja lataa firewalld-taustaprosessi uudelleen:

    sudo firewall-cmd --permanent <options>sudo firewall-cmd --reload

ottaa FirewallD #

käyttöön CentOS 8: ssa, firewalld on oletusarvoisesti asennettu ja käytössä. Jos sitä ei jostain syystä ole asennettu järjestelmääsi, voit asentaa ja käynnistää taustaprosessin kirjoittamalla:

sudo dnf install firewalldsudo systemctl enable firewalld --now

voit tarkistaa palomuuripalvelun tilan:

sudo firewall-cmd --state

jos palomuuri on käytössä, komennon tulee tulostaa running. Muuten nähdään not running.

Firewalld Zones #

jos et ole muuttanut sitä, oletusvyöhykkeeksi on asetettu public, ja kaikki verkkoliitännät on osoitettu tälle vyöhykkeelle.

oletusvyöhyke on se, jota käytetään kaikkeen, mitä ei ole erikseen osoitettu toiselle vyöhykkeelle.

voit nähdä oletusvyöhykkeen kirjoittamalla:

sudo firewall-cmd --get-default-zone
public

saadaksesi listan kaikista käytettävissä olevista alueista, Kirjoita:

sudo firewall-cmd --get-zones
block dmz drop external home internal public trusted work

nähdä aktiiviset vyöhykkeet ja niille osoitetut verkkoliitännät:

sudo firewall-cmd --get-active-zones

alla olevasta tulosteesta käy ilmi, että liittymät eth0 ja eth1 on osoitettu public vyöhykkeelle:

public interfaces: eth0 eth1

voit tulostaa vyöhykkeen asetukset:

sudo firewall-cmd --zone=public --list-all
public (active) target: default icmp-block-inversion: no interfaces: eth0 eth1 sources: services: ssh dhcpv6-client ports: protocols: masquerade: no forward-ports: source-ports: icmp-blocks: rich rules:

yllä olevasta tulosteesta näemme, että julkinen vyöhyke on aktiivinen ja käyttää oletustavoitetta, joka on REJECT. Ulostulo osoittaa myös, että vyöhykettä käyttävät eth0 ja eth1 liittymät ja mahdollistaa DHCP-asiakas-ja SSH-liikenteen.

jos haluat tarkistaa kaikkien käytettävissä olevien alueiden kokoonpanot, Kirjoita:

sudo firewall-cmd --list-all-zones

komento tulostaa valtavan listan kaikkien käytettävissä olevien alueiden asetuksista.

Vyöhyketavoitteen muuttaminen #

kohde määrittelee vyöhykkeen oletuskäyttäytymisen vastaantulevalle liikenteelle, jota ei ole määritelty. Se voidaan asettaa johonkin seuraavista vaihtoehdoista: default, ACCEPT, REJECT, ja DROP.

vyöhykkeen tavoitteen asettamiseksi määritellään alue, jossa on --zone – vaihtoehto, ja tavoite, jossa on --set-target – vaihtoehto.

esimerkiksi public alueen tavoitteen muuttamiseksi DROP juoksisit:

sudo firewall-cmd --zone=public --set-target=DROP

liittymän osoittaminen eri vyöhykkeelle #

voit luoda eri vyöhykkeille erityisiä sääntökokonaisuuksia ja määrittää niille erilaisia rajapintoja. Tämä on erityisen hyödyllistä, kun koneessasi on useita liittymiä.

jos haluat määrittää rajapinnan toiselle vyöhykkeelle, määritä vyöhyke, jossa on --zone – valinta, ja rajapinta, jossa on --change-interface – valinta.

esimerkiksi seuraava komento määrää eth1 rajapinnan work alueelle:

sudo firewall-cmd --zone=work --change-interface=eth1

Tarkista muutokset kirjoittamalla:

sudo firewall-cmd --get-active-zones
work interfaces: eth1public interfaces: eth0

jos haluat muuttaa oletusvyöhykettä #

, käytä --set-default-zone – asetusta, jota seuraa oletusalueen nimi.

esimerkiksi muuttaaksesi oletusvyöhykkeen home suoritat seuraavan komennon:

sudo firewall-cmd --set-default-zone=home

Tarkista muutokset:

sudo firewall-cmd --get-default-zone
home

uusien vyöhykkeiden luominen #

Firewalld mahdollistaa myös omien vyöhykkeiden luomisen. Tämä on kätevä, kun haluat luoda sovelluskohtaisia sääntöjä.

seuraavassa esimerkissä luomme uuden vyöhykkeen nimeltä memcached, avaamme portin 11211 ja sallimme pääsyn vain 192.168.100.30 IP-osoitteesta:

  1. luo vyöhyke:

    sudo firewall-cmd --new-zone=memcached --permanent
  2. lisää säännöt vyöhykkeelle:

    sudo firewall-cmd --zone=memcached --add-port=11211/udp --permanentsudo firewall-cmd --zone=memcached --add-port=11211/tcp --permanentsudo firewall-cmd --zone=memcached --add-source=192.168.100.30/32 --permanent
  3. Lataa firewalld-taustaprosessi uudelleen aktivoidaksesi muutokset:

    sudo firewall-cmd --reload

Firewalld Services #

Firewalldilla voit sallia liikenteen tiettyihin satamiin ja / tai lähteisiin ennalta määriteltyjen sääntöjen perusteella, joita kutsutaan palveluiksi.

saadaksesi listan kaikista oletuspalvelutyypeistä:

sudo firewall-cmd --get-services

lisätietoa jokaisesta palvelusta löydät avaamalla siihen liittyvän.xml-tiedosto /usr/lib/firewalld/services – hakemistossa. Esimerkiksi HTTP-palvelu määritellään näin:

/usr/lib/firewalld/services / http.xml
<?xml version="1.0" encoding="utf-8"?><service> <short>WWW (HTTP)</short> <description>HTTP is the protocol used to serve Web pages. If you plan to make your Web server publicly available, enable this option. This option is not required for viewing pages locally or developing Web pages.</description> <port protocol="tcp" port="80"/></service>

saapuvan HTTP-liikenteen (portti 80) salliminen julkisella vyöhykkeellä oleville rajapinnoille vain nykyisen istunnon (runtime configuration) tyypin osalta:

sudo firewall-cmd --zone=public --add-service=http
jos muokkaat oletusvyöhykettä, voit jättää pois --zone – vaihtoehdon.

jos haluat varmistaa, että palvelu lisättiin onnistuneesti, käytä valitsinta --list-services :

sudo firewall-cmd --zone=public --list-services
ssh dhcpv6-client http

jos haluat pitää portin 80 auki uudelleenkäynnistyksen jälkeen, suorita sama komento uudelleen --permanent – valinnalla tai suorita:

sudo firewall-cmd --runtime-to-permanent

käytä --list-services ja --permanent – asetusta tarkistaaksesi muutoksesi:

sudo firewall-cmd --permanent --zone=public --list-services
ssh dhcpv6-client http

palvelun poiston syntaksi on sama kuin sellaisen lisäämisen yhteydessä. Käytä vain --remove-service --add-service lipun sijasta:

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

yllä oleva komento poistaa http – palvelun public zone permanent configurationista.

uuden FirewallD-palvelun luominen #

kuten olemme jo maininneet, oletuspalvelut tallennetaan /usr/lib/firewalld/services – hakemistoon. Helpoin tapa luoda uusi palvelu on kopioida olemassa oleva palvelutiedosto käyttäjän luomien palveluiden sijaintipaikkana olevaan /etc/firewalld/services-hakemistoon ja muokata tiedostoasetuksia.

esimerkiksi Plex-mediapalvelimelle voi luoda palvelumäärityksen SSH-palvelutiedoston avulla:

sudo cp /usr/lib/firewalld/services/ssh.xml /etc/firewalld/services/plexmediaserver.xml

Avaa uusi plexmediaserver.xml – tiedosto ja muuta palvelun Lyhyt nimi ja kuvaus <short> ja <description> – tagien sisällä. Tärkein muutettava tunniste on port – tunniste, joka määrittää avattavan portin numeron ja protokollan.

seuraavassa esimerkissä avaamme portit 1900 UDP ja 32400 TCP.

/etc/firewalld/services / plexmediaserver.xml
<?xml version="1.0" encoding="utf-8"?><service version="1.0"><short>plexmediaserver</short><description>Plex is a streaming media server that brings all your video, music and photo collections together and stream them to your devices at anytime and from anywhere.</description><port protocol="udp" port="1900"/><port protocol="tcp" port="32400"/></service>

Tallenna tiedosto ja lataa FirewallD-palvelu uudelleen:

sudo firewall-cmd --reload

voit nyt käyttää plexmediaserver – palvelua alueillasi samalla tavalla kuin mitä tahansa muuta palvelua.

porttien ja Lähdeporttien avaaminen #

Firewalld mahdollistaa myös kaiken liikenteen nopean käyttöönoton luotetusta IP-osoitteesta tai tietystä portista luomatta palvelumääritystä.

avaamalla lähde-IP #

jotta kaikki tietystä IP-osoitteesta (tai alueelta) tuleva liikenne voidaan sallia, määritä alue, jolla on --zone – valitsin, ja lähde-IP, jolla on --add-source – valinta.

esimerkiksi kaikki saapuva liikenne 192.168.1.10 alkaen public – alueella, ajetaan:

sudo firewall-cmd --zone=public --add-source=192.168.1.10

tee uudesta säännöstä pysyvä:

sudo firewall-cmd --runtime-to-permanent

Tarkista muutokset seuraavalla komennolla:

sudo firewall-cmd --zone=public --list-sources
192.168.1.10

syntaksi poistettaessa lähde IP on sama kuin lisättäessä yksi. Käytä vain --remove-source valinnan --add-source sijasta:

sudo firewall-cmd --zone=public --remove-source=192.168.1.10

lähdeportin #

avaaminen salliaksesi kaiken saapuvan liikenteen tietyssä satamassa, määritä alue, jossa on --zone – vaihtoehto, ja satama ja protokolla, jossa on --add-port – vaihtoehto.

esimerkiksi avataksesi portin 8080 julkisella alueella käynnissä olevaa istuntoa varten:

sudo firewall-cmd --zone=public --add-port=8080/tcp

protokolla voi olla joko tcp, udp, sctp, tai dccp.

Tarkista muutokset:

sudo firewall-cmd --zone=public --list-ports
8080

jos haluat pitää portin auki uudelleenkäynnistyksen jälkeen, Lisää sääntö pysyviin asetuksiin ajamalla sama komento --permanent – lipulla tai suorittamalla:

sudo firewall-cmd --runtime-to-permanent

portin poiston syntaksi on sama kuin portin lisäämisen yhteydessä. Käytä vain --remove-port valinnan --add-port sijasta.

sudo firewall-cmd --zone=public --remove-port=8080/tcp

Huolintaportit #

jos haluat siirtää liikennettä eteenpäin satamasta toiseen, salli ensin naamiointi halutulle alueelle käyttämällä --add-masquerade – vaihtoehtoa. Esimerkiksi external – alueen naamioinnin mahdollistamiseksi tyyppi:

sudo firewall-cmd --zone=external --add-masquerade

Siirtymä portista toiseen IP-osoitteella #

seuraavassa esimerkissä siirrämme liikenteen portista 80 porttiin 8080 samalla palvelimella:

sudo firewall-cmd --zone=external --add-forward-port=port=80:proto=tcp:toport=8080

Forward traffic to another IP address #

in the following example we are forwarding the traffic from port 80 to port 80 on a server with IP 10.10.10.2:

sudo firewall-cmd --zone=external --add-forward-port=port=80:proto=tcp:toaddr=10.10.10.2

Forward traffic to another server on a different port #

in the following example we are forwarding the traffic from port 80 to port 8080 on a server with IP 10.10.10.2:

sudo firewall-cmd --zone=external --add-forward-port=port=80:proto=tcp:toport=8080:toaddr=10.10.10.2

jotta eteenpäin-sääntö olisi pysyvä, käytä:

sudo firewall-cmd --runtime-to-permanent

päätelmä #

olet oppinut määrittämään ja hallitsemaan firewalld-palvelua CentOS 8-järjestelmässäsi.

varmista, että kaikki saapuvat yhteydet, jotka ovat välttämättömiä järjestelmäsi moitteettoman toiminnan kannalta, samalla kun rajoitat kaikkia tarpeettomia yhteyksiä.



+