Warum ist es schlecht, offene Ports zu haben?

55806
aireq

Hier ist etwas, was mich immer verblüfft hat. Warum ist es schlecht, offene Ports auf Ihrem Computer zu haben? Angenommen, Sie haben keinen Virus auf Ihrem Computer oder ein anderes Programm, das einen Port abhört, der möglicherweise etwas tut. Warum ist es wichtig, wenn ein Port geöffnet ist? Wenn eine böswillige Person anfängt, Pakete an einen Port zu senden, aber nichts vorhanden ist, um die Daten zu empfangen und etwas damit zu tun, warum ist das wichtig? Ein Computer führt die empfangenen Daten nicht willkürlich aus. Ich verstehe, wenn ein Computer mit Paketen überschwemmt wird, könnte dies zum Absturz führen, da er einfach nicht mit der Datenmenge fertig werden kann. Ich denke jedoch nur an Sicherheitsprobleme, die die Dateien auf dem Computer tatsächlich ändern.

Aktualisieren

Danke für die bisherigen Antworten. Ich verstehe jetzt, dass ein offener Port tatsächlich bedeutet, dass es ein Programm gibt, das ausgenutzt werden kann, wenn man an diesem Port lauscht. Aber warum ist es so schwer, Software zu schreiben, die nicht ausgenutzt werden kann? Um einem Computer wirklich Schaden zuzufügen, muss ein Programm nicht zulassen, dass eine oder mehrere Dateien hochgeladen werden, und dann muss eine dieser Dateien ausgeführt werden. Es scheint so, als wäre es unglaublich schwer, es aus Versehen zuzulassen.

35

8 Antworten auf die Frage

36
MDMarra

Ein Port ist nicht geöffnet, wenn etwas nicht auf eine Verbindung wartet.

Der Grund, weshalb es für alle Ports offen ist, dass alle Ports offen sind, besteht darin, dass die Dienste, die diese Ports überwachen, für Exploits verfügbar gemacht werden. Aus diesem Grund gibt es Firewalls, um zu begrenzen, welche Verbindungen mit bestimmten Ports hergestellt werden dürfen, um die von Diensten freigelegte Oberfläche zu verringern.


BEARBEITEN

Um Ihre Frage zu beantworten, warum Menschen nicht einfach Software schreiben können, die nicht ausnutzbar ist:

Dies ist für einfache Programme relativ einfach, aber viele Programme, die einen Socket erfordern, sind komplex. Daher haben sie viele Komponenten, von denen viele höchstwahrscheinlich nicht vom Entwickler geschrieben werden (eingeschlossene Bibliotheken). Sie können sich nicht darauf verlassen, dass andere Personen Ihr Netzwerk schützen, wenn Sie selbst verhärtende Methoden verwenden, z. B. Firewalls.

Die Ausführung von willkürlichem / Remote-Code stellt ein großes Risiko dar, wie Sie darauf hingewiesen haben. Pufferüberläufe und andere Sicherheitsmängel, die dies zulassen, sind leider häufig. Schauen Sie sich jedes Microsoft-Sicherheitsupdate an, und ich wette, es wird entweder Remotecodeausführung oder Erhöhung von Berechtigungen patchen. MS ist ein riesiges Unternehmen mit Hunderten von Entwicklern und Milliarden Dollar.

Einfach hinzufügen: Wenn Sie beispielsweise wissen, dass ein Dienst einen Fehler enthält, der zum Eindringen in Code oder Ähnliches verwendet werden kann, und Sie tatsächlich feststellen, dass dieser Dienst ausgeführt wird, ist dies eine offene Einladung;) Felix vor 14 Jahren 4
beste Antwort bisher. DaveParillo vor 14 Jahren 1
9
Richard Downer

In Bezug auf das Update hast du geschrieben:

