Android

De firewall op Centos configureren en beheren 8

#28 - Firewall on Linux CentOS 8

#28 - Firewall on Linux CentOS 8

Inhoudsopgave:

Anonim

Een firewall is een methode voor het bewaken en filteren van inkomend en uitgaand netwerkverkeer. Het werkt door een set beveiligingsregels te definiëren die bepalen of specifiek verkeer wordt toegestaan ​​of geblokkeerd. 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 u 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 leggen ook de basisconcepten van FirewallD uit.

voorwaarden

Om de firewallservice te configureren, moet u zijn aangemeld als root of gebruiker met sudo-rechten.

Basisfirewalld-concepten

firewalld gebruikt de concepten van zones en services. 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 het opdrachtregelhulpprogramma firewall-cmd .

In CentOS 8 wordt iptables vervangen door nftables als standaard firewall-backend voor de firewalld-daemon.

Firewall-zones

Zones zijn vooraf gedefinieerde sets regels die het vertrouwensniveau specificeren van de netwerken waarmee uw computer is verbonden. U kunt netwerkinterfaces en bronnen aan een zone toewijzen.

Hieronder staan ​​de zones aangeboden door FirewallD gerangschikt volgens het vertrouwensniveau van de zone van niet-vertrouwd tot vertrouwd:

  • drop: alle inkomende verbindingen worden zonder kennisgeving verwijderd. Alleen uitgaande verbindingen zijn toegestaan. blokkeren: alle inkomende verbindingen worden geweigerd met een door icmp-host-prohibited bericht voor IPv4 en icmp6-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 geselecteerde inkomende verbindingen toestaan. extern: voor gebruik op externe netwerken met NAT-maskering ingeschakeld wanneer uw systeem als gateway of router fungeert. Alleen geselecteerde inkomende verbindingen zijn toegestaan. intern: voor gebruik op interne netwerken wanneer uw systeem fungeert als gateway of router. Andere systemen op het netwerk worden over het algemeen vertrouwd. Alleen geselecteerde inkomende verbindingen zijn toegestaan. dmz: gebruikt voor computers in uw gedemilitariseerde zone die beperkte toegang hebben tot de rest van uw netwerk. Alleen geselecteerde inkomende verbindingen zijn toegestaan. werk: gebruikt voor werkmachines. Andere computers in het netwerk worden over het algemeen vertrouwd. Alleen geselecteerde inkomende verbindingen zijn toegestaan. thuis: gebruikt voor thuismachines. Andere computers in het netwerk worden over het algemeen vertrouwd. Alleen geselecteerde inkomende verbindingen zijn toegestaan. vertrouwd: alle netwerkverbindingen worden geaccepteerd. Vertrouw op alle computers in het netwerk.

Firewall-services

Firewalld-services zijn vooraf gedefinieerde regels die binnen een zone van toepassing zijn en de benodigde instellingen definiëren om inkomend verkeer voor een specifieke service toe te staan. Met de services kunt u eenvoudig verschillende 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 actuele actieve configuratie en blijft niet bestaan ​​bij opnieuw opstarten. Wanneer de firewalld-daemon start, wordt de permanente configuratie geladen, 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, voegt u de optie --permanent aan de opdracht.

Om de wijzigingen in beide configuratiesets toe te passen, kunt u een van de volgende twee methoden gebruiken:

  1. Wijzig de runtime-configuratie en maak deze permanent:

    sudo firewall-cmd sudo firewall-cmd --runtime-to-permanent

    Wijzig de permanente configuratie en laad de firewalld-daemon opnieuw:

    sudo firewall-cmd --permanent sudo firewall-cmd --reload

Firewall inschakelen

Op CentOS 8 wordt firewalld standaard geïnstalleerd en ingeschakeld. Als het om de 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 de opdracht worden running . Anders ziet u not running .

Firewall-zones

De standaardzone is degene die wordt gebruikt voor alles dat niet expliciet aan een andere zone is toegewezen.

U kunt de standaardzone zien door te typen:

sudo firewall-cmd --get-default-zone

public

Typ het volgende voor een lijst met alle beschikbare zones:

sudo firewall-cmd --get-zones

block dmz drop external home internal public trusted work

Om de actieve zones en de daaraan toegewezen netwerkinterfaces te zien:

sudo firewall-cmd --get-active-zones

De onderstaande output laat zien dat de interfaces eth0 en eth1 zijn toegewezen aan de public zone:

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 de bovenstaande output kunnen we zien dat de openbare zone actief is en het standaarddoel gebruikt, namelijk REJECT . De uitvoer laat ook zien dat de zone wordt gebruikt door de eth0 en eth1 interfaces en DHCP-client- en SSH-verkeer toestaat.

sudo firewall-cmd --list-all-zones

De opdracht drukt een enorme lijst af met de instellingen van alle beschikbare zones.

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 , ACCEPT en DROP .

Om het doel van de zone in te stellen, geeft u de zone op met de optie --set-target en het doel met de optie --set-target .

Als u bijvoorbeeld het doel van de public zone wilt wijzigen in DROP u als volgt te werk:

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

Een interface toewijzen aan een andere zone

U kunt specifieke sets regels maken voor verschillende zones en hieraan verschillende interfaces toewijzen. Dit is vooral handig als u meerdere interfaces op uw machine hebt.

Om een ​​interface aan een andere zone toe te wijzen, geeft u de zone op met de optie --zone en de interface met de optie --change-interface .

De volgende opdracht wijst bijvoorbeeld de eth1 interface toe aan de werkzone:

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

Controleer de wijzigingen door te typen:

sudo firewall-cmd --get-active-zones

work interfaces: eth1 public 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 als standaard wilt instellen.

Als u bijvoorbeeld de standaardzone naar home wilt wijzigen, voert u de volgende opdracht uit:

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

