Alle Ports öffnen zum Test

Hallo !

Ich habe eine da mal eine Frage:

Ich benötige ein Programm oder Tool was auf einem lokalen Test-PC sämtliche gewünschte Ports öffnet
(welche Dienste laufen ist dabei völlig wurscht)

Dieser PC verbirgt sich hinter Router, DHCP-Server und Firewall.
Ziel ist es, dass ich von außen diesen PC nach offenen Ports scannen will und dabei sehen kann ob trotz Sicherheitsvorkehrungen noch Ports offen sind.

Ich benötige also nur ein Tool was alle Ports gleichzeitig öffnen kann.

Kennt jemand so ein Tool?

MfG Andy
 
Vielleicht solltest du dich nochmal mit dem Thema "Ports" beschäftigen.
Alle ports sind grundsätzlich "offen" (wenn man das so nennen will) aber erst wenn auf dem port auch ein dienst/programm horcht, ist dieser port auch erreichbar.
In verbindug mit routing ist der begriff "offene ports" ofter zu hören aber mit offenen ports hat das wenig zu tun, sondern eher mit portfeiterleitung.

MfG
 
Original von blueeyedmen
Ok, ich brauche also offensichtlich ein Tool, welches sämtliche Dienste auf allen Ports lauschen lässt.

ja, nämlich die Dienste selbst dind deine "Tools". Du musst einen Dienst starten, z.B. einen ssh-server. der läuft dann standardmäßig auf Port 22, diesen hast du damit also schon mal offen. Danach startest du noch ein ftp-Server auf Port 21, dann noch einen Dns-server auf Port 53, und so weiter, bis alle Ports belegt/geöffnet sind.
Du Kannst aber auch einfach jeweils einen ssh-server auf allen Ports von 1-65535 starten. Damit würdest du dein Ziel auch erreichen, aber ich glaube nicht, dass du dir das so vorgestellt hattest ;)
 
Auf allen Ports geht eh nicht, da diverse Services (gerade bei Windows) eh schon Ports belegen. Außerdem muß der rausgehende Traffic ja auch Ports zur Verfuegung haben. Mir wäre daher rätselhaft wozu sowas gut sein soll. Im Zweifel schreibt man sich halt ein kleines C-Programm:

Code:
#define PORT 2007

#include <sys/param.h>
#include <sys/socket.h>
#include <sys/time.h>
#include <sys/resource.h>
#include <netinet/in.h>
#include <netdb.h>
#include <signal.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <unistd.h>

#ifdef USE_IPV6
#include <netinet6/in6.h>
#endif

extern char **environ;
#include <errno.h>

char *Name; // name of the program for error messages
char msg[32768];

int main(int argc, char *argv[])
{
  int s, ns, foo, err;
  static struct sockaddr_in sin = { AF_INET };
  char *host, *inet_ntoa();
  char tmp[32768];
  FILE *log;
  Name = argv[0]; // Name des Programms fuer Fehlermeldungen speichern

  sin.sin_port = htons((u_short) PORT);
  argc--, argv++;
  if (argc > 0) {
    sin.sin_port = atoi(*argv);
    sin.sin_port = htons((u_short) sin.sin_port);
  }
  strcpy(msg, "");
  strcpy(tmp, "");
  msg[4095] = '\0';
  signal(SIGHUP, SIG_IGN);
  s = socket(AF_INET, SOCK_STREAM, 0);
  if (s < 0) {
    perror("announce: socket");
    exit(1);
  }
  if (bind(s, (struct sockaddr *) &sin, sizeof sin) < 0) {
    perror("bind");
    exit(1);
  }
  if (listen(s, 1) < 0) {
    perror("announce: listen");
    _exit(1);
  }
  foo = sizeof sin;
  for (;;) {
    ns = accept(s, (struct sockaddr *) &sin, &foo);
    if (ns < 0) {
      perror("announce: accept");
      _exit(1);
    }
    host = inet_ntoa(sin.sin_addr);

    sleep(5);
    close(ns);
  }
  return 0;
}

Inwieweit das Programm allerdings auch auf Windows funktioniert, weiß ich nicht. Auf jedem Linux wird es aber funktionieren. Einfach dann mit 'programm port' starten und damit die Ports belegen. Zur Not eine for-Schleife einbauen, die das Programm auf jedem Port startet.
 
Im Grunde ist die Diskussion recht sinnlos sofern damit testen willst welche Ports aus dem Internet erreichbar sind. Solange du einen Port nicht forwardest ist grundsätzlich kein Port von aussen erreichbar auch wenn du tausende ssh-Server startest.
Ich komme beim besten Willen nicht dahinter was dir das bringen soll.

Gruß odigo
 
Alle ports sind grundsätzlich "offen" (wenn man das so nennen will) aber erst wenn auf dem port auch ein dienst/programm horcht, ist dieser port auch erreichbar.
Wenn keine Software (Dienst) keinen Socket an einen port bindet ist dieser auch nicht offen (wenn man das so nennen will)


Vielleicht solltest du dich nochmal mit dem Thema "Ports" beschäftigen.
ja genau...


Abgesehen von dem Was Odigo festgestellt hat klingt dein Vorhaben ziemlich planlos...vielleicht erklaerste uns den Effekt der ganzen Sache..das kannste sicher alles leichter haben ;)
 
Ich denke, er will testen, ob die Firewall den Port wirklich blockt. Dies kann er nur ausgiebig Testen, wenn alle ports abgehört werden. Doch ich glaube nicht, dass eine Firewall einige Ports tatsächlich blockt, andere wiederum nicht, obwohl beide in der Config stehen.
 
Original von Gulliver
Alle ports sind grundsätzlich "offen" (wenn man das so nennen will) aber erst wenn auf dem port auch ein dienst/programm horcht, ist dieser port auch erreichbar.
Wenn keine Software (Dienst) keinen Socket an einen port bindet ist dieser auch nicht offen (wenn man das so nennen will)
Deswegen hab ich es ja auch in Anführungszeichen gesetzt und den Text in Klammern verfasst ...
Wie nennt man denn einen Port der keinen Socket, im listener Zustand, an sich gebunden hat ?

MfG
 
Alle ports sind grundsätzlich "offen"
Wie nennt man denn einen Port der keinen Socket, im listener Zustand, an sich gebunden hat ?


Um das mit den Zuständen der Ports mal etwas zu verdeutlichen:

1. Alle Ports, an denen ein Dienst lauscht, gehören zur Menge der "offenen Ports"

2. Alle Ports, an die kein Dienst gebunden ist, gehören zur Menge der "verfügbaren Ports"
d.h. diese Ports sind "freigegeben"(aber nicht "offen") für die Verwendung durch andere Dienste. Ports an denen bereits ein Dienst lauscht, sind für andere Dienste gesperrt.

3. Den Vorgang des Beenden eines Dienstes, der an einem Port lauscht, nennt man "schließen" des Ports. Nach dem "Schließen" wandert der Port in die Menge der "verfügbaren Ports" und ist damit wieder für andere Dienste freigegeben.
 
Ports

Der Sinn der Sache, so wie ich mir das gedacht habe ist der, dass ich festgestellt habe, dass verschiedene billige Router sämtliche Dienste einfach durchlassen, obwohl keiner der Ports freigeschaltet, geforwardet oder "nicht gesperrt" ist.

Ich geh davon aus, dass alle Ports, die auf einem Router nicht auf "zulassen" stehen, auch gesperrt werden.
Warum funktionieren verschiedene Dienste? Warum funktioniert ICQ oder der IE ?
Auch ein http-server läuft auf Port 43. Komisch eigentlich.

Deswegen dieser Gedanke zu einem Test.

Danke für die vielen Antworten.

Wenn noch jemanden was einfällt zu dem Thema - immer gern! Ist sehr interessant.
 
Original von blueeyedmen
Ich geh davon aus, dass alle Ports, die auf einem Router nicht auf "zulassen" stehen, auch gesperrt werden. [?]Warum funktioniert ICQ oder der IE?

Die Ports werden über ein Verfahren, welches sich ?Port and Address Translation? nennt, dynamsich geöffnet. Siehe dazu: PAT

Desweiteren solltest Du Dir vergegenwärtigen, wie es dem DSL-Router überhaupt gelingen kann, die Möglichkeiten ungewollter Fernzugriffe einzuschränken. Dann sollte klar sein, dass die Antwortpakete einer _von_innen_ angeforderten Verbindung von dem DSL-Router automatisch zum internen PC durchgereicht werden.

Wenn Du zudem wissen möchtest, warum der IE noch immer Internetseiten anzeigen kann, wenn der eingehende Port 80 auf dem DSL-Router gesperrt wurde, so solltest Du den auch folgenden Abschnitt lesen: Anfrage- und Rückgabe-Port

Original von blueeyedmen
[?]billige Router sämtliche Dienste einfach durchlassen, obwohl keiner der Ports freigeschaltet, geforwardet oder "nicht gesperrt" ist.[?]

Womöglich läuft Dein interner Rechner als ?exposed Host? oder hat zuvor eine eigene Verbindung zum Zielsystem aufgebaut. Siehe hier: Sicherheitstechnische Mängel der DSL-Router

Bye, nz
 
Zurück
Oben