GNU/Linux >> Tutoriels Linux >  >> Linux

Guide du débutant sur le pare-feu sous Linux

Notre monde n'a jamais été aussi connecté qu'il ne l'est actuellement. Chaque personne, entreprise, gouvernement, etc. utilise le Web pour communiquer, échanger des devises et des données, et généralement suivre les mouvements de la vie quotidienne et des opérations. Cependant, ces connexions ne sont pas intrinsèquement sûres et, pour cette raison, nous devons mettre en place des mesures défensives pour protéger notre emplacement, nos informations et notre argent. Autrefois, lorsque quelqu'un voulait sécuriser ses biens, il érigeait des portes et des clôtures pour tenir les intrus à distance. Aujourd'hui, nous atteignons ces mêmes objectifs grâce à l'utilisation de pare-feux. La plupart des systèmes Linux utilisaient iptables utilitaire, cependant, une nouvelle technologie pointait à l'horizon.

Avec l'introduction de Red Hat Enterprise Linux 7.0 (RHEL) en 2011, iptables a été remplacé en tant que firewalld est né. À la base, firewalld est un pare-feu basé sur une zone. Les pare-feux basés sur des zones sont des systèmes de sécurité réseau qui surveillent le trafic et prennent des mesures en fonction d'un ensemble de règles définies appliquées aux paquets entrants/sortants.

Tout sur les zones

Firewalld fournit différents niveaux de sécurité pour différentes zones de connexion. Une zone est associée à au moins une interface réseau (eth0 , par exemple). Nous voyons les zones préconfigurées en utilisant la commande suivante :

[tcarrigan@server ~]$ firewall-cmd --get-zones
block dmz drop external home internal libvirt public trusted work

Comme vous le voyez, les zones listées par défaut sont :

  • bloquer
  • dmz
  • déposer
  • externe
  • accueil
  • interne
  • libvirt
  • public
  • de confiance
  • travail

REMARQUE :J'utilise une machine virtuelle RHEL 8.2 pour cette démonstration.

Généralement, la règle par défaut d'un pare-feu est de tout refuser et de n'autoriser que des exceptions spécifiques à passer pour les services nécessaires.

Souvent, il est utile de voir quels services sont associés à une zone donnée. Pour afficher ces informations, utilisez la commande suivante :

firewall-cmd --list-all

Notez que si vous ne spécifiez pas de zone, la zone par défaut est interrogée. Ici, la zone par défaut est le public secteur.

[tcarrigan@server ~]$ firewall-cmd --list-all
public (active)
  target: default
  icmp-block-inversion: no
  interfaces: enp0s3 enp0s8
  sources: 
  services: cockpit dhcpv6-client mountd nfs rpc-bind ssh
  ports: 
  protocols: 
  masquerade: no
  forward-ports: 
  source-ports: 
  icmp-blocks: 
  rich rules: 

Si vous souhaitez spécifier une zone, il vous suffit d'ajouter --zone=zonename

Par exemple, pour voir le external zone, utilisez ce qui suit :

[tcarrigan@server ~]$ firewall-cmd --zone=external --list-all
external
  target: default
  icmp-block-inversion: no
  interfaces: 
  sources: 
  services: ssh
  ports: 
  protocols: 
  masquerade: yes
  forward-ports: 
  source-ports: 
  icmp-blocks: 
  rich rules: 

Si, pour une raison quelconque, vous vouliez changer la zone par défaut, vous pouvez facilement le faire en utilisant la commande suivante :

firewall-cmd --set-default=zonename

Autoriser et refuser par service

Maintenant, la bonne chose à propos des pare-feu, c'est qu'ils protègent nos réseaux. La mauvaise chose est qu'il n'y a pas de pare-feu "taille unique" qui convient à toutes les situations. Pour cette raison, les pare-feu sont personnalisés pour répondre aux besoins exacts de la situation dans laquelle ils sont utilisés. Par exemple, si j'ai besoin d'autoriser les transferts FTP (File Transfer Protocol) dans le external zone afin que je puisse déplacer un fichier sur le port 21, je pourrais utiliser quelque chose comme ceci :

firewall-cmd --zone=external --add-service=ftp

