Pourquoi est-ce mauvais d'avoir des ports ouverts?


36

Voici quelque chose qui m'a toujours dérouté. Pourquoi est-il mauvais d'avoir des ports ouverts sur votre ordinateur? En supposant que vous n'avez pas de virus sur votre ordinateur ou un autre programme écoutant un port pouvant faire quelque chose, pourquoi est-ce important si un port est ouvert? Si une personne mal intentionnée commence à envoyer des paquets à un port, mais que rien n’est là pour recevoir les données et en faire quelque chose, pourquoi est-ce important? Un ordinateur n'exécute pas arbitrairement les données qu'il reçoit. Je comprends que le fait d'inonder des paquets de paquets dans un ordinateur peut provoquer son crash, car il ne peut tout simplement pas gérer la quantité de données, mais je ne considère que des problèmes de sécurité qui modifient réellement les fichiers de l'ordinateur.

Mise à jour

Merci pour les réponses jusqu'à présent. Je comprends maintenant qu’un port ouvert signifie en fait qu’il existe un programme exploitable pour écouter ce port. Mais pourquoi est-il si difficile d'écrire un logiciel qui ne peut pas être exploité? Pour causer un préjudice réel à un ordinateur, un programme ne devrait pas autoriser le téléchargement d'un ou plusieurs fichiers, puis l'un de ces fichiers devrait être exécuté. Il semble que ce serait incroyablement difficile à autoriser accidentellement.

Réponses:


36

Un port n'est pas ouvert si quelque chose n'écoute pas une connexion.

La raison pour laquelle il est mauvais d'avoir tous les ports ouverts partout est que cela expose les services qui écoutent des exploits sur ces ports. C'est pourquoi les pare-feu existent, pour limiter le nombre de connexions autorisées à certains ports, pour réduire la surface exposée par les services.


MODIFIER

Pour répondre à votre question sur les raisons pour lesquelles les utilisateurs ne peuvent pas écrire uniquement des logiciels non exploitables:

C'est assez facile pour les programmes simples, mais beaucoup de programmes qui nécessitent un socket sont complexes. En tant que tels, ils ont de nombreux composants, dont beaucoup ne sont même pas écrits par le développeur (bibliothèques incluses). Vous ne pouvez pas compter sur d'autres personnes pour sécuriser votre réseau lorsque vous pouvez utiliser des méthodes de renforcement telles que les pare-feu.

L'exécution de code arbitraire / à distance est un risque énorme, comme vous l'avez souligné. Malheureusement, les débordements de mémoire tampon et autres failles de sécurité qui le permettent sont courants. Regardez toutes les mises à jour de sécurité Microsoft et je parie qu'elles corrigent l'exécution de code à distance ou l'élévation de privilèges. MS est une énorme entreprise comptant des centaines de développeurs et des milliards de dollars.


4
Juste pour ajouter: si, par exemple, vous savez qu'un service a un bogue qui peut être utilisé pour infiltrer du code ou quoi que ce soit et que vous voyez en fait que ce service est en cours d'exécution, l'invitation est ouverte;)
Felix

9

En ce qui concerne la mise à jour, vous avez écrit:

Merci pour les réponses jusqu'à présent. Je comprends maintenant qu’un port ouvert signifie en fait qu’il existe un programme exploitable pour écouter ce port. Mais pourquoi est-il si difficile d'écrire un logiciel qui ne peut pas être exploité? Pour causer un préjudice réel à un ordinateur, un programme ne devrait pas autoriser le téléchargement d'un ou plusieurs fichiers, puis l'un de ces fichiers devrait être exécuté. Il semble que ce serait incroyablement difficile à autoriser accidentellement.

C'est très difficile d'écrire un logiciel qui ne peut pas être exploité!

J'ai lu le livre Building Secure Software et l'un des sujets abordés était l'exploitation des débordements de pile. Il y avait deux faits très effrayants là-dedans:

  • Pour un programme avoir un bogue de débordement de pile exploitable, il est très facile à faire, surtout quand il est écrit en C. Dans le langage de programmation C, de nombreuses fonctions ne sont pas sécurisées par défaut et le programmeur doit le savoir pour éviter les fonctions vulnérables , ou doit prendre des mesures spéciales pour être en sécurité.
  • L'exploit qu'un pirate informatique doit utiliser est court - très court. Il s’agissait de moins d’une demi-page de langage d’assemblage, ce qui se traduisait par une centaine d’octets (supposés) de code machine. Ce code d’exploitation est suffisant pour permettre au pirate informatique (invite de commande) d’accéder à votre ordinateur. Aucun téléchargement ni exécution de fichier volumineux n'est requis - juste un petit morceau de code pouvant être inséré au milieu de données légitimes.

