Het handhaven van netwerkbeveiliging is essentieel voor systeembeheerders en het configureren van de firewall via de opdrachtregel is een essentiële vaardigheid om te leren. In het artikel wordt uitgelegd hoe u de firewall beheert met firewall-cmd in de Linux-opdrachtregel.
Een firewall is in wezen software die u kunt configureren om inkomend en uitgaand netwerkverkeer te controleren. Firewalls kunnen voorkomen dat andere gebruikers netwerkdiensten gebruiken op een systeem dat u gebruikt. De meeste Linux-systemen worden geleverd met een standaardfirewall. Eerdere versies van Linux-systemen gebruikten iptables als de daemon voor pakketfiltering. Nieuwere versies van Fedora, RHEL/CentOS, openSUSE worden geleverd met Firewalld als de standaard firewall-daemon. U kunt Firewalld ook installeren in Debian- en Ubuntu-distributies.
Ik raad je aan om Firewalld te gebruiken in plaats van iptables. Geloof me niet zomaar op mijn woord. Lees meer in onze uitgebreide gids over de beschikbare open-source firewalls voor uw Linux-systeem.
Firewalld is een dynamische daemon om firewalls te beheren met ondersteuning voor netwerk- of firewallzones. Firewallzones definiëren netwerkbeveiligingsniveaus van netwerkinterfaces, services of verbindingen. Beheerders van netwerkbeveiligingssysteem hebben ontdekt dat Firewalld uitstekend werkt met IPv4, IPv6, IP-sets en Ethernet-bruggen. Om Firewalld te beheren, kunt u de opdracht firewall-cmd terminal of firewall-config GUI-configuratietool gebruiken.
Deze gids maakt gebruik van de firewall-cmd commando om netwerkbeveiliging te beheren, en onze testomgeving is Fedora Workstation 33.
Voordat we helemaal technisch worden, leren we eerst een paar basisprincipes van het netwerk.
Basisprincipes van het netwerk
Een computer die op een netwerk is aangesloten, krijgt een IP-adres toegewezen dat wordt gebruikt voor het routeren van gegevens. Computers hebben ook poorten in het bereik van 0-65535, die fungeren als verbindingspunten op het IP-adres. Toepassingen kunnen specifieke poorten reserveren. Webservers reserveren poort 80 doorgaans voor veilige HTTP-communicatie. In wezen zijn poortbereiken 0 - 1024 gereserveerd voor bekende doeleinden en het systeem.
De twee belangrijkste protocollen voor internetgegevensoverdracht (TCP en UDP) gebruiken deze poorten tijdens netwerkcommunicatie. Een hostcomputer brengt een verbinding tot stand tussen een bron-IP-adres en poort (poort 80 voor niet-beveiligde HTTP) en het bestemmingsadres en de poort.
Om de netwerkbeveiliging te beheren, kan firewallsoftware gegevensoverdracht of communicatie toestaan of blokkeren op basis van regels zoals poorten of IP-adressen.
Firewalld installeren
Fedora, RHEL/CentOS 7/8, openSUSE
Firewalld is standaard geïnstalleerd in Fedora, RHEL/CentOS 7/8 en openSUSE. Als dit niet het geval is, kunt u het installeren met de volgende opdracht:
# yum installeer firewalld -y
OF
#dnf installeer firewalld -y
Debian/Ubuntu
Ubuntu-systemen worden standaard geleverd met de ongecompliceerde firewall. Om firewalld te gebruiken, moet u de universe-repository inschakelen en de ongecompliceerde firewall deactiveren.
sudo add-apt-repository-universe
sudo apt firewalld installeren
Deactiveer ongecompliceerde firewall:
sudo systemctl ufw uitschakelen
Firewalld inschakelen tijdens het opstarten:
sudo systemctl enable -now firewalld
Controleer of Firewalld actief is:
sudo firewall-cmd -state
rennen
Firewall-zones
Firewalld maakt de configuratie van uw firewall eenvoudig door standaardzones in te stellen. Zones zijn een reeks regels die passen bij de dagelijkse behoeften van de meeste Linux-beheerders. Een firewallzone kan vertrouwde of geweigerde niveaus voor services en poorten definiëren.
- Vertrouwde zone: Alle netwerkverbindingen worden alleen geaccepteerd en gebruikt in vertrouwde omgevingen zoals een gezinswoning of een testlab.
- Openbare zone: U kunt alleen regels definiëren om specifieke poorten toe te staan verbindingen te openen, terwijl andere verbindingen worden verbroken. Het kan worden gebruikt in openbare ruimtes wanneer u andere hosts in het netwerk niet vertrouwt.
- Thuis, Intern, Werkzones: In deze drie zones worden de meeste inkomende verbindingen geaccepteerd. Inkomende verbindingen sluiten verkeer uit op poorten die geen verbindingen of activiteit verwachten. U kunt het toepassen in thuisverbindingen waar er een algemeen vertrouwen is van de andere gebruikers op het netwerk. Het staat alleen de geselecteerde inkomende verbindingen toe.
- Blokzone: Dit is een extreem paranoïde firewall-instelling waarbij alleen verbindingen mogelijk zijn die vanuit het netwerk of de server worden gestart. Alle inkomende verbindingen met het netwerk worden geweigerd en er wordt een ICMP-host-verboden bericht verzonden message.
- DMZ-zone: De gedemilitariseerde zone kan worden gebruikt om toegang te verlenen tot bepaalde diensten aan het publiek. Alleen geselecteerde verbindingen worden geaccepteerd. Het is een essentiële optie voor bepaalde typen servers in het netwerk van een organisatie.
- Externe zone: Indien ingeschakeld, zal deze zone fungeren als een router en kan worden gebruikt in externe netwerken met masquerading ingeschakeld. Het IP-adres van uw privénetwerk is toegewezen aan en verborgen achter een openbaar IP-adres. Alleen de geselecteerde inkomende verbindingen worden geaccepteerd, inclusief SSH.
- Afgeefpunt: Alle inkomende pakketten worden verwijderd zonder antwoord. Deze zone staat alleen uitgaande netwerkverbindingen toe.
Voorbeeld van standaard zones gedefinieerd door Fedora werkstation 33
cat /usr/lib/firewalld/zones/FedoraWorkstation.xmlFedora-werkstation Ongevraagde inkomende netwerkpakketten worden geweigerd van poort 1 tot 1024, behalve voor bepaalde netwerkdiensten. [firewall] Inkomende pakketten die betrekking hebben op uitgaande netwerkverbindingen worden geaccepteerd. Uitgaande netwerkverbindingen zijn toegestaan.
Krijg je huidige zone:
U kunt de - - get-active-zones vlag om de momenteel actieve zones in uw systeem te controleren.
sudo firewall-cmd --get-active-zones
[sudo] wachtwoord voor tuts:
FedoraWerkstation
interfaces: wlp3s0
libvirt
interfaces: virbr0
De standaard zone op Fedora Workstation 33 in de FedoraWorkstation zone
Krijg standaard zone & alle gedefinieerde zones:
sudo firewall-cmd --get-default-zone
[sudo] wachtwoord voor tuts:
FedoraWerkstation
[tuts@fosslinux ~]$ sudo firewall-cmd --get-zones
FedoraServer Fedora Werkstation blok dmz drop extern huis intern libvirt nm-gedeeld openbaar vertrouwd werk
Lijst diensten:
U kunt de services krijgen die de firewall andere systemen toestaat met behulp van de - -lijst-diensten vlag.
[tuts@fosslinux ~]$ sudo firewall-cmd --list-services
dhcpv6-client mdns samba-client ssh
Op Fedora Linux 33 geeft de firewall toegang tot vier services (dhcpv6-client mdns samba-client ssh) met bekende poortnummers.
Lijst firewall poort instellingen:
U kunt de - -lijst-poorten vlag om andere poortinstellingen in elke zone te zien.
tuts@fosslinux ~]$ sudo firewall-cmd --list-ports --zone=FedoraWorkstation
[sudo] wachtwoord voor tuts:
1025-65535/udp 1025-65535/tcp
We hebben de te controleren zone gespecificeerd met de optie - -zone=FedoraWorkstaion.
Zones, poorten en services beheren
Firewall-configuraties kunnen worden geconfigureerd als runtime of permanent. Alle firewall-cmd-acties blijven bestaan totdat de computer of firewall opnieuw is opgestart. U moet permanente instellingen maken met de -permanente vlag.
Maak een zone
Om een zone aan te maken, moet u de - -nieuwe zone vlag.
Voorbeeld:
Maak een nieuwe permanente zone met de naam fosscorp:
[tuts@fosslinux ~]$ sudo firewall-cmd --new-zone fosscorp --permanent
[sudo] wachtwoord voor tuts:
succes
Laad de firewallregels opnieuw om de nieuwe zone te activeren:
[tuts@fosslinux ~]$ sudo firewall-cmd --reload
Voeg ssh-service toe aan de fosscorp-zone zodat u deze op afstand kunt openen:
[tuts@fosslinux ~]$ sudo firewall-cmd --zone fosscorp --add-service ssh --permanent
[sudo] wachtwoord voor tuts:
succes
Bevestig dat uw nieuwe zone 'fosscorp' actief is:
[tuts@fosslinux ~]$ sudo firewall-cmd --get-zones
FedoraServer FedoraWorkstation blok dmz drop extern fosscorp home intern libvirt nm-gedeeld openbaar vertrouwd werk
Je nieuwe zone fosscorp is nu actief en weigert alle inkomende verbindingen behalve SSH-verkeer.
Gebruik de - -verander-interface vlag om de zone fosscorp de actieve en standaardzone te maken voor een netwerkinterface (wlp3s0) die u wilt beschermen:
[tuts@fosslinux ~]$ sudo firewall-cmd --change-interface wlp3s0 \
> --zone fosscorp --permanent
De interface staat onder de [ firewall ] controle van NetworkManager, zone instellen op 'fosscorp'.
succes
Als u fosscorp als standaard en primaire zone wilt instellen, voert u de volgende opdracht uit:
[tuts@fosslinux ~]$ sudo firewall-cmd --set-default fosscorp
succes
Bekijk de zones die momenteel aan elke interface zijn toegewezen met behulp van de - -get-active-zones vlag:
[tuts@fosslinux ~]$ sudo firewall-cmd --get-active-zones
fosscorp
interfaces: wlp3s0
Diensten toevoegen en verwijderen:
Een snelle manier om verkeer door uw firewall toe te laten, is door een vooraf gedefinieerde service toe te voegen.
Lijst beschikbare vooraf gedefinieerde services:
tuts@fosslinux ~]$ sudo firewall-cmd --get-services
[sudo] wachtwoord voor tuts:
RH-Satelliet-6 amanda-client amanda-k5-client amqp amqps apcupsd audit bacula bacula-client bb bgp bitcoin bitcoin-rpc
bitcoin-testnet bitcoin-testnet-rpc bittorrent-lsd ceph ceph-mon cfengine cockpit condor-collector ctdb dhcp dhcpv6 dhcpv6-client
[… ]
Deblokkeer een vooraf gedefinieerde service
U kunt HTTPS-verkeer (of een andere vooraf gedefinieerde service) via uw firewall toestaan met behulp van de - -add-service vlag.
[tuts@fosslinux ~]$ sudo firewall-cmd --add-service https --permanent
succes
[tuts@fosslinux ~]$ sudo firewall-cmd --reload
U kunt de service ook verwijderen met de - -verwijder-service vlag:
[tuts@fosslinux ~]$ sudo firewall-cmd --remove-service https --permanent
succes
[tuts@fosslinux ~]$ sudo firewall-cmd --reload
Poorten toevoegen en verwijderen
U kunt ook rechtstreeks een poortnummer en prototype toevoegen met de vlag -add-port. Het rechtstreeks toevoegen van een poortnummer kan handig zijn wanneer een vooraf gedefinieerde service niet bestaat.
Voorbeeld:
U kunt de niet-standaard toevoegen: poort 1717 voor SSH naar uw aangepaste zone met behulp van de volgende opdracht:
[tuts@fosslinux ~]$ sudo firewall-cmd --add-port 1717/tcp --permanent
[sudo] wachtwoord voor tuts:
succes
[tuts@fosslinux ~]$ sudo firewall-cmd -reload
Verwijder de poort met de optie -remove-port flag:
[tuts@fosslinux ~]$ sudo firewall-cmd --remove-port 1717/tcp --permanent
succes
[tuts@fosslinux ~]$ sudo firewall-cmd -reload
U kunt ook een zone specificeren om een poort toe te voegen of te verwijderen door de vlag -zone toe te voegen aan de opdracht:
Voeg poort 1718 voor TCP-verbinding toe aan de FedoraWorstation-zone:
[tuts@fosslinux ~]$ sudo firewall-cmd --zone=FedoraWorkstation --permanent --add-port=1718/tcp
succes
[tuts@fosslinux ~]$ sudo firewall-cmd --reload
succes
Bevestig of de wijzigingen van kracht zijn:
[tuts@fosslinux ~]$ sudo firewall-cmd --list-all
FedoraWerkstation (actief)
doel: standaard
icmp-blok-inversie: nee
interfaces: wlp3s0
bronnen:
services: dhcpv6-client mdns samba-client ssh
poorten: 1025-65535/udp 1025-65535/tcp 1718/tcp
protocollen:
maskerade: nee
forward-poorten:
source-poorten:
icmp-blokken:
rijke regels:
Opmerking: onder poorten hebben we toegevoegd: poortnummer 1718 om TCP-verkeer toe te staan.
U kunt verwijderen poort 1718/tcp door het volgende commando uit te voeren:
[tuts@fosslinux ~]$ sudo firewall-cmd --zone=FedoraWorkstation --permanent --remove-port=1718/tcp
succes
[tuts@fosslinux ~]$ sudo firewall-cmd --reload
succes
Opmerking: als u uw wijzigingen permanent wilt maken, moet u de - -permanent vlag naar je commando's.
Samenvatting
Firewalld is een geweldig hulpprogramma om uw netwerkbeveiliging te beheren. De beste manier om uw systeembeheerdersvaardigheden te vergroten, is door praktische ervaring op te doen. Ik raad ten zeerste aan om Fedora in je favoriete virtuele machine (VM) of in Boxes te installeren om te experimenteren met alle beschikbare firewall-cmd-functies. U kunt meer firewall-cmd-functies leren van de officiële Firewalld-startpagina.