Port ouvert cmd du pare-feu Centos 7

Installé dans système opérateur Le pare-feu est utilisé pour empêcher le trafic non autorisé de passer entre réseaux informatiques. Des règles spéciales pour le pare-feu sont créées manuellement ou automatiquement, qui sont responsables du contrôle d'accès. Système d'exploitation développé sur le noyau Linux, CentOS 7 dispose d'un pare-feu intégré et est géré à l'aide d'un pare-feu. FirewallD est activé par défaut et nous aimerions parler de sa configuration aujourd'hui.

Comme mentionné ci-dessus, le pare-feu standard de CentOS 7 est l'utilitaire FirewallD. C'est pourquoi la mise en place d'un pare-feu sera abordée en utilisant cet outil comme exemple. Vous pouvez définir des règles de filtrage en utilisant les mêmes iptables, mais cela se fait d'une manière légèrement différente. Nous vous recommandons de vous familiariser avec la configuration de l'utilitaire mentionné en cliquant sur le lien suivant, et nous commencerons à analyser FirewallD.

Bases du pare-feu

Il existe plusieurs zones - des ensembles de règles pour gérer le trafic basé sur la confiance dans les réseaux. Tous disposent de leurs propres politiques, dont la totalité constitue la configuration du pare-feu. Chaque zone se voit attribuer une ou plusieurs interfaces réseau, ce qui permet également d'ajuster le filtrage. Les règles appliquées dépendent directement de l'interface utilisée. Par exemple, lorsque vous êtes connecté à un réseau Wi-Fi public pare-feu augmentera le niveau de contrôle, et en réseau domestique ouvrira un accès supplémentaire pour les participants à la chaîne. Le pare-feu en question contient les zones suivantes :

  • fiable — niveau de confiance maximum dans tous les périphériques réseau ;
  • accueil - groupe réseau local. Il y a de la confiance dans l'environnement, mais les connexions entrantes ne sont disponibles que pour certaines machines ;
  • travail - zone de travail. La plupart des appareils font confiance et des services supplémentaires sont activés ;
  • dmz est une zone pour les ordinateurs isolés. Ces appareils sont déconnectés du reste du réseau et n’autorisent qu’un certain trafic entrant ;
  • interne — zone de réseaux internes. La confiance est appliquée à toutes les machines, des services supplémentaires sont ouverts ;
  • externe — zone inversée par rapport à la précédente. Dans les réseaux externes, le masquage NAT est actif, fermant le réseau interne, mais ne bloquant pas la possibilité d'y accéder ;
  • public - une zone de réseaux publics avec méfiance à l'égard de tous les appareils et réception individuelle du trafic entrant ;
  • bloquer - toutes les demandes entrantes sont réinitialisées avec une erreur envoyée icmp-host-interdit ou icmp6-adm-interdit;
  • drop - niveau de confiance minimum. Les connexions entrantes sont interrompues sans aucune notification.

Les politiques elles-mêmes peuvent être temporaires ou permanentes. Lorsque les paramètres apparaissent ou sont modifiés, l'action du pare-feu change immédiatement sans qu'il soit nécessaire de redémarrer. Si des règles temporaires ont été appliquées, elles seront réinitialisées après le redémarrage de FirewallD. C'est ainsi qu'on appelle la règle permanente : elle sera préservée pendant sur base permanente lors de l'utilisation de l'argument -permanent.

Activation du pare-feuD

Vous devez d’abord démarrer FirewallD ou vous assurer qu’il est dans un état actif. Seul un démon fonctionnel (un programme exécuté dans arrière-plan) appliquera les règles de pare-feu. L'activation se fait en quelques clics :

  1. Lancer le classique "Terminal" toute méthode pratique, par exemple via le menu "Applications".
  2. Entrez la commande sudo systemctl start firewalld.service et appuyez sur la touche Entrer.
  3. L'utilitaire est géré au nom du superutilisateur, vous devrez donc confirmer votre authenticité en saisissant un mot de passe.
  4. Pour vous assurer que le service fonctionne, spécifiez firewall-cmd --state .
  5. Dans l'ouvert fenêtre graphique ré-authentifier.
  6. Une nouvelle ligne s'affichera. Signification "en cours d'exécution" indique que le pare-feu fonctionne.

Si jamais vous devez désactiver temporairement ou définitivement le pare-feu, nous vous recommandons d'utiliser les instructions présentées dans notre autre article sur le lien suivant.

Afficher les règles par défaut et les zones disponibles

Même un pare-feu fonctionnant normalement a ses propres règles spécifiques et zones accessibles. Avant de commencer à modifier les stratégies, nous vous recommandons de vous familiariser avec la configuration actuelle. Cela se fait à l'aide de commandes simples :

  1. La commande firewall-cmd --get-default-zone vous aidera à déterminer la zone par défaut.
  2. Après l'avoir activé, vous verrez une nouvelle ligne où le paramètre requis sera affiché. Par exemple, dans la capture d'écran ci-dessous, la zone est considérée comme active "publique".
  3. Cependant, plusieurs zones peuvent être actives à la fois et elles sont associées à une interface distincte. Découvrez ces informations via firewall-cmd --get-active-zones .
  4. La commande firewall-cmd --list-all affichera les règles configurées pour la zone par défaut. Jetez un œil à la capture d’écran ci-dessous. Vous voyez que la zone active "publique" règle attribuée "défaut"- fonctionnement par défaut, interface "enp0s3" et deux services ont été ajoutés.
  5. Si vous souhaitez connaître toutes les zones de pare-feu disponibles, saisissez firewall-cmd --get-zones .
  6. Les paramètres d'une zone spécifique sont déterminés via firewall-cmd --zone=name --list-all , où nom— nom de la zone.

Après avoir déterminé les paramètres nécessaires, vous pouvez procéder à leur modification et à leur ajout. Examinons de plus près quelques-unes des configurations les plus populaires.

Configuration des zones d'interface

