Introductie
Firewalld is een oplossing voor firewallbeheer die beschikbaar is voor veel Linux-distributies. Het dient als een interface voor het iptables-pakketfiltersysteem dat wordt geleverd door de Linux-kernel. In deze handleiding leert u hoe u een firewall voor uw server configureert. We laten u ook de basisbeginselen zien van het beheren van de firewall met de firewall-cmd-beheertool.
Basisbeginselen van Firewalld
FirewallD maakt gebruik van de concepten van zones en services, in plaats van de chains en regels van iptables. Afhankelijk van de zones en services die u configureert, kunt u bepalen welk verkeer wel of niet is toegestaan van en naar het systeem. FirewallD kan worden geconfigureerd en beheerd met behulp van het opdrachtregelprogramma firewall-cmd.
Installeer en activeer uw firewall om te starten bij het opstarten
Op de meeste Linux-distributies is firewallD al geïnstalleerd. Als u het echter zelf moet installeren, typt u de onderstaande syntaxis:
|
1 |
sudo yum install firewalld |
U kunt de service inschakelen en uw server opnieuw opstarten zodra firewalld is geïnstalleerd:
|
1 2 |
sudo systemctl enable firewalld sudo reboot |
Start vervolgens uw server opnieuw op. Uw firewall wordt ingeschakeld wanneer u de server met succes opnieuw hebt opgestart. Gebruik daarna de onderstaande opdracht om te controleren of de service is geactiveerd:
|
1 |
sudo firewall-cmd --state |

De uitvoer laat zien dat de standaard firewall-instelling werkt.
De standaardinstellingen controleren
U kunt de door de server geselecteerde zone controleren met deze opdracht:
|
1 |
firewall-cmd --get-default-zone |

Controleer de actieve zone door te typen:
|
1 |
firewall-cmd --get-active-zones |

Druk de configuratie van de standaardzone af om de regels te kennen die aan het openbare gebied zijn gekoppeld met behulp van deze syntaxis:
|
1 |
sudo firewall-cmd --list-all |

De uitvoer geeft aan dat deze zone zowel de standaard- als de actieve zone is. Het laat ook zien dat de interfaces eth0 en eth1 aan deze zone zijn toegewezen.
Alternatieve zones controleren
Naast de standaard- en actieve zones zijn er nog andere zones die u kunt verkennen. Voer deze opdracht in om alle beschikbare zones te zien:
|
1 |
firewall-cmd --get-zones |

Controleer de specifieke configuratie die aan een zone is toegewezen door de parameter –zone= toe te voegen aan de opdracht –list-all:
|
1 |
sudo firewall-cmd --zone=home --list-all |

De interfacezone wijzigen
U kunt de interfacezone eenvoudig wijzigen met de optie –change-interface gecombineerd met de optie –change-interface. De volgende opdracht wijst de interface eth1 toe aan de werkruimte:
|
1 |
sudo firewall-cmd --zone=work --change-interface=eth1 |
U kunt de wijzigingen controleren door te typen:
|
1 |
sudo firewall-cmd --get-active-zones |
De standaardzone wijzigen
Om de standaardzone te wijzigen, gebruikt u –set-default-zone gevolgd door de naam van de zone die u als standaard wilt instellen. Om bijvoorbeeld de standaardzone te wijzigen in start, voert u de volgende opdracht uit:
|
1 |
sudo firewall-cmd --set-default-zone=home |
Vervolgens kunt u de wijzigingen controleren met:
|
1 |
sudo firewall-cmd --get-default-zone |
Regels instellen voor uw toepassingen
Laten we de basisbeginselen doorlopen die nodig zijn om firewall-uitzonderingen voor de services te definiëren:
Een service toevoegen aan uw zones
De meest eenvoudige manier is door de poorten of services die u nodig hebt toe te voegen aan de zones die u gebruikt. Evenzo kunt u de optie –get-services gebruiken om alle beschikbare services te zien:
|
1 |
firewall-cmd --get-services |

U kunt de service voor een zone activeren met de parameter –add-service =. De actie is gericht op de standaardzone of een zone gedefinieerd door de parameter –zone =. Standaard is alleen de huidige firewallsessie geconfigureerd. U kunt een permanente firewallconfiguratie instellen door de vlag –permanent te activeren. Als u bijvoorbeeld een webserver draait die regulier HTTP-verkeer levert, kunt u dit verkeer voor interfaces in onze “public”-zone voor deze sessie toestaan door het volgende in te voeren:
|
1 |
sudo firewall-cmd --zone=public --add-service=http |
U kunt –zone = weglaten als u de standaardzone wilt wijzigen. U kunt controleren of de bewerking is geslaagd met de bewerkingen –list-all of –list-services:
|
1 |
sudo firewall-cmd --zone=public --list-services |

