een firewall is een methode voor het bewaken en filteren van inkomend en uitgaand netwerkverkeer. Het werkt door het definiëren van een set van beveiligingsregels die bepalen of specifiek verkeer toe te staan of te blokkeren. Een goed geconfigureerde firewall is een van de belangrijkste aspecten van de algehele systeembeveiliging.
CentOS 8 wordt geleverd met een firewall daemon genaamd firewalld. Het is een complete oplossing met een D-Bus interface waarmee je de firewall van het systeem dynamisch kunt beheren.
in deze tutorial zullen we het hebben over het configureren en beheren van de firewall op CentOS 8. We zullen ook de basis FirewallD Concepten uitleggen.
- Prerequisites #
- basisconcepten van Firewalld #
- Firewalld Zones #
- firewalld-services #
- Firewalld Runtime en permanente Instellingen #
- firewalld #
- Firewalld Zones #
- het zonedoel wijzigen #
- een interface toewijzen aan een andere zone #
- de standaardzone wijzigen #
- het creëren van nieuwe Zones #
- Firewalld Diensten #
- een nieuwe FirewallD-Service #
- poorten en bron-IP ‘ s openen #
- een bron-IP #
- het openen van een bronpoort #
- Forwarding Ports #
- verkeer Doorsturen van de ene haven naar de andere op IP-adres #
- verkeer Doorsturen naar een ander IP-adres #
- verkeer Doorsturen naar een andere server op een andere poort #
- conclusie #
Prerequisites #
om de firewallservice te configureren, moet u aangemeld zijn als root of gebruiker met sudo-rechten.
basisconcepten van Firewalld #
firewalld gebruikt de concepten van zones en diensten. Op basis van de zones en services die u configureert, kunt u bepalen welk verkeer is toegestaan of geblokkeerd van en naar het systeem.
Firewalld kan worden geconfigureerd en beheerd met behulp van het opdrachtregelprogramma firewall-cmd
.
in CentOS 8 wordt iptables vervangen door nftables als de standaard firewall-backend voor de firewalld-daemon.
Firewalld Zones #
Zones zijn vooraf gedefinieerde set regels die het vertrouwensniveau specificeren van de netwerken waarmee uw computer is verbonden. U kunt netwerkinterfaces en bronnen toewijzen aan een zone.
hieronder vindt u de zones die door FirewallD worden aangeboden, gerangschikt op basis van het vertrouwensniveau van de zone van niet-vertrouwd naar vertrouwd:
- drop: Alle inkomende verbindingen worden verwijderd zonder enige kennisgeving. Alleen uitgaande verbindingen zijn toegestaan.
- blok: alle binnenkomende verbindingen worden geweigerd met een bericht
icmp-host-prohibited
voorIPv4
enicmp6-adm-prohibited
voor IPv6n. alleen uitgaande verbindingen zijn toegestaan. - publiek: voor gebruik in niet-vertrouwde openbare ruimtes. U vertrouwt geen andere computers in het netwerk, maar u kunt wel geselecteerde binnenkomende verbindingen toestaan.
- extern: voor gebruik op externe netwerken met nat masquerading ingeschakeld wanneer uw systeem fungeert als een gateway of router. Alleen geselecteerde binnenkomende verbindingen zijn toegestaan.
- intern: voor gebruik op interne netwerken wanneer uw systeem fungeert als een gateway of router. Andere systemen op het netwerk zijn over het algemeen vertrouwd. Alleen geselecteerde binnenkomende verbindingen zijn toegestaan.
- dmz: wordt gebruikt voor computers in uw gedemilitariseerde zone die beperkte toegang hebben tot de rest van uw netwerk. Alleen geselecteerde binnenkomende verbindingen zijn toegestaan.
- werk: gebruikt voor machines. Andere computers op het netwerk zijn over het algemeen vertrouwd. Alleen geselecteerde binnenkomende verbindingen zijn toegestaan.
- thuis: gebruikt voor machines thuis. Andere computers op het netwerk zijn over het algemeen vertrouwd. Alleen geselecteerde binnenkomende verbindingen zijn toegestaan.
- vertrouwd: alle netwerkverbindingen worden geaccepteerd. Vertrouw alle computers in het netwerk.
firewalld-services #
Firewalld-services zijn vooraf gedefinieerde regels die van toepassing zijn binnen een zone en die de nodige instellingen definiëren om inkomend verkeer voor een specifieke service toe te staan. Met de services kunt u eenvoudig meerdere taken in één stap uitvoeren.
de service kan bijvoorbeeld definities bevatten over het openen van poorten, het doorsturen van verkeer en meer.
Firewalld Runtime en permanente Instellingen #
Firewalld gebruikt twee gescheiden configuratiesets, runtime en permanente configuratie.
de runtime-configuratie is de eigenlijke draaiende configuratie en blijft niet bestaan bij het opnieuw opstarten. Wanneer de firewalld daemon start, laadt het de permanente configuratie, die de runtime configuratie wordt.
wanneer u wijzigingen aanbrengt in de Firewalld-configuratie met behulp van het hulpprogramma firewall-cmd
, worden de wijzigingen standaard toegepast op de runtime-configuratie. Om de wijzigingen permanent te maken voeg de --permanent
optie toe aan het commando.
om de wijzigingen in beide configuratiesets toe te passen, kunt u een van de volgende twee methoden gebruiken:
-
Wijzig de runtime configuratie en maak het permanent:
sudo firewall-cmd <options>
sudo firewall-cmd --runtime-to-permanent
-
Verander de permanente configuratie en herlaad de firewalld daemon:
sudo firewall-cmd --permanent <options>
sudo firewall-cmd --reload
firewalld #
op CentOS 8 wordt firewalld standaard geïnstalleerd en ingeschakeld. Als het om een of andere reden niet op uw systeem is geïnstalleerd, kunt u de daemon installeren en starten door te typen:
sudo dnf install firewalld
sudo systemctl enable firewalld --now
u kunt de status van de firewall service controleren met:
sudo firewall-cmd --state
als de firewall is ingeschakeld, moet het commando running
afdrukken. Anders ziet u not running
.
Firewalld Zones #
Als u deze niet hebt gewijzigd, wordt de standaard zone ingesteld op public
en worden alle netwerkinterfaces aan deze zone toegewezen.
de standaardzone is de zone die wordt gebruikt voor alles wat niet expliciet aan een andere zone is toegewezen.
u kunt de standaardzone zien door te typen:
sudo firewall-cmd --get-default-zone
public
om een lijst van alle beschikbare zones te krijgen, typt u:
sudo firewall-cmd --get-zones
block dmz drop external home internal public trusted work
de actieve zones en de daaraan toegewezen netwerkinterfaces weergeven:
sudo firewall-cmd --get-active-zones
de uitvoer hieronder laat zien dat de interfaces eth0
en eth1
zijn toegewezen aan de zone public
:
public interfaces: eth0 eth1
u kunt de zoneconfiguratie-instellingen afdrukken met:
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:
uit bovenstaande uitvoer kunnen we zien dat de publieke zone actief is en het standaarddoel gebruikt, dat REJECT
is. De uitvoer laat ook zien dat de zone wordt gebruikt door de interfaces eth0
en eth1
en staat DHCP client en SSH verkeer toe.
als u de configuraties van alle beschikbare zones wilt controleren typ:
sudo firewall-cmd --list-all-zones
het commando drukt een enorme lijst af met de instellingen van alle beschikbare zone.
het zonedoel wijzigen #
het doel definieert het standaardgedrag van de zone voor het inkomende verkeer dat niet is opgegeven. Het kan worden ingesteld op een van de volgende opties: default
, ACCEPT
, REJECT
, en DROP
.
om het doel van de zone in te stellen, specificeert u de zone met de optie --zone
en het doel met de optie --set-target
.
bijvoorbeeld, om het doel van de public
zone te wijzigen naar DROP
zou u uitvoeren:
sudo firewall-cmd --zone=public --set-target=DROP
een interface toewijzen aan een andere zone #
u kunt specifieke reeksen regels maken voor verschillende zones en er verschillende interfaces aan toewijzen. Dit is vooral handig wanneer u meerdere interfaces op uw machine.
om een interface aan een andere zone toe te wijzen, specificeert u de zone met de optie --zone
en de optie interface met de optie --change-interface
.
bijvoorbeeld, het volgende commando wijst de interface eth1
toe aan de zone work
:
sudo firewall-cmd --zone=work --change-interface=eth1
controleer de wijzigingen door te typen:
sudo firewall-cmd --get-active-zones
work interfaces: eth1public interfaces: eth0
de standaardzone wijzigen #
om de standaardzone te wijzigen, gebruikt u de optie --set-default-zone
gevolgd door de naam van de zone die u wilt standaard maken.
bijvoorbeeld, om de standaard zone te veranderen naar home
zou u het volgende commando uitvoeren:
sudo firewall-cmd --set-default-zone=home
controleer de wijzigingen met:
sudo firewall-cmd --get-default-zone
home
het creëren van nieuwe Zones #
met Firewalld kunt u ook uw eigen zones maken. Dit is handig wanneer u per-applicatie regels wilt maken.
In het volgende voorbeeld maken we een nieuwe zone met de naam memcached
, opent de poort 11211
en de toegang alleen vanaf de 192.168.100.30
IP-adres:
-
het Maken van de zone:
sudo firewall-cmd --new-zone=memcached --permanent
-
het Toevoegen van de regels voor de zone:
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
-
Laad de firewalld daemon te activeren wijzigingen:
sudo firewall-cmd --reload
Firewalld Diensten #
Met firewalld kunt u toestaan dat het verkeer voor specifieke poorten en/of bronnen op basis van vooraf gedefinieerde regels genoemd diensten.
typ een lijst van alle standaard beschikbare services:
sudo firewall-cmd --get-services
u kunt meer informatie over elke dienst vinden door de bijbehorende te openen .xml-bestand in de map /usr/lib/firewalld/services
. De HTTP-service is bijvoorbeeld als volgt gedefinieerd:
<?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>
als u binnenkomend HTTP-verkeer (poort 80) wilt toestaan voor interfaces in de openbare zone, typt u alleen voor de huidige sessie (runtime configuration) :
sudo firewall-cmd --zone=public --add-service=http
--zone
optie weglaten.om te controleren of de service met succes is toegevoegd, gebruikt u de optie --list-services
:
sudo firewall-cmd --zone=public --list-services
ssh dhcpv6-client http
om poort 80 open te houden na een herstart voer je hetzelfde commando opnieuw uit met de --permanent
optie, of voer het uit:
sudo firewall-cmd --runtime-to-permanent
gebruik de optie --list-services
samen met de optie --permanent
om uw wijzigingen te verifiëren:
sudo firewall-cmd --permanent --zone=public --list-services
ssh dhcpv6-client http
de syntaxis voor het verwijderen van service is hetzelfde als bij het toevoegen van een. Gebruik gewoon --remove-service
in plaats van de --add-service
– vlag:
sudo firewall-cmd --zone=public --remove-service=http --permanent
het bovenstaande commando verwijdert de http
service uit de permanente configuratie van de openbare zone.
een nieuwe FirewallD-Service #
zoals we al hebben vermeld, worden de standaard services opgeslagen in de /usr/lib/firewalld/services
– map. De eenvoudigste manier om een nieuwe service aan te maken is door een bestaand service-bestand te kopiëren naar de /etc/firewalld/services
map, de locatie voor door gebruikers gemaakte services en de bestandsinstellingen te wijzigen.
bijvoorbeeld, om een service definitie te maken voor de Plex Media Server, kunt u het SSH service bestand gebruiken:
sudo cp /usr/lib/firewalld/services/ssh.xml /etc/firewalld/services/plexmediaserver.xml
Open het nieuw aangemaakte plexmediaserver.xml
bestand en wijzig de Korte naam en beschrijving voor de service binnen de <short>
en <description>
tags. De belangrijkste tag die u moet wijzigen is de tag port
, die het poortnummer en het protocol definieert dat u wilt openen.
in het volgende voorbeeld openen we poorten 1900
UDP en 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>
sla het bestand op en herlaad de FirewallD service:
sudo firewall-cmd --reload
u kunt nu de plexmediaserver
– service in uw zones gebruiken, net als elke andere service.
poorten en bron-IP ‘ s openen #
met Firewalld kunt u ook snel al het verkeer inschakelen vanaf een vertrouwd IP-adres of op een specifieke poort zonder een service-definitie te maken.
een bron-IP #
om al binnenkomend verkeer van een specifiek IP-adres (of Bereik) toe te staan, specificeert u de zone met de optie --zone
en de bron-IP met de optie --add-source
.
bijvoorbeeld, om al het inkomend verkeer van 192.168.1.10 in de public
zone toe te staan,:
sudo firewall-cmd --zone=public --add-source=192.168.1.10
maak de nieuwe regel blijvend:
sudo firewall-cmd --runtime-to-permanent
controleer de wijzigingen met het volgende commando:
sudo firewall-cmd --zone=public --list-sources
192.168.1.10
de syntaxis voor het verwijderen van een bron IP is hetzelfde als bij het toevoegen van een. Gebruik gewoon --remove-source
in plaats van de optie --add-source
:
sudo firewall-cmd --zone=public --remove-source=192.168.1.10
het openen van een bronpoort #
om al binnenkomend verkeer op een bepaalde poort toe te staan, specificeert u de zone met de optie --zone
en de poort en het protocol met de optie --add-port
.
bijvoorbeeld, om poort 8080
te openen in de publieke zone voor de huidige sessie die u wond:
sudo firewall-cmd --zone=public --add-port=8080/tcp
het protocol kan ofwel tcp
, udp
, sctp
, of dccp
.
controleer de wijzigingen:
sudo firewall-cmd --zone=public --list-ports
8080
om de poort open te houden na een herstart, voegt u de regel toe aan de permanente instellingen door hetzelfde commando uit te voeren met de --permanent
vlag of door het uitvoeren van:
sudo firewall-cmd --runtime-to-permanent
de syntaxis voor het verwijderen van een poort is hetzelfde als bij het toevoegen van een poort. Gebruik gewoon --remove-port
in plaats van de optie --add-port
.
sudo firewall-cmd --zone=public --remove-port=8080/tcp
Forwarding Ports #
om verkeer van de ene poort naar de andere poort door te sturen, activeer je eerst masquerading voor de gewenste zone met de optie --add-masquerade
. Om bijvoorbeeld masquerading voor de zone external
in te schakelen, typt u:
sudo firewall-cmd --zone=external --add-masquerade
verkeer Doorsturen van de ene haven naar de andere op IP-adres #
In het volgende voorbeeld hebben we sturen het verkeer van poort 80
poort 8080
op dezelfde server:
sudo firewall-cmd --zone=external --add-forward-port=port=80:proto=tcp:toport=8080
verkeer Doorsturen naar een ander IP-adres #
In het volgende voorbeeld hebben we sturen het verkeer van poort 80
poort 80
op een server met IP 10.10.10.2
:
sudo firewall-cmd --zone=external --add-forward-port=port=80:proto=tcp:toaddr=10.10.10.2
verkeer Doorsturen naar een andere server op een andere poort #
In het volgende voorbeeld hebben we sturen het verkeer van poort 80
poort 8080
op een server met IP – 10.10.10.2
:
sudo firewall-cmd --zone=external --add-forward-port=port=80:proto=tcp:toport=8080:toaddr=10.10.10.2
om de termijnregel blijvend te maken, gebruik:
sudo firewall-cmd --runtime-to-permanent
conclusie #
u hebt geleerd hoe u de firewalld-service op uw CentOS 8-systeem kunt configureren en beheren.
zorg ervoor dat alle inkomende verbindingen die nodig zijn voor de goede werking van uw systeem, terwijl het beperken van alle onnodige verbindingen.