Sådan konfigureres og administreres Brandvæggen på CentOS 8

en brandvæg er en metode til overvågning og filtrering af indgående og udgående netværkstrafik. Det fungerer ved at definere et sæt sikkerhedsregler, der bestemmer, om der skal tillades eller blokeres specifik trafik. En korrekt konfigureret brandvæg er et af de vigtigste aspekter af den samlede systemsikkerhed.

CentOS 8 skibe med en brandvægsdæmon ved navn brandvold. Det er en komplet løsning med en D-Bus-grænseflade, der giver dig mulighed for at styre systemets brandvæg dynamisk.

i denne vejledning vil vi tale om, hvordan du konfigurerer og administrerer brandvæggen på CentOS 8. Vi vil også forklare de grundlæggende begreber.

forudsætninger #

for at konfigurere tjenesten skal du være logget som root eller bruger med sudo-privilegier.

grundlæggende koncepter #

bruger begreberne områder og tjenester. Baseret på de områder og tjenester, du konfigurerer, kan du styre, hvilken trafik der er tilladt eller blokeret til og fra systemet.

kan konfigureres og administreres ved hjælp af kommandolinjeværktøjet firewall-cmd.

i CentOS 8 erstattes iptables af nftables som standard-backend for dæmonen.

Ildstedsområder #

områder er foruddefinerede regelsæt, der angiver tillidsniveauet for de netværk, din computer er tilsluttet. Du kan tildele netværksgrænseflader og kilder til et område.

nedenfor er de områder, der leveres af bestilt i henhold til tillidsniveauet for området fra ikke-tillid til tillid:

  • drop: Alle indgående forbindelser er faldet uden nogen meddelelse. Kun udgående forbindelser er tilladt.
  • blok: alle indgående forbindelser afvises med en icmp-host-prohibited besked til IPv4 og icmp6-adm-prohibited til IPv6n. kun udgående forbindelser er tilladt.
  • Offentlig: til brug i ikke-betroede offentlige områder. Du stoler ikke på andre computere på netværket, men du kan tillade valgte indgående forbindelser.
  • ekstern: til brug på eksterne netværk med NAT maskering aktiveret, når dit system fungerer som en port eller router. Kun valgte indgående forbindelser er tilladt.
  • intern: til brug på interne netværk, når dit system fungerer som en port eller router. Andre systemer på netværket er generelt tillid til. Kun valgte indgående forbindelser er tilladt.
  • bruges til computere i dit demilitariserede område, der har begrænset adgang til resten af dit netværk. Kun valgte indgående forbindelser er tilladt.
  • arbejde: bruges til arbejdsmaskiner. Andre computere på netværket er generelt tillid til. Kun valgte indgående forbindelser er tilladt.
  • hjem: bruges til hjemmemaskiner. Andre computere på netværket er generelt tillid til. Kun valgte indgående forbindelser er tilladt.
  • tillid: alle netværksforbindelser accepteres. Stol på alle computere i netværket.

Brandvæsenstjenester #

Brandvæsentjenester er foruddefinerede regler, der gælder inden for et område og definerer de nødvendige indstillinger for at tillade indgående trafik for en bestemt tjeneste. Tjenesterne giver dig mulighed for nemt at udføre flere opgaver i et enkelt trin.

for eksempel kan tjenesten indeholde definitioner om åbning af porte, videresendelse af trafik og mere.

Runtime og permanente indstillinger #

runtime bruger to adskilte konfigurationssæt, runtime og permanent konfiguration.

runtime-konfigurationen er den faktiske kørende konfiguration og fortsætter ikke ved genstart. Når dæmonen starter, indlæser den den permanente konfiguration, som bliver runtime-konfigurationen.

som standard anvendes ændringerne til runtime-konfigurationen, når der foretages ændringer i Firevalld-konfigurationen ved hjælp af værktøjet firewall-cmd. For at gøre ændringerne permanente Tilføj indstillingen --permanent til kommandoen.

for at anvende ændringerne i begge konfigurationssæt kan du bruge en af følgende to metoder:

  1. ændre runtime konfiguration og gøre det permanent:

    sudo firewall-cmd <options>sudo firewall-cmd --runtime-to-permanent
  2. ændre den permanente konfiguration og genindlæs dæmonen:

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

