====== 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 [[ http://searchnetworking.techtarget.com/answer/Bridge-vs-switch| 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'' :
- ''firewall.v4''
- ''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 :
- **main_rules** : contient les règles principales. A priori, vous n'aurez pas besoin d'y toucher.
- **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.
- **flush** : contient les scripts de nettoyage. Vous ne devriez pas avoir besoin d'y toucher.
- **variables** : contient les scripts fournissant les variables utilisées dans les scripts IPv4 et IPv6.
- **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 [[wiki:reseau:iptables|cet article du wiki]] ainsi que [[https://wiki.archlinux.org/index.php/simple_stateful_firewall|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 [[http://timanovsky.wordpress.com/2009/04/10/tuning-linux-firewall-connection-tracker-ip_conntrack/|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.