WikiMiNET

La documentation technique et administrative

Outils pour utilisateurs

Outils du site


wiki:services:firewall

Pare-feu

Le pare-feu de MiNET s'appelle Kickass et son adresse IP est 192.168.102.3.

D'un point de vue réseau, il est situé entre le routeur de MiNET et le routeur de la DISI.

Pourquoi installer un pare-feu ?

Le pare-feu permet de faire du filtrage au niveau des couches réseau, transport et applicative. Cela nous permet d'augmenter la sécurité sur notre réseau en contrôlant « finement » ce qui en entre et ce qui en sort.

Pourquoi un pare-feu logiciel et pas matériel ?

Les pare-feux matériel (c'est-à-dire des boîtiers spécialisés comme ceux vendus par Checkpoint, Juniper, Cisco, etc.) sont très utilisés en entreprise, notamment pour la facilité de configuration et le support qu'ils fournissent. Ils sont donc relativement chers et très souvent propriétaires, ce qui rend le choix plus compliqué, surtout pour une association d'amateurs.

En revanche, un pare-feu logiciel comme Netfilter a le mérite d'être libre et très flexible, tout en correspondant davantage à l'état d'esprit de MiNET vis-à-vis de l'apprentissage.

Netfilter est le pare-feu intégré au noyau Linux. Il est géré depuis l'espace utilisateur via les utilitaires iptables (pour IPv4) et ip6tables (pour IPv6). Vous pouvez (et devriez) vous amuser à le configurer sur votre machine personnelle. De nombreux exemples de configurations sont disponibles sur Internet et il n'est pas très difficile de réaliser une première configuration simple et relativement efficace.

Interfaces réseau

Kickass est invisible sur le réseau. Cela est possible car il possède une carte fibre avec deux interfaces, une vers notre routeur (eth2) et une autre vers celui de la DISI (eth0). Les interfaces sont en mode promiscuité (promiscuous), ce qui leur permet d'accepter toutes les trames ethernet qu'elles reçoivent.

Ces deux interfaces sont reliées par un pont (bridge) configuré avec le service /etc/init.d/bridge. Pour ​plus d'informations sur les ponts, voir ici par exemple.

Enfin, l'interface eth1 correspond à l'interface dans le VLAN d'administration de la prod. L'accès est restreint car il s'agit de l'une des machines les plus sensibles à MiNET.

L'interface eth3 est non utilisée et éteinte.

Structure et configuration du pare-feu

Deux scripts de lancement sont disponibles dans /etc/init.d :

  1. firewall.v4
  2. firewall.v6

Chacun peut être utilisé avec start, stop, flush et force-reload.

Les scripts de configuration du pare-feu sont disponibles dans /etc/iptables. Vous y trouverez les répertoires suivants :

  1. main_rules : contient les règles principales. A priori, vous n'aurez pas besoin d'y toucher.
  2. blacklist : contient blacklist.v4 et blacklist.v6, nos listes noires respectivement pour IPv4 et IPv6. Rentrez une adresse IP par ligne et elle sera complètement bloquée.
  3. flush : contient les scripts de nettoyage. Vous ne devriez pas avoir besoin d'y toucher.
  4. variables : contient les scripts fournissant les variables utilisées dans les scripts IPv4 et IPv6.
  5. hosts_rules : contient les règles concernant nos hôtes. Vous pouvez ici ouvrir des ports vers les machines MiNET. Merci de n’autoriser que ce qui est indispensable et d'ajouter des commentaires avec vos règles (c'est plus propre et plus pratique !), voire à renseigner le wiki.

De bonnes introductions au fonctionnement des règles iptables sont par exemple cet article du wiki ainsi que cette page du wiki Arch Linux.

Pour finir, le contenu du répertoire /etc/iptables est « gité » et doit le rester ! Merci d'y penser et d'utiliser des messages de commit les plus clairs possibles.

Attention Toujours éditer les fichiers depuis un Linux, et éviter l'interface Web de Gitlab, car les terminaisons de lignes CRLF ne sont pas bien gérées par iptables.

Conntrack

Notre pare-feu est stateful (par opposition à un pare-feu stateless), c'est-à-dire qu'il est capable de maintenir un suivi de l'état des connexions (TCP, ICMP, etc.) en distinguant les quatre catégories suivantes de trafic : NEW, ESTABLISHED, RELATED et INVALID. Pour y arriver, il écrit les connexions en RAM dans une table qui s'appelle la conntrack. Plus cette conntrack contient d'entrées, plus elle grossit en mémoire. Si cette table est pleine, les nouvelles connexions sont rejetées. C'est un problème que nous avons déjà rencontré à plusieurs reprises : nous avons donc des graphiques et triggers sur Zabbix afin de surveiller la conntrack. En cas de problème à ce niveau-là, regardez notamment ceci : c'est très explicite ;)

La taille de la conntrack est fixée avec sysctl dans le fichier de configuration /etc/sysctl.conf. Il est également possible de jouer sur d'autres valeurs comme la durée de timeout des connexions TCP établies maintenues par Netfilter.

Divers

  • On utilise ntop (c’est une application qui produit des informations sur le trafic réseau en temps réel, comme pourrait le faire la commande top avec les processus) pour voir ce qui passe (en gros) à travers notre pare-feu. Elle est disponible sur le port 3000 de Kickass et protégée par un mot de passe.
  • tiger est également installé sur Kickass. Il sert à faire une sorte d'audit de sécurité sur la machine, mais on ne l'a jamais vraiment configuré et il utilise la configuration par défaut. Il envoie régulièrement des e-mails sur la ML root à propos des « comptes dormants »…
  • Statistiques sur le pare-feu :
iptables -nvL
nstat -asz

Attention La carte fibre de Kickass est vieille de 2003. Elle est sûrement un brin à incriminer en cas de plantage…

You've been warned!

En cas de problème « physique » sur Kickass (notamment au niveau de la carte fibre), on peut faire confiance au pare-feu de la DISI pendant quelques jours le temps de remplacer le matériel. Il suffit alors de brancher la fibre d'uplink directement sur notre routeur.

wiki/services/firewall.txt · Dernière modification: 2020/06/27 18:16 (modification externe)