Articles

Mac

Introduction aux Firewalls !

Par Contributeur - Publié le

I) Introduction aux ports et aux protocoles TCP/UDP :



Avant de rentrer dans le vif du sujet, voici une petite explication de ce que sont les ports et les protocoles de connexion, utilisés tous les jours par des applications nécessitant simultanément des accès au Web (exemple navigateur Web et mail).

1) Les protocoles :



Nous ne verrons ici que deux protocoles : TCP et UDP :

• Le protocole TCP permet aux deux clients de contrôler l'état de la transmission établie (à l'aide d'accusés de réception) : c'est un protocole orienté connexion. Ce protocole assure tout un tas de remaniement des données en provenance du protocole IP. La première chose à savoir est qu'il permet d'assurer des échanges sûrs sans que les routeurs n'aient à contrôler eux-mêmes les données.
La seconde concerne directement notre sujet initial. TCP permet le multiplexage/démultiplexage (concentration des 'canaux' de transmission en un seul et vice-versa; eh oui vous n'avez qu'une seule connexion la plupart du temps).

• Le protocole UDP est lui nettement plus simple, les données sont envoyées sans que la communication entre les deux machines soit établie et sans que la bécane réceptrice n'envoie d'accusés de réception. Bref, il n'y a pas de contrôle d'erreur de transmission, le protocole n'est pas orienté connexion.

2) Les ports :



Le multiplexage/démultiplexage est permis grâce aux ports : Le n° du port est attaché à une ip. Exemple simple : Safari et Mail envoient simultanément des requêtes. Celles-ci seront découpées en paquets identifiés part l'ip et le port auquels ils sont assignés. Ces paquets seront envoyés par les applications du client, mélangés lors du multiplexage, transportés via votre connexion, puis triés lors du démultiplexage et enfin réceptionnés par les 'applications' du serveur. En principe, chaque application nécessitant une transmission via un réseau (local ou externe), a un port défini par défaut.

De 0 à 1023, ce sont les ports réservés (Well Known Ports) désignés officiellement par l'IANA. Ils sont la plupart du temps seulement utilisable par les processus système (root) (ça dépend de l'OS ; sous OSX c'est le cas)
De 1024 à 49151, ce sont les ports 'enregistrés
De 49152 à 65535, ce sont les ports dynamiques ou privés

Voici quelques listes indicatives :
Liste en français
Liste en anglais
Liste des ports dits 'sensibles'

Comme vous l'aurez compris, il existe des dizaines de milliers de ports, assignés ou non par défaut, par souci de simplicité. Si vous décidez de changer le port par défaut d'une application, telle que mlnet pour l'accès au réseau edonkey, il est conseillé d'utiliser ceux à partir de 1024, tant qu'une autre application n'utilise pas le même port en question. Si vous ne voulez aucun problème, prenez un port à partir de 49152.

II) Le Firewall :



1) Fonction du Firewall :



Entrons dans le vif du sujet : un firewall permet de contrôler l'entrée et la sortie des données grâce entre autres à l'ouverture/fermeture des ports -> Il filtre les paquets de données entrants et/ou sortants.

Ce contrôle avancé permet théoriquement de limiter l'exploitation de failles par des hackers.

Suivant la complexité du firewall et le degré de sécurité (nombre d'options configurées), il sera, en plus d'être capable de n'autoriser la communication qu'avec certains ports, de repérer et interdire en conséquence des connexions suspectes, des tentatives d'intrusion via des 'exploit' etc...

Important : Le principe de tout firewall, se base sur le fait d'autoriser tout ce qui n'est pas interdit ou de refuser toute transmission définie comme 'interdite'. Dans le but d'assurer une sécurisation maximale, mais cependant contraignante, il est conseillé d'avoir recours à la première solution.

Le filtrage des paquets se fait grâce à l'examen de l'en-tête de chaque paquet où sont stockées toutes les informations de transmissions. C'est grâce à ces dernières que la firewall saura si il faudra ou non bloquer chacun des paquets, mais cela implique une configuration avancée préalable du firewall : définir les transmissions autorisées, manipulation plus couramment appelée 'ouverture de port'.

2) Réglages du firewall :



Les autorisations/interdictions seront définies à l'aide de 'règles'. Chacune d'entre-elles comportera les informations nécessaires à son rôle. Ce sont les informations qu'on retrouve à peu de choses près dans l'en-tête des paquets, à savoir :

-ip d'origine
-ip de destination
-protocole du paquet
-port auquel il est associé

Sauf qu'avec les règles, on a la possibilité de ne pas être obligé d'ajouter une règle pour chaque ip d'origine, ce qui serait fastidieux. On peut donc définir des 'plages' de ports. Par exemple, toutes les ip de 192.168.1.1 à 192.168.1.10.