aktivering af Firevalld #

på CentOS 8 er firevalld installeret og aktiveret som standard. Hvis det af en eller anden grund ikke er installeret på dit system, kan du installere og starte dæmonen ved at skrive:

sudo dnf install firewalldsudo systemctl enable firewalld --now

du kan kontrollere status for brandvæsenet med:

sudo firewall-cmd --state

hvis brandvæggen er aktiveret, skal kommandoen udskrive running. Ellers vil du se not running.

ildsted #

hvis du ikke har ændret det, er standardområdet indstillet til public, og alle netværksgrænseflader er tildelt dette område.

standardområdet er det, der bruges til alt, hvad der ikke udtrykkeligt er tildelt et andet område.

du kan se standardområdet ved at skrive:

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

for at få en liste over alle tilgængelige områder, skriv:

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

for at se de aktive områder og de netværksgrænseflader, der er tildelt dem:

sudo firewall-cmd --get-active-zones

outputtet nedenfor viser, at grænsefladerne eth0 og eth1 er tildelt public – området:

public interfaces: eth0 eth1

du kan udskrive områdekonfigurationsindstillingerne 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 ovenstående output kan vi se, at det offentlige område er aktivt og bruger standardmålet, som er REJECT. Udgangen viser også, at området bruges af grænsefladerne eth0 og eth1 og tillader DHCP-klient-og SSH-trafik.

hvis du vil kontrollere konfigurationerne af alle tilgængelige områder type:

sudo firewall-cmd --list-all-zones

kommandoen udskriver en enorm liste med indstillingerne for alle tilgængelige områder.

ændring af områdemål #

målet definerer områdets standardadfærd for den indgående trafik, der ikke er angivet. Det kan indstilles til en af følgende muligheder: default, ACCEPT, REJECT, og DROP.

hvis du vil angive områdets mål, skal du angive området med --zone og målet med --set-target.

for eksempel for at ændre public områdets mål til DROP du ville køre:

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

tildeling af en grænseflade til et andet område #

du kan oprette specifikke regelsæt for forskellige områder og tildele forskellige grænseflader til dem. Dette er især nyttigt, når du flere grænseflader på din maskine.

hvis du vil tildele en grænseflade til et andet område, skal du angive området med indstillingen --zone og grænsefladen med indstillingen --change-interface.

for eksempel tildeler følgende kommando eth1 – grænsefladen til work – området:

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

bekræft ændringerne ved at skrive:

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

ændring af standardområdet #

hvis du vil ændre standardområdet, skal du bruge indstillingen --set-default-zone efterfulgt af navnet på det område, du vil gøre standardområdet til.

hvis du f. eks. vil ændre standardområdet til home, kører du følgende kommando:

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

bekræft ændringerne med:

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

oprettelse af nye områder #

giver dig også mulighed for at oprette dine egne områder. Dette er praktisk, når du vil oprette regler pr.

i det følgende eksempel opretter vi et nyt område med navnet memcached, åbner porten 11211 og tillader kun adgang fra 192.168.100.30 IP-adressen:

  1. Opret området:

    sudo firewall-cmd --new-zone=memcached --permanent
  2. Tilføj reglerne til området:

    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. Genindlæs dæmonen for at aktivere ændringerne:

    sudo firewall-cmd --reload

du kan tillade trafik for bestemte porte og / eller kilder baseret på foruddefinerede regler kaldet tjenester.

for at få en liste over alle standard tilgængelige tjenester type:

sudo firewall-cmd --get-services

du kan finde flere oplysninger om hver tjeneste ved at åbne den tilknyttede .i mappen /usr/lib/firewalld/services. For eksempel er HTTP-tjenesten defineret som denne:

/usr/lib/firevalld/services/http.kml
<?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>

for at tillade indgående HTTP-trafik (port 80) for grænseflader i det offentlige område, kun for den aktuelle session (runtime configuration) type:

sudo firewall-cmd --zone=public --add-service=http
hvis du ændrer standardområdet, kan du udelade indstillingen --zone.