Donc, si un pirate informatique peut trouver un programme qui (a) a un bogue de débordement de pile exploitable (b) sur un réseau et (c) qui dispose de 100 octets de plus dans son tampon, votre ordinateur est alors utilisé. Heureusement, les connaissances sur les bogues de débordement de pile sont assez courantes maintenant, mais elles apparaissent tout de même. Il y a 5 ans et plus, le problème était beaucoup plus fréquent.

Pour revenir à votre question initiale, vous devriez éviter les ports ouverts pour éviter tout accident avec un bogue exploitable dans un programme. Vous avez maintenant une deuxième raison: le shell distant qu'un pirate informatique utiliserait alors est un autre port ouvert. Si vous avez un pare-feu qui bloque tout sauf l'autorisation expresse, vous pouvez également bloquer ce shell distant (bien qu'un pirate informatique puisse toujours faire d'autres choses désagréables sur votre ordinateur, alors ne soyez pas complaisant!)


2
IIRC, Donald Knuth (?) Vient de prouver mathématiquement que l'un des plus petits programmes qu'il a écrits était sans bogues, et cela a pris des années-hommes
RCIX

7
  • Port ouvert: lorsque quelqu'un le demande, l'ordinateur répond qu'un service écoute sur ce port. Cela signifie que tout ce qui arrive sur ce port sera traité par un programme (un service) exécuté sur cet ordinateur.
  • Port fermé: lorsque quelqu'un le demande, l'ordinateur répond qu'aucun service n'est à l'écoute de ce port. L'auser saura qu'un ordinateur répond à l'adresse indiquée.
  • Port furtif: quand quelqu'un le demande, il n'obtient aucune réponse. Le but est de cacher s'il y a un ordinateur à l'adresse. Cela pourrait ne pas être très efficace, cependant, comme le dit joschi dans les commentaires.

Si vous avez un port ouvert, vous êtes en sécurité, à condition que le programme traitant les données entrantes ne contienne aucun exploit. Mais les exploits sont fréquents, et il est bon de savoir qu’un grand nombre d’analyses de ports parcourent le réseau, à la recherche de cibles.

Les ports fermés répondent toujours à l'attaquant, de sorte qu'un attaquant possible sait qu'il est nécessaire de vérifier les autres ports. Là encore, c’est ainsi qu’Internet est conçu pour fonctionner. Alors que les ports furtifs tentent de ne donner aucune information à l'attaquant potentiel, ils enfreignent en théorie les spécifications.

Du point de vue de la sécurité, tout port ouvert est un énorme trou béant, car le code est utilisé pour traiter des données étrangères. Ce que fait un pare-feu (ou un routeur NAT), c’est qu’aucun trafic entrant n’arrive sur votre ordinateur, même si le système dispose de ports ouverts. De cette façon, ils ferment efficacement tous les ports.


1
Votre définition d'un "port furtif" est un vœu pieux. En réalité, un attaquant sait qu’il existe un ordinateur s’il ne reçoit aucune réponse. S'il n'y avait pas d'ordinateur sur cette adresse IP particulière, le routeur précédent enverrait un message à ce sujet. Avec les "ports furtifs", cela ne se produit pas ...
joschi

@ joschi: Eh bien, c'est un concept que j'ai vu sur Internet, alors je pense que c'est bien de le définir. Vous faites un bon point, cependant. J'ai modifié la réponse pour refléter votre commentaire. Au moins cela donne l’impression que l’IP cible se trouve derrière un routeur NAT, je suppose. Je n'ai jamais été un fan du concept: si vous avez des ports ouverts, vous devez vous assurer qu'ils utilisent un service sécurisé. Et si vous n'avez pas de ports ouverts, il n'y a aucun problème à dire au réseau que vous existez. Stealth sent le battage médiatique de la sécurité.
Ilari Kajaste

Joschi: tous les routeurs ne le font pas. de nombreux routeurs transmettent simplement aveuglément des adresses IP en l'absence de système. les tentatives de connexion expirent simplement parce que le client s’ennuie d’essayer de faire trois choses ensemble.
benc

