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 #
- grundlæggende koncepter #
- Ildstedsområder #
- Brandvæsenstjenester #
- Runtime og permanente indstillinger #
- aktivering af Firevalld #
- ildsted #
- ændring af områdemål #
- tildeling af en grænseflade til et andet område #
- ændring af standardområdet #
- oprettelse af nye områder #
- du kan tillade trafik for bestemte porte og / eller kilder baseret på foruddefinerede regler kaldet tjenester.
- oprettelse af en ny Brandvalgstjeneste #
- åbning af porte og kilde IPs #
- åbning af en kilde-IP #
- åbning af en kildeport #
- videresendelse af porte #
- Videresend trafik fra en port til en anden på IP-adressen #
- Videresend trafik til en anden IP-adresse #
- Videresend trafik til en anden server på en anden port #
- konklusion #
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
- 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 tilIPv4
ogicmp6-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:
-
ændre runtime konfiguration og gøre det permanent:
sudo firewall-cmd <options>
sudo firewall-cmd --runtime-to-permanent
-
æ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 firewalld
sudo 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:
-
Opret området:
sudo firewall-cmd --new-zone=memcached --permanent
-
Tilføj reglerne til området:
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
-
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:
<?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
--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.
<?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.