Comme vous le savez grâce aux informations ci-dessus, chaque interface possède sa propre zone par défaut. Il y restera jusqu'à ce que les paramètres soient modifiés par l'utilisateur ou par programme. Il est possible de transférer manuellement une interface vers une zone pour une session, et cela se fait en activant la commande sudo firewall-cmd --zone=home --change-interface=eth0 . Résultat "succès" indique que le transfert a réussi. Rappelons que ces paramètres sont réinitialisés immédiatement après le redémarrage du pare-feu.

Lorsque vous modifiez des paramètres comme celui-ci, vous devez tenir compte du fait que les services peuvent être réinitialisés. Certains d'entre eux ne prennent pas en charge le fonctionnement dans certaines zones, par exemple, bien que SSH soit disponible dans "maison", mais dans les cas personnalisés ou spéciaux, le service refusera de fonctionner. Vous pouvez vérifier que l'interface a été liée avec succès à la nouvelle branche en entrant firewall-cmd --get-active-zones .

Si vous souhaitez réinitialiser vos paramètres précédemment définis, redémarrez simplement le pare-feu : sudo systemctl restart firewalld.service .

Parfois, il n'est pas toujours pratique de changer la zone d'interface pour une seule session. Dans ce cas, vous devrez modifier le fichier de configuration afin que tous les paramètres soient saisis de manière permanente. Pour ce faire, nous vous recommandons d'utiliser un éditeur de texte nano, qui est installé à partir du référentiel officiel avec sudo yum install nano . Ensuite, il ne reste plus qu'à procéder comme suit :

  1. Ouvrez le fichier de configuration via un éditeur en tapant sudo nano /etc/sysconfig/network-scripts/ifcfg-eth0 , où eth0— le nom de l'interface requise.
  2. Confirmer l'authenticité compte pour effectuer d'autres actions.
  3. Trouver le paramètre "ZONE" et remplacez sa valeur par celle souhaitée, par exemple, public ou home .
  4. Maintenez les touches enfoncées Ctrl+O pour enregistrer les modifications.
  5. Ne changez pas le nom du fichier, cliquez simplement sur Entrer.
  6. Sortie éditeur de texteà travers Ctrl+X.

Désormais, la zone d'interface sera telle que vous l'avez spécifiée jusqu'à la prochaine fois que vous modifierez le fichier de configuration. Pour que les paramètres mis à jour prennent effet, exécutez sudo systemctl restart network.service et sudo systemctl restart firewalld.service .

Définition de la zone par défaut

Ci-dessus, nous avons déjà démontré une commande qui nous permettait de connaître la zone par défaut. Il peut également être modifié en définissant un paramètre de votre choix. Pour ce faire, tapez simplement sudo firewall-cmd --set-default-zone=name dans la console, où nom— nom de la zone requise.

Le succès de la commande sera indiqué par l'inscription "succès" sur une ligne séparée. Après cela, toutes les interfaces actuelles seront liées à la zone spécifiée, sauf indication contraire dans les fichiers de configuration.

Création de règles pour les programmes et utilitaires

Au tout début de l'article, nous avons parlé de l'action de chaque zone. La définition de services, d'utilitaires et de programmes dans ces branches vous permettra d'appliquer des paramètres individuels pour chacun d'eux en fonction des besoins de chaque utilisateur. Pour commencer, nous vous recommandons de vous familiariser avec la liste complète de ceux disponibles sur ce moment services : pare-feu-cmd --get-services .

Le résultat sera affiché directement dans la console. Chaque serveur est séparé par un espace, et vous pourrez facilement retrouver l'outil qui vous intéresse dans la liste. Si le service requis n'est pas disponible, il doit être installé en plus. Découvrez les règles d'installation dans la documentation officielle du logiciel.

La commande ci-dessus affiche uniquement les noms de services. Des informations détaillées sur chacun d'eux sont obtenues via un fichier individuel situé le long du chemin /usr/lib/firewalld/services. Ces documents sont au format XML, le chemin, par exemple, vers SSH ressemble à ceci : /usr/lib/firewalld/services/ssh.xml, et le document a le contenu suivant :

SSH
Secure Shell (SSH) est un protocole permettant de se connecter et d'exécuter des commandes sur des machines distantes. Il fournit des communications cryptées sécurisées. Si vous prévoyez d'accéder à votre machine à distance via SSH sur une interface avec pare-feu, activez cette option. Vous devez installer le package openssh-server pour que cette option soit utile.

Le support de service dans une zone spécifique est activé manuellement. DANS "Terminal" vous devez émettre la commande sudo firewall-cmd --zone=public --add-service=http , où --zone=public- zone d'activation, et --add-service=http— nom du service. Veuillez noter qu'un tel changement ne s'appliquera que sur une seule session.

L'ajout permanent se fait via sudo firewall-cmd --zone=public --permanent --add-service=http , et le résultat "succès" indique la réussite de l’opération.

Voir liste complète Vous pouvez créer des règles permanentes pour une zone spécifique en affichant la liste dans une ligne de console distincte : sudo firewall-cmd --zone=public --permanent --list-services .

Résoudre le problème du manque d'accès au service

Par défaut, les règles de pare-feu répertorient les services les plus populaires et les plus sécurisés comme autorisés, mais certains services standards ou applications tierces il bloque. Dans ce cas, l'utilisateur devra modifier manuellement les paramètres pour résoudre le problème d'accès. Cela peut être fait de deux manières différentes.

Redirection de port

Comme vous le savez, tous les services réseau utilisent un port spécifique. Il est facilement détecté par le pare-feu et le blocage peut être effectué à l'aide de celui-ci. Pour éviter de telles actions de la part du pare-feu, vous devez ouvrir le port requis avec la commande sudo firewall-cmd --zone=public --add-port=0000/tcp , où --zone=public- zone portuaire, --add-port=0000/tcp— numéro de port et protocole. L'option firewall-cmd --list-ports affichera une liste des ports ouverts.

Si vous devez ouvrir des ports inclus dans la plage, utilisez la ligne sudo firewall-cmd --zone=public --add-port=0000-9999/udp , où --add-port=0000-9999/udp— gamme de ports et leur protocole.