6

En fait, autant que je sache, un port ouvert signifie qu'un programme l'écoute. Il existe donc une sorte de service traitant les données.


3

En supposant que vous n'avez pas de virus sur votre ordinateur ou un autre programme écoutant un port pouvant faire quelque chose, pourquoi est-ce important si un port est ouvert? Si une personne mal intentionnée commence à envoyer des paquets à un port, mais que rien n’est là pour recevoir les données et en faire quelque chose, pourquoi est-ce important?

L'Assomption est la mère de tous les eff-ups :)

plutôt sûr que désolé ... voici une bonne lecture pour vous à makeuseof.com:

La technologie expliquée: les ports de routeur ouverts et leurs implications en matière de sécurité


une bonne lecture courte.
DaveParillo

1

Je ne suis pas un export de sécurité, mais j'ai fait quelques recherches ... Un port "ouvert" est un port configuré pour accepter une connexion TCP entrante.

Si certaines applications n'écoutent que sur les ports 9, 21 et 80 et que votre pare-feu bloque l'accès à ces trois ports, techniquement, aucun port n'est ouvert. IOW, par exemple, le port 25 n'est pas ouvert car rien ne l'écoute.

Pour répondre à votre question: la raison pour laquelle il est mauvais d’avoir des ports ouverts sur votre ordinateur est qu’ils peuvent être facilement découverts et qu’une fois découverts, ces ports sont maintenant exposés aux vulnérabilités des applications d’écoute.


Votre définition de ce qu'est un port est incorrecte. Un port n'est nullement limité à TCP.
MDMarra

1
Je suppose qu'on ne devrait pas croire TOUT ce qu'ils lisent sur le net :) 5 des 6 premiers résultats de Google mentionnent explicitement "TCP" dans leur définition. google.com/…
Shoeless

Non, ils disent TCP / IP. Grande différence. TCP / IP inclut le protocole UDP
MDMarra,

1
ICMP n'utilise pas de port, il s'agit d'un protocole de couche 3 inclus dans la suite de protocoles IP.
MDMarra

1
La seule raison pour laquelle je dis que c'est parce que c'est très important en référence aux pare-feu (dont il s'agit indirectement). TCP est avec état et les connexions sont donc mémorisées, contrairement à UDP. Plusieurs fois, cela signifie que les ports doivent être ouverts pour le trafic UDP de retour initié en interne, ce qui n'est pas nécessairement le cas pour les connexions TCP établies en interne.
MDMarra

0

Pour la même raison que vous fermez et verrouillez vos portes et fenêtres à la maison.


3
Je ferme à clef mes portes et fenêtres parce qu'il fait froid dehors. Qu'est-ce que cette question a à voir avec l'isolation?
Quack Quichotte

2
Vos portes et fenêtres ne sont-elles pas isolantes si elles ne sont que fermées? Le boulon supplémentaire fournit-il vraiment beaucoup plus d'isolation?
Dentrasi 13/12/2009

C'est un bon point, mais il convient de noter que tout le monde ne ferme pas ses portes et fenêtres à la maison. Cela peut être "Tout le monde ne veut pas protéger ses biens" ou "Tout le monde n'aime pas vivre dans une culture de la peur", selon votre point de vue.
Ilari Kajaste

-2

Disons simplement que les ports ouverts ressemblent à une fenêtre ouverte et à une porte ouverte, mais lorsque vos fenêtres sont ouvertes, un voleur ou un rat et une araignée peuvent entrer. Veuillez m'indiquer si je suis idiot ou asinine. Édité non asininé Les ports ouverts ressemblent à une fenêtre ouverte, mais sur Internet, il y a un port ouvert, je suppose aussi un port fermé sont des fenêtres fermées sans lui nous ne pouvons pas nous connecter ou naviguer Je suppose juste comme HTTP et SSH ou FTP sans nous ne pouvons pas nous connecter parce que c'est un client c'est juste TCP Connection

Je ne suis pas un expert en sécurité


Les ports ouverts sont nécessaires pour offrir des services. Un exemple sur zillion possible: Gmail utilise un port ouvert (443 pour son site Web utilisant HTTPS). Mais il vous demande de vous connecter avant de montrer quoi que ce soit.
Arjan
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.