De l'importance de filtrer le traffic sortant
Bien souvent quand on lis des articles sur les milles et unes astuces pour sécuriser un peu plus sa machine on y retrouve très souvent l'idée de "fermer les ports" c'est à dire empecher un traffic entrant qui ne serait pas légitime.
C'est une bonne pratique, voici quelques rappels de bas étages sur les sockets (pour ceux qui entendent ce mot pour la première fois).
Pour que deux ordinateurs puissent communiquer il faut établir une connection, un tunel bidirectionnel dans lequel on peut lire et écrire des données. L'analogie humaine, une fois n'est pas coutume, est parfaitement adaptée ici. Quand vous discutez avec quelqu'un vous parlez (écrire) et vous écoutez (lire). En informatique un tel tunel s'appelle un socket. C'est un simple fichier que l'on doit créer sur les deux ordinateurs.
Mais on ne crée pas une communication aussi simplement, il faut "brancher" nos sockets ensemble, si les humains ont du mal à communiquer avec plusieurs personnes à la fois l'ordinateur peut lui discuter avec environ 65000 de ses homologues en même temps. Pour celà on a crée la notion de port, c'est un nombre entre 1 et 65000 (et des poussières). Pour connecter nos deux sockets, il faut que chaque ordinateur connaisse :
- L'adresse de l'autre ordinateur, son IP
- Le port sur lequel va s'effectuer la communication
Notez que les deux ports ne doivent pas forcement être les mêmes (d'ailleurs ce ne sont jamais les mêmes en pratique). Ensuite il y a la notion de client/serveur (qui est foireuse et c'est bien là dessus que je veux vous amener). C'est à dire que l'un des ordinateurs va jouer le role de serveur et l'autre de client, le serveur va mettre un socket sur écoute sur un certain port et le client va s'y connecter. Et là la communication est effective, nos deux amis peuvent écrire et lire des données qui seront envoyés a celui qui se trouve au bout du socket.
Du point de vue du serveur, c'est un traffic entrant et pour le client c'est un traffic sortant. Mais c'est vraiment la seule chose qui différentie le client du serveur, la nature des données qui transitent n'ont rien à voir avec tout ça.
Bloquer le traffic entrant permet de bloquer un éventuel intru du système qui mettrait un port sur écoute pour mieux controler votre machine à distance. Mais bloquer le traffic entrant n'est qu'une illusion de sécurité si on ne regarde pas ce qui se passe sur le traffic sortant. Comme je l'ai dit, la nature des données échangés n'a rien à voir et on pourrait très bien imaginer un programme ou le client executerait tout ce que lui dit le serveur.
D'ailleurs bon nombre de virus fonctionnent en se connectant sur un serveur IRC pour communiquer avec celui qui dirige à distance l'ordinateur de l'internaute imprudent. Et c'est du traffic sortant.
Si maintenant la paranoia vous guette, vous pouvez aller reconfigurer votre parre feu.
Previous postNAS, un serveur audio |
Next postSpamd ourgl |
Comments: 2
Arrêtez moi si je dis une bêtise : Bloquer le trafic entrant revient juste à empêcher un logiciel malveillant à se connecter a un serveur. Mais le logiciel malveillant est bien la ! Un logiciel par trop idiot pourrait essayer tous les ports jusqu'à en trouver un ouvert ? On pourrait bloquer tout les ports, ce qui reviendrait à débrancher le cable réseau ?
Arrêtez moi si je dis une bêtise : Bloquer le trafic entrant revient juste à empêcher un logiciel malveillant à se connecter a un serveur. Mais le logiciel malveillant est bien la ! Un logiciel par trop idiot pourrait essayer tous les ports jusqu'à en trouver un ouvert ? On pourrait bloquer tout les ports, ce qui reviendrait à débrancher le cable réseau ?
Je suppose que tu veux parler de traffic sortant :)
Tester tous les ports ça suppose que le serveur distant à mis tous ses ports en écoute ce qui est déjà une contrainte importante (même si avec packet filter on peut tout rediriger vers un certain port en une ligne). Puis filtrer le traffic sortant c'est déjà une pratique méconnue et les pirates ont 99% de chances que ça marche pour eux sur la plupart des serveurs.
Si tu veux encore plus de sécurité, tu peux filtrer par UID (identifiant utilisateur). Pour te donner un exemple la plupart des intrusions se font grâce à une faille dans ton code php, le pirate tourne alors avec les droit de l'utilisateur qui a lancé le serveur web (www ou www-data, apache etc). Dans ce cas tu pourrais bloquer tout le traffic sortant qui provient de cet utilisateur (à supposer que ton application web n'ai pas besoin de se connecter à des serveurs distants), mais laisser l'UID 0 (root) faire ce qu'il veut. Je décris ce cas de figure ici : http://blog.philpep.org/post/Limiter-un-utilisateur-avec-pf


2