Controleer de wijzigingen met:

sudo firewall-cmd --get-default-zone

home

Nieuwe zones maken

Met Firewalld kunt u ook uw eigen zones maken. Dit is handig als u regels per toepassing wilt maken.

In het volgende voorbeeld maken we een nieuwe zone met de naam memcached , openen we de poort 11211 en geven we alleen toegang vanaf het 192.168.100.30 IP-adres:

  1. Creëer de zone:

    sudo firewall-cmd --new-zone=memcached --permanent

    Voeg de regels toe aan 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 opnieuw om de wijzigingen te activeren:

    sudo firewall-cmd --reload

Firewalld-services

Met firewalld kunt u verkeer toestaan ​​voor specifieke poorten en / of bronnen op basis van vooraf gedefinieerde regels die services worden genoemd.

Om een ​​lijst te krijgen van alle standaard beschikbare services type:

sudo firewall-cmd --get-services

U kunt meer informatie over elke service vinden door het bijbehorende.xml-bestand te openen in de directory /usr/lib/firewalld/services . De HTTP-service is bijvoorbeeld als volgt gedefinieerd:

/usr/lib/firewalld/services/http.xml

WWW (HTTP) 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. WWW (HTTP) 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.

Om inkomend HTTP-verkeer (poort 80) toe te staan ​​voor interfaces in de openbare zone, alleen voor de huidige sessie (runtime-configuratie):

sudo firewall-cmd --zone=public --add-service=http Als u de standaardzone wijzigt, kunt u de optie --zone weglaten.

Gebruik de optie --list-services om te controleren of de service is toegevoegd:

sudo firewall-cmd --zone=public --list-services

ssh dhcpv6-client

Om poort 80 open te houden na een herstart, voert u dezelfde opdracht nogmaals uit met de optie --permanent , of voert u uit:

sudo firewall-cmd --runtime-to-permanent

Gebruik de --list-services samen met de --permanent optie om uw wijzigingen te verifiëren:

sudo firewall-cmd --permanent --zone=public --list-services

ssh dhcpv6-client

De syntaxis voor het verwijderen van de service is hetzelfde als bij het toevoegen van een service. Gebruik gewoon --remove-service plaats van de vlag --add-service :

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

De bovenstaande opdracht verwijdert de http service uit de permanente configuratie van de openbare zone.

Een nieuwe FirewallD-service maken

Zoals we al hebben vermeld, worden de standaardservices opgeslagen in de map /usr/lib/firewalld/services . De eenvoudigste manier om een ​​nieuwe service te maken, is door een bestaand servicebestand te kopiëren naar de map /etc/firewalld/services , de locatie voor door gebruikers gemaakte services en de bestandsinstellingen te wijzigen.

Als u bijvoorbeeld een servicedefinitie voor de Plex Media Server wilt maken, kunt u het SSH-servicebestand gebruiken:

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

Open het nieuw gecreëerde plexmediaserver.xml bestand en wijzig de korte naam en beschrijving voor de service in de en -tags. De belangrijkste tag die u moet wijzigen, is de poorttag, die het poortnummer en het protocol definieert dat u wilt openen.

In het volgende voorbeeld openen we poorten 1900 UDP en 32400 TCP.

/etc/firewalld/services/plexmediaserver.xml

plexmediaserver 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. plexmediaserver 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.

Sla het bestand op en laad de FirewallD-service opnieuw:

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 alle verkeer vanaf een vertrouwd IP-adres of via een specifieke poort inschakelen zonder een servicedefinitie te maken.

Een bron-IP openen

Om al het inkomende verkeer van een specifiek IP-adres (of bereik) toe te staan, geeft u de zone op met de optie --add-source en de bron-IP met de optie --add-source .

Als u bijvoorbeeld al het inkomende verkeer van 192.168.1.10 in de public zone wilt toestaan, voert u het volgende uit:

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

Maak de nieuwe regel persistent:

sudo firewall-cmd --runtime-to-permanent

Controleer de wijzigingen met de volgende opdracht:

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 IP. Gebruik gewoon --remove-source plaats van de optie --add-source :

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

Een bronpoort openen

Om al het inkomende verkeer op een bepaalde poort toe te staan, geeft u de zone op met de optie --add-port en de poort en het protocol met de optie --add-port .

Om bijvoorbeeld poort 8080 in de openbare zone te openen voor de huidige sessie die u hebt uitgevoerd:

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

Het protocol kan tcp , udp , sctp of dccp .

Controleer de wijzigingen:

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

8080

Om de poort open te houden na opnieuw opstarten, voegt u de regel toe aan de permanente instellingen door dezelfde opdracht uit te voeren met de vlag --permanent 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 plaats van de --add-port optie.

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

Poorten doorsturen

Om verkeer van de ene naar de andere poort door te sturen, --add-masquerade u eerst --add-masquerade voor de gewenste zone in met de optie --add-masquerade . Als u bijvoorbeeld maskeren voor de external zone wilt inschakelen, typt u:

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

Stuur verkeer van de ene poort naar de andere over op het IP-adres

In het volgende voorbeeld sturen we het verkeer van poort 80 naar poort 8080 op dezelfde server door:

sudo firewall-cmd --zone=external --add-forward-port=port=80:proto=tcp:toport=8080

Stuur verkeer door naar een ander IP-adres

In het volgende voorbeeld sturen we het verkeer van poort 80 naar 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

Stuur verkeer door naar een andere server op een andere poort

In het volgende voorbeeld sturen we het verkeer van poort 80 naar 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 voorwaartse regel blijvend te maken, gebruikt u:

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 zijn toegestaan, terwijl alle onnodige verbindingen worden beperkt.

firewalld firewall centos beveiliging