Vous êtes sur la page 1sur 27

Administration de Réseaux Informatiques

- Open Source-
IDOSR -2023/2024

Configurer un service de par-feu sous Linux.


Netfilter

CentOS7 utilise l’ensemble netfilter intégré au noyau linux, et attaché


au programme iptables, afin d’accéder aux paquets circulant au travers
de la pile Réseau du système. Ce sous-système fournit l’interface
nécessaire à l’inspection et à la manipulation des paquets.
Vie d’un paquet
Vie d’un paquet
Chaque état correspond à un point de filtrage possible par la commande
iptables.
• PREROUTING : traite les paquets à leur arrivée. Si un paquet est à destination
du système local, il sera traité par un processus local (INPUT, OUTPUT). Sinon, et
si le forwarding est activé, les règles FORWARD et POST_ROUTING seront
appliquées.
• FORWARD : les paquets ne font que traverser le système local. Traite les
paquets routés à travers le système local.
• INPUT : traite les paquets destinés au système local, en entrée (après le
routage).
• OUTPUT : traite les paquets quittant le système local, avant POSTROUTING.
• POSTROUTING : traite les paquets juste avant leur sortie du système.
firewalld

la distribution CentOS7 outre son service iptables, est configuré avec

un service alternatif appelé firewalld remplissant le même office que

son prédécesseur.
firewalld

firewalld est lui-même un moyen de dialogue entre le module netfilter


du noyau linux et ses modules complémentaires.
La gestion des zones

Le démon firewalld gère des groupes de règles à l’aide d’entités


appelées« zones ». Les zones sont essentiellement des ensembles de
règles qui dictent le trafic à autoriser en fonction du niveau de confiance
que vous avez dans les réseaux auxquels votre ordinateur est connecté.
Une zone est affectée aux interfaces réseau pour déterminer le
comportement que le pare-feu doit autoriser.
La gestion des zones

On distingue alors les zones prédéfinies suivantes :

zone drop: le niveau le plus bas de confiance. Toute connexion entrante est supprimée sans notification et seules
les connexions sortantes sont autorisées.

zone block: zone similaire à celle-ci-dessus, mais au lieu de supprimer les connexions entrantes sans notification,
ces flux sont rejetés à l’aide d’un message icmp-host-prohibited (ou icmp6-adm-prohibited pour IPv6).

zone public: représente l’ensemble des réseaux publics ou non sécurisés. On ne fait pas confiance aux autres
ordinateurs ou serveurs mais, on peut traiter les connexions entrantes au cas par cas à l’aide de règles.

zone external: représente les réseaux externes lorsque l’on utilise le pare-feu local comme une passerelle. Dans ce
cas, la zone est configurée pour le "masquerading NAT" et les réseaux internes demeurent ainsi privés mais
accessibles.
La gestion des zones

zone internal: représente l’autre face de la zone external, utilisée pour la portion interne d’une passerelle. Les
serveurs sont totalement accrédités et certains services supplémentaires peuvent mêmes être disponibles.

zone dmz: utilisée pour les serveurs au sein d’une zone démilitarisée ou DMZ. Seules quelques connexions
entrantes sont alors autorisées.

zone work: utilisées pour des machines de travail permettant de faire confiance à la plupart des serveurs du réseau.
Quelques services supplémentaires pourront être autorisés.

zone home: une zone de sécurité personnelle. Cela implique la plupart du temps que l’on fait confiance aux autres
machines et que certains autres services peuvent aussi être accrédités.

zone trusted: permet de faire confiance à toutes les machines du réseau. Il s’agit du niveau de confiance le plus
élevé à utiliser avec précaution.
La gestion des zones

Afin de lister les différentes zones disponibles il faut exécuter l’instruction :

# firewall-cmd --get-zones

block dmz drop external home internal public trusted work

On peut alors déterminer quelle est la zone sélectionnée comme zone par défaut :

# firewall-cmd --get-default-zone

public
La gestion des zones

Afin de forcer la modification de la zone par défaut, on peut ainsi utiliser l’option --set-default-zone. Par exemple
pour forcer l’utilisation de la zone dmz par défaut, on exécutera l’instruction ci-dessous:

# firewall-cmd --set-default-zone=dmz

# firewalld-cmd --get-default-zone

dmz
La gestion des zones

Par ailleurs, on peut délibérément créer ses propres zones d’administration en utilisant l’option --new-zone:

# firewall-cmd --new-zone=privateweb

# firewall-cmd --get-zones

block dmz drop external home internal public trusted work privateweb
La gestion des zones

ATTENTION: si l’on ne mentionne pas l’option --permanent, cette nouvelle zone disparaîtra dès le prochain
redémarrage du service. Sinon, on peut également simplement recharger la configuration pour que cette nouvelle
modification soit désormais prise en compte par le pare-feu :

# firewall-cmd --reload
La gestion des zones

firewall-cmd --get-active-zones

A défaut d’attacher ses interfaces réseau à la zone par défaut, chacune des cartes réseau (donc chacune des
interfaces), doit être liée à une zone distincte. Cela peut être modifié grâce à l’une des options --add-interface ou -
-change-interface, comme le montre la commande suivante (où l’on associe l’interface ens160 à la zone work):

# firewall-cmd --zone=work --change-interface=ens160