Les commandes ci-dessus vous permettront uniquement de tester l'utilisation de ces paramètres. Si cela réussit, vous devez ajouter les mêmes ports aux paramètres permanents, et cela se fait en entrant sudo firewall-cmd --zone=public --permanent --add-port=0000/tcp ou sudo firewall-cmd -- zone=public --permanent --add-port=0000-9999/udp . La liste des ports permanents ouverts s'affiche comme ceci : sudo firewall-cmd --zone=public --permanent --list-ports .

Définition des services

Comme vous pouvez le constater, l'ajout de ports ne pose aucune difficulté, mais la procédure devient plus compliquée lorsqu'un grand nombre d'applications sont utilisées. Il devient difficile de suivre tous les ports utilisés, une meilleure option serait donc de définir le service :


Il vous suffit de choisir la méthode la plus appropriée pour résoudre les problèmes d'accès au service et de suivre les instructions fournies. Comme vous pouvez le constater, toutes les actions sont effectuées assez facilement et aucune difficulté ne devrait survenir.

Création de zones personnalisées

Vous savez déjà que FirewallD a initialement créé un grand nombre de zones différentes avec certaines règles. Cependant, il existe des situations où administrateur du système vous devez créer une zone personnalisée, telle que "publicweb" pour un serveur Web installé ou "DNS privé"- pour le serveur DNS. À l’aide de ces deux exemples, nous examinerons l’ajout de branches :


Dans cet article, vous avez appris à créer des zones personnalisées et à y ajouter des services. Nous avons déjà parlé plus haut de leur configuration par défaut et de l'attribution des interfaces ; il suffit d'indiquer les noms corrects. N'oubliez pas de redémarrer votre pare-feu après avoir apporté des modifications permanentes.

Comme vous pouvez le constater, le pare-feu FirewallD est un outil assez complet qui permet de créer la configuration de pare-feu la plus flexible. Il ne reste plus qu'à s'assurer que l'utilitaire démarre avec le système et que les règles spécifiées commencent immédiatement leur travail. Faites-le avec la commande sudo systemctl activate firewalld.

La première étape pour protéger le serveur contre les menaces externes est un pare-feu, qui filtre le trafic entrant et sortant. Dans cet article, je souhaite discuter de la configuration d'iptables, un cas particulier de pare-feu sur CentOS, et également parler de son installation et de sa désactivation. Mon guide ne sera pas exhaustif, je ne considérerai que les aspects que je considère comme les plus importants et que j'utilise moi-même dans mon travail.

Cet article fait partie d’une seule série d’articles sur le serveur.

Introduction

Iptables est actuellement le standard de facto parmi les distributions Linux modernes. Je ne me souviens même pas d’emblée de ce qui est utilisé comme pare-feu. Ainsi, tout administrateur Linux doit gérer la configuration de ce pare-feu dans son travail.

Il existe différentes connexions à ce pare-feu qui sont utilisées pour une configuration plus « pratique ». Ubuntu a ouf, en centos - pare-feu, je ne connais pas les autres. Personnellement, je ne vois aucune commodité à utiliser ces outils. J'ai l'habitude de configurer un pare-feu Linux à l'ancienne, comme je l'ai appris au tout début de mon travail. Je pense que c'est le moyen le plus simple et le plus pratique que je partagerai avec vous. Son essence se résume au fait qu'un script est créé avec des règles de pare-feu. Ce script peut être facilement modifié en fonction de vos besoins et transféré de serveur en serveur.

Désactivation du pare-feu

J'ai déjà abordé la question de la désactivation de pare-feu dans le sujet . Tout d'abord, désactivons firewalld, qui est présent par défaut dans centos 7 immédiatement après l'installation :

# systemctl arrête le pare-feu

Maintenant, supprimons-le du démarrage afin qu'il ne se rallume plus après un redémarrage :

# systemctl désactive le pare-feu

Après cela, les paramètres du pare-feu sur le serveur deviennent complètement ouverts. Vous pouvez afficher les règles iptables avec la commande :

Installer iptables

En fait, nous avons déjà un pare-feu sur notre serveur et il fonctionne, il n’y a tout simplement pas de règles, tout est ouvert. Nous devrons installer des utilitaires de gestion supplémentaires, sans lesquels il est impossible de configurer iptables. Par exemple, il ne sera pas possible de redémarrer le pare-feu :

# systemctl restart iptables.service Échec de l'émission de l'appel de méthode : l'unité iptables.service n'a pas pu être chargée : aucun fichier ou répertoire de ce type.

Ou vous ne pourrez pas l'ajouter à l'exécution automatique :

# systemctl activate iptables.service Échec de l'appel de méthode : aucun fichier ou répertoire de ce type

Pour éviter de telles erreurs, installez le package nécessaire avec les utilitaires :

# miam -y installer les services iptables

Vous pouvez maintenant ajouter iptables au démarrage et exécuter :

# systemctl active iptables.service # systemctl démarre iptables.service

Mise en place d'un pare-feu

J'utilise un script pour gérer les règles de pare-feu. Créons-le :

# mcedit /etc/iptables.sh

Ensuite, nous le remplirons avec les règles nécessaires. J'analyserai toutes les parties importantes du script, et Je le donnerai intégralement sous la forme fichier texteà la fin de l'article. Les règles sont réalisées sous forme d’images pour interdire le copier-coller. Cela peut conduire à des erreurs dans le fonctionnement des règles, que j'ai moi-même rencontrées lors de la préparation de l'article.

Nous considérerons une situation où le serveur est une passerelle vers Internet pour un réseau local.

Tout d'abord, définissons toutes les variables que nous utiliserons dans le script. Cela n'est pas nécessaire, mais est recommandé car cela est pratique pour transférer les paramètres d'un serveur à l'autre. Il suffira simplement de réaffecter les variables.

Avant d'appliquer les nouvelles règles, nous effaçons toutes les chaînes :

Nous bloquons tout le trafic qui ne correspond à aucune des règles :

