« LINUX:Firewall » : différence entre les versions
Aucun résumé des modifications |
Aucun résumé des modifications |
||
Ligne 6 : | Ligne 6 : | ||
=IPTABLES= | =IPTABLES= | ||
Sous Linux, il existe plusieurs Firewall. Nous utilisons "iptables". L'autre, "nftables", commence à prendre plus d'importance. | Sous Linux, il existe plusieurs Firewall. Nous utilisons "iptables". L'autre, "nftables", commence à prendre plus d'importance. | ||
Nous installons les modules suivants: | Nous installons les modules suivants: | ||
Ligne 34 : | Ligne 33 : | ||
Comme nous avons désactivé IPV6, nous n'allons pas l'investiguer. Par sécurité, on garde une configuration qui bloque tout trafic et on lance le service concerné. | Comme nous avons désactivé IPV6, nous n'allons pas l'investiguer. Par sécurité, on garde une configuration qui bloque tout trafic et on lance le service concerné. | ||
Nous nous focaliserons sur celui concernant IPV4. | Nous nous focaliserons sur celui concernant IPV4. | ||
Le protocole FTP, couramment utilisé sur Internet, est un peu spécial car il utilise en même temps deux ports, usuellement les 21 et 20. Il pose un gros problème pour le NAT. Cette spécifié nécessite de charger en mémoire des modules spéciaux qu'il faut spécifier. Ceci se fait dans le fichier de configuration "'''/etc/sysconfig/iptables-config'''". On y modifie la ligne suivante sans paramètres à l'origine en ajoutant les modules concernant FTP: | |||
---- | |||
IPTABLES_MODULES="'''ip_nat_ftp ip_conntrack_ftp nf_conntrack_ftp'''" | |||
---- | |||
IPTABLES comprend plusieurs tables. | |||
Nous n'aborderons que les filtres NAT et FILTER. | |||
Ligne 41 : | Ligne 48 : | ||
Cette astuce se nomme NAT (Network address translation). Cette couche sert à faire paraître le trafic réseau comme appartenant à la bonne catégorie en fonction qu'il passe d'un côté ou de l'autre catégorie d'adressage. C'est là qu'intervient le NAT. De façon simpliste, quand un paquet du LAN privé veut passer vers Internet, ce processus substitue l'adresse IP privée en l'adresse publique. Quand la réponse revient d'Internet, il effectue l'opération inverse. Ce principe est d'application aussi dans l'autre sens mais avec des règles différentes non abordées dans ce paragraphe. | Cette astuce se nomme NAT (Network address translation). Cette couche sert à faire paraître le trafic réseau comme appartenant à la bonne catégorie en fonction qu'il passe d'un côté ou de l'autre catégorie d'adressage. C'est là qu'intervient le NAT. De façon simpliste, quand un paquet du LAN privé veut passer vers Internet, ce processus substitue l'adresse IP privée en l'adresse publique. Quand la réponse revient d'Internet, il effectue l'opération inverse. Ce principe est d'application aussi dans l'autre sens mais avec des règles différentes non abordées dans ce paragraphe. | ||
Dans le fichier "'''/etc/sysconfig/iptables'''", la section concernant la table NET est signalée par la ligne: | |||
---- | |||
*nat | |||
---- | |||
et se clôture par la ligne: | |||
---- | |||
COMMIT | |||
---- | |||
Chaque table accepte un certain nombre de chaînes ayant chacune leur fonction propre dans le firewall. Il est possible de créer ses propres sous-chaînes comme des fonctions en programmation. En début on les déclare avec une politique donnée au démarrage et en fin on applique une nouvelle politique. Ainsi pour la table NAT nous avons: | |||
---- | ---- | ||
*nat | |||
:PREROUTING DROP [0:0] | |||
:POSTROUTING DROP [0:0] | |||
:INPUT DROP [0:0] | |||
:OUTPUT DROP [0:0] | |||
# Commentaire | |||
# | |||
# Bloc des règles personnelles | |||
# | |||
:PREROUTING ACCEPT [0:0] | |||
:POSTROUTING ACCEPT [0:0] | |||
:OUTPUT ACCEPT [0:0] | |||
:INPUT ACCEPT [0:0] | |||
COMMIT | |||
---- | |||
Dans notre cas, la fonction NAT doit intervenir quand un paquet veut sortir de nos LANs privés vers Internet par l'interface "ppp0". Nous allons ajouter la règle personnelle suivante: | |||
---- | |||
-A POSTROUTING -o ppp0 -j MASQUERADE | |||
---- | ---- | ||
Explications: | |||
* -A: ajout de la rêgle | |||
* POSTROUTING: cette chaîne intervient en fin de processus après l'opération de filtrage faite au niveau de la table FILTER. | |||
* -o pppO: signifie quand on sort par l'interface "ppp0" | |||
* -j MASQUERADE: effectue l'opération de passe-passe d(adressage IP | |||
Le traitement à l'intérieur de chaque table/chaîne se fait de façon séquentielle en fonction de l'ordre d'ajout. | |||
Une opération appelée derrière "-j" peut conduire à une sortie de traitement comme "MASQUERADE". D'autres comme "LOG" qui sert à imprimer un message dans le journal du système, laisse le traitement se poursuivre à la règle suivante. | |||
On conçoit aisément que l'ordre des règles a un grande importance. | |||
Version du 12 janvier 2022 à 20:11
But
Etape très importante, il faut sécuriser et filtrer les connexions d'autant plus qu'on est directement connecté à internet. Vient s'ajouter le problème, propre à IPV4 de l'interfaçage entre le réseau public et le réseau privé. En outre une particularité de la connexion PPP doit être appliquée.
IPTABLES
Sous Linux, il existe plusieurs Firewall. Nous utilisons "iptables". L'autre, "nftables", commence à prendre plus d'importance.
Nous installons les modules suivants:
dnf install iptables-services dnf install iptables-utils
Il comporte deux volets:
- iptables orienté IPV4
- ip6tables orienté IPV6
Les fichiers de configurations se trouvent dans le répertoire "/etc/sysconfig".
- iptables-config et ip6tables-config regroupent respectivement pour IPV4 et IPV6 les options de lancement du service
- iptables et ip6tables regroupent respectivement pour IPV4 et IPV6 les règles à appliquer
Pour activer ces services respectivement pour IPV4 et IPV6, nous utilisons les commandes:
systemctl enable iptables.service systemctl enable ip6tables.service
Pour les lancer respectivement pour IPV4 et IPV6, nous utilisons les commandes:
systemctl start iptables.service systemctl start ip6tables.service
A noter qu'il existe le service "firewalld.service" installé et activé à l'installation. Il peut être configuré pour utiliser soit iptables soit nftables. Il nous semble trop élémentaire; nous préférons concevoir nos propres séquences de règles. Pour cette raison, nous forçons son arrêt et son non lancement d'office avec les commandes suivantes.
systemctl disable firewalld.service systemctl stop firewalld.service systemctl mask firewalld.service
Comme nous avons désactivé IPV6, nous n'allons pas l'investiguer. Par sécurité, on garde une configuration qui bloque tout trafic et on lance le service concerné. Nous nous focaliserons sur celui concernant IPV4.
Le protocole FTP, couramment utilisé sur Internet, est un peu spécial car il utilise en même temps deux ports, usuellement les 21 et 20. Il pose un gros problème pour le NAT. Cette spécifié nécessite de charger en mémoire des modules spéciaux qu'il faut spécifier. Ceci se fait dans le fichier de configuration "/etc/sysconfig/iptables-config". On y modifie la ligne suivante sans paramètres à l'origine en ajoutant les modules concernant FTP:
IPTABLES_MODULES="ip_nat_ftp ip_conntrack_ftp nf_conntrack_ftp"
IPTABLES comprend plusieurs tables. Nous n'aborderons que les filtres NAT et FILTER.
NAT
Sous IPV4, il existe deux grandes catégories d'adressage de machines. On laisse de côté le broadcast, l'unicast et le multicast ainsi que les adresses réservées. Nous avons les adresses utilisées sur Internet et celles utilisées dans les réseaux privés. Les deux son totalement disjointes et ne sont pas routables entre elles deux. Il faut donc une astuce pour, par exemple, une machine privée puisse interroger un serveur Web public tel Google.
Cette astuce se nomme NAT (Network address translation). Cette couche sert à faire paraître le trafic réseau comme appartenant à la bonne catégorie en fonction qu'il passe d'un côté ou de l'autre catégorie d'adressage. C'est là qu'intervient le NAT. De façon simpliste, quand un paquet du LAN privé veut passer vers Internet, ce processus substitue l'adresse IP privée en l'adresse publique. Quand la réponse revient d'Internet, il effectue l'opération inverse. Ce principe est d'application aussi dans l'autre sens mais avec des règles différentes non abordées dans ce paragraphe.
Dans le fichier "/etc/sysconfig/iptables", la section concernant la table NET est signalée par la ligne:
*nat
et se clôture par la ligne:
COMMIT
Chaque table accepte un certain nombre de chaînes ayant chacune leur fonction propre dans le firewall. Il est possible de créer ses propres sous-chaînes comme des fonctions en programmation. En début on les déclare avec une politique donnée au démarrage et en fin on applique une nouvelle politique. Ainsi pour la table NAT nous avons:
*nat :PREROUTING DROP [0:0] :POSTROUTING DROP [0:0] :INPUT DROP [0:0] :OUTPUT DROP [0:0] # Commentaire # # Bloc des règles personnelles # :PREROUTING ACCEPT [0:0] :POSTROUTING ACCEPT [0:0] :OUTPUT ACCEPT [0:0] :INPUT ACCEPT [0:0] COMMIT
Dans notre cas, la fonction NAT doit intervenir quand un paquet veut sortir de nos LANs privés vers Internet par l'interface "ppp0". Nous allons ajouter la règle personnelle suivante:
-A POSTROUTING -o ppp0 -j MASQUERADE
Explications:
- -A: ajout de la rêgle
- POSTROUTING: cette chaîne intervient en fin de processus après l'opération de filtrage faite au niveau de la table FILTER.
- -o pppO: signifie quand on sort par l'interface "ppp0"
- -j MASQUERADE: effectue l'opération de passe-passe d(adressage IP
Le traitement à l'intérieur de chaque table/chaîne se fait de façon séquentielle en fonction de l'ordre d'ajout. Une opération appelée derrière "-j" peut conduire à une sortie de traitement comme "MASQUERADE". D'autres comme "LOG" qui sert à imprimer un message dans le journal du système, laisse le traitement se poursuivre à la règle suivante. On conçoit aisément que l'ordre des règles a un grande importance.