Danke für die bisherigen Antworten. Ich verstehe jetzt, dass ein offener Port tatsächlich bedeutet, dass es ein Programm gibt, das ausgenutzt werden kann, wenn man an diesem Port lauscht. Aber warum ist es so schwer, Software zu schreiben, die nicht ausgenutzt werden kann? Um einem Computer wirklich Schaden zuzufügen, muss ein Programm nicht zulassen, dass eine oder mehrere Dateien hochgeladen werden, und dann muss eine dieser Dateien ausgeführt werden. Es scheint so, als wäre es unglaublich schwer, es aus Versehen zuzulassen.

Es ist sehr schwer, Software zu schreiben, die nicht ausgenutzt werden kann!

Ich habe das Buch " Sichere Software erstellen" gelesen, und es wurde unter anderem über Stack-Überläufe gesprochen. Es gab zwei sehr beängstigende Fakten darin:

  • Damit ein Programm einen ausnutzbaren Stack-Überlauffehler hat, ist es sehr leicht zu begehen, insbesondere wenn das Programm in C geschrieben ist. In der Programmiersprache C sind viele Funktionen standardmäßig nicht sicher, und der Programmierer muss entweder wissen, welche anfälligen Funktionen zu vermeiden sind, oder muss spezielle Maßnahmen ergreifen, um sicher zu sein.
  • Der Exploit, den ein Hacker einsetzen muss, ist kurz - sehr kurz. Es war weniger als eine halbe Seite Assembler-Sprache, was zu ungefähr 100 Bytes Maschinencode (Vermutung) führt. Dieser Exploit-Code reicht aus, um der Hacker-Shell (Eingabeaufforderung) Zugriff auf Ihren Computer zu gewähren. Sie müssen keine großen Dateien hochladen und ausführen - nur ein winziger Code, der in die Mitte legitimer Daten eingefügt werden kann.

Wenn also ein Hacker ein Programm finden kann, das (a) einen Stack-Überlauffehler aufweist, (b) über ein Netzwerk ausnutzbar ist und (c) ein paar 100 Byte freie Puffer im Puffer hat, ist Ihr Computer pwned. Glücklicherweise ist das Wissen über Stack-Überlauf-Fehler jetzt allgemein bekannt, aber es wird immer noch angezeigt. Vor 5 Jahren und länger war dies ein viel häufigeres Problem.