Autoriser tout le trafic localhost et local :

Nous autorisons le ping :

Si vous n'en avez pas besoin, n'ajoutez pas de règles d'autorisation pour icmp.

Nous ouvrons l'accès Internet au serveur lui-même :

Si vous souhaitez ouvrir toutes les connexions serveur entrantes, ajoutez la règle suivante :

Ajoutons maintenant une protection contre les attaques réseau les plus courantes. Tout d’abord, supprimons tous les paquets qui n’ont aucun statut :

Blocage des paquets nuls :

Se protéger des attaques syn-flood :

Si vous ne définissez pas de restrictions d'accès depuis le réseau local, nous permettons à tout le monde d'accéder à Internet :

Ensuite, nous interdisons l'accès depuis Internet au réseau local :

Pour que notre réseau local utilise Internet, nous permettons à nat :

Afin de ne pas perdre l'accès au serveur, après application des règles, nous autorisons les connexions via ssh :

Et à la fin on note les règles pour qu'elles s'appliquent après un redémarrage :

Nous avons compilé une configuration simple qui bloque toutes les connexions entrantes sauf ssh et permet l'accès du réseau local à Internet. Dans le même temps, nous nous sommes protégés de certaines attaques de réseau.

Enregistrez le script, rendez-le exécutable et exécutez :

# chmod 0740 /etc/iptables.sh # /etc/iptables.sh

Passons en revue les règles et vérifions si toutes les règles sont en place :

# iptables -L -v -n

Veuillez noter que vous ne devez appliquer les règles que si vous avez accès à la console du serveur. S'il y a une erreur dans les paramètres, vous risquez de perdre l'accès. Assurez-vous qu'en cas d'urgence, vous pouvez désactiver le pare-feu et ajuster les paramètres.

Ouverture des ports

Étendons maintenant un peu notre configuration et ouvrons des ports dans iptables pour certains services. Disons que nous avons un serveur Web en cours d'exécution et que nous devons y ouvrir l'accès depuis Internet. Ajoutez des règles pour le trafic Web :

Une autorisation a été ajoutée pour les connexions entrantes sur les ports 80 et 443, que le serveur Web utilise dans son travail.

Si vous avez installé serveur de courrier, vous devez alors autoriser les connexions entrantes sur tous les ports utilisés :

Pour un fonctionnement correct Serveurs DNS, vous devez ouvrir le port UDP 53

Redirection de port

Considérons une situation dans laquelle il est nécessaire de rediriger les ports d'une interface externe vers un ordinateur du réseau local. Disons que vous devez obtenir accès RDPà l'ordinateur 10.1.3.50 depuis Internet. Nous transmettons le port TCP 3389 :

Si vous ne souhaitez pas exposer un port connu de l'extérieur, vous pouvez rediriger depuis un port non standard vers le port rdp de l'ordinateur cible :

Si vous transférez un port de l'extérieur vers le réseau local, veillez à commenter la règle qui bloque l'accès du réseau externe au réseau interne. Dans mon exemple, cette règle est : $IPT -A FORWARD -i $WAN -o $LAN1 -j REJECT

Ou avant cette règle, créez une règle d'autorisation pour l'accès externe au service interne, par exemple comme ceci :

$IPT -A FORWARD -i $WAN -d 10.1.3.50 -p tcp -m tcp --dport 3389 -j ACCEPTER

Activation des journaux

Lors de l'installation, il est utile d'activer les journaux pour surveiller les packages bloqués et découvrir pourquoi il n'y a pas d'accès aux services nécessaires que nous semblons avoir déjà ouverts. J'envoie tous les paquets bloqués à des chaînes distinctes (block_in, block_out, block_fw) correspondant au sens du trafic et marque chaque sens dans les journaux. Cela rend plus pratique le débriefing. Ajoutez les règles suivantes à la toute fin du script, avant d'enregistrer les paramètres :

Vous pouvez suivre tous les packages bloqués dans le fichier /var/log/messages.

Une fois la configuration terminée, commentez ces lignes et désactivez la journalisation. Cela vaut vraiment la peine, car les journaux augmentent très rapidement. Personnellement, je ne vois aucun sens pratique à stocker de telles informations.

Comment désactiver iptables

Si vous décidez soudainement que vous n'avez plus besoin du pare-feu, vous pouvez le désactiver comme suit :

# systemctl arrête iptables.service

Cette commande arrête le pare-feu. Et ce qui suit le supprime du démarrage :

# systemctl désactive iptables.service

En désactivant le pare-feu, nous avons autorisé toutes les connexions.

Conclusion

Comme promis, je publie un script terminé avec l'ensemble des règles de base que nous avons envisagées.

Je voudrais souligner une fois de plus que lors de la configuration d'iptables, vous devez être extrêmement prudent. Ne démarrez pas cette entreprise si vous n'avez pas accès à la console du serveur. Même en écrivant cet article, j'ai perdu l'accès au serveur à cause d'une erreur ridicule dans les règles. Cette erreur est due à une copie et à la perte d'un double tiret - il a été remplacé par un seul.

cours en ligne « Administrateur Linux » chez OTUS. Le cours n'est pas destiné aux débutants ; pour être admis, vous avez besoin de connaissances de base sur les réseaux et Installer Linuxà la machine virtuelle. La formation dure 5 mois, à l'issue desquels les diplômés retenus pourront passer des entretiens avec des partenaires. Ce que ce cours vous apportera :

  • Connaissance de l'architecture Linux.
  • Développement méthodes modernes et outils d’analyse et de traitement des données.
  • Possibilité de sélectionner une configuration pour les tâches requises, de gérer les processus et d'assurer la sécurité du système.
  • Maîtriser les outils de travail de base d'un administrateur système.
  • Compréhension des spécificités du déploiement, de la configuration et de la maintenance des réseaux construits sur Linux.
  • La capacité de résoudre rapidement les problèmes émergents et d'assurer un fonctionnement stable et ininterrompu du système.
