Firewalld a remplacé iptables comme pare-feu pour les distributions basées sur RHEL. La syntaxe utilisée par firewalld est plus conviviale. Cet article vous montre comment vous assurer que firewalld est en cours d'exécution et démarre au démarrage de votre serveur. Il vous montre également comment créer des règles de pare-feu persistantes et flexibles.
Remarque :Red Hat®, CentOS®, Alma Linux®, Rocky Linux® utilisent également firewalld, donc toutes les commandes de cet article fonctionnent également dans les images basées sur RHEL dont Rackspace dispose.
Concepts de base du pare-feu
Firewalld utilise des zones pour gérer des groupes de règles. Les zones sont attachées aux interfaces réseau et déterminent quel trafic est autorisé sur un réseau spécifique et quel trafic est refusé.
Cette fonctionnalité peut être utile si vous souhaitez établir un pare-feu très strict sur votre interface publique et un pare-feu plus souple sur votre interface CloudNetwork. Se familiariser avec les zones prédéfinies par le pare-feu est utile. Firewalld possède les zones prédéfinies suivantes, dans l'ordre de la moins fiable à la plus fiable :
drop
:Cette zone n'autorise que les connexions sortantes. Il abandonne les connexions entrantes sans réponse.block
:Bien que similaire àdrop
, cette zone rejette les requêtes entrantes avec unicmp-host-prohibited
ouicmp6-adm-prohibited
message.public
:Utilisez cette zone pour les réseaux publics ou lorsque vous ne faites confiance à aucun autre ordinateur du réseau. Cette zone accepte les connexions entrantes au cas par cas.external
:Utilisez cette zone sur les réseaux externes où le pare-feu fait office de passerelle. Cette zone est configurée pour le masquage NAT (Network Address Translation) afin que votre réseau interne soit privé mais accessible.internal
:Utilisez cette zone pour la partie interne d'une passerelle, où les autres ordinateurs sont raisonnablement dignes de confiance.dmz
:utilisez cette zone pour les ordinateurs isolés situés dans une zone démilitarisée (DMZ). Cette zone autorise uniquement Secure Shell (SSH) et Internet Control Message Protocol (ICMP).work
:Utilisez cette zone pour les ordinateurs professionnels.home
:Utilisez cette zone pour les environnements domestiques.trusted
:Utilisez cette zone lorsque vous faites confiance à tous les ordinateurs du réseau.
Pour utiliser le pare-feu, vous créez des règles et modifiez les propriétés de vos zones, puis affectez vos interfaces réseau aux zones les plus appropriées pour votre réseau.
Démarrer le pare-feu et l'activer au démarrage
Par défaut, firewalld doit être activé, redémarrez le serveur, puis démarrez atboot.
Vous pouvez facilement vérifier si le pare-feu est en cours d'exécution en utilisant le --state
flag,comme illustré dans l'exemple suivant :
[user@server ~]$ sudo firewall-cmd --state
Finding out about your zones
Si firewalld n'est pas en cours d'exécution, vous pouvez l'activer et le démarrer en exécutant les commandes suivantes :
[user@server ~]$ sudo systemctl enable firewalld
[user@server ~]$ sudo systemctl start firewalld
Vous pouvez voir quelle zone est actuellement la zone par défaut en exécutant la commande suivante :
[user@server ~]$ sudo firewall-cmd --get-default-zone
Vous pouvez voir quelles interfaces réseau sont affectées à quelles zones en exécutant la commande suivante :
[user@server ~]$ sudo firewall-cmd --get-active-zones
Remarque :La valeur par défaut affecte toutes les interfaces réseau à la zone publique.
Vous pouvez également trouver les règles associées à la zone publique en exécutant la commande suivante :
[user@server ~]$ sudo firewall-cmd --list-all --zone=public
Le résultat devrait ressembler à l'exemple suivant :
public (default, active)
interfaces: eth0 eth1
sources:
services: dhcpv6-client http https ssh
ports: 1025/tcp
masquerade: no
forward-ports:
icmp-blocks:
rich rules:
La sortie montre que la zone publique est la zone par défaut et possède les interfaces réseau eth0 et eth1. Protocole de configuration d'hôte dynamique (DHCP)(dhcpv6-client
), SSH, le trafic HTTP (Hypertext Transfer Protocol) et HTTP sécurisé (HTTPS) sont autorisés, ainsi que le trafic TCP (Transmission Control Protocol) sur le port 1025
.
Pour obtenir une liste des zones disponibles, exécutez la commande suivante :
[user@server ~]$ sudo firewall-cmd --get-zones
Configurer vos zones
Vous pouvez déplacer les interfaces entre les zones au cours de votre session en utilisant le --change-interface=
argument et le --zone
dispute. Si le pare-feu redémarre, l'interface revient à la zone par défaut.
[user@server ~]$ sudo firewall-cmd --zone=internal --change-interface=eth1
Pour définir une zone permanente pour une interface, ouvrez le fichier de configuration de l'interface et ajoutez les lignes suivantes :
...
ONBOOT=yes
ZOME=internal
Enregistrez et fermez le fichier, puis exécutez les commandes suivantes pour redémarrer le réseau et le pare-feu et forcer les modifications à prendre effet :
[user@server ~]$ sudo systemctl restart network
[user@server ~]$ sudo systemctl restart firewalld
Configurer les règles
Firewalld est livré avec des services prédéfinis qui vous permettent d'ajouter uniquement le service, plutôt que le numéro de port et le type de protocole. Par exemple, ils vous permettent d'autoriser http
plutôt que tcp port 80
.
Vous pouvez obtenir une liste de ces services en utilisant la commande suivante :
[user@server ~]$ sudo firewall-cmd --get-services
Ensuite, utilisez l'exemple de commande suivant pour ajouter un service :
[user@server ~]$ sudo firewall-cmd --add-service=http
La configuration prend effet immédiatement, mais ne survit pas aux redémarrages. Pour permettre à ces types de configurations de service de redémarrer lorsque le serveur redémarre, vous devez ajouter le --permanent
dispute. Nous vous recommandons d'exécuter ces deux commandes dans l'ordre afin que la configuration prenne effet immédiatement et que les services redémarrent également, comme illustré dans l'exemple suivant :
[user@server ~]$ sudo firewall-cmd --add-service=http
firewall-cmd --permanent --add-service=http
Vous pouvez obtenir des détails supplémentaires sur les règles prédéfinies de firewalld en accédant à /usr/lib/firewalld/services/ répertoire et lecture des fichiers.
Configurer des règles enrichies
Règles enrichies sont la façon dont vous définissez les conditions dans firewalld. Le cas d'utilisation le plus courant des règles enrichies consiste à autoriser l'accès à partir d'une adresse IP ou d'une plage d'adresses IP particulière. Les commandes suivantes activent l'accès au port TCP 80 à partir de n'importe quelle adresse IP du réseau 192.168.0.0 et rendent la règle permanente :
[user@server ~]$ sudo firewall-cmd --add-rich-rule 'rule family="ipv4" source address="192.168.0.0/24" service name="http" accept'
[user@server ~]$ sudo firewall-cmd --add-rich-rule 'rule family="ipv4" source address="192.168.0.0/24" service name="http" accept' --permanent
Pour des exemples de règles enrichies, consultez le Fedora®Wiki.
Définir les services
Vous pouvez créer votre propre service et vous y référer lorsque vous créez des règles en plaçant un fichier dans /usr/lib/firewalld/services/ annuaire. Le moyen le plus simple d'effectuer cette tâche en copiant un fichier .xml existant fichier dans ce répertoire, puis en modifiant les détails.
L'exemple de commande suivant copie un fichier existant dans un nouveau fichier :
[user@server ~]$ sudo cp /usr/lib/firewalld/services/http.xml /usr/lib/firewalld/services/myservice.xml
La commande suivante ouvre le nouveau fichier pour modification :
[user@server ~]$ sudo vim /usr/lib/firewalld/services/myserver.xml
Le fichier doit ressembler à l'exemple suivant :
<!--?xml version="1.0" encoding="utf-8"?-->
<service>
<short>My Custom Service</short>
<description>A brief description of the service. This rule allows port 1134 on TCP for my application.</description>
<port protocol="tcp" port="1134"></port>
</service>
Pour appliquer vos modifications, utilisez les commandes suivantes avec le nom du fichier, moins le .xml extension de fichier :
[user@server ~]$ sudo firewall-cmd --add-service=myservice
[user@server ~]$ sudo firewall-cmd --permanent --add-service=myservice
Utilisez l'onglet Commentaires pour faire des commentaires ou poser des questions. Vous pouvez également démarrer une conversation avec nous.