Zodra u heeft geverifieerd dat alles naar verwachting werkt, wilt u waarschijnlijk de permanente firewallregels wijzigen om uw service ook na een herstart beschikbaar te houden. We kunnen de wijziging in onze “public”-zone permanent maken door de volgende syntaxis in te voeren:
|
1 2 3 4 |
sudo firewall-cmd --zone=public --permanent --add-service=http output: success |
U kunt de vlag –permanent toevoegen aan de bewerking –list-services om te controleren of dit is geslaagd. U moet sudo gebruiken voor –alle permanente bewerkingen:
|
1 2 3 4 |
sudo firewall-cmd --zone=public --permanent --list-services output: dhcpv6-client http ssh |
Uw “public”-zone staat nu HTTP-verkeer toe op poort 80. U kunt dit toevoegen aan de huidige sessie en de permanente regelset met behulp van de onderstaande opdracht:
|
1 2 3 |
sudo firewall-cmd --zone=public --add-service=https sudo firewall-cmd --zone=public --permanent --add-service=https |
Als er geen services zijn die aan uw vereisten voldoen, heeft u twee uitstekende opties om deze situatie aan te pakken:
- Een poort openen voor uw zones
De meest eenvoudige manier om ondersteuning voor uw specifieke toepassing toe te voegen, is door de poorten te openen die in elke zone worden gebruikt. Het is zo eenvoudig als het toewijzen van een poort of poortbereik en het bijbehorende protocol voor de poorten die u moet openen. Als uw toepassing bijvoorbeeld op poort 5000 draait en TCP gebruikt, kunt u deze voor deze sessie toevoegen aan de “public”-zone met de parameter –add-port =. Protocollen kunnen TCP of UDP zijn:
|
1 2 3 4 |
sudo firewall-cmd --zone=public --add-port=5000/tcp output: success |
Om te controleren of de bewerking is geslaagd, gebruikt u de bewerking –list-ports:
|
1 2 3 4 |
sudo firewall-cmd --zone=public --list-ports Output: 5000/tcp |
U kunt ook een bereik opgeven voor de seriële interface door de begin- en eindpoort in het bereik te scheiden met een koppelteken. Als uw toepassing bijvoorbeeld UDP-poorten 4990 tot 4999 gebruikt, kunt u deze openen in “public” door het volgende te schrijven:
|
1 |
sudo firewall-cmd --zone=public --add-port=4990-4999/udp |
Na het testen willen we ze waarschijnlijk toevoegen aan de permanente firewall. U kunt dit doen door het volgende te typen:
|
1 2 3 |
sudo firewall-cmd --zone=public --permanent --add-port=5000/tcp sudo firewall-cmd --zone=public --permanent --add-port=4990-4999/udp sudo firewall-cmd --zone=public --permanent --list-ports |

- Een service definiëren
Een service is een verzameling poorten met een bijbehorende naam en beschrijving. Services zijn eenvoudiger te beheren dan poorten, maar het vereist een klein beetje initiële inspanning. De meest eenvoudige manier om te beginnen is door een bestaand script (in / usr / lib / firewalld / services) te kopiëren naar de map /etc/firewalld/services. U kunt bijvoorbeeld de SSH-servicedefinitie kopiëren om te gebruiken in de “example”-servicedefinitie, als volgt. De bestandsnaam minus het XML-achtervoegsel bepaalt de servicenaam in de lijst met firewallservices:
|
1 |
sudo cp /usr/lib/firewalld/services/ssh.xml /etc/firewalld/services/example.xml |
Op dit punt kunt u de definitie in het gekopieerde bestand aanpassen:
|
1 |
sudo vi /etc/firewalld/services/example.xml |
Eerst bevat het bestand de SSH-definitie die u hebt gekopieerd:
|
1 2 3 4 5 6 |
<?xml version="1.0" encoding="utf-8"?> <service> <short>SSH</short> <description>Secure Shell (SSH) is een protocol voor inloggen op en uitvoeren commando's op externe machines. Het biedt veilige gecodeerde communicatie. Als u van plan bent om toegang te krijgen tot uw machine op afstand via SSH over een beveiligde interface, schakel deze optie in. U hebt het openssh-server pakket geïnstalleerd nodig voor deze optie om nuttig te zijn.</description> <port protocol="tcp" port="22"/> </service> |
Het grootste deel van deze definitie bestaat uit metadata. U moet de korte naam van de service wijzigen in de <short>-tags. Dit is een leesbare servicenaam. Stel dat we voor onze “example”-service poort 7777 moeten openen voor TCP en 8888 voor UDP. U kunt de bestaande definitie wijzigen door naar de INSERT-modus te gaan door op i te drukken:
|
1 2 3 4 5 6 7 |
<?xml version="1.0" encoding="utf-8"?> <service> <short>Voorbeeldservice</short> <description>Dit is slechts een voorbeeld service. Het zou waarschijnlijk niet 'moeten worden gebruikt op een echt systeem.</description> <port protocol="tcp" port="7777"/> <port protocol="udp" port="8888"/> </service> |
Druk vervolgens op ESC en typ :x om het bestand op te slaan en te sluiten. Typ daarna het onderstaande commando om uw firewall te herstarten, zodat u toegang krijgt tot uw nieuwe service;
|
1 |
sudo firewall-cmd --reload |
Gebruik daarna het onderstaande commando voor een lijst met beschikbare services:
|
1 |
firewall-cmd --get-services |