Testez-vous au test d'entrée et consultez le programme pour plus de détails.

FirewallD est un outil de gestion de pare-feu disponible par défaut sur les serveurs CentOS 7. Il s'agit essentiellement d'un wrapper autour d'IPTables et est livré avec un outil de configuration graphique, une configuration de pare-feu et un outil de configuration de pare-feu. ligne de commande pare-feu-cmd. Avec le service IPtables, chaque modification nécessite la suppression des anciennes règles et la création de nouvelles règles dans le fichier ` /etc/sysconfig/iptables`, et avec firewalld, seules les différences sont appliquées.

Zones du pare-feu D

FirewallD utilise des services et des zones au lieu de règles et de chaînes dans Iptables. Par défaut, les zones suivantes sont disponibles :

  • baisse– Supprimez tous les paquets réseau entrants sans réponse, uniquement les paquets sortants les connexions de réseau disponible.
  • bloc– Rejetez tous les paquets réseau entrants avec le message icmp-host-prohibited, seules les connexions réseau sortantes sont autorisées.
  • publique– seules les connexions entrantes sélectionnées sont acceptées, pour une utilisation dans les espaces publics
  • externe– Pour les réseaux externes avec masquage, seules les connexions entrantes sélectionnées sont acceptées.
  • dmz– zone démilitarisée DMZ, accessible au public depuis accès limité au réseau interne, seules les connexions entrantes sélectionnées sont acceptées.
  • travail
  • maison– Pour les ordinateurs de la zone d'accueil, seules les connexions entrantes sélectionnées sont acceptées.
  • interne– Pour les ordinateurs de votre réseau interne, seules les connexions entrantes sélectionnées sont acceptées.
  • de confiance– Toutes les connexions réseau sont acceptées.

Pour obtenir une liste de toutes les zones disponibles :

# firewall-cmd --get-zones work drop interne externe maison de confiance bloc public dmz

Pour afficher une liste des zones par défaut :

# pare-feu-cmd --get-default-zone public

Pour modifier la zone par défaut :

Services de pare-feu

Les services FirewallD sont des fichiers de configuration XML contenant des informations d'entrée de service pour firewalld. Pour obtenir une liste de tous les services disponibles :

# firewall-cmd --get-services amanda-client amanda-k5-client bacula bacula-client ceph ceph-mon dhcp dhcpv6 dhcpv6-client dns docker-registry dropbox-lansync freeipa-ldap freeipa-ldaps freeipa-replication ftp haute disponibilité http https imap iMaps ipp ipp ipp-clien ipsec iscsi-target kadmin kerberos kpasswd ldap ldaps libvirt libvirt-tls mdns mosh montd ms-wbt mysql nfs ntp openvpn pmcd pmproxy pmwebapi pmwapis ptp ptp proxy-dhCapis Pop3 POSTRE PulseAudio Puppetmaster Radius RPC-Bind RSyncd samba samba-client sain d'esprit smtp smtps snmp snmptrap squid ssh synergie syslog syslog-tls telnet tftp tftp-client tinc tor-socks transmission-client vdsm vnc-server wbem-https xmpp-bosh xmpp-client xmpp-local xmpp-server

Les fichiers de configuration XML sont stockés dans des répertoires /usr/lib/firewalld/services/ Et /etc/firewalld/services/.

Configurer un pare-feu avec FirewallD

À titre d'exemple, voici comment configurer un pare-feu avec FirewallD si vous exécutez un serveur Web, SSH sur le port 7022 et un serveur de messagerie.

Nous allons d’abord définir la zone par défaut pour DMZ.

# pare-feu-cmd --set-default-zone=dmz # pare-feu-cmd --get-default-zone dmz

Pour ajouter des règles de service persistantes pour HTTP et HTTPS dans la DMZ, exécutez la commande suivante :

# pare-feu-cmd --zone=dmz --add-service=http --permanent # pare-feu-cmd --zone=dmz --add-service=https --permanent

Ouvrez le port 25 (SMTP) et le port 465 (SMTPS) :

Pare-feu-cmd --zone=dmz --add-service=smtp --permanent pare-feu-cmd --zone=dmz --add-service=smtps --permanent

Ports ouverts, IMAP, IMAPS, POP3 et POP3S :

Pare-feu-cmd --zone=dmz --add-service=imap --permanent pare-feu-cmd --zone=dmz --add-service=imaps --permanent pare-feu-cmd --zone=dmz --add-service= pop3 --permanent pare-feu-cmd --zone=dmz --add-service=pop3s --permanent

Puisque le port SSH est remplacé par 7022, nous supprimerons le service SSH (port 22) et ouvrirons le port 7022.

Pare-feu-cmd --remove-service=ssh --permanent pare-feu-cmd --add-port=7022/tcp --permanent

Pour implémenter les modifications, nous devons redémarrer le pare-feu :

Pare-feu-cmd --reload

Enfin, vous pouvez lister les règles.

FirewallD est un outil de gestion de pare-feu disponible par défaut sur les serveurs CentOS 7. Il s'agit essentiellement d'un wrapper autour d'IPTables et est livré avec un outil de configuration graphique, firewall-config, et un outil de ligne de commande, firewall-cmd. Avec le service IPtables, chaque modification nécessite la suppression des anciennes règles et la création de nouvelles règles dans le fichier ` /etc/sysconfig/iptables`, et avec firewalld, seules les différences sont appliquées.

Zones du pare-feu D

FirewallD utilise des services et des zones au lieu de règles et de chaînes dans Iptables. Par défaut, les zones suivantes sont disponibles :

  • baisse– Supprimez tous les paquets réseau entrants sans réponse, seules les connexions réseau sortantes sont disponibles.
  • bloc– Rejetez tous les paquets réseau entrants avec le message icmp-host-prohibited, seules les connexions réseau sortantes sont autorisées.
  • publique– seules les connexions entrantes sélectionnées sont acceptées, pour une utilisation dans les espaces publics
  • externe– Pour les réseaux externes avec masquage, seules les connexions entrantes sélectionnées sont acceptées.
  • dmz– zone démilitarisée DMZ, accessible au public avec un accès limité au réseau interne, seules les connexions entrantes sélectionnées sont acceptées.
  • travail
  • maison– Pour les ordinateurs de la zone d'accueil, seules les connexions entrantes sélectionnées sont acceptées.
  • interne– Pour les ordinateurs de votre réseau interne, seules les connexions entrantes sélectionnées sont acceptées.
  • de confiance– Toutes les connexions réseau sont acceptées.

