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 #
- Basic Firewalld Concepts #
- Firewalldin vyöhykkeet #
- Firewall services #
- Firewalld Runtime and Permanent Settings #
- ottaa FirewallD #
- Firewalld Zones #
- Vyöhyketavoitteen muuttaminen #
- liittymän osoittaminen eri vyöhykkeelle #
- jos haluat muuttaa oletusvyöhykettä #
- uusien vyöhykkeiden luominen #
- Firewalld Services #
- uuden FirewallD-palvelun luominen #
- porttien ja Lähdeporttien avaaminen #
- avaamalla lähde-IP #
- lähdeportin #
- Huolintaportit #
- Siirtymä portista toiseen IP-osoitteella #
- Forward traffic to another IP address #
- Forward traffic to another server on a different port #
- päätelmä #
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
jaicmp6-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ä:
-
muuta runtime-asetuksia ja tee siitä pysyvä:
sudo firewall-cmd <options>
sudo firewall-cmd --runtime-to-permanent
-
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 firewalld
sudo 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:
-
luo vyöhyke:
sudo firewall-cmd --new-zone=memcached --permanent
-
lisää säännöt vyöhykkeelle:
sudo firewall-cmd --zone=memcached --add-port=11211/udp --permanent
sudo firewall-cmd --zone=memcached --add-port=11211/tcp --permanent
sudo firewall-cmd --zone=memcached --add-source=192.168.100.30/32 --permanent
-
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:
<?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
--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.
<?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ä.