Um auf die ursprüngliche Frage zurückzukommen, sollten Sie offene Ports vermeiden, um Unfälle mit einem ausnutzbaren Fehler in einem Programm zu vermeiden. Sie haben jetzt einen zweiten Grund: Die Remote-Shell, die ein Hacker dann verwenden würde, ist ein anderer offener Port. Wenn Sie eine Firewall haben, die alles blockiert, außer dass Sie dies ausdrücklich erlaubt haben, würden Sie auch diese Remote-Shell blockieren (obwohl ein Hacker noch andere unangenehme Dinge auf Ihrem Computer ausführen kann.

IIRC, Donald Knuth (?) Beendete gerade mathematisch den Beweis, dass eines der kleineren Programme, die er schrieb, fehlerfrei war, und dass es viele Jahre dauerte RCIX vor 14 Jahren 2
6
Felix

Ein offener Port bedeutet, soweit ich weiß, ein Programm, das ihm zuhört. Es gibt also einen Dienst, der die Daten verarbeitet.

6
Ilari Kajaste
  • Offener Port: Wenn jemand fragt, antwortet der Computer, dass ein Dienst diesen Port überwacht. Dies bedeutet, dass alles, was an diesem Port ankommt, von einem Programm (einem Dienst) verarbeitet wird, das auf diesem Computer ausgeführt wird.
  • Geschlossener Port: Wenn jemand fragt, antwortet der Computer, dass an diesem Port keine Dienste überwacht werden. Der Akser wird wissen, dass ein Computer an der Adresse antwortet.
  • Stealth Port: Wenn jemand fragt, erhält er keine Antwort. Es geht darum, zu verbergen, wenn sich überhaupt ein Computer an der Adresse befindet. Es ist vielleicht nicht sehr effektiv, wie Joschi in den Kommentaren hervorhebt.

Wenn Sie einen offenen Port haben, können Sie sicher sein, dass das Programm, das die eingehenden Daten verarbeitet, keine Exploits zur Verfügung hat. Es werden jedoch immer wieder Exploits gefunden, und es ist gut zu wissen, dass viele Port-Scans im Netz unterwegs sind und nach Zielen suchen.

Geschlossene Ports reagieren immer noch auf den Akser, sodass ein möglicher Angreifer weiß, dass er weitere Ports prüfen soll. Andererseits ist das Internet so ausgelegt, dass es funktioniert. Während Stealth-Ports versuchen, dem potenziellen Angreifer keine Informationen zu geben, verstoßen sie theoretisch gegen die Spezifikation.

Aus Sicherheitsgründen ist jeder offene Port eine große Lücke, da der Code zur Verarbeitung von Fremddaten verwendet wird. Eine Firewall (oder ein NAT-Router) sorgt dafür, dass kein eingehender Datenverkehr zu Ihrem Computer gelangt, auch wenn das System über offene Ports verfügt. Auf diese Weise schließen sie effektiv alle Ports.

Ihre Definition eines "Stealth-Ports" ist Wunschdenken. Eigentlich weiß ein Angreifer, dass es einen Computer gibt, wenn er keine Antwort erhält. Wenn sich an dieser bestimmten IP-Adresse kein Computer befindet, sendet der vorausgehende Router eine Nachricht darüber. Mit "Stealth Ports" passiert das nicht ... joschi vor 14 Jahren 1
@joschi: Nun, es ist ein Konzept, das ich im Internet gesehen habe. Ich denke, es ist gut, es zu definieren. Sie machen jedoch einen guten Punkt. * Ich habe die Antwort so bearbeitet, dass sie Ihren Kommentar widerspiegelt. * Zumindest lässt die Ziel-IP so aussehen, als würde sie hinter einem NAT-Router liegen, schätze ich. Ich war selbst nie ein Fan des Konzepts: Wenn Sie offene Ports haben, sollten Sie sicherstellen, dass sie einen sicheren Dienst ausführen. Und wenn Sie keine offenen Ports haben, ist es kein Problem, dem Netz mitzuteilen, dass Sie existieren. Heimlichkeit riecht nach Sicherheitsrummel für mich. Ilari Kajaste vor 14 Jahren 0
joschi: das machen nicht alle router. Viele Router leiten einfach blind zu IP-Adressen weiter, wo kein System vorhanden ist. Bei Verbindungsversuchen kommt es zu einer Zeitüberschreitung, nur weil der Client es langweilt, einen Dreiwegehandschlag zu versuchen. benc vor 14 Jahren 0
3

Angenommen, Sie haben keinen Virus auf Ihrem Computer oder ein anderes Programm, das einen Port abhört, der möglicherweise etwas tut. Warum ist es wichtig, wenn ein Port geöffnet ist? Wenn eine böswillige Person anfängt, Pakete an einen Port zu senden, aber nichts vorhanden ist, um die Daten zu empfangen und etwas damit zu tun, warum ist das wichtig?

Annahme ist die Mutter aller Eff-Ups :)

eher sicher als entschuldigung ... hier ist schön auf makeuseof.com zu lesen:

Erklärung der Technologie: Offene Router-Ports und ihre Auswirkungen auf die Sicherheit

eine gute, kurze Lektüre. DaveParillo vor 14 Jahren 0
1
Shoeless

Ich bin kein Sicherheitsexport, aber ich habe ein wenig recherchiert ... Ein "offener" Port ist ein Port, der für die Annahme einer eingehenden TCP-Verbindung eingerichtet ist.

Wenn Ihre Apps nur die Ports 9, 21 und 80 überwachen und Ihre Firewall den Zugriff auf diese drei Ports blockiert, haben Sie technisch keine Ports geöffnet. IOW, Port 25, ist beispielsweise nicht geöffnet, weil nichts darauf lauscht.