Pour obtenir une liste de toutes les zones disponibles :

# firewall-cmd --get-zones work drop interne externe maison de confiance bloc public dmz

Pour afficher une liste des zones par défaut :

# pare-feu-cmd --get-default-zone public

Pour modifier la zone par défaut :

Services de pare-feu

Les services FirewallD sont des fichiers de configuration XML contenant des informations d'entrée de service pour firewalld. Pour obtenir une liste de tous les services disponibles :

# firewall-cmd --get-services amanda-client amanda-k5-client bacula bacula-client ceph ceph-mon dhcp dhcpv6 dhcpv6-client dns docker-registry dropbox-lansync freeipa-ldap freeipa-ldaps freeipa-replication ftp haute disponibilité http https imap iMaps ipp ipp ipp-clien ipsec iscsi-target kadmin kerberos kpasswd ldap ldaps libvirt libvirt-tls mdns mosh montd ms-wbt mysql nfs ntp openvpn pmcd pmproxy pmwebapi pmwapis ptp ptp proxy-dhCapis Pop3 POSTRE PulseAudio Puppetmaster Radius RPC-Bind RSyncd samba samba-client sain d'esprit smtp smtps snmp snmptrap squid ssh synergie syslog syslog-tls telnet tftp tftp-client tinc tor-socks transmission-client vdsm vnc-server wbem-https xmpp-bosh xmpp-client xmpp-local xmpp-server

Les fichiers de configuration XML sont stockés dans des répertoires /usr/lib/firewalld/services/ Et /etc/firewalld/services/.

Configurer un pare-feu avec FirewallD

À titre d'exemple, voici comment configurer un pare-feu avec FirewallD si vous exécutez un serveur Web, SSH sur le port 7022 et un serveur de messagerie.

Nous allons d’abord définir la zone par défaut pour DMZ.

# pare-feu-cmd --set-default-zone=dmz # pare-feu-cmd --get-default-zone dmz

Pour ajouter des règles de service persistantes pour HTTP et HTTPS dans la DMZ, exécutez la commande suivante :

# pare-feu-cmd --zone=dmz --add-service=http --permanent # pare-feu-cmd --zone=dmz --add-service=https --permanent

Ouvrez le port 25 (SMTP) et le port 465 (SMTPS) :

Pare-feu-cmd --zone=dmz --add-service=smtp --permanent pare-feu-cmd --zone=dmz --add-service=smtps --permanent

Ports ouverts, IMAP, IMAPS, POP3 et POP3S :

Pare-feu-cmd --zone=dmz --add-service=imap --permanent pare-feu-cmd --zone=dmz --add-service=imaps --permanent pare-feu-cmd --zone=dmz --add-service= pop3 --permanent pare-feu-cmd --zone=dmz --add-service=pop3s --permanent

Puisque le port SSH est remplacé par 7022, nous supprimerons le service SSH (port 22) et ouvrirons le port 7022.

Pare-feu-cmd --remove-service=ssh --permanent pare-feu-cmd --add-port=7022/tcp --permanent

Pour implémenter les modifications, nous devons redémarrer le pare-feu :

Pare-feu-cmd --reload

Enfin, vous pouvez lister les règles.

À partir de CentoOS 7, un nouvel outil est apparu pour configurer les règles de filtrage du trafic pare-feu. Il est recommandé de l'utiliser pour gérer les règles iptables. Dans CentOS 8, au lieu du package de filtrage iptables standard, le framework nftables est désormais utilisé, et lorsque vous configurez les règles de pare-feu via firewalld, vous configurez en fait nftables. Dans cet article, nous examinerons l'installation, les concepts de base et la configuration de firewalld sur un serveur exécutant CentOS 8 (CentOS 7 est le même).


Pare-feuD– un pare-feu pour protéger le serveur du trafic indésirable avec la prise en charge de la gestion dynamique des règles (sans redémarrage) et la mise en place de règles de pare-feu permanentes. Fonctionne comme une interface pour et nftables. FirewallD peut être utilisé sur presque toutes les distributions Linux.

Concepts, zones et règles de base du pare-feu

Avant de commencer l'installation et la configuration pare-feu, nous présenterons le concept de zones, qui sont utilisées pour déterminer le niveau de confiance dans diverses connexions. Pour différentes zones pare-feu vous pouvez appliquer diverses règles de filtrage, préciser options actives pare-feu sous forme de services, protocoles et ports prédéfinis, redirection de port et règles riches.

Pare-feu filtre le trafic entrant par zone en fonction des règles appliquées à la zone. Si PI- l'adresse de l'expéditeur de la requête correspond aux règles d'une certaine zone, alors le paquet sera envoyé via cette zone. Si l'adresse ne correspond à aucune des zones configurées sur le serveur, le paquet sera traité par la zone par défaut. Lors de l'installation pare-feu la zone par défaut est appelée publique.

Firewalld comporte des zones préconfigurées avec des autorisations pour divers services. Vous pouvez utiliser ces paramètres ou créer vos propres zones. Liste des zones par défaut créées lors de l'installation de firewalld (stockées dans le répertoire /usr/lib/firewalld/zones/) :