for at kontrollere, at tjenesten blev tilføjet, skal du bruge indstillingen --list-services :

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

for at holde porten 80 åben efter en genstart skal du køre den samme kommando igen med --permanent – indstillingen eller udføre:

sudo firewall-cmd --runtime-to-permanent

brug --list-services sammen med --permanent mulighed for at bekræfte dine ændringer:

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

syntaksen til fjernelse af service er den samme som ved tilføjelse af en. Brug bare --remove-service i stedet for --add-service flag:

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

kommandoen ovenfor fjerner tjenesten http fra den permanente konfiguration af det offentlige område.

oprettelse af en ny Brandvalgstjeneste #

som vi allerede har nævnt, gemmes standardtjenesterne i mappen /usr/lib/firewalld/services. Den nemmeste måde at oprette en ny tjeneste på er at kopiere en eksisterende servicefil til mappen /etc/firewalld/services, som er placeringen for brugeroprettede tjenester og ændre filindstillingerne.

hvis du f. eks. vil oprette en servicedefinition for medieserveren, kan du bruge SSH-servicefilen:

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

Åbn den nyoprettede plexmediaserver.xml – fil, og skift det korte navn og beskrivelse for tjenesten inden for <short> og <description> tags. Det vigtigste tag, du skal ændre, er tagget port, som definerer det portnummer og den protokol, du vil åbne.

i det følgende eksempel åbner vi porte 1900 UDP og 32400 TCP.

/etc/ildsted/tjenester / pleksmediaserver.kml
<?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>

Gem filen og genindlæs tjenesten:

sudo firewall-cmd --reload

du kan nu bruge plexmediaserver – tjenesten i dine områder på samme måde som enhver anden tjeneste.

åbning af porte og kilde IPs #

Firevalld giver dig også mulighed for hurtigt at aktivere al trafik fra en betroet IP-adresse eller på en bestemt port uden at oprette en servicedefinition.

åbning af en kilde-IP #

for at tillade al indgående trafik fra en bestemt IP-adresse (eller rækkevidde) skal du angive området med --zone og kilde-IP med --add-source – indstillingen.

for eksempel at tillade al indgående trafik fra 192.168.1.10 i public – området, Kør:

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

gør den nye regel vedholdende:

sudo firewall-cmd --runtime-to-permanent

bekræft ændringerne ved hjælp af følgende kommando:

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

syntaksen til fjernelse af en kilde-IP er den samme som ved tilføjelse af en. Brug bare --remove-source i stedet for --add-source indstillingen:

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

åbning af en kildeport #

for at tillade al indgående trafik på en given port skal du angive området med indstillingen --zone og porten og protokollen med indstillingen --add-port.

for eksempel at åbne port 8080 i det offentlige område for den aktuelle session, du sår løb:

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

protokollen kan enten være tcp, udp, sctp, eller dccp.

bekræft ændringerne:

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

for at holde porten åben efter en genstart skal du tilføje reglen til de permanente indstillinger ved at køre den samme kommando ved hjælp af --permanent – flaget eller ved at udføre:

sudo firewall-cmd --runtime-to-permanent

syntaksen til fjernelse af en port er den samme som ved tilføjelse af en port. Brug bare --remove-port i stedet for --add-port indstillingen.

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

videresendelse af porte #

for at videresende trafik fra en port til en anden port skal du først aktivere maskering for det ønskede område ved hjælp af indstillingen --add-masquerade. For eksempel, for at aktivere maskering for external – området, skal du skrive:

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

Videresend trafik fra en port til en anden på IP-adressen #

i det 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 trafik til en anden IP-adresse #

i det 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 trafik til en anden server på en anden port #

i det 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 at gøre fremadgående regel vedvarende, brug:

sudo firewall-cmd --runtime-to-permanent

konklusion #

du har lært, hvordan du konfigurerer og administrerer tjenesten på dit CentOS 8-system.

sørg for at tillade alle indgående forbindelser, der er nødvendige for, at dit system fungerer korrekt, mens du begrænser alle unødvendige forbindelser.



+