Voici l'exemple réel de ma VM :

[tcarrigan@server ~]$ sudo firewall-cmd --zone=external --add-service=ftp
[sudo] password for tcarrigan: 
success

Nous voyons que le démon a renvoyé succès , nous devrions donc avoir le service FTP autorisé dans le external zone. Pour vérifier cela, nous devons vérifier le external liste des services de zone :

[tcarrigan@server ~]$ firewall-cmd --zone=external --list-services
ftp ssh

Mais que se passe-t-il lorsque nous rechargeons la configuration du pare-feu ?

[tcarrigan@server ~]$ sudo firewall-cmd --reload
success

[tcarrigan@server ~]$ firewall-cmd --zone=external --list-all
external
  target: default
  icmp-block-inversion: no
  interfaces: 
  sources: 
  services: ssh
  ports: 
  protocols: 
  masquerade: yes
  forward-ports: 
  source-ports: 
  icmp-blocks: 
  rich rules: 

La nouvelle autorisation la règle ne survit pas à la réinitialisation du firewalld configuration. Pour nous assurer que notre nouvelle règle persiste, nous devons ajouter le --permanent option. La nouvelle commande est :

# firewall-cmd --permanent --zone=external --add-service=ftp

Une fois que vous utilisez le permanent commande, vous devez recharger la configuration pour que les modifications prennent effet.

Pour supprimer un service, nous apportons une petite modification à la syntaxe. Ici, je vais supprimer le service FTP de l'external zone en permanence :

[tcarrigan@server ~]$ sudo firewall-cmd --permanent --zone=external --remove-service=ftp
Warning: NOT_ENABLED: ftp
success

Nous voyons que le système m'avertit que le FTP a été désactivé et que l'opération a réussi.

Autoriser et refuser par port

Maintenant, que se passe-t-il lorsque vous devez autoriser le trafic sur un port non standard ? Imaginez que vous ayez un service de sauvegarde qui doit s'exécuter sur un port UDP dédié. Comment ajouteriez-vous cette exception à votre zone ? La syntaxe est très conviviale et n'est que légèrement différente de celle que nous avons utilisée pour les services. Pour ajouter un port à votre configuration de zone, utilisez ce qui suit :

[tcarrigan@server ~]$ sudo firewall-cmd --permanent --zone=external --add-port=60001/udp
success

Nous vérifions les ports autorisés avec la commande suivante :

[tcarrigan@server ~]$ sudo firewall-cmd --zone=external --list-ports
60001/udp

Et pour supprimer la règle de port, vous l'avez deviné... changez simplement --add-port=x à --remove-port=x

[tcarrigan@server ~]$ sudo firewall-cmd --permanent --zone=external --remove-port=60001/udp
success

Quelle est la prochaine ?

Si, après avoir lu cet article, vous vous demandez quoi faire avec les informations, je vous recommande fortement d'allumer votre machine virtuelle préférée (RHEL, Fedora, CentOS, etc.) et de commencer à expérimenter les commandes ci-dessus. La meilleure façon d'apprendre est d'acquérir une expérience pratique. Si vous avez trouvé ce contenu intéressant, gardez un œil sur Activer Sysadmin pour la deuxième partie, où vous plongerez dans la création de zones personnalisées et la création de règles plus avancées.

[ Simplifiez la gestion du réseau. Découvrez l'automatisation du réseau pour tous, un livre gratuit de Red Hat. ]


Linux
  1. Un guide pratique pour apprendre awk

  2. Principes de base de Linux :Guide du débutant pour l'édition de texte avec vim

  3. Un guide du débutant pour rester bouche bée

  4. Qu'est-ce que FirewallD et comment l'implémenter sous Linux

  5. Le guide complet du débutant sur LVM sous Linux

Comment utiliser AppImage sur Linux (Guide du débutant)

Comment installer et utiliser Curl sur les distributions Linux :Guide du débutant

Guide du débutant pour analyser les journaux sous Linux avec la commande journalctl

Guide du débutant sur Syslogs sous Linux

Tirer parti de PowerShell sous Linux :Guide du débutant

Comment installer et utiliser FFmpeg sur les distributions Linux | Guide du débutant