baisse niveau minimum de confiance. Toutes les connexions entrantes sont bloquées sans réponse, seules les connexions sortantes sont autorisées ;
bloc la zone est similaire à la précédente, mais lorsque les demandes entrantes sont rejetées, le message icmp-host-prohibited pour Ipv4 ou icmp6-adm-prohibited pour Ipv6 est envoyé ;
publique représente des réseaux publics et non fiables. Vous pouvez autoriser les connexions entrantes sélectionnées sur une base individuelle ;
externe réseaux externes lors de l'utilisation d'un pare-feu comme passerelle. Il est configuré pour le masquage NAT afin que votre réseau interne reste privé mais accessible ;
interne Antonyme de zone externe. L'hébergeur a un niveau de confiance suffisant, un certain nombre de services supplémentaires sont disponibles ;
dmz utilisé pour les ordinateurs situés dans une DMZ (ordinateurs isolés sans accès au reste du réseau). Seules certaines connexions entrantes sont autorisées ;
travail zone pour les machines de travail (la plupart des ordinateurs du réseau sont fiables) ;
maison zone du réseau domestique. La plupart des PC sont fiables, mais seules certaines connexions entrantes sont prises en charge ;
de confiance faites confiance à toutes les machines du réseau. La plus ouverte de toutes les options disponibles, elle nécessite une utilisation consciente.

DANS pare-feu deux ensembles de règles sont utilisés – permanent et temporaire. Les règles temporaires fonctionnent jusqu'au redémarrage du serveur. Par défaut, lors de l'ajout de règles à pare-feu, les règles sont considérées comme temporaires ( Durée). Pour ajouter une règle de manière permanente, vous devez utiliser le flag - permanent. Ces règles seront appliquées après le redémarrage du serveur.

Installation et activation de pare-feu sur CentOS

Dans CentOS 7/8, firewalld est installé par défaut avec le système d'exploitation. Si vous l'avez supprimé et souhaitez installer firewalld, vous pouvez utiliser le gestionnaire /dnf standard :

# miam, installez firewalld -y - pour Centos 7
# dnf install firewalld -y - pour Centos 8

Au démon pare-feu démarré automatiquement au démarrage du serveur, vous devez l'ajouter à :

# systemctl active le pare-feu

Et courir:

# systemctl démarre pare-feu

Vérifier l'état du service :

# systemctl statut pare-feu

