Présentation
La désactivation du pare-feu dans CentOS est parfois nécessaire à des fins de test. Pour des raisons de sécurité, l'exécution d'un pare-feu sur un serveur de production est indispensable. Nous ne saurions trop insister sur l'importance d'un outil de gestion de pare-feu correctement configuré.
Dans ce tutoriel, découvrez comment activer et utiliser firewalld sur CentOS 7.
Prérequis
- Un utilisateur avec des privilèges sudo
- Accès à une ligne de commande (Ctrl-Alt-T)
- Une machine CentOS 7
Comment vérifier l'état du pare-feu
Commencez par démarrer votre serveur CentOS 7 et vérifiez si firewalld est en cours d'exécution. Pour cela, ouvrez le terminal (CTRL-ALT-T) et exécutez la commande suivante :
sudo systemctl status firewalld
Vous pouvez recevoir plusieurs sorties.
Actif :actif (en cours d'exécution)
Si la sortie indique Active: active (running)
, le pare-feu est actif. Si vous ne savez pas si le gestionnaire de pare-feu a démarré après un redémarrage du système, envisagez d'exécuter la commande suivante :
sudo systemctl enable firewalld
Cette commande configure le système pour démarrer le pare-feu après chaque redémarrage du serveur.
Actif :inactif (mort)
Si la sortie indique Active: inactive (dead)
, le pare-feu ne fonctionne pas. Passez à Comment activer et démarrer le pare-feu section de l'article.
Chargé :masqué (/dev/null ; mauvais)
La sortie peut indiquer que le service est inactif et masqué. Voir l'image ci-dessous pour plus de détails.
Ici, le service firewalld est masqué par un lien symbolique. Les administrateurs peuvent masquer le service afin que d'autres logiciels ne l'activent pas automatiquement. Vous DEVEZ démasquer le service avant de l'activer.
Pour démasquer le service firewalld, exécutez la commande suivante :
sudo systemctl unmask --now firewalld
La sortie doit indiquer que le lien symbolique a été supprimé.
Vous pouvez maintenant passer à la section Comment activer et démarrer le pare-feu section de l'article.
Comment activer et démarrer le pare-feu
Pour activer le pare-feu sur CentOS 7, exécutez la commande suivante en tant que sudo :
sudo systemctl enable firewalld
Après avoir activé le pare-feu, démarrez le service firewalld :
sudo systemctl start firewalld
Lorsque le système exécute la commande, il n'y a pas de sortie. Par conséquent, il est sage de vérifier si le pare-feu a été activé avec succès.
Vérifiez l'état du pare-feu avec :
sudo systemctl status firewalld
La sortie doit indiquer que firewalld est actif et en cours d'exécution.
Zones de pare-feu
Firewalld établit des « zones » et catégorise tout le trafic entrant dans ces zones. Chaque zone réseau possède son propre ensemble de règles en fonction desquelles elle accepte ou refuse le trafic entrant.
En d'autres termes, les zones déterminent quel paquet est autorisé et lequel est refusé de fonctionner. Cette approche offre plus de flexibilité par rapport à iptables car vous pouvez définir différentes zones pour les réseaux spécifiques auxquels votre appareil est connecté.
Pour afficher une liste complète de toutes les zones disponibles, tapez :
sudo firewall-cmd --get-zones
Pour une nouvelle installation, vous obtiendrez probablement le résultat suivant :
Output
block dmz drop external home internal public trusted work
Ce sont les zones préconfigurées. Pour vérifier quelle zone est définie par défaut, exécutez la commande suivante :
sudo firewall-cmd --get-default-zone
Firewalld a fourni une liste de toutes les zones préconfigurées et des descriptions de zone. La liste ci-dessous est classée selon le niveau de confiance, du moins fiable au plus fiable.
drop
:Le niveau de confiance le plus bas. Toutes les connexions entrantes sont abandonnées sans réponse et seules les connexions sortantes sont possibles.
block
:Semblable à celui ci-dessus, mais au lieu de simplement abandonner les connexions, les demandes entrantes sont rejetées avec un message icmp-host-prohibited ou icmp6-adm-prohibited.
public
:Représente les réseaux publics non approuvés. Vous ne faites pas confiance aux autres ordinateurs, mais vous pouvez autoriser certaines connexions entrantes au cas par cas.
external
:Réseaux externes dans le cas où vous utilisez le pare-feu comme passerelle. Il est configuré pour le masquage NAT afin que votre réseau interne reste privé mais accessible.
internal
:L'autre côté de la zone externe, utilisé pour la partie interne d'une passerelle. Les ordinateurs sont assez fiables et certains services supplémentaires sont disponibles.
dmz
:Utilisé pour les ordinateurs situés dans une DMZ (ordinateurs isolés qui n'auront pas accès au reste de votre réseau). Seules certaines connexions entrantes sont autorisées.
work
:Utilisé pour les machines de travail. Fait confiance à la plupart des ordinateurs du réseau. Quelques services supplémentaires pourraient être autorisés.
home
:Un environnement familial. Cela implique généralement que vous faites confiance à la plupart des autres ordinateurs et que quelques services supplémentaires seront acceptés.
trusted
:Faire confiance à toutes les machines du réseau. La plus ouverte des options disponibles et doit être utilisée avec parcimonie.
Vérifier la zone de pare-feu active
Pour vérifier quelle zone est active, tapez :
sudo firewall-cmd --get-active-zones
La sortie indique la zone active ainsi que les interfaces réseau régies par celle-ci. Si vous ne la configurez pas autrement, la zone par défaut est la seule zone active.
Règles de zone de pare-feu
Pour voir quelles règles sont associées à la zone par défaut, exécutez la commande suivante :
sudo firewall-cmd --list-all
Considérons tous les éléments listés et définissons-les :
target:
Par défaut indique que la zone est une zone par défaut. Il peut également indiquer qu'une zone est active. Dans l'exemple ci-dessus, la zone publique n'est pas active, car aucune interface réseau n'y est associée.
icmp-block-inversion:
Il s'agit d'un élément facultatif qui inverse la gestion des blocs icmp.
interfaces
:Toutes les interfaces réseau régies par cette zone.
sources
:Sources pour cette zone (adresses IP).
services
:affiche les services autorisés. Dans l'exemple ci-dessus, il s'agit de ssh dhcpv6-client. Pour une liste complète des services disponibles via firewalld, exécutez le firewall-cmd --get-services
commande.
ports
:liste des ports autorisés via le pare-feu. C'est très utile pour autoriser des services qui ne sont pas définis dans firewalld.
masquerade
:Si aucun, le masquage IP est désactivé. Lorsqu'il est activé, il permet le transfert IP. Cela signifie en fait que votre serveur agirait comme un routeur.
forward-ports
:affiche une liste de tous les ports redirigés.
source-ports
:Répertorie tous les ports sources et protocoles relatifs à cette zone.
icmp-blocks
:affiche le trafic icmp bloqué.
rich rules
:Une liste de toutes les règles avancées associées à la zone.
Pour obtenir une liste des règles associées à une zone spécifique, ajoutez --zone=
paramètre au --list-all
commande. Par exemple,
sudo firewall-cmd --zone=work --list-all
La commande ci-dessus générera une liste de règles associées au travail zone.
Comment changer la zone d'une interface
Il est facile de réaffecter une autre zone à une interface réseau. Utilisez le --zone
flag pour spécifier la zone, puis ajoutez le --change-interface
drapeau pour spécifier l'interface réseau.
sudo firewall-cmd --zone=home --change-interface=eth1
Vérifiez si les modifications ont pris effet :
firewall-cmd --get-active-zones
Firewalld aurait dû appliquer la zone d'accueil sur tout le trafic passant par eth1
interface réseau.
Avertissement :Lors du changement de zone d'une interface, vous pouvez affecter l'état des services actifs. Par exemple, si vous travaillez via SSH et déplacez une interface réseau vers une zone qui ne prend pas en charge le service SSH, votre connexion peut être interrompue. De plus, vous ne pourrez pas vous connecter.
Modifier la zone de pare-feu par défaut
Vous pouvez facilement modifier la zone par défaut. Utilisez le --set-default-zone
drapeau pour indiquer quelle zone vous souhaitez définir comme zone par défaut. Dans l'exemple ci-dessous, nous définirons la zone de travail comme zone par défaut.
sudo firewall-cmd --set-default-zone=work
Lors de la modification de la zone par défaut, vous devriez recevoir une sortie indiquant que la modification a réussi. Pour plus de détails, voir l'image ci-dessus.
Vous pouvez également vérifier la modification en exécutant cette commande :
sudo firewall-cmd --get-default-zone
La sortie doit indiquer que la zone de travail est bien celle par défaut.