Deze service is nu beschikbaar in uw zone.
Uw zones aanmaken
Hoewel de vooraf gedefinieerde zones waarschijnlijk voldoende zijn voor de meeste gebruikers, kan het handig zijn om uw eigen zones te definiëren die hun functie vollediger beschrijven.
Wanneer u een zone toevoegt, voeg deze dan toe aan uw permanente firewall-instellingen. Vervolgens kunt u herladen om de instellingen naar uw sessie te brengen. U kunt bijvoorbeeld de twee eerder besproken zones aanmaken door te typen:
|
1 2 |
sudo firewall-cmd --permanent --new-zone=publicweb sudo firewall-cmd --permanent --new-zone=privateDNS |
U kunt bevestigen dat ze aanwezig zijn in uw permanente configuratie met dit commando:
|
1 |
sudo firewall-cmd --permanent --get-zones |

Laad de firewall opnieuw om deze nieuwe zones in de actieve configuratie op te nemen:
|
1 2 3 4 5 |
sudo firewall-cmd --reload firewall-cmd --get-zones uitvoer: block dmz drop external home internal privateDNS public publicweb trusted work |
Nu kun je de juiste services en poorten toewijzen aan je zones. Voor de zone “publicweb” wil je bijvoorbeeld misschien de services SSH, HTTP en HTTPS toevoegen:
|
1 2 3 |
sudo firewall-cmd --zone=publicweb --add-service=ssh sudo firewall-cmd --zone=publicweb --add-service=http sudo firewall-cmd --zone=publicweb --add-service=https |

Je kunt ook de DNS-service toevoegen aan je “privateDNS”-zone met dit commando:
|
1 2 |
sudo firewall-cmd --zone=privateDNS --add-service=dns sudo firewall-cmd --zone=privateDNS --list-all |

Vervolgens kun je je interfaces naar deze nieuwe zones wijzigen om ze te testen:
|
1 2 3 |
sudo firewall-cmd --zone=publicweb --change-interface=eth0 sudo firewall-cmd --zone=privateDNS --change-interface=eth1 |
Test de configuratie om te zien of deze werkt. Als deze waarden voor jou werken, moet je dezelfde regels toevoegen aan de permanente configuratie. Dit kun je doen door de regels opnieuw toe te passen met de —permanent indicator:
|
1 2 3 4 5 6 7 |
sudo firewall-cmd --zone=publicweb --permanent --add-service=ssh sudo firewall-cmd --zone=publicweb --permanent --add-service=http sudo firewall-cmd --zone=publicweb --permanent --add-service=https sudo firewall-cmd --zone=privateDNS --permanent --add-service=dns |
Na het permanent toepassen van deze regels kun je je netwerk herstarten en je firewall-service herladen:
|
1 2 3 |
sudo systemctl restart network sudo systemctl reload firewalld |
Controleer of de zones correct zijn toegewezen:
|
1 |
firewall-cmd --get-active-zones |

Zorg er bovendien voor dat beide zones de juiste service hebben:
|
1 2 3 4 |
sudo firewall-cmd --zone=publicweb --list-services uitvoer: http https ssh |
|
1 2 3 4 5 |
sudo firewall-cmd --zone=privateDNS --list-services uitvoer: dns |
Als je een van je zones als standaard wilt instellen voor andere interfaces, moet je dit gedrag configureren met de parameter –set-default-zone= met behulp van dit commando:
|
1 |
sudo firewall-cmd --set-default-zone=publicweb |
Conclusie
Op dit punt heb je met succes je eigen zones aangemaakt. Je zou nu een basisbegrip moeten hebben van het beheren van de firewalld-service op je CentOS-systeem voor dagelijks gebruik. Een goed begrip van de firewalld-service stelt je in staat om optimaal te profiteren van de kracht en flexibiliteit ervan.
Veel computerplezier!


Reacties
Nog geen reacties. Wees de eerste.