● firewalld.service - firewalld - démon de pare-feu dynamique Chargé : chargé (/usr/lib/systemd/system/firewalld.service ; activé ; préréglage du fournisseur : activé) Actif : actif (en cours d'exécution) depuis le lundi 2019-10-14 14:54 :40 +06; Il y a 22 s Docs : man:firewalld(1) PID principal : 13646 (firewalld) CGroup : /system.slice/firewalld.service └─13646 /usr/bin/python2 -Es /usr/sbin/firewalld --nofork --nopid 14 octobre 14:54:40 server.vpn.ru systemd : Démarrage de firewalld - démon de pare-feu dynamique... 14 octobre 14:54:40 server.vpn.ru systemd : Démarrage de firewalld - démon de pare-feu dynamique.

Ou avec la commande :

# pare-feu-cmd --state

La commande pare-feu-cmd est une interface pare-feu pour nftables/iptables.

# pare-feu-cmd --state

Travailler avec des règles de pare-feu

Règles par défaut :

Avant de configurer les règles firewalld, vous devez vérifier quelle zone est utilisée par défaut :

# pare-feu-cmd --get-default-zone

Puisque nous venons d'installer firewalld et que nous ne l'avons pas encore configuré, nous avons une zone par défaut publique.

Vérifions la zone active. Il y en a aussi un - public :

# pare-feu-cmd --get-active-zones

Interfaces publiques : eth0

Comme vous pouvez le voir, l'interface réseau eth0 est contrôlée par la zone publique.

Pour afficher les règles de base, saisissez :

# pare-feu-cmd --list-all

Cible publique (active) : inversion de bloc icmp par défaut : aucune interface : sources eth0 : services : dhcpv6-client ports ssh : protocoles : mascarade : pas de ports de transfert : ports source : blocs icmp : règles riches :

Dans la liste, vous pouvez voir que les opérations habituelles liées au client DHCP et à ssh ont été ajoutées à cette zone.

Zones disponibles

Pour afficher une liste de toutes les zones, vous devez exécuter la commande :

# pare-feu-cmd --get-zones

J'ai obtenu la liste suivante :

Bloquer DMZ et supprimer le travail de confiance public interne de la maison externe

Pour vérifier les règles d'une zone spécifique, vous devez ajouter le drapeau - zone.

# pare-feu-cmd --zone=home --list-all

Cible d'accueil : icmp-block-inversion par défaut : pas d'interfaces : sources : services : dhcpv6-client mdns samba-client ports ssh : protocoles : mascarade : pas de ports de transfert : ports source : icmp-blocks : règles riches :

Les règles de toutes les zones peuvent être consultées avec la commande :

# pare-feu-cmd --list-all-zones

La liste sera assez grande, car il peut y avoir plusieurs zones.

Changez la zone par défaut.

Par défaut c'est tout Interfaces réseau situé dans la zone publique, mais ils peuvent être transférés vers n'importe quelle zone avec la commande :

# pare-feu-cmd --zone=home -change-interface=eth0

Après le paramètre --zone= indiquer la zone souhaitée.

Pour changer la zone par défaut, vous devez utiliser la commande :

# pare-feu-cmd --set-default-zone=accueil

Ajout de règles d'application

Pour ouvrir un port pour une application, vous pouvez ajouter un service aux exceptions. Afficher une liste des services disponibles :

La sortie contiendra un grand nombre de services. des informations détaillées sur le service est contenu dans son XML déposer. Ces fichiers se trouvent dans le répertoire /usr/lib/firewalld/services.

Par exemple:

# cd /usr/lib/firewalld/services

Courrier (SMTP) Cette option permet la livraison du courrier SMTP entrant. Si vous devez autoriser les hôtes distants à se connecter directement à votre ordinateur pour distribuer le courrier, activez cette option. Vous n'avez pas besoin de l'activer si vous récupérez votre courrier depuis le serveur de votre FAI par POP3 ou IMAP, ou si vous utilisez un outil tel que fetchmail. Notez qu'un SMTP mal configuré le serveur peut autorisez les machines distantes à utiliser votre serveur pour envoyer du spam.

Le fichier XML contient une description du service, du protocole et du numéro de port qui sera ouvert dans firewalld.

Lors de l'ajout de règles, vous pouvez utiliser le paramètre --ajouter-un service pour ouvrir l'accès à un service spécifique :

# pare-feu-cmd --zone=public --add-service=http

# pare-feu-cmd --zone=public --add-service=https

Après avoir ajouté des règles, vous pouvez vérifier si des services ont été ajoutés à la zone spécifiée :

# pare-feu-cmd --zone=public --list-services

Client Dhcpv6 http https ssh

Si vous souhaitez rendre ces règles permanentes, vous devez ajouter le paramètre lors de l'ajout -permanent.

Pour supprimer un service d'une zone :

# pare-feu-cmd --permanent --zone=public --remove-service=http

Test ssh https du client Dhcpv6

Si vous souhaitez ajouter votre service aux exceptions, vous pouvez créer un fichier XML vous-même et remplissez-le. Vous pouvez copier les données de n'importe quel service, modifier le nom, la description et le numéro de port.

Copions le fichier smtp.xml au répertoire pour travailler avec les services utilisateur :

# cp /usr/lib/firewalld/services/smtp.xml /etc/firewalld/services

Modifiez la description du service dans le fichier.

Moi-même fichier XML Vous devez également le renommer par le nom de votre service. Après cela, vous devez redémarrer firewalld et vérifier si notre service est dans la liste :

j'ai appelé le service test et il est apparu dans la liste :

Syslog-tls telnet test tftp

Vous pouvez maintenant ajouter le service créé à n'importe quelle zone :

# pare-feu-cmd --zone=public --add-service=test --permanent

# pare-feu-cmd --zone=public --permanent --list-services

Test ssh http https ssh du client Dhcpv6

Si vous n'avez pas trouvé le service dont vous avez besoin dans la liste, vous pouvez ouvrir le port requis sur firewalld avec la commande :

# firewall-cmd --zone=public -add-port=77/tcp - ouvrir le port 77 tcp
# firewall-cmd --zone=public -add-port=77/udp - ouvrir le port 77 UDP
# firewall-cmd --zone=public -add-port=77-88/udp - plage de ports ouverte 77-88 UDP
# firewall-cmd --zone=public -list-ports - vérifiez la liste des ports autorisés

Bloquer/autoriser les réponses ICMP :

# firewall-cmd --zone=public --add-icmp-block=echo-reply
# firewall-cmd --zone= public --remove-icmp-block=echo-reply

Supprimer le port ajouté :

# firewall-cmd --zone=public -remove-port=77/udp - supprime la règle temporaire 77 UDP

# firewall-cmd --permanent --zone=public -remove-port=77/udp - supprimer la règle permanente

Ajouter vos propres zones

Vous pouvez créer votre propre zone (je l'appellerai notre):

# firewall-cmd --permanent --new-zone=notre

Après avoir créé une nouvelle zone, ainsi qu'après avoir créé un service, un redémarrage est requis pare-feu:

# pare-feu-cmd --reload

# pare-feu-cmd --get-zones

Bloquer dmz drop externe à la maison interne notre travail public approuvé

Zone notre disponible. Vous pouvez y ajouter des services ou ouvrir des ports spécifiques.

Firewalld : bloquer les adresses IP, créer des exceptions

Vous pouvez ajouter des adresses IP de confiance aux exceptions du pare-feu ou bloquer celles indésirables.

Pour en ajouter un spécifique aux exceptions adresse IP(par exemple 8.8.8.8) sur votre serveur via pare-feu, utilisez la commande :

# firewall-cmd --zone=public --add-rich-rule="famille de règles="ipv4" adresse source="8.8.8.8" accepter"

Vérifiez la zone et assurez-vous PI ajouté aux exceptions dans les règles riches :

Cible publique (active) : icmp-block-inversion par défaut : pas d'interfaces : eth0 sources : services : dhcpv6-client http https ssh ports de test : protocoles : mascarade : pas de ports de transfert : ports source : icmp-blocks : règles riches : famille de règles = "ipv4" adresse source = "8.8.8.8" accepter

Bloquer PI, il faut remplacer accepter sur rejeter:

# firewall-cmd --zone=public --add-rich-rule="famille de règles="ipv4" adresse source="8.8.4.4" rejeter"

# pare-feu-cmd --zone=public --list-all

Cible publique (active) : icmp-block-inversion par défaut : pas d'interfaces : eth0 sources : services : dhcpv6-client http https ssh ports de test : protocoles : mascarade : pas de ports de transfert : ports source : icmp-blocks : règles riches : famille de règles = "ipv4" adresse source = "8.8.8.8" accepter famille de règles = "ipv4" adresse source = "8.8.4.4" rejeter

Vous pouvez autoriser un service spécifique uniquement pour les demandes provenant d'une adresse IP spécifique :

#firewall-cmd --permanent --add-rich-rule "famille de règles="ipv4" adresse source="10.10.1.0/24" nom du service="https" accepter"

Si vous avez un besoin urgent de bloquer toutes les requêtes adressées au serveur, utilisez la commande panic :

# pare-feu-cmd --panic-on

Vous pouvez désactiver le mode panique soit avec la commande :

# pare-feu-cmd --panic-off

Ou en redémarrant le serveur.

Vous pouvez bloquer la configuration de firewalld afin que les services locaux avec droits root Impossible de modifier les règles de pare-feu que vous avez créées :

# pare-feu-cmd --lockdown-on

Désactivez le mode de blocage :

# pare-feu-cmd --lockdown-off

Redirection de port dans pare-feu

Vous pouvez créer une règle de redirection de port dans firewalld. Pour transférer le port 443 vers 9090 :

# firewall-cmd --zone=public --add-forward-port=port=443:proto=tcp:toport=9090 --permanent

Pour supprimer une règle de redirection de port :

# firewall-cmd --zone=public --remove-forward-port=port=443:proto=tcp:toport=9090




Haut