web-dev-qa-db-fra.com

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

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.

Mettre à 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 des logiciels qui ne peuvent pas être exploités? 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.

35
aireq

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

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 des 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.

36
MDMarra

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 des logiciels qui ne peuvent pas être exploités? 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 Construire un logiciel sécurisé 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. C'était moins d'une demi-page de langage d'assemblage, ce qui se traduisait par une centaine d'octets de code machine. Ce code d’exploitation est suffisant pour permettre au pirate informatique Shell (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 alimenté. 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!)

9
Richard Downer

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.

6
Felix
  • 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: Lorsque 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, car joschi apparaît 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 une énorme faille puisque le code est utilisé pour traiter des données étrangères. Un pare-feu (ou un routeur NAT) permet de s’assurer 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.

6
Ilari Kajaste

En supposant que vous n'avez pas de virus sur votre ordinateur ni sur aucun autre programme écoutant un port susceptible de faire quelque chose, pourquoi le fait qu'un port soit ouvert importe-t-il? 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 lecture intéressante pour makeuseof.com:

Explication de la technologie: ports de routeur ouverts et leurs implications en matière de sécurité

3
Molly7244

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 entrante TCP.

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.

1
Shoeless

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

0
Steven A. Lowe