Ainsi, une règle d'autorisation ressemblera à ça :

-Autorisation de réception : oui
-ip d'origine
-ip de destination (a priori votre bécane, ou dans les cas du firewall d'un routeur : l'un d'une des bécanes de votre réseau local )
-protocole du paquet (TCP ou UDP ici)
-port auquel il est associé (définit en fonction de l'application)

a) Exemple :

À ce stade, le plus simple est d'étudier un exemple. Si on veut interdire tous les accès sauf pour le service web, voici les règles à spécifier :

Règle de réception n°1, ayant la priorité sur toutes les autres règles :

-Autorisation de réception : oui
-ip d'origine : toute en provenance du web (0.0.0.0 à 255.255.255.255)
-ip de destination : à priori votre bécane (par exemple 192.168.1.2)
-protocole des paquets : TCP
-port auquel Apache est associé, réception de pages web via votre navigateur : 80

Règle de réception n°x, n'ayant aucune priorité sur toutes les autres règles :
-Autorisation de réception : non
-ip d'origine : toute en provenance du web (0.0.0.0 à 255.255.255.255)
-ip de destination : à priori votre bécane (par exemple 192.168.1.2)
-protocoles des paquets : TCP et UDP
-ports : tous (0 à 65535)

Ainsi, toutes les communications seront stoppées sauf la réception des paquets TCP de toutes origines, à destination du port 80, aboutissant aux navigateurs Web de votre Mac.

b) Généralisation :

• Ce principe est applicable à tous les firewalls existants. La manière de spécifier la priorité des règles et leurs paramètres, prédéfinit ou non, dépend ensuite de chaque firewall.

• Il vous faudra ouvrir les ports spécifiés par chaque application, nécessitant un accès au(x) réseau(x).

• C'est le même principe qui est appliqué pour les routeurs, ayant (presque toujours) un firewall intégré. L'ouverture des ports et la redirection des paquets vers la machine voulue se fait dans la page des réglages NAT.

• Quant aux paramètres permettant un filtrage applicatif, une détection des attaques courantes etc... ils dépendent des firewalls utilisés et donc ne seront pas abordés ici.

III) Utilité d'un firewall :



Un firewall, n'est véritablement efficace que si il est paramétré au poil près, en connaissance des protocoles et ports utilisés afin de bloquer tout le reste, en appliquant une politique de sécurité globale stricte au sein de votre réseau local, ce qui est rarement le cas. Prenons un simple exemple, vous téléchargez un petit soft qui a l'air sympa, le lancez et, à votre insu il ouvrira temporairement un des ports, ordonnera le rapatriement d'un troyen et voilà, votre firewall ne vous aura protégé de rien... Il existe des firewalls permettant de surveiller ce genre d'activité, mais pareil, il faut passer un temps fou à le paramétrer correctement pour qu'il soit véritablement efficace, et encore, les hackers trouveront toujours une solution plus 'discrète' d'outre-passer le firewall.

Quant à l'utilité d'un firewall pour particulier, c'est plutôt une protection dérisoire. Je m'explique, c'est déjà pas évident d'hacker un client OS X alors si les acharnés qui tenteront une telle attaque, en ont les compétences, ils auront aussi très certainement celles pour faire outrepasser votre firewall.

Vous êtes-vous déjà posé la question : quel est l'intérêt pour un hacker de prendre d'assault votre Mac ? Presque aucun, il préférera se rabattre sur un client Windows non sécurisé et bien plus facilement hackable

Considérez que le niveau de sécurité par défaut est assez élevé pour que toute protection grand public supplémentaire soit futile, car le niveau du hacker devra forcément être déjà sacrément bon avec la configuration par défaut, tellement qu'à ce niveau, ce n'est pas un firewall qui l'arrêtera et de toute façon il préférera des systèmes bourrés de failles, pour éviter toute perte de temps inutile.

IV) Quelques firewalls et utilitaires :



ipfw (), le firewall intégré à Mac OS X :



• Je vous conseille SunShield ou BrickHouse pour paramétrer le firewall intégré.

• Indispensable pour prévenir le 'phoning home' entre autres: Little Snitch

• Indispensable pour bloquer les ips des associations anti-P2P : PeerVanguard (Faites un contrôle-click->dl car Safari ne gère pas le format .sitx)

NetBarrier :



Firewall payant facilement paramétrable, à conseiller aux novices, pourvu de très nombreuses fonctions anti-exploits, anti-intrusion etc...

Pour ceux que ça intéresse, voici un petit tutorial sur le paramétrage de NetBarrier !