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. ]