en brannmur er en metode for overvåking og filtrering av innkommende og utgående nettverkstrafikk. Det fungerer ved å definere et sett med sikkerhetsregler som bestemmer om du vil tillate eller blokkere bestemt trafikk. En riktig konfigurert brannmur er et av de viktigste aspektene ved total systemsikkerhet.
CentOS 8 skip med en brannmur daemon kalt firewalld. Det er en komplett løsning Med Et d-Bus-grensesnitt som lar deg administrere systemets brannmur dynamisk.
i denne opplæringen vil vi snakke om hvordan du konfigurerer Og administrerer brannmuren På CentOS 8. Vi vil også forklare de grunnleggende FirewallD konsepter.
- Forutsetninger #
- Grunnleggende Firewalld Konsepter #
- Firewalld Zones #
- Brannmurtjenester #
- Firewalld Runtime Og Permanente Innstillinger #
- Aktivering Av FirewallD #
- Firewalld Zones #
- Endre sonemålet #
- Tilordne et grensesnitt til en annen sone #
- Endre Standardsonen #
- Opprette nye Soner #
- Firewalld Services #
- Opprette en Ny FirewallD-Tjeneste #
- Åpning Av Porter Og Kilde-IPs #
- Åpne en kilde-IP #
- Åpne en kildeport #
- Videresendingsporter #
- Videresend trafikk fra en port til EN ANNEN PÅ IP-adressen #
- Videresend trafikk til en ANNEN IP-adresse #
- Videresend trafikk til en annen server på en annen port #
- Konklusjon #
Forutsetninger #
for å konfigurere brannmurtjenesten må du være logget som rot eller bruker med sudo-privilegier.
Grunnleggende Firewalld Konsepter #
firewalld bruker begrepene soner og tjenester. Basert på sonene og tjenestene du konfigurerer, kan du kontrollere hvilken trafikk som tillates eller blokkeres til og fra systemet.
Firewalld kan konfigureres og administreres ved hjelp av kommandolinjeverktøyet firewall-cmd
.
I CentOS 8, er iptables erstattet av nftables som standard brannmur backend for firewalld daemon.
Firewalld Zones #
Zones er forhåndsdefinerte sett med regler som angir klareringsnivået for nettverkene datamaskinen er koblet til. Du kan tilordne nettverksgrensesnitt og kilder til en sone.
nedenfor er sonene levert Av FirewallD bestilt i henhold til klareringsnivået for sonen fra uklarert til klarert:
- slipp: Alle innkommende tilkoblinger blir droppet uten varsel. Bare utgående tilkoblinger er tillatt.
- blokker: alle innkommende tilkoblinger avvises med en
icmp-host-prohibited
melding forIPv4
ogicmp6-adm-prohibited
For IPv6n. bare utgående tilkoblinger er tillatt. - offentlig: For bruk i ikke-klarerte offentlige områder. Du stoler ikke på andre datamaskiner på nettverket, men du kan tillate valgte innkommende tilkoblinger.
- ekstern: for bruk på eksterne nettverk med nat maskering aktivert når systemet fungerer som en gateway eller ruter. Bare valgte innkommende tilkoblinger er tillatt.
- intern: for bruk på interne nettverk når systemet fungerer som gateway eller ruter. Andre systemer på nettverket er generelt klarert. Bare valgte innkommende tilkoblinger er tillatt.
- dmz: brukes for datamaskiner i den demilitariserte sonen som har begrenset tilgang til resten av nettverket. Bare valgte innkommende tilkoblinger er tillatt.
- arbeid: Brukes til arbeidsmaskiner. Andre datamaskiner på nettverket er generelt klarert. Bare valgte innkommende tilkoblinger er tillatt.
- hjem: Brukes til hjemmemaskiner. Andre datamaskiner på nettverket er generelt klarert. Bare valgte innkommende tilkoblinger er tillatt.
- klarert: alle nettverkstilkoblinger godtas. Stol på alle datamaskinene i nettverket.
Brannmurtjenester #
Firewalld-tjenester er forhåndsdefinerte regler som gjelder innenfor en sone og definerer de nødvendige innstillingene for å tillate innkommende trafikk for en bestemt tjeneste. Tjenestene lar deg enkelt utføre flere oppgaver i ett enkelt trinn.
tjenesten kan for eksempel inneholde definisjoner om åpning av porter, videresending av trafikk og mer.
Firewalld Runtime Og Permanente Innstillinger #
Firewalld bruker to separerte konfigurasjonssett, runtime og permanent konfigurasjon.
kjøretidskonfigurasjonen er den faktiske kjørekonfigurasjonen og vedvarer ikke ved omstart. Når firewalld-demonen starter, laster den den permanente konfigurasjonen, som blir kjøretidskonfigurasjonen.
som standard, når du gjør endringer I Firewalld-konfigurasjonen ved hjelp av verktøyet firewall-cmd
, brukes endringene til kjøretidskonfigurasjonen. For å gjøre endringene permanent, legg til alternativet --permanent
i kommandoen.
hvis du vil bruke endringene i begge konfigurasjonssettene, kan du bruke en av følgende to metoder:
-
Endre kjøretidskonfigurasjonen og gjør den permanent:
sudo firewall-cmd <options>
sudo firewall-cmd --runtime-to-permanent
-
Endre permanent konfigurasjon og laste firewalld daemon:
sudo firewall-cmd --permanent <options>
sudo firewall-cmd --reload
Aktivering Av FirewallD #
På CentOS 8 er firewalld installert og aktivert som standard. Hvis det av en eller annen grunn ikke er installert på systemet, kan du installere og starte demonen ved å skrive:
sudo dnf install firewalld
sudo systemctl enable firewalld --now
du kan sjekke statusen til brannmurtjenesten med:
sudo firewall-cmd --state
hvis brannmuren er aktivert, skal kommandoen skrive ut running
. Ellers vil du se not running
.
Firewalld Zones #
hvis du ikke har endret den, er standardsonen satt til public
, og alle nettverksgrensesnitt er tilordnet denne sonen.
standardsonen er den som brukes for alt som ikke er eksplisitt tilordnet til en annen sone.
du kan se standardsonen ved å skrive inn:
sudo firewall-cmd --get-default-zone
public
for å få en liste over alle tilgjengelige soner, skriv inn:
sudo firewall-cmd --get-zones
block dmz drop external home internal public trusted work
slik ser du de aktive sonene og nettverksgrensesnittene som er tilordnet dem:
sudo firewall-cmd --get-active-zones
utgangen nedenfor viser at grensesnittene eth0
og eth1
er tilordnet sonen public
:
public interfaces: eth0 eth1
du kan skrive ut sonekonfigurasjonsinnstillingene med:
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:
fra utgangen ovenfor kan vi se at den offentlige sonen er aktiv og bruker standardmålet, som er REJECT
. Utgangen viser også at sonen brukes av grensesnittene eth0
og eth1
og tillater DHCP-klient og SSH-trafikk.
hvis du vil sjekke konfigurasjonene for alle tilgjengelige soner type:
sudo firewall-cmd --list-all-zones
kommandoen skriver ut en stor liste med innstillingene for all tilgjengelig sone.
Endre sonemålet #
målet definerer standard virkemåte for sonen for innkommende trafikk som ikke er angitt. Det kan settes til ett av følgende alternativer: default
, ACCEPT
, REJECT
, og DROP
.
hvis du vil angi sonens mål, angir du sonen med alternativet --zone
og målet med alternativet --set-target
.
hvis du for eksempel vil endre public
– sonens mål til DROP
, kjører du:
sudo firewall-cmd --zone=public --set-target=DROP
Tilordne et grensesnitt til en annen sone #
Du kan opprette bestemte sett med regler for forskjellige soner og tilordne forskjellige grensesnitt til dem. Dette er spesielt nyttig nar du har flere grensesnitt pa maskinen din.
hvis du vil tilordne et grensesnitt til en annen sone, angir du sonen med alternativet --zone
og grensesnittet med alternativet --change-interface
.
følgende kommando tilordner for eksempel grensesnittet eth1
til sonen work
:
sudo firewall-cmd --zone=work --change-interface=eth1
Kontroller endringene ved å skrive inn:
sudo firewall-cmd --get-active-zones
work interfaces: eth1public interfaces: eth0
Endre Standardsonen #
hvis du vil endre standardsonen, bruker du alternativet --set-default-zone
etterfulgt av navnet på sonen du vil bruke som standard.
hvis du for eksempel vil endre standardsonen til home
, kjører du følgende kommando:
sudo firewall-cmd --set-default-zone=home
Kontroller endringene med:
sudo firewall-cmd --get-default-zone
home
Opprette nye Soner #
Firewalld lar deg også lage dine egne soner. Dette er nyttig når du ønsker å lage per-program regler.
i følgende eksempel oppretter vi en ny sone med navnet memcached
, åpner porten 11211
og tillater bare tilgang fra IP-adressen 192.168.100.30
:
-
Opprette sonen:
sudo firewall-cmd --new-zone=memcached --permanent
-
Legg til reglene i sonen:
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
-
Last firewalld daemon å aktivere endringene:
sudo firewall-cmd --reload
Firewalld Services #
med firewalld kan du tillate trafikk for bestemte porter og/eller kilder basert på forhåndsdefinerte regler kalt tjenester.
for å få en liste over alle standard tilgjengelige tjenester type:
sudo firewall-cmd --get-services
du finner mer informasjon om hver tjeneste ved å åpne den tilhørende.xml-fil i katalogen /usr/lib/firewalld/services
. FOR EKSEMPEL ER HTTP-tjenesten definert slik:
<?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>
hvis du vil tillate innkommende HTTP-trafikk (port 80) for grensesnitt i den offentlige sonen, bare for gjeldende økt (kjøretidskonfigurasjon) type:
sudo firewall-cmd --zone=public --add-service=http
--zone
.for å bekrefte at tjenesten ble lagt til, bruk alternativet --list-services
:
sudo firewall-cmd --zone=public --list-services
ssh dhcpv6-client http
for å holde porten 80 åpen etter en omstart, kjør den samme kommandoen igjen med alternativet --permanent
, eller utfør:
sudo firewall-cmd --runtime-to-permanent
Bruk --list-services
sammen med --permanent
for å bekrefte endringene:
sudo firewall-cmd --permanent --zone=public --list-services
ssh dhcpv6-client http
syntaksen for å fjerne tjenesten er den samme som når du legger til en. Bare bruk --remove-service
i stedet for --add-service
flagget:
sudo firewall-cmd --zone=public --remove-service=http --permanent
kommandoen ovenfor fjerner http
– tjenesten fra den permanente konfigurasjonen for offentlig sone.
Opprette en Ny FirewallD-Tjeneste #
som vi allerede har nevnt, lagres standardtjenestene i katalogen /usr/lib/firewalld/services
. Den enkleste måten å opprette en ny tjeneste på er å kopiere en eksisterende tjenestefil til katalogen /etc/firewalld/services
, som er stedet for brukeropprettede tjenester og endre filinnstillingene.
hvis du for eksempel vil opprette en tjenestedefinisjon For Plex Media Server, kan DU bruke SSH-tjenestefilen:
sudo cp /usr/lib/firewalld/services/ssh.xml /etc/firewalld/services/plexmediaserver.xml
Åpne den nyopprettede filen plexmediaserver.xml
og endre kortnavnet og beskrivelsen for tjenesten i taggene <short>
og <description>
. Den viktigste koden du må endre er port
– taggen, som definerer portnummeret og protokollen du vil åpne.
i følgende eksempel åpner vi porter 1900
UDP og 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>
Lagre filen og last Inn FirewallD-tjenesten På Nytt:
sudo firewall-cmd --reload
Du kan nå bruke plexmediaserver
– tjenesten i sonene dine på samme måte som alle andre tjenester.
Åpning Av Porter Og Kilde-IPs #
Firewalld lar deg også raskt aktivere all trafikk fra en klarert IP-adresse eller på en bestemt port uten å opprette en tjenestedefinisjon.
Åpne en kilde-IP #
hvis du vil tillate all innkommende trafikk fra en bestemt IP-adresse (eller område), angir du sonen med alternativet --zone
og alternativet kilde-IP med alternativet --add-source
.
hvis du for eksempel vil tillate all innkommende trafikk fra 192.168.1.10 i sonen public
, kjør:
sudo firewall-cmd --zone=public --add-source=192.168.1.10
Gjør den nye regelen vedvarende:
sudo firewall-cmd --runtime-to-permanent
Kontroller endringene ved hjelp av følgende kommando:
sudo firewall-cmd --zone=public --list-sources
192.168.1.10
syntaksen for å fjerne en kilde IP er den samme som når du legger til en. Bare bruk --remove-source
i stedet for alternativet --add-source
:
sudo firewall-cmd --zone=public --remove-source=192.168.1.10
Åpne en kildeport #
hvis du vil tillate all innkommende trafikk på en gitt port, angir du sonen med alternativet --zone
og porten og protokollen med alternativet --add-port
.
hvis du for eksempel vil åpne port 8080
i felles-sonen for den gjeldende økten du sår kjøre:
sudo firewall-cmd --zone=public --add-port=8080/tcp
protokollen kan også være tcp
, udp
, sctp
, eller dccp
.
Bekreft endringene:
sudo firewall-cmd --zone=public --list-ports
8080
for å holde porten åpen etter en omstart, legg til regelen i de permanente innstillingene ved å kjøre samme kommando ved hjelp av flagget --permanent
eller ved å utføre:
sudo firewall-cmd --runtime-to-permanent
syntaksen for å fjerne en port er den samme som når du legger til en port. Bare bruk --remove-port
i stedet for alternativet --add-port
.
sudo firewall-cmd --zone=public --remove-port=8080/tcp
Videresendingsporter #
hvis du vil videresende trafikk fra en port til en annen port, må du først aktivere maskert for ønsket sone ved hjelp av alternativet --add-masquerade
. Hvis du for eksempel vil aktivere maskert for sonen external
, skriver du inn:
sudo firewall-cmd --zone=external --add-masquerade
Videresend trafikk fra en port til EN ANNEN PÅ IP-adressen #
i følgende eksempel videresender vi trafikken fra port 80
til port 8080
på samme server:
sudo firewall-cmd --zone=external --add-forward-port=port=80:proto=tcp:toport=8080
Videresend trafikk til en ANNEN IP-adresse #
i følgende eksempel videresender vi trafikken fra port 80
til port 80
på en server MED IP 10.10.10.2
:
sudo firewall-cmd --zone=external --add-forward-port=port=80:proto=tcp:toaddr=10.10.10.2
Videresend trafikk til en annen server på en annen port #
i følgende eksempel videresender vi trafikken fra port 80
til port 8080
på en server med IP 10.10.10.2
:
sudo firewall-cmd --zone=external --add-forward-port=port=80:proto=tcp:toport=8080:toaddr=10.10.10.2
for å gjøre fremoverregelen vedvarende, bruk:
sudo firewall-cmd --runtime-to-permanent
Konklusjon #
du har lært hvordan du konfigurerer og administrerer firewalld-tjenesten på Ditt CentOS 8-system.
sørg for å tillate alle innkommende tilkoblinger som er nødvendige for at systemet fungerer riktig, samtidig som du begrenser alle unødvendige tilkoblinger.