# firewall-cmd --get-active-zones
work
interfaces: ens160

De la même façon, on peut aussi supprimer l’interface dédiée d’une zone en utilisant l’option --remove-interface:

# firewall-cmd --remove-interface=ens160 --zone=work


La gestion des services
Comment savons-nous quelles règles sont associées à la zone publique? Nous pouvons imprimer la configuration
de la zone par défaut en tapant:
#firewall-cmd --list-all
public (default, active)
target: default
icmp-block-inversion: no
interfaces: eth0 eth1
sources:
services: ssh dhcpv6-client
ports:
protocols:
masquerade: no
forward-ports:
source-ports:
icmp-blocks:
La gestion des services
Comment savons-nous quelles règles sont associées à la zone home

sudo firewall-cmd --zone=home --list-all


outputhome
interfaces:
sources:
services: dhcpv6-client ipp-client mdns samba-client ssh
ports:
masquerade: no
forward-ports:
icmp-blocks:
rich rules:
La gestion des services
Ajouter un service à vos zones
La méthode la plus simple consiste à ajouter les services ou les ports dont vous avez besoin aux zones que vous
utilisez. Là encore, vous pouvez obtenir une liste des services disponibles avec l’option -- get-services:

#firewall-cmd --get-services

REMARQUE: on peut disposer de plus de détails à propos de chacun de ces services en éditant leur fichier .xml au
sein du répertoire /usr/lib/firewalld/services
La gestion des services
Pour autoriser un service spécifique, au niveau d’une zone, il suffit alors d’utiliser l’option --add-service.

Exemple: ajout du service web (tcp/80 ou HTTP) pour la zone public:

# firewall-cmd --zone=public --add-service=http

Bien évidemment, si l’on ne précise pas l’option --zone l’ajout s’effectuera alors sur la zone désignée par défaut.
Par ailleurs, dans l’exemple précédent, l’ajout se fera de façon dynamique mais non permanente, puisque l’option -
-permanent n’est pas mentionnée. Pour vérifier que l’opération d’ajout s’est effectuée correctement, on peut
utiliser l’une des options suivantes : --list-all ou --list-services.

# firewall-cmd --zone=public --permanent --add-service=https


La gestion des ports

Dans certains cas, il existe des scenarii où les services ne répondent pas aux prérequis de notre infrastructure.
Dans cette situation, on peut alors ouvrir spécifiquement un port sur la zone en question, de la même façon qu’on
l’a fait pour la gestion des services.

Ainsi, l’ouverture d’un port spécifique s’effectuera à l’aide de l’option --add-port de la façon suivante :

# firewall-cmd --zone=public --add-port=1521/tcp


La gestion des ports

On peut alors vérifier que l’opération se termine correctement en exécutant la commande

# firewall-cmd --list-ports

REMARQUE: dans le cas précédent, la commande permet d’ajouter le port TCP/1521 sur la zone public de façon
dynamique. Si l’on souhaite l’ajouter de façon permanente, il faut penser à utiliser l’option --permanent.

# firewall-cmd --zone=public --permanent --add-port=1521/tcp


La gestion des ports

Afin d’éviter l’accroissement de l’écriture de nombreuses règles, il est également possible d’ajouter non pas un
port mais une plage de ports en séparant le premier et le dernier de la plage avec un tiret :

# firewall-cmd --zone=public --add-port=3990-4100/udp


Définir un service

Ouvrir des ports pour vos zones est facile, mais il peut être difficile de garder une

trace de la fonction de chacune d’elles. Si vous mettez jamais un service hors service

sur votre serveur, vous aurez peut-être du mal à vous souvenir des ports ouverts

nécessaires. Pour éviter cette situation, il est possible de définir un service.


Définir un service

Les services sont simplement des collections de ports avec un nom et une description

associés. L’utilisation des services est plus facile à administrer que les ports, mais

nécessite un peu de travail préalable. Le moyen le plus simple de commencer est de

copier un script existant (présent dans /usr/lib/firewalld/services ) dans le

répertoire /etc/firewalld/services où le pare-feu recherche les définitions non

standard.
Définir un service

Exemple: recopie du fichier de service SSH :

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

On peut alors ajuster et personnaliser la configuration de ce service directement dans

la copie que l’on vient de faire. Imaginons que l’on souhaite juste changer le port actif

du service SSH de 22 en 2022, il suffira de modifier le texte de la copie en :


Définir un service
<?xml version="1.0" encoding="utf-8"?>

<service>

<short> </short>

<description>Secure Shell (SSH) is a protocol for logging into and executing


commands on remote machines. It provides secure encrypted communications. If you
plan on accessing your machine remotely via SSH over a firewalled interface, enable
this option. You need the openssh-server package installed for this option to be
useful.</description>

<port protocol=" " port=" "/>

</service>
Conclusion
Le service firewalld vous permet de configurer des règles et des
ensembles de règles maintenables qui prennent en compte votre
environnement réseau. Il vous permet de passer de manière transparente
entre différentes stratégies de pare-feu grâce à l’utilisation de zones et
donne aux administrateurs la possibilité de résumer la gestion des ports
dans des définitions de service plus conviviales. Acquérir une
connaissance pratique de ce système vous permettra de tirer parti de la
flexibilité et de la puissance offertes par cet outil.
TP

Vous aimerez peut-être aussi