Um Ihre Frage zu beantworten: Der Grund, warum es offen ist, offene Ports auf Ihrem Computer zu haben, besteht darin, dass diese Ports leicht erkannt werden können. Sobald diese Ports entdeckt wurden, sind sie nun anfällig für Sicherheitsanfälligkeiten der zuhörenden Anwendungen.

Ihre Definition von Port ist falsch. Ein Port ist keinesfalls auf TCP beschränkt. MDMarra vor 14 Jahren 0
Ich nehme an, man sollte ALLES nicht glauben, dass sie auf dem "Netz" lesen. 5 der Top 6 der Google-Ergebnisse geben in ihrer Definition explizit "TCP" an. http://www.google.com/#hl=de&source=hp&q=define+%22open+port%22&aq=f&aqi=&oq=&fp=b36c7832dbb01be6 Shoeless vor 14 Jahren 1
Nein, sie sagen TCP / IP. Großer Unterschied. TCP / IP enthält UDP MDMarra vor 14 Jahren 0
sowie ICMP mrdenny vor 14 Jahren 0
ICMP verwendet keinen Port, es ist ein Schicht-3-Protokoll, das in der IP-Protokollreihe enthalten ist. MDMarra vor 14 Jahren 1
lol ... Ich habe schon fast die Erwähnung von UDP in meinen ersten Beitrag aufgenommen. Punkt genommen Ich denke, ich hätte "TCP" eigentlich überhaupt weglassen sollen. Der beabsichtigte Hauptinhalt meines Beitrags war der letzte Absatz. Shoeless vor 14 Jahren 0
Der einzige Grund, warum ich es sage, ist, dass es sehr wichtig ist in Bezug auf Firewalls (um die es hier indirekt geht). TCP ist stateful und somit werden Verbindungen gespeichert, bei denen UDP nicht funktioniert. Dies bedeutet häufig, dass Ports für den UDP-Rücktransport geöffnet sein müssen, der intern initiiert wird, wo dies bei TCP-Verbindungen, die intern eingerichtet werden, nicht erforderlich ist. MDMarra vor 14 Jahren 1
0
Steven A. Lowe

Aus dem gleichen Grund, dass Sie Ihre Türen und Fenster zu Hause schließen und verriegeln .

Ich verriegele meine Türen und Fenster, weil es draußen kalt ist. Was hat diese Frage mit der Isolierung zu tun? quack quixote vor 14 Jahren 3
Isolieren Ihre Türen und Fenster nicht, wenn sie nur geschlossen sind? Bietet der zusätzliche Bolzen wirklich viel mehr Isolierung. Dentrasi vor 14 Jahren 2
Ein guter Punkt, aber es ist erwähnenswert, dass nicht jeder zuhause Türen und Fenster verriegelt. Dies könnte * "Nicht jeder möchte sein Eigentum schützen" * oder * "Nicht jeder lebt gerne in einer Kultur der Angst", * abhängig von Ihrem Standpunkt. Ilari Kajaste vor 14 Jahren 0
-2
user210203

Sagen wir einfach, dass offene Ports wie ein offenes Fenster und eine offene Tür sind, aber wenn Ihr Fenster geöffnet ist, können ein Räuber oder eine Ratte und eine Spinne einsteigen. Bitte sagen Sie mir, ob ich dumm oder gar nicht bin Im Internet gibt es einen offenen Port. Ich denke, auch geschlossene Ports sind geschlossene Fenster, ohne dass wir keine Verbindung herstellen oder durchsuchen können. Ich denke, genau wie HTTP und SSH oder FTP, ohne dass wir keine Verbindung herstellen können, denn es ist ein Client, es ist nur eine TCP-Verbindung

Ich bin kein Sicherheitsexperte

Offene Ports sind erforderlich, um Dienste anbieten zu können. Nur eines von vielen möglichen Beispielen: Google Mail verwendet einen offenen Port (443 für die Website, die HTTPS verwendet). Sie müssen sich jedoch anmelden, bevor Sie etwas anzeigen. Arjan vor 7 Jahren 0
Okay, vielen Dank user210203